ETH Price: $3,230.00 (+1.47%)
Gas: 3 Gwei

Token

Pepo DGAF (PepoDGAF)
 

Overview

Max Total Supply

3,332 PepoDGAF

Holders

637

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Filtered by Token Holder
gentletornado.eth
Balance
3 PepoDGAF
0x6147ce9d03895f9157bbbc95d197a58ea1ce7b33
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:
PepoDGAF

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-08
*/

// SPDX-License-Identifier: None

pragma solidity ^0.8.0;

interface IERC165 {

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

interface IERC721 is IERC165 {

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

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

library Strings {

  bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

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

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

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

}

abstract contract Context {

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

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

}

abstract contract Ownable is Context {

  address private _owner;

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

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

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

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

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

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

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

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

interface IERC721Receiver {

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

abstract contract ERC165 is IERC165 {

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

}

interface IERC721Enumerable is IERC721 {

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

}

interface IERC721Metadata is IERC721 {

  function name() external view returns (string memory);
  function symbol() external view returns (string memory);
  function tokenURI(uint256 tokenId) external view returns (string memory);

}

//ERC721A contract was taken as bases, but was modified, so that the indexing would start from 1
//Modified version name: ERC721VI
contract ERC721VI is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable {

  using Address for address;
  using Strings for uint256;

  struct TokenOwnership {
    address addr;
    uint64 startTimestamp;
  }

  struct AddressData {
    uint128 balance;
    uint128 numberMinted;
  }

  uint256 internal currentIndex = 1;
  uint256 internal immutable maxBatchSize;
  string private _name;
  string private _symbol;

  mapping(uint256 => TokenOwnership) internal _ownerships;
  mapping(address => AddressData) private _addressData;
  mapping(uint256 => address) private _tokenApprovals;
  mapping(address => mapping(address => bool)) private _operatorApprovals;

  constructor(
    string memory name_,
    string memory symbol_,
    uint256 maxBatchSize_
  ) {
    require(maxBatchSize_ > 0, 'ERC721VI: max batch size must be nonzero');
    _name = name_;
    _symbol = symbol_;
    maxBatchSize = maxBatchSize_;
  }

  function totalSupply() public view override returns (uint256) {
    return currentIndex - 1;
  }

  function tokenByIndex(uint256 index) public view override returns (uint256) {
    require(index < totalSupply(), 'ERC721VI: global index out of bounds');
    return index;
  }

  function tokenOfOwnerByIndex(address owner, uint256 index) public view override returns (uint256) {
    require(index < balanceOf(owner), 'ERC721VI: owner index out of bounds');
    uint256 numMintedSoFar = totalSupply();
    uint256 tokenIdsIdx = 0;
    address currOwnershipAddr = address(0);
    for (uint256 i = 0; i < numMintedSoFar; i++) {
      TokenOwnership memory ownership = _ownerships[i];
      if (ownership.addr != address(0)) {
        currOwnershipAddr = ownership.addr;
      }
      if (currOwnershipAddr == owner) {
        if (tokenIdsIdx == index) {
          return i;
        }
        tokenIdsIdx++;
      }
    }
    revert('ERC721VI: unable to get token of owner by index');
  }

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

  function balanceOf(address owner) public view override returns (uint256) {
    require(owner != address(0), 'ERC721VI: balance query for the zero address');
    return uint256(_addressData[owner].balance);
  }

  function _numberMinted(address owner) internal view returns (uint256) {
    require(owner != address(0), 'ERC721VI: number minted query for the zero address');
    return uint256(_addressData[owner].numberMinted);
  }

  function ownershipOf(uint256 tokenId) internal view returns (TokenOwnership memory) {
    require(_exists(tokenId), 'ERC721VI: owner query for nonexistent token');

    uint256 lowestTokenToCheck;
    if (tokenId >= maxBatchSize) {
      lowestTokenToCheck = tokenId - maxBatchSize + 1;
    }

    for (uint256 curr = tokenId; curr >= lowestTokenToCheck; curr--) {
      TokenOwnership memory ownership = _ownerships[curr];
      if (ownership.addr != address(0)) {
        return ownership;
      }
    }

    revert('ERC721VI: unable to determine the owner of token');
  }

  function ownerOf(uint256 tokenId) public view override returns (address) {
    return ownershipOf(tokenId).addr;
  }

  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 override {
    address owner = ERC721VI.ownerOf(tokenId);
    require(to != owner, 'ERC721VI: approval to current owner');

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

    _approve(to, tokenId, owner);
  }

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

    return _tokenApprovals[tokenId];
  }

  function setApprovalForAll(address operator, bool approved) public override {
    require(operator != _msgSender(), 'ERC721VI: 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 override {
    _transfer(from, to, tokenId);
  }

  function safeTransferFrom(
    address from,
    address to,
    uint256 tokenId
  ) public override {
    safeTransferFrom(from, to, tokenId, '');
  }

  function safeTransferFrom(
    address from,
    address to,
    uint256 tokenId,
    bytes memory _data
  ) public override {
    _transfer(from, to, tokenId);
    require(
      _checkOnERC721Received(from, to, tokenId, _data),
      'ERC721VI: transfer to non ERC721Receiver implementer'
    );
  }

  function _exists(uint256 tokenId) internal view returns (bool) {
    require(tokenId > 0, 'Indexing starts from 1');
    return tokenId < currentIndex;
  }

  function _safeMint(address to, uint256 quantity) internal {
    _safeMint(to, quantity, '');
  }

  function _safeMint(
    address to,
    uint256 quantity,
    bytes memory _data
  ) internal {
    uint256 startTokenId = currentIndex;
    require(to != address(0), 'ERC721VI: mint to the zero address');
    require(!_exists(startTokenId), 'ERC721VI: token already minted');
    require(quantity <= maxBatchSize, 'ERC721VI: quantity to mint too high');
    require(quantity > 0, 'ERC721VI: quantity must be greater 0');

    _beforeTokenTransfers(address(0), to, startTokenId, quantity);

    AddressData memory addressData = _addressData[to];
    _addressData[to] = AddressData(
      addressData.balance + uint128(quantity),
      addressData.numberMinted + uint128(quantity)
    );
    _ownerships[startTokenId] = TokenOwnership(to, uint64(block.timestamp));

    uint256 updatedIndex = startTokenId;

    for (uint256 i = 0; i < quantity; i++) {
      emit Transfer(address(0), to, updatedIndex);
      require(
        _checkOnERC721Received(address(0), to, updatedIndex, _data),
        'ERC721VI: transfer to non ERC721Receiver implementer'
      );
      updatedIndex++;
    }

    currentIndex = updatedIndex;
    _afterTokenTransfers(address(0), to, startTokenId, quantity);
  }

  function _transfer(
    address from,
    address to,
    uint256 tokenId
  ) private {
    TokenOwnership memory prevOwnership = ownershipOf(tokenId);

    bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr ||
      getApproved(tokenId) == _msgSender() ||
      isApprovedForAll(prevOwnership.addr, _msgSender()));

    require(isApprovedOrOwner, 'ERC721VI: transfer caller is not owner nor approved');

    require(prevOwnership.addr == from, 'ERC721VI: transfer from incorrect owner');
    require(to != address(0), 'ERC721VI: transfer to the zero address');

    _beforeTokenTransfers(from, to, tokenId, 1);

    _approve(address(0), tokenId, prevOwnership.addr);

    unchecked {
      _addressData[from].balance -= 1;
      _addressData[to].balance += 1;
    }

    _ownerships[tokenId] = TokenOwnership(to, uint64(block.timestamp));

    uint256 nextTokenId = tokenId + 1;
    if (_ownerships[nextTokenId].addr == address(0)) {
      if (_exists(nextTokenId)) {
        _ownerships[nextTokenId] = TokenOwnership(prevOwnership.addr, prevOwnership.startTimestamp);
      }
    }

    emit Transfer(from, to, tokenId);
    _afterTokenTransfers(from, to, tokenId, 1);
  }

  function _approve(
    address to,
    uint256 tokenId,
    address owner
  ) private {
    _tokenApprovals[tokenId] = to;
    emit Approval(owner, 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(to).onERC721Received.selector;
      } catch (bytes memory reason) {
        if (reason.length == 0) {
          revert('ERC721VI: transfer to non ERC721Receiver implementer');
        } else {
          assembly {
            revert(add(32, reason), mload(reason))
          }
        }
      }
    } else {
      return true;
    }
  }

  function _beforeTokenTransfers(
    address from,
    address to,
    uint256 startTokenId,
    uint256 quantity
  ) internal virtual {}

  function _afterTokenTransfers(
    address from,
    address to,
    uint256 startTokenId,
    uint256 quantity
  ) internal virtual {}
}


//██████╗░███████╗██████╗░░█████╗░  ██████╗░░██████╗░░█████╗░███████╗
//██╔══██╗██╔════╝██╔══██╗██╔══██╗  ██╔══██╗██╔════╝░██╔══██╗██╔════╝
//██████╔╝█████╗░░██████╔╝██║░░██║  ██║░░██║██║░░██╗░███████║█████╗░░
//██╔═══╝░██╔══╝░░██╔═══╝░██║░░██║  ██║░░██║██║░░╚██╗██╔══██║██╔══╝░░
//██║░░░░░███████╗██║░░░░░╚█████╔╝  ██████╔╝╚██████╔╝██║░░██║██║░░░░░
//╚═╝░░░░░╚══════╝╚═╝░░░░░░╚════╝░  ╚═════╝░░╚═════╝░╚═╝░░╚═╝╚═╝░░░░░

contract PepoDGAF is ERC721VI, Ownable {
  using Strings for uint256;

  string private _apiURI = "";
  bool public paused = true;
  uint256 public price = 0.04 ether; 
  uint256 public maxSupply = 3333; 
  uint256 public maxPerTx = 10;

  address token1 = 0x8FA600364B93C53e0c71C7A33d2adE21f4351da3; //Larva Chads
  address token2 = 0xbad6186E92002E312078b5a1dAfd5ddf63d3f731; //Anonymice
  address token3 = 0x15Cc16BfE6fAC624247490AA29B6D632Be549F00; //AnonymiceBreeding
  address token4 = 0x42069ABFE407C60cf4ae4112bEDEaD391dBa1cdB; //CryptoDickbutts

  constructor() ERC721VI("Pepo DGAF", "PepoDGAF", maxPerTx) {}

  modifier mintCompliance(uint256 _mintAmount) {
    require(_mintAmount > 0 && _mintAmount <= maxPerTx, "Invalid mint amount!");
    require(currentIndex + _mintAmount <= maxSupply, "Max supply exceeded!");
    _;
  }

  function mint(uint256 _mintAmount) public payable mintCompliance(_mintAmount) {
    require(!paused, "The contract is paused for now!");

    uint _userBalance1 = IERC721(token1).balanceOf(msg.sender);
    uint _userBalance2 = IERC721(token2).balanceOf(msg.sender);
    uint _userBalance3 = IERC721(token3).balanceOf(msg.sender);
    uint _userBalance4 = IERC721(token4).balanceOf(msg.sender);

    if (_userBalance1 + _userBalance2 + _userBalance3 + _userBalance4 > 0) { // owns one of the nft
      require(msg.value >= price * _mintAmount / 2, "Insufficient funds!");
      _safeMint(msg.sender, _mintAmount);
    } else {
      require(msg.value >= price * _mintAmount, "Insufficient funds!");
      _safeMint(msg.sender, _mintAmount);
    }
  }

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

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

  function togglePaused() public onlyOwner {
    paused = !paused;
  }

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

  function setBaseURI(string memory _uri) public onlyOwner {
    _apiURI = _uri;
  }

  function setMaxPerTx(uint256 _maxPerTx) public onlyOwner {
    maxPerTx = _maxPerTx;
  }

  function setPrice(uint256 _price) public onlyOwner {
    price = _price;
  }

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

  function withdrawall() public onlyOwner {
    uint256 _balance = address(this).balance;
    require(payable(0x58366d849685eE52A1faB9F04e29Cb1A6Ba03029).send(_balance));
  }
}

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":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"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":[],"name":"maxPerTx","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":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","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":"_uri","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxPerTx","type":"uint256"}],"name":"setMaxPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"setPrice","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":"togglePaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawall","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a06040526001600055604051806020016040528060008152506008908051906020019062000030929190620003aa565b506001600960006101000a81548160ff021916908315150217905550668e1bc9bf040000600a55610d05600b55600a600c55738fa600364b93c53e0c71c7a33d2ade21f4351da3600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073bad6186e92002e312078b5a1dafd5ddf63d3f731600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507315cc16bfe6fac624247490aa29b6d632be549f00600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507342069abfe407c60cf4ae4112bedead391dba1cdb601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620001c357600080fd5b506040518060400160405280600981526020017f5065706f204447414600000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f5065706f44474146000000000000000000000000000000000000000000000000815250600c546000811162000279576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002709062000481565b60405180910390fd5b826001908051906020019062000291929190620003aa565b508160029080519060200190620002aa929190620003aa565b508060808181525050505050620002d6620002ca620002dc60201b60201c565b620002e460201b60201c565b62000568565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620003b890620004b4565b90600052602060002090601f016020900481019282620003dc576000855562000428565b82601f10620003f757805160ff191683800117855562000428565b8280016001018555821562000428579182015b82811115620004275782518255916020019190600101906200040a565b5b5090506200043791906200043b565b5090565b5b80821115620004565760008160009055506001016200043c565b5090565b600062000469602883620004a3565b9150620004768262000519565b604082019050919050565b600060208201905081810360008301526200049c816200045a565b9050919050565b600082825260208201905092915050565b60006002820490506001821680620004cd57607f821691505b60208210811415620004e457620004e3620004ea565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f45524337323156493a206d61782062617463682073697a65206d75737420626560008201527f206e6f6e7a65726f000000000000000000000000000000000000000000000000602082015250565b6080516148a362000592600039600081816123530152818161237c0152612a3d01526148a36000f3fe6080604052600436106101cd5760003560e01c8063715018a6116100f7578063b88d4fde11610095578063e985e9c511610064578063e985e9c514610665578063f2fde38b146106a2578063f66c7281146106cb578063f968adbe146106e2576101cd565b8063b88d4fde146105ab578063c6f6f216146105d4578063c87b56dd146105fd578063d5abeb011461063a576101cd565b806395d89b41116100d157806395d89b4114610510578063a035b1fe1461053b578063a0712d6814610566578063a22cb46514610582576101cd565b8063715018a6146104a55780638da5cb5b146104bc57806391b7f5ed146104e7576101cd565b806336566f061161016f5780635c975abb1161013e5780635c975abb146103d75780636352211e146104025780636f8b44b01461043f57806370a0823114610468576101cd565b806336566f061461033157806342842e0e146103485780634f6ccce71461037157806355f804b3146103ae576101cd565b8063095ea7b3116101ab578063095ea7b31461027757806318160ddd146102a057806323b872dd146102cb5780632f745c59146102f4576101cd565b806301ffc9a7146101d257806306fdde031461020f578063081812fc1461023a575b600080fd5b3480156101de57600080fd5b506101f960048036038101906101f491906132af565b61070d565b6040516102069190613895565b60405180910390f35b34801561021b57600080fd5b50610224610857565b60405161023191906138b0565b60405180910390f35b34801561024657600080fd5b50610261600480360381019061025c9190613352565b6108e9565b60405161026e919061382e565b60405180910390f35b34801561028357600080fd5b5061029e6004803603810190610299919061326f565b61096e565b005b3480156102ac57600080fd5b506102b5610a87565b6040516102c29190613c12565b60405180910390f35b3480156102d757600080fd5b506102f260048036038101906102ed9190613159565b610a9d565b005b34801561030057600080fd5b5061031b6004803603810190610316919061326f565b610aad565b6040516103289190613c12565b60405180910390f35b34801561033d57600080fd5b50610346610cab565b005b34801561035457600080fd5b5061036f600480360381019061036a9190613159565b610d53565b005b34801561037d57600080fd5b5061039860048036038101906103939190613352565b610d73565b6040516103a59190613c12565b60405180910390f35b3480156103ba57600080fd5b506103d560048036038101906103d09190613309565b610dc6565b005b3480156103e357600080fd5b506103ec610e5c565b6040516103f99190613895565b60405180910390f35b34801561040e57600080fd5b5061042960048036038101906104249190613352565b610e6f565b604051610436919061382e565b60405180910390f35b34801561044b57600080fd5b5061046660048036038101906104619190613352565b610e85565b005b34801561047457600080fd5b5061048f600480360381019061048a91906130ec565b610f0b565b60405161049c9190613c12565b60405180910390f35b3480156104b157600080fd5b506104ba610ff4565b005b3480156104c857600080fd5b506104d161107c565b6040516104de919061382e565b60405180910390f35b3480156104f357600080fd5b5061050e60048036038101906105099190613352565b6110a6565b005b34801561051c57600080fd5b5061052561112c565b60405161053291906138b0565b60405180910390f35b34801561054757600080fd5b506105506111be565b60405161055d9190613c12565b60405180910390f35b610580600480360381019061057b9190613352565b6111c4565b005b34801561058e57600080fd5b506105a960048036038101906105a4919061322f565b61166c565b005b3480156105b757600080fd5b506105d260048036038101906105cd91906131ac565b6117ed565b005b3480156105e057600080fd5b506105fb60048036038101906105f69190613352565b611849565b005b34801561060957600080fd5b50610624600480360381019061061f9190613352565b6118cf565b60405161063191906138b0565b60405180910390f35b34801561064657600080fd5b5061064f611976565b60405161065c9190613c12565b60405180910390f35b34801561067157600080fd5b5061068c60048036038101906106879190613119565b61197c565b6040516106999190613895565b60405180910390f35b3480156106ae57600080fd5b506106c960048036038101906106c491906130ec565b611a10565b005b3480156106d757600080fd5b506106e0611b08565b005b3480156106ee57600080fd5b506106f7611bde565b6040516107049190613c12565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107d857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061084057507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610850575061084f82611be4565b5b9050919050565b60606001805461086690613f4e565b80601f016020809104026020016040519081016040528092919081815260200182805461089290613f4e565b80156108df5780601f106108b4576101008083540402835291602001916108df565b820191906000526020600020905b8154815290600101906020018083116108c257829003601f168201915b5050505050905090565b60006108f482611c4e565b610933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092a90613bb2565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061097982610e6f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e190613912565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a09611c9e565b73ffffffffffffffffffffffffffffffffffffffff161480610a385750610a3781610a32611c9e565b61197c565b5b610a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6e90613992565b60405180910390fd5b610a82838383611ca6565b505050565b60006001600054610a989190613e1e565b905090565b610aa8838383611d58565b505050565b6000610ab883610f0b565b8210610af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af090613b32565b60405180910390fd5b6000610b03610a87565b905060008060005b83811015610c69576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610bfd57806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c555786841415610c46578195505050505050610ca5565b8380610c5190613fb1565b9450505b508080610c6190613fb1565b915050610b0b565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9c90613b12565b60405180910390fd5b92915050565b610cb3611c9e565b73ffffffffffffffffffffffffffffffffffffffff16610cd161107c565b73ffffffffffffffffffffffffffffffffffffffff1614610d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1e90613a92565b60405180910390fd5b600960009054906101000a900460ff1615600960006101000a81548160ff021916908315150217905550565b610d6e838383604051806020016040528060008152506117ed565b505050565b6000610d7d610a87565b8210610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db590613af2565b60405180910390fd5b819050919050565b610dce611c9e565b73ffffffffffffffffffffffffffffffffffffffff16610dec61107c565b73ffffffffffffffffffffffffffffffffffffffff1614610e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3990613a92565b60405180910390fd5b8060089080519060200190610e58929190612eb1565b5050565b600960009054906101000a900460ff1681565b6000610e7a826122ff565b600001519050919050565b610e8d611c9e565b73ffffffffffffffffffffffffffffffffffffffff16610eab61107c565b73ffffffffffffffffffffffffffffffffffffffff1614610f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef890613a92565b60405180910390fd5b80600b8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7390613a52565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b610ffc611c9e565b73ffffffffffffffffffffffffffffffffffffffff1661101a61107c565b73ffffffffffffffffffffffffffffffffffffffff1614611070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106790613a92565b60405180910390fd5b61107a6000612502565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6110ae611c9e565b73ffffffffffffffffffffffffffffffffffffffff166110cc61107c565b73ffffffffffffffffffffffffffffffffffffffff1614611122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111990613a92565b60405180910390fd5b80600a8190555050565b60606002805461113b90613f4e565b80601f016020809104026020016040519081016040528092919081815260200182805461116790613f4e565b80156111b45780601f10611189576101008083540402835291602001916111b4565b820191906000526020600020905b81548152906001019060200180831161119757829003601f168201915b5050505050905090565b600a5481565b806000811180156111d75750600c548111155b611216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120d90613952565b60405180910390fd5b600b54816000546112279190613d3d565b1115611268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125f90613b72565b60405180910390fd5b600960009054906101000a900460ff16156112b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112af906139d2565b60405180910390fd5b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611315919061382e565b60206040518083038186803b15801561132d57600080fd5b505afa158015611341573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611365919061337f565b90506000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016113c4919061382e565b60206040518083038186803b1580156113dc57600080fd5b505afa1580156113f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611414919061337f565b90506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611473919061382e565b60206040518083038186803b15801561148b57600080fd5b505afa15801561149f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c3919061337f565b90506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611522919061382e565b60206040518083038186803b15801561153a57600080fd5b505afa15801561154e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611572919061337f565b90506000818385876115849190613d3d565b61158e9190613d3d565b6115989190613d3d565b111561160957600286600a546115ae9190613dc4565b6115b89190613d93565b3410156115fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f190613bf2565b60405180910390fd5b61160433876125c8565b611664565b85600a546116179190613dc4565b341015611659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165090613bf2565b60405180910390fd5b61166333876125c8565b5b505050505050565b611674611c9e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d990613b52565b60405180910390fd5b80600660006116ef611c9e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661179c611c9e565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117e19190613895565b60405180910390a35050565b6117f8848484611d58565b611804848484846125e6565b611843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183a90613a32565b60405180910390fd5b50505050565b611851611c9e565b73ffffffffffffffffffffffffffffffffffffffff1661186f61107c565b73ffffffffffffffffffffffffffffffffffffffff16146118c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bc90613a92565b60405180910390fd5b80600c8190555050565b60606118da82611c4e565b611919576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191090613ad2565b60405180910390fd5b600061192361277d565b90506000815111611943576040518060200160405280600081525061196e565b8061194d8461280f565b60405160200161195e92919061380a565b6040516020818303038152906040525b915050919050565b600b5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611a18611c9e565b73ffffffffffffffffffffffffffffffffffffffff16611a3661107c565b73ffffffffffffffffffffffffffffffffffffffff1614611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390613a92565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af390613932565b60405180910390fd5b611b0581612502565b50565b611b10611c9e565b73ffffffffffffffffffffffffffffffffffffffff16611b2e61107c565b73ffffffffffffffffffffffffffffffffffffffff1614611b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7b90613a92565b60405180910390fd5b60004790507358366d849685ee52a1fab9f04e29cb1a6ba0302973ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050611bdb57600080fd5b50565b600c5481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000808211611c92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8990613972565b60405180910390fd5b60005482109050919050565b600033905090565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000611d63826122ff565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16611d8a611c9e565b73ffffffffffffffffffffffffffffffffffffffff161480611de65750611daf611c9e565b73ffffffffffffffffffffffffffffffffffffffff16611dce846108e9565b73ffffffffffffffffffffffffffffffffffffffff16145b80611e025750611e018260000151611dfc611c9e565b61197c565b5b905080611e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3b906138d2565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ead90613b92565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1d90613a12565b60405180910390fd5b611f338585856001612970565b611f436000848460000151611ca6565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506003600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505060006001846121499190613d3d565b9050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561228f576121bf81611c4e565b1561228e576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506003600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46122f78686866001612976565b505050505050565b612307612f37565b61231082611c4e565b61234f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234690613a72565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000083106123b35760017f0000000000000000000000000000000000000000000000000000000000000000846123a69190613e1e565b6123b09190613d3d565b90505b60008390505b8181106124c1576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146124ad578093505050506124fd565b5080806124b990613f24565b9150506123b9565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f4906139b2565b60405180910390fd5b919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6125e282826040518060200160405280600081525061297c565b5050565b60006126078473ffffffffffffffffffffffffffffffffffffffff16612e9e565b15612770578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612630611c9e565b8786866040518563ffffffff1660e01b81526004016126529493929190613849565b602060405180830381600087803b15801561266c57600080fd5b505af192505050801561269d57506040513d601f19601f8201168201806040525081019061269a91906132dc565b60015b612720573d80600081146126cd576040519150601f19603f3d011682016040523d82523d6000602084013e6126d2565b606091505b50600081511415612718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270f90613a32565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612775565b600190505b949350505050565b60606008805461278c90613f4e565b80601f01602080910402602001604051908101604052809291908181526020018280546127b890613f4e565b80156128055780601f106127da57610100808354040283529160200191612805565b820191906000526020600020905b8154815290600101906020018083116127e857829003601f168201915b5050505050905090565b60606000821415612857576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061296b565b600082905060005b6000821461288957808061287290613fb1565b915050600a826128829190613d93565b915061285f565b60008167ffffffffffffffff8111156128a5576128a46140e7565b5b6040519080825280601f01601f1916602001820160405280156128d75781602001600182028036833780820191505090505b5090505b60008514612964576001826128f09190613e1e565b9150600a856128ff9190613ffa565b603061290b9190613d3d565b60f81b818381518110612921576129206140b8565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561295d9190613d93565b94506128db565b8093505050505b919050565b50505050565b50505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156129f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e9906138f2565b60405180910390fd5b6129fb81611c4e565b15612a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a32906139f2565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000831115612a9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9590613bd2565b60405180910390fd5b60008311612ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad890613ab2565b60405180910390fd5b612aee6000858386612970565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506040518060400160405280858360000151612beb9190613cf7565b6fffffffffffffffffffffffffffffffff168152602001858360200151612c129190613cf7565b6fffffffffffffffffffffffffffffffff16815250600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506003600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b85811015612e8157818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612e2160008884886125e6565b612e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5790613a32565b60405180910390fd5b8180612e6b90613fb1565b9250508080612e7990613fb1565b915050612db0565b5080600081905550612e966000878588612976565b505050505050565b600080823b905060008111915050919050565b828054612ebd90613f4e565b90600052602060002090601f016020900481019282612edf5760008555612f26565b82601f10612ef857805160ff1916838001178555612f26565b82800160010185558215612f26579182015b82811115612f25578251825591602001919060010190612f0a565b5b509050612f339190612f71565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b80821115612f8a576000816000905550600101612f72565b5090565b6000612fa1612f9c84613c52565b613c2d565b905082815260208101848484011115612fbd57612fbc61411b565b5b612fc8848285613ee2565b509392505050565b6000612fe3612fde84613c83565b613c2d565b905082815260208101848484011115612fff57612ffe61411b565b5b61300a848285613ee2565b509392505050565b60008135905061302181614811565b92915050565b60008135905061303681614828565b92915050565b60008135905061304b8161483f565b92915050565b6000815190506130608161483f565b92915050565b600082601f83011261307b5761307a614116565b5b813561308b848260208601612f8e565b91505092915050565b600082601f8301126130a9576130a8614116565b5b81356130b9848260208601612fd0565b91505092915050565b6000813590506130d181614856565b92915050565b6000815190506130e681614856565b92915050565b60006020828403121561310257613101614125565b5b600061311084828501613012565b91505092915050565b600080604083850312156131305761312f614125565b5b600061313e85828601613012565b925050602061314f85828601613012565b9150509250929050565b60008060006060848603121561317257613171614125565b5b600061318086828701613012565b935050602061319186828701613012565b92505060406131a2868287016130c2565b9150509250925092565b600080600080608085870312156131c6576131c5614125565b5b60006131d487828801613012565b94505060206131e587828801613012565b93505060406131f6878288016130c2565b925050606085013567ffffffffffffffff81111561321757613216614120565b5b61322387828801613066565b91505092959194509250565b6000806040838503121561324657613245614125565b5b600061325485828601613012565b925050602061326585828601613027565b9150509250929050565b6000806040838503121561328657613285614125565b5b600061329485828601613012565b92505060206132a5858286016130c2565b9150509250929050565b6000602082840312156132c5576132c4614125565b5b60006132d38482850161303c565b91505092915050565b6000602082840312156132f2576132f1614125565b5b600061330084828501613051565b91505092915050565b60006020828403121561331f5761331e614125565b5b600082013567ffffffffffffffff81111561333d5761333c614120565b5b61334984828501613094565b91505092915050565b60006020828403121561336857613367614125565b5b6000613376848285016130c2565b91505092915050565b60006020828403121561339557613394614125565b5b60006133a3848285016130d7565b91505092915050565b6133b581613e52565b82525050565b6133c481613e64565b82525050565b60006133d582613cb4565b6133df8185613cca565b93506133ef818560208601613ef1565b6133f88161412a565b840191505092915050565b600061340e82613cbf565b6134188185613cdb565b9350613428818560208601613ef1565b6134318161412a565b840191505092915050565b600061344782613cbf565b6134518185613cec565b9350613461818560208601613ef1565b80840191505092915050565b600061347a603383613cdb565b91506134858261413b565b604082019050919050565b600061349d602283613cdb565b91506134a88261418a565b604082019050919050565b60006134c0602383613cdb565b91506134cb826141d9565b604082019050919050565b60006134e3602683613cdb565b91506134ee82614228565b604082019050919050565b6000613506601483613cdb565b915061351182614277565b602082019050919050565b6000613529601683613cdb565b9150613534826142a0565b602082019050919050565b600061354c603a83613cdb565b9150613557826142c9565b604082019050919050565b600061356f603083613cdb565b915061357a82614318565b604082019050919050565b6000613592601f83613cdb565b915061359d82614367565b602082019050919050565b60006135b5601e83613cdb565b91506135c082614390565b602082019050919050565b60006135d8602683613cdb565b91506135e3826143b9565b604082019050919050565b60006135fb603483613cdb565b915061360682614408565b604082019050919050565b600061361e602c83613cdb565b915061362982614457565b604082019050919050565b6000613641602b83613cdb565b915061364c826144a6565b604082019050919050565b6000613664602083613cdb565b915061366f826144f5565b602082019050919050565b6000613687602483613cdb565b91506136928261451e565b604082019050919050565b60006136aa602f83613cdb565b91506136b58261456d565b604082019050919050565b60006136cd602483613cdb565b91506136d8826145bc565b604082019050919050565b60006136f0602f83613cdb565b91506136fb8261460b565b604082019050919050565b6000613713602383613cdb565b915061371e8261465a565b604082019050919050565b6000613736601b83613cdb565b9150613741826146a9565b602082019050919050565b6000613759601483613cdb565b9150613764826146d2565b602082019050919050565b600061377c602783613cdb565b9150613787826146fb565b604082019050919050565b600061379f602e83613cdb565b91506137aa8261474a565b604082019050919050565b60006137c2602383613cdb565b91506137cd82614799565b604082019050919050565b60006137e5601383613cdb565b91506137f0826147e8565b602082019050919050565b61380481613ed8565b82525050565b6000613816828561343c565b9150613822828461343c565b91508190509392505050565b600060208201905061384360008301846133ac565b92915050565b600060808201905061385e60008301876133ac565b61386b60208301866133ac565b61387860408301856137fb565b818103606083015261388a81846133ca565b905095945050505050565b60006020820190506138aa60008301846133bb565b92915050565b600060208201905081810360008301526138ca8184613403565b905092915050565b600060208201905081810360008301526138eb8161346d565b9050919050565b6000602082019050818103600083015261390b81613490565b9050919050565b6000602082019050818103600083015261392b816134b3565b9050919050565b6000602082019050818103600083015261394b816134d6565b9050919050565b6000602082019050818103600083015261396b816134f9565b9050919050565b6000602082019050818103600083015261398b8161351c565b9050919050565b600060208201905081810360008301526139ab8161353f565b9050919050565b600060208201905081810360008301526139cb81613562565b9050919050565b600060208201905081810360008301526139eb81613585565b9050919050565b60006020820190508181036000830152613a0b816135a8565b9050919050565b60006020820190508181036000830152613a2b816135cb565b9050919050565b60006020820190508181036000830152613a4b816135ee565b9050919050565b60006020820190508181036000830152613a6b81613611565b9050919050565b60006020820190508181036000830152613a8b81613634565b9050919050565b60006020820190508181036000830152613aab81613657565b9050919050565b60006020820190508181036000830152613acb8161367a565b9050919050565b60006020820190508181036000830152613aeb8161369d565b9050919050565b60006020820190508181036000830152613b0b816136c0565b9050919050565b60006020820190508181036000830152613b2b816136e3565b9050919050565b60006020820190508181036000830152613b4b81613706565b9050919050565b60006020820190508181036000830152613b6b81613729565b9050919050565b60006020820190508181036000830152613b8b8161374c565b9050919050565b60006020820190508181036000830152613bab8161376f565b9050919050565b60006020820190508181036000830152613bcb81613792565b9050919050565b60006020820190508181036000830152613beb816137b5565b9050919050565b60006020820190508181036000830152613c0b816137d8565b9050919050565b6000602082019050613c2760008301846137fb565b92915050565b6000613c37613c48565b9050613c438282613f80565b919050565b6000604051905090565b600067ffffffffffffffff821115613c6d57613c6c6140e7565b5b613c768261412a565b9050602081019050919050565b600067ffffffffffffffff821115613c9e57613c9d6140e7565b5b613ca78261412a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613d0282613e9c565b9150613d0d83613e9c565b9250826fffffffffffffffffffffffffffffffff03821115613d3257613d3161402b565b5b828201905092915050565b6000613d4882613ed8565b9150613d5383613ed8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613d8857613d8761402b565b5b828201905092915050565b6000613d9e82613ed8565b9150613da983613ed8565b925082613db957613db861405a565b5b828204905092915050565b6000613dcf82613ed8565b9150613dda83613ed8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e1357613e1261402b565b5b828202905092915050565b6000613e2982613ed8565b9150613e3483613ed8565b925082821015613e4757613e4661402b565b5b828203905092915050565b6000613e5d82613eb8565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613f0f578082015181840152602081019050613ef4565b83811115613f1e576000848401525b50505050565b6000613f2f82613ed8565b91506000821415613f4357613f4261402b565b5b600182039050919050565b60006002820490506001821680613f6657607f821691505b60208210811415613f7a57613f79614089565b5b50919050565b613f898261412a565b810181811067ffffffffffffffff82111715613fa857613fa76140e7565b5b80604052505050565b6000613fbc82613ed8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613fef57613fee61402b565b5b600182019050919050565b600061400582613ed8565b915061401083613ed8565b9250826140205761401f61405a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524337323156493a207472616e736665722063616c6c6572206973206e6f7460008201527f206f776e6572206e6f7220617070726f76656400000000000000000000000000602082015250565b7f45524337323156493a206d696e7420746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524337323156493a20617070726f76616c20746f2063757272656e74206f7760008201527f6e65720000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f496e76616c6964206d696e7420616d6f756e7421000000000000000000000000600082015250565b7f496e646578696e67207374617274732066726f6d203100000000000000000000600082015250565b7f45524337323156493a20617070726f76652063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f76656420666f7220616c6c000000000000602082015250565b7f45524337323156493a20756e61626c6520746f2064657465726d696e6520746860008201527f65206f776e6572206f6620746f6b656e00000000000000000000000000000000602082015250565b7f54686520636f6e74726163742069732070617573656420666f72206e6f772100600082015250565b7f45524337323156493a20746f6b656e20616c7265616479206d696e7465640000600082015250565b7f45524337323156493a207472616e7366657220746f20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524337323156493a207472616e7366657220746f206e6f6e2045524337323160008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f45524337323156493a2062616c616e636520717565727920666f72207468652060008201527f7a65726f20616464726573730000000000000000000000000000000000000000602082015250565b7f45524337323156493a206f776e657220717565727920666f72206e6f6e65786960008201527f7374656e7420746f6b656e000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524337323156493a207175616e74697479206d75737420626520677265617460008201527f6572203000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f45524337323156493a20676c6f62616c20696e646578206f7574206f6620626f60008201527f756e647300000000000000000000000000000000000000000000000000000000602082015250565b7f45524337323156493a20756e61626c6520746f2067657420746f6b656e206f6660008201527f206f776e657220627920696e6465780000000000000000000000000000000000602082015250565b7f45524337323156493a206f776e657220696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524337323156493a20617070726f766520746f2063616c6c65720000000000600082015250565b7f4d617820737570706c7920657863656564656421000000000000000000000000600082015250565b7f45524337323156493a207472616e736665722066726f6d20696e636f7272656360008201527f74206f776e657200000000000000000000000000000000000000000000000000602082015250565b7f45524337323156493a20617070726f76656420717565727920666f72206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b7f45524337323156493a207175616e7469747920746f206d696e7420746f6f206860008201527f6967680000000000000000000000000000000000000000000000000000000000602082015250565b7f496e73756666696369656e742066756e64732100000000000000000000000000600082015250565b61481a81613e52565b811461482557600080fd5b50565b61483181613e64565b811461483c57600080fd5b50565b61484881613e70565b811461485357600080fd5b50565b61485f81613ed8565b811461486a57600080fd5b5056fea26469706673582212208f5d42868d60d12ab4d6a34a8698ac76bd99f0458462f73e224dc42b64ae61dd64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101cd5760003560e01c8063715018a6116100f7578063b88d4fde11610095578063e985e9c511610064578063e985e9c514610665578063f2fde38b146106a2578063f66c7281146106cb578063f968adbe146106e2576101cd565b8063b88d4fde146105ab578063c6f6f216146105d4578063c87b56dd146105fd578063d5abeb011461063a576101cd565b806395d89b41116100d157806395d89b4114610510578063a035b1fe1461053b578063a0712d6814610566578063a22cb46514610582576101cd565b8063715018a6146104a55780638da5cb5b146104bc57806391b7f5ed146104e7576101cd565b806336566f061161016f5780635c975abb1161013e5780635c975abb146103d75780636352211e146104025780636f8b44b01461043f57806370a0823114610468576101cd565b806336566f061461033157806342842e0e146103485780634f6ccce71461037157806355f804b3146103ae576101cd565b8063095ea7b3116101ab578063095ea7b31461027757806318160ddd146102a057806323b872dd146102cb5780632f745c59146102f4576101cd565b806301ffc9a7146101d257806306fdde031461020f578063081812fc1461023a575b600080fd5b3480156101de57600080fd5b506101f960048036038101906101f491906132af565b61070d565b6040516102069190613895565b60405180910390f35b34801561021b57600080fd5b50610224610857565b60405161023191906138b0565b60405180910390f35b34801561024657600080fd5b50610261600480360381019061025c9190613352565b6108e9565b60405161026e919061382e565b60405180910390f35b34801561028357600080fd5b5061029e6004803603810190610299919061326f565b61096e565b005b3480156102ac57600080fd5b506102b5610a87565b6040516102c29190613c12565b60405180910390f35b3480156102d757600080fd5b506102f260048036038101906102ed9190613159565b610a9d565b005b34801561030057600080fd5b5061031b6004803603810190610316919061326f565b610aad565b6040516103289190613c12565b60405180910390f35b34801561033d57600080fd5b50610346610cab565b005b34801561035457600080fd5b5061036f600480360381019061036a9190613159565b610d53565b005b34801561037d57600080fd5b5061039860048036038101906103939190613352565b610d73565b6040516103a59190613c12565b60405180910390f35b3480156103ba57600080fd5b506103d560048036038101906103d09190613309565b610dc6565b005b3480156103e357600080fd5b506103ec610e5c565b6040516103f99190613895565b60405180910390f35b34801561040e57600080fd5b5061042960048036038101906104249190613352565b610e6f565b604051610436919061382e565b60405180910390f35b34801561044b57600080fd5b5061046660048036038101906104619190613352565b610e85565b005b34801561047457600080fd5b5061048f600480360381019061048a91906130ec565b610f0b565b60405161049c9190613c12565b60405180910390f35b3480156104b157600080fd5b506104ba610ff4565b005b3480156104c857600080fd5b506104d161107c565b6040516104de919061382e565b60405180910390f35b3480156104f357600080fd5b5061050e60048036038101906105099190613352565b6110a6565b005b34801561051c57600080fd5b5061052561112c565b60405161053291906138b0565b60405180910390f35b34801561054757600080fd5b506105506111be565b60405161055d9190613c12565b60405180910390f35b610580600480360381019061057b9190613352565b6111c4565b005b34801561058e57600080fd5b506105a960048036038101906105a4919061322f565b61166c565b005b3480156105b757600080fd5b506105d260048036038101906105cd91906131ac565b6117ed565b005b3480156105e057600080fd5b506105fb60048036038101906105f69190613352565b611849565b005b34801561060957600080fd5b50610624600480360381019061061f9190613352565b6118cf565b60405161063191906138b0565b60405180910390f35b34801561064657600080fd5b5061064f611976565b60405161065c9190613c12565b60405180910390f35b34801561067157600080fd5b5061068c60048036038101906106879190613119565b61197c565b6040516106999190613895565b60405180910390f35b3480156106ae57600080fd5b506106c960048036038101906106c491906130ec565b611a10565b005b3480156106d757600080fd5b506106e0611b08565b005b3480156106ee57600080fd5b506106f7611bde565b6040516107049190613c12565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107d857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061084057507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610850575061084f82611be4565b5b9050919050565b60606001805461086690613f4e565b80601f016020809104026020016040519081016040528092919081815260200182805461089290613f4e565b80156108df5780601f106108b4576101008083540402835291602001916108df565b820191906000526020600020905b8154815290600101906020018083116108c257829003601f168201915b5050505050905090565b60006108f482611c4e565b610933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092a90613bb2565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061097982610e6f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156109ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e190613912565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a09611c9e565b73ffffffffffffffffffffffffffffffffffffffff161480610a385750610a3781610a32611c9e565b61197c565b5b610a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6e90613992565b60405180910390fd5b610a82838383611ca6565b505050565b60006001600054610a989190613e1e565b905090565b610aa8838383611d58565b505050565b6000610ab883610f0b565b8210610af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af090613b32565b60405180910390fd5b6000610b03610a87565b905060008060005b83811015610c69576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610bfd57806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c555786841415610c46578195505050505050610ca5565b8380610c5190613fb1565b9450505b508080610c6190613fb1565b915050610b0b565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9c90613b12565b60405180910390fd5b92915050565b610cb3611c9e565b73ffffffffffffffffffffffffffffffffffffffff16610cd161107c565b73ffffffffffffffffffffffffffffffffffffffff1614610d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1e90613a92565b60405180910390fd5b600960009054906101000a900460ff1615600960006101000a81548160ff021916908315150217905550565b610d6e838383604051806020016040528060008152506117ed565b505050565b6000610d7d610a87565b8210610dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db590613af2565b60405180910390fd5b819050919050565b610dce611c9e565b73ffffffffffffffffffffffffffffffffffffffff16610dec61107c565b73ffffffffffffffffffffffffffffffffffffffff1614610e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3990613a92565b60405180910390fd5b8060089080519060200190610e58929190612eb1565b5050565b600960009054906101000a900460ff1681565b6000610e7a826122ff565b600001519050919050565b610e8d611c9e565b73ffffffffffffffffffffffffffffffffffffffff16610eab61107c565b73ffffffffffffffffffffffffffffffffffffffff1614610f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef890613a92565b60405180910390fd5b80600b8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7390613a52565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b610ffc611c9e565b73ffffffffffffffffffffffffffffffffffffffff1661101a61107c565b73ffffffffffffffffffffffffffffffffffffffff1614611070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106790613a92565b60405180910390fd5b61107a6000612502565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6110ae611c9e565b73ffffffffffffffffffffffffffffffffffffffff166110cc61107c565b73ffffffffffffffffffffffffffffffffffffffff1614611122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111990613a92565b60405180910390fd5b80600a8190555050565b60606002805461113b90613f4e565b80601f016020809104026020016040519081016040528092919081815260200182805461116790613f4e565b80156111b45780601f10611189576101008083540402835291602001916111b4565b820191906000526020600020905b81548152906001019060200180831161119757829003601f168201915b5050505050905090565b600a5481565b806000811180156111d75750600c548111155b611216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120d90613952565b60405180910390fd5b600b54816000546112279190613d3d565b1115611268576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125f90613b72565b60405180910390fd5b600960009054906101000a900460ff16156112b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112af906139d2565b60405180910390fd5b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611315919061382e565b60206040518083038186803b15801561132d57600080fd5b505afa158015611341573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611365919061337f565b90506000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016113c4919061382e565b60206040518083038186803b1580156113dc57600080fd5b505afa1580156113f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611414919061337f565b90506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611473919061382e565b60206040518083038186803b15801561148b57600080fd5b505afa15801561149f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c3919061337f565b90506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611522919061382e565b60206040518083038186803b15801561153a57600080fd5b505afa15801561154e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611572919061337f565b90506000818385876115849190613d3d565b61158e9190613d3d565b6115989190613d3d565b111561160957600286600a546115ae9190613dc4565b6115b89190613d93565b3410156115fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f190613bf2565b60405180910390fd5b61160433876125c8565b611664565b85600a546116179190613dc4565b341015611659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165090613bf2565b60405180910390fd5b61166333876125c8565b5b505050505050565b611674611c9e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d990613b52565b60405180910390fd5b80600660006116ef611c9e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661179c611c9e565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117e19190613895565b60405180910390a35050565b6117f8848484611d58565b611804848484846125e6565b611843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183a90613a32565b60405180910390fd5b50505050565b611851611c9e565b73ffffffffffffffffffffffffffffffffffffffff1661186f61107c565b73ffffffffffffffffffffffffffffffffffffffff16146118c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bc90613a92565b60405180910390fd5b80600c8190555050565b60606118da82611c4e565b611919576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191090613ad2565b60405180910390fd5b600061192361277d565b90506000815111611943576040518060200160405280600081525061196e565b8061194d8461280f565b60405160200161195e92919061380a565b6040516020818303038152906040525b915050919050565b600b5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611a18611c9e565b73ffffffffffffffffffffffffffffffffffffffff16611a3661107c565b73ffffffffffffffffffffffffffffffffffffffff1614611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390613a92565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af390613932565b60405180910390fd5b611b0581612502565b50565b611b10611c9e565b73ffffffffffffffffffffffffffffffffffffffff16611b2e61107c565b73ffffffffffffffffffffffffffffffffffffffff1614611b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7b90613a92565b60405180910390fd5b60004790507358366d849685ee52a1fab9f04e29cb1a6ba0302973ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050611bdb57600080fd5b50565b600c5481565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000808211611c92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8990613972565b60405180910390fd5b60005482109050919050565b600033905090565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000611d63826122ff565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16611d8a611c9e565b73ffffffffffffffffffffffffffffffffffffffff161480611de65750611daf611c9e565b73ffffffffffffffffffffffffffffffffffffffff16611dce846108e9565b73ffffffffffffffffffffffffffffffffffffffff16145b80611e025750611e018260000151611dfc611c9e565b61197c565b5b905080611e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3b906138d2565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ead90613b92565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1d90613a12565b60405180910390fd5b611f338585856001612970565b611f436000848460000151611ca6565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506003600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555090505060006001846121499190613d3d565b9050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561228f576121bf81611c4e565b1561228e576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506003600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46122f78686866001612976565b505050505050565b612307612f37565b61231082611c4e565b61234f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234690613a72565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000a83106123b35760017f000000000000000000000000000000000000000000000000000000000000000a846123a69190613e1e565b6123b09190613d3d565b90505b60008390505b8181106124c1576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146124ad578093505050506124fd565b5080806124b990613f24565b9150506123b9565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f4906139b2565b60405180910390fd5b919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6125e282826040518060200160405280600081525061297c565b5050565b60006126078473ffffffffffffffffffffffffffffffffffffffff16612e9e565b15612770578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612630611c9e565b8786866040518563ffffffff1660e01b81526004016126529493929190613849565b602060405180830381600087803b15801561266c57600080fd5b505af192505050801561269d57506040513d601f19601f8201168201806040525081019061269a91906132dc565b60015b612720573d80600081146126cd576040519150601f19603f3d011682016040523d82523d6000602084013e6126d2565b606091505b50600081511415612718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270f90613a32565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612775565b600190505b949350505050565b60606008805461278c90613f4e565b80601f01602080910402602001604051908101604052809291908181526020018280546127b890613f4e565b80156128055780601f106127da57610100808354040283529160200191612805565b820191906000526020600020905b8154815290600101906020018083116127e857829003601f168201915b5050505050905090565b60606000821415612857576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061296b565b600082905060005b6000821461288957808061287290613fb1565b915050600a826128829190613d93565b915061285f565b60008167ffffffffffffffff8111156128a5576128a46140e7565b5b6040519080825280601f01601f1916602001820160405280156128d75781602001600182028036833780820191505090505b5090505b60008514612964576001826128f09190613e1e565b9150600a856128ff9190613ffa565b603061290b9190613d3d565b60f81b818381518110612921576129206140b8565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561295d9190613d93565b94506128db565b8093505050505b919050565b50505050565b50505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156129f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e9906138f2565b60405180910390fd5b6129fb81611c4e565b15612a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a32906139f2565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000a831115612a9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9590613bd2565b60405180910390fd5b60008311612ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad890613ab2565b60405180910390fd5b612aee6000858386612970565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168152505090506040518060400160405280858360000151612beb9190613cf7565b6fffffffffffffffffffffffffffffffff168152602001858360200151612c129190613cf7565b6fffffffffffffffffffffffffffffffff16815250600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506003600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b85811015612e8157818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612e2160008884886125e6565b612e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5790613a32565b60405180910390fd5b8180612e6b90613fb1565b9250508080612e7990613fb1565b915050612db0565b5080600081905550612e966000878588612976565b505050505050565b600080823b905060008111915050919050565b828054612ebd90613f4e565b90600052602060002090601f016020900481019282612edf5760008555612f26565b82601f10612ef857805160ff1916838001178555612f26565b82800160010185558215612f26579182015b82811115612f25578251825591602001919060010190612f0a565b5b509050612f339190612f71565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b80821115612f8a576000816000905550600101612f72565b5090565b6000612fa1612f9c84613c52565b613c2d565b905082815260208101848484011115612fbd57612fbc61411b565b5b612fc8848285613ee2565b509392505050565b6000612fe3612fde84613c83565b613c2d565b905082815260208101848484011115612fff57612ffe61411b565b5b61300a848285613ee2565b509392505050565b60008135905061302181614811565b92915050565b60008135905061303681614828565b92915050565b60008135905061304b8161483f565b92915050565b6000815190506130608161483f565b92915050565b600082601f83011261307b5761307a614116565b5b813561308b848260208601612f8e565b91505092915050565b600082601f8301126130a9576130a8614116565b5b81356130b9848260208601612fd0565b91505092915050565b6000813590506130d181614856565b92915050565b6000815190506130e681614856565b92915050565b60006020828403121561310257613101614125565b5b600061311084828501613012565b91505092915050565b600080604083850312156131305761312f614125565b5b600061313e85828601613012565b925050602061314f85828601613012565b9150509250929050565b60008060006060848603121561317257613171614125565b5b600061318086828701613012565b935050602061319186828701613012565b92505060406131a2868287016130c2565b9150509250925092565b600080600080608085870312156131c6576131c5614125565b5b60006131d487828801613012565b94505060206131e587828801613012565b93505060406131f6878288016130c2565b925050606085013567ffffffffffffffff81111561321757613216614120565b5b61322387828801613066565b91505092959194509250565b6000806040838503121561324657613245614125565b5b600061325485828601613012565b925050602061326585828601613027565b9150509250929050565b6000806040838503121561328657613285614125565b5b600061329485828601613012565b92505060206132a5858286016130c2565b9150509250929050565b6000602082840312156132c5576132c4614125565b5b60006132d38482850161303c565b91505092915050565b6000602082840312156132f2576132f1614125565b5b600061330084828501613051565b91505092915050565b60006020828403121561331f5761331e614125565b5b600082013567ffffffffffffffff81111561333d5761333c614120565b5b61334984828501613094565b91505092915050565b60006020828403121561336857613367614125565b5b6000613376848285016130c2565b91505092915050565b60006020828403121561339557613394614125565b5b60006133a3848285016130d7565b91505092915050565b6133b581613e52565b82525050565b6133c481613e64565b82525050565b60006133d582613cb4565b6133df8185613cca565b93506133ef818560208601613ef1565b6133f88161412a565b840191505092915050565b600061340e82613cbf565b6134188185613cdb565b9350613428818560208601613ef1565b6134318161412a565b840191505092915050565b600061344782613cbf565b6134518185613cec565b9350613461818560208601613ef1565b80840191505092915050565b600061347a603383613cdb565b91506134858261413b565b604082019050919050565b600061349d602283613cdb565b91506134a88261418a565b604082019050919050565b60006134c0602383613cdb565b91506134cb826141d9565b604082019050919050565b60006134e3602683613cdb565b91506134ee82614228565b604082019050919050565b6000613506601483613cdb565b915061351182614277565b602082019050919050565b6000613529601683613cdb565b9150613534826142a0565b602082019050919050565b600061354c603a83613cdb565b9150613557826142c9565b604082019050919050565b600061356f603083613cdb565b915061357a82614318565b604082019050919050565b6000613592601f83613cdb565b915061359d82614367565b602082019050919050565b60006135b5601e83613cdb565b91506135c082614390565b602082019050919050565b60006135d8602683613cdb565b91506135e3826143b9565b604082019050919050565b60006135fb603483613cdb565b915061360682614408565b604082019050919050565b600061361e602c83613cdb565b915061362982614457565b604082019050919050565b6000613641602b83613cdb565b915061364c826144a6565b604082019050919050565b6000613664602083613cdb565b915061366f826144f5565b602082019050919050565b6000613687602483613cdb565b91506136928261451e565b604082019050919050565b60006136aa602f83613cdb565b91506136b58261456d565b604082019050919050565b60006136cd602483613cdb565b91506136d8826145bc565b604082019050919050565b60006136f0602f83613cdb565b91506136fb8261460b565b604082019050919050565b6000613713602383613cdb565b915061371e8261465a565b604082019050919050565b6000613736601b83613cdb565b9150613741826146a9565b602082019050919050565b6000613759601483613cdb565b9150613764826146d2565b602082019050919050565b600061377c602783613cdb565b9150613787826146fb565b604082019050919050565b600061379f602e83613cdb565b91506137aa8261474a565b604082019050919050565b60006137c2602383613cdb565b91506137cd82614799565b604082019050919050565b60006137e5601383613cdb565b91506137f0826147e8565b602082019050919050565b61380481613ed8565b82525050565b6000613816828561343c565b9150613822828461343c565b91508190509392505050565b600060208201905061384360008301846133ac565b92915050565b600060808201905061385e60008301876133ac565b61386b60208301866133ac565b61387860408301856137fb565b818103606083015261388a81846133ca565b905095945050505050565b60006020820190506138aa60008301846133bb565b92915050565b600060208201905081810360008301526138ca8184613403565b905092915050565b600060208201905081810360008301526138eb8161346d565b9050919050565b6000602082019050818103600083015261390b81613490565b9050919050565b6000602082019050818103600083015261392b816134b3565b9050919050565b6000602082019050818103600083015261394b816134d6565b9050919050565b6000602082019050818103600083015261396b816134f9565b9050919050565b6000602082019050818103600083015261398b8161351c565b9050919050565b600060208201905081810360008301526139ab8161353f565b9050919050565b600060208201905081810360008301526139cb81613562565b9050919050565b600060208201905081810360008301526139eb81613585565b9050919050565b60006020820190508181036000830152613a0b816135a8565b9050919050565b60006020820190508181036000830152613a2b816135cb565b9050919050565b60006020820190508181036000830152613a4b816135ee565b9050919050565b60006020820190508181036000830152613a6b81613611565b9050919050565b60006020820190508181036000830152613a8b81613634565b9050919050565b60006020820190508181036000830152613aab81613657565b9050919050565b60006020820190508181036000830152613acb8161367a565b9050919050565b60006020820190508181036000830152613aeb8161369d565b9050919050565b60006020820190508181036000830152613b0b816136c0565b9050919050565b60006020820190508181036000830152613b2b816136e3565b9050919050565b60006020820190508181036000830152613b4b81613706565b9050919050565b60006020820190508181036000830152613b6b81613729565b9050919050565b60006020820190508181036000830152613b8b8161374c565b9050919050565b60006020820190508181036000830152613bab8161376f565b9050919050565b60006020820190508181036000830152613bcb81613792565b9050919050565b60006020820190508181036000830152613beb816137b5565b9050919050565b60006020820190508181036000830152613c0b816137d8565b9050919050565b6000602082019050613c2760008301846137fb565b92915050565b6000613c37613c48565b9050613c438282613f80565b919050565b6000604051905090565b600067ffffffffffffffff821115613c6d57613c6c6140e7565b5b613c768261412a565b9050602081019050919050565b600067ffffffffffffffff821115613c9e57613c9d6140e7565b5b613ca78261412a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613d0282613e9c565b9150613d0d83613e9c565b9250826fffffffffffffffffffffffffffffffff03821115613d3257613d3161402b565b5b828201905092915050565b6000613d4882613ed8565b9150613d5383613ed8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613d8857613d8761402b565b5b828201905092915050565b6000613d9e82613ed8565b9150613da983613ed8565b925082613db957613db861405a565b5b828204905092915050565b6000613dcf82613ed8565b9150613dda83613ed8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e1357613e1261402b565b5b828202905092915050565b6000613e2982613ed8565b9150613e3483613ed8565b925082821015613e4757613e4661402b565b5b828203905092915050565b6000613e5d82613eb8565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015613f0f578082015181840152602081019050613ef4565b83811115613f1e576000848401525b50505050565b6000613f2f82613ed8565b91506000821415613f4357613f4261402b565b5b600182039050919050565b60006002820490506001821680613f6657607f821691505b60208210811415613f7a57613f79614089565b5b50919050565b613f898261412a565b810181811067ffffffffffffffff82111715613fa857613fa76140e7565b5b80604052505050565b6000613fbc82613ed8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613fef57613fee61402b565b5b600182019050919050565b600061400582613ed8565b915061401083613ed8565b9250826140205761401f61405a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524337323156493a207472616e736665722063616c6c6572206973206e6f7460008201527f206f776e6572206e6f7220617070726f76656400000000000000000000000000602082015250565b7f45524337323156493a206d696e7420746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524337323156493a20617070726f76616c20746f2063757272656e74206f7760008201527f6e65720000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f496e76616c6964206d696e7420616d6f756e7421000000000000000000000000600082015250565b7f496e646578696e67207374617274732066726f6d203100000000000000000000600082015250565b7f45524337323156493a20617070726f76652063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f76656420666f7220616c6c000000000000602082015250565b7f45524337323156493a20756e61626c6520746f2064657465726d696e6520746860008201527f65206f776e6572206f6620746f6b656e00000000000000000000000000000000602082015250565b7f54686520636f6e74726163742069732070617573656420666f72206e6f772100600082015250565b7f45524337323156493a20746f6b656e20616c7265616479206d696e7465640000600082015250565b7f45524337323156493a207472616e7366657220746f20746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524337323156493a207472616e7366657220746f206e6f6e2045524337323160008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b7f45524337323156493a2062616c616e636520717565727920666f72207468652060008201527f7a65726f20616464726573730000000000000000000000000000000000000000602082015250565b7f45524337323156493a206f776e657220717565727920666f72206e6f6e65786960008201527f7374656e7420746f6b656e000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524337323156493a207175616e74697479206d75737420626520677265617460008201527f6572203000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f45524337323156493a20676c6f62616c20696e646578206f7574206f6620626f60008201527f756e647300000000000000000000000000000000000000000000000000000000602082015250565b7f45524337323156493a20756e61626c6520746f2067657420746f6b656e206f6660008201527f206f776e657220627920696e6465780000000000000000000000000000000000602082015250565b7f45524337323156493a206f776e657220696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524337323156493a20617070726f766520746f2063616c6c65720000000000600082015250565b7f4d617820737570706c7920657863656564656421000000000000000000000000600082015250565b7f45524337323156493a207472616e736665722066726f6d20696e636f7272656360008201527f74206f776e657200000000000000000000000000000000000000000000000000602082015250565b7f45524337323156493a20617070726f76656420717565727920666f72206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b7f45524337323156493a207175616e7469747920746f206d696e7420746f6f206860008201527f6967680000000000000000000000000000000000000000000000000000000000602082015250565b7f496e73756666696369656e742066756e64732100000000000000000000000000600082015250565b61481a81613e52565b811461482557600080fd5b50565b61483181613e64565b811461483c57600080fd5b50565b61484881613e70565b811461485357600080fd5b50565b61485f81613ed8565b811461486a57600080fd5b5056fea26469706673582212208f5d42868d60d12ab4d6a34a8698ac76bd99f0458462f73e224dc42b64ae61dd64736f6c63430008070033

Deployed Bytecode Sourcemap

18885:2712:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9966:342;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11478:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12490:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12102:382;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8949:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13146:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9237:723;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20865:70;;;;;;;;;;;;;:::i;:::-;;13294:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9053:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21049:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18993:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11354:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21319:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10314:212;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3208:97;;;;;;;;;;;;;:::i;:::-;;3005:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21235:78;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11578:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19023:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19748:764;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12701:275;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13457:312;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21139:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20518:341;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19062:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12982:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3311:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21419:175;;;;;;;;;;;;;:::i;:::-;;19099:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9966:342;10068:4;10110:25;10095:40;;;:11;:40;;;;:99;;;;10161:33;10146:48;;;:11;:48;;;;10095:99;:160;;;;10220:35;10205:50;;;:11;:50;;;;10095:160;:207;;;;10266:36;10290:11;10266:23;:36::i;:::-;10095:207;10081:221;;9966:342;;;:::o;11478:94::-;11532:13;11561:5;11554:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11478:94;:::o;12490:205::-;12558:7;12582:16;12590:7;12582;:16::i;:::-;12574:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;12665:15;:24;12681:7;12665:24;;;;;;;;;;;;;;;;;;;;;12658:31;;12490:205;;;:::o;12102:382::-;12171:13;12187:25;12204:7;12187:16;:25::i;:::-;12171:41;;12233:5;12227:11;;:2;:11;;;;12219:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;12319:5;12303:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;12328:37;12345:5;12352:12;:10;:12::i;:::-;12328:16;:37::i;:::-;12303:62;12287:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;12450:28;12459:2;12463:7;12472:5;12450:8;:28::i;:::-;12164:320;12102:382;;:::o;8949:98::-;9002:7;9040:1;9025:12;;:16;;;;:::i;:::-;9018:23;;8949:98;:::o;13146:142::-;13254:28;13264:4;13270:2;13274:7;13254:9;:28::i;:::-;13146:142;;;:::o;9237:723::-;9326:7;9358:16;9368:5;9358:9;:16::i;:::-;9350:5;:24;9342:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;9421:22;9446:13;:11;:13::i;:::-;9421:38;;9466:19;9496:25;9546:9;9541:350;9565:14;9561:1;:18;9541:350;;;9595:31;9629:11;:14;9641:1;9629:14;;;;;;;;;;;9595:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9682:1;9656:28;;:9;:14;;;:28;;;9652:89;;9717:9;:14;;;9697:34;;9652:89;9774:5;9753:26;;:17;:26;;;9749:135;;;9811:5;9796:11;:20;9792:59;;;9838:1;9831:8;;;;;;;;;9792:59;9861:13;;;;;:::i;:::-;;;;9749:135;9586:305;9581:3;;;;;:::i;:::-;;;;9541:350;;;;9897:57;;;;;;;;;;:::i;:::-;;;;;;;;9237:723;;;;;:::o;20865:70::-;3139:12;:10;:12::i;:::-;3128:23;;:7;:5;:7::i;:::-;:23;;;3120:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20923:6:::1;;;;;;;;;;;20922:7;20913:6;;:16;;;;;;;;;;;;;;;;;;20865:70::o:0;13294:157::-;13406:39;13423:4;13429:2;13433:7;13406:39;;;;;;;;;;;;:16;:39::i;:::-;13294:157;;;:::o;9053:178::-;9120:7;9152:13;:11;:13::i;:::-;9144:5;:21;9136:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9220:5;9213:12;;9053:178;;;:::o;21049:84::-;3139:12;:10;:12::i;:::-;3128:23;;:7;:5;:7::i;:::-;:23;;;3120:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21123:4:::1;21113:7;:14;;;;;;;;;;;;:::i;:::-;;21049:84:::0;:::o;18993:25::-;;;;;;;;;;;;;:::o;11354:118::-;11418:7;11441:20;11453:7;11441:11;:20::i;:::-;:25;;;11434:32;;11354:118;;;:::o;21319:94::-;3139:12;:10;:12::i;:::-;3128:23;;:7;:5;:7::i;:::-;:23;;;3120:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21397:10:::1;21385:9;:22;;;;21319:94:::0;:::o;10314:212::-;10378:7;10419:1;10402:19;;:5;:19;;;;10394:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;10492:12;:19;10505:5;10492:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;10484:36;;10477:43;;10314:212;;;:::o;3208:97::-;3139:12;:10;:12::i;:::-;3128:23;;:7;:5;:7::i;:::-;:23;;;3120:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3269:30:::1;3296:1;3269:18;:30::i;:::-;3208:97::o:0;3005:81::-;3051:7;3074:6;;;;;;;;;;;3067:13;;3005:81;:::o;21235:78::-;3139:12;:10;:12::i;:::-;3128:23;;:7;:5;:7::i;:::-;:23;;;3120:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21301:6:::1;21293:5;:14;;;;21235:78:::0;:::o;11578:98::-;11634:13;11663:7;11656:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11578:98;:::o;19023:33::-;;;;:::o;19748:764::-;19813:11;19596:1;19582:11;:15;:42;;;;;19616:8;;19601:11;:23;;19582:42;19574:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;19694:9;;19679:11;19664:12;;:26;;;;:::i;:::-;:39;;19656:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;19842:6:::1;;;;;;;;;;;19841:7;19833:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;19893:18;19922:6;;;;;;;;;;;19914:25;;;19940:10;19914:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19893:58;;19958:18;19987:6;;;;;;;;;;;19979:25;;;20005:10;19979:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19958:58;;20023:18;20052:6;;;;;;;;;;;20044:25;;;20070:10;20044:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20023:58;;20088:18;20117:6;;;;;;;;;;;20109:25;;;20135:10;20109:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20088:58;;20223:1;20207:13;20191;20175;20159;:29;;;;:::i;:::-;:45;;;;:::i;:::-;:61;;;;:::i;:::-;:65;20155:352;;;20301:1;20287:11;20279:5;;:19;;;;:::i;:::-;:23;;;;:::i;:::-;20266:9;:36;;20258:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20335:34;20345:10;20357:11;20335:9;:34::i;:::-;20155:352;;;20421:11;20413:5;;:19;;;;:::i;:::-;20400:9;:32;;20392:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20465:34;20475:10;20487:11;20465:9;:34::i;:::-;20155:352;19826:686;;;;19748:764:::0;;:::o;12701:275::-;12804:12;:10;:12::i;:::-;12792:24;;:8;:24;;;;12784:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12902:8;12857:18;:32;12876:12;:10;:12::i;:::-;12857:32;;;;;;;;;;;;;;;:42;12890:8;12857:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;12951:8;12922:48;;12937:12;:10;:12::i;:::-;12922:48;;;12961:8;12922:48;;;;;;:::i;:::-;;;;;;;;12701:275;;:::o;13457:312::-;13594:28;13604:4;13610:2;13614:7;13594:9;:28::i;:::-;13645:48;13668:4;13674:2;13678:7;13687:5;13645:22;:48::i;:::-;13629:134;;;;;;;;;;;;:::i;:::-;;;;;;;;;13457:312;;;;:::o;21139:90::-;3139:12;:10;:12::i;:::-;3128:23;;:7;:5;:7::i;:::-;:23;;;3120:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21214:9:::1;21203:8;:20;;;;21139:90:::0;:::o;20518:341::-;20591:13;20621:16;20629:7;20621;:16::i;:::-;20613:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;20698:28;20729:10;:8;:10::i;:::-;20698:41;;20784:1;20759:14;20753:28;:32;:100;;;;;;;;;;;;;;;;;20812:14;20828:18;:7;:16;:18::i;:::-;20795:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20753:100;20746:107;;;20518:341;;;:::o;19062:31::-;;;;:::o;12982:158::-;13079:4;13099:18;:25;13118:5;13099:25;;;;;;;;;;;;;;;:35;13125:8;13099:35;;;;;;;;;;;;;;;;;;;;;;;;;13092:42;;12982:158;;;;:::o;3311:191::-;3139:12;:10;:12::i;:::-;3128:23;;:7;:5;:7::i;:::-;:23;;;3120:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3416:1:::1;3396:22;;:8;:22;;;;3388:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3468:28;3487:8;3468:18;:28::i;:::-;3311:191:::0;:::o;21419:175::-;3139:12;:10;:12::i;:::-;3128:23;;:7;:5;:7::i;:::-;:23;;;3120:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21466:16:::1;21485:21;21466:40;;21529:42;21521:56;;:66;21578:8;21521:66;;;;;;;;;;;;;;;;;;;;;;;21513:75;;;::::0;::::1;;21459:135;21419:175::o:0;19099:28::-;;;;:::o;7160:151::-;7245:4;7280:25;7265:40;;;:11;:40;;;;7258:47;;7160:151;;;:::o;13775:158::-;13832:4;13863:1;13853:7;:11;13845:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;13915:12;;13905:7;:22;13898:29;;13775:158;;;:::o;2575:92::-;2628:7;2651:10;2644:17;;2575:92;:::o;16498:172::-;16622:2;16595:15;:24;16611:7;16595:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;16656:7;16652:2;16636:28;;16645:5;16636:28;;;;;;;;;;;;16498:172;;;:::o;15272:1220::-;15369:35;15407:20;15419:7;15407:11;:20::i;:::-;15369:58;;15436:22;15478:13;:18;;;15462:34;;:12;:10;:12::i;:::-;:34;;;:81;;;;15531:12;:10;:12::i;:::-;15507:36;;:20;15519:7;15507:11;:20::i;:::-;:36;;;15462:81;:142;;;;15554:50;15571:13;:18;;;15591:12;:10;:12::i;:::-;15554:16;:50::i;:::-;15462:142;15436:169;;15622:17;15614:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;15734:4;15712:26;;:13;:18;;;:26;;;15704:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;15811:1;15797:16;;:2;:16;;;;15789:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15865:43;15887:4;15893:2;15897:7;15906:1;15865:21;:43::i;:::-;15917:49;15934:1;15938:7;15947:13;:18;;;15917:8;:49::i;:::-;16024:1;15994:12;:18;16007:4;15994:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16062:1;16034:12;:16;16047:2;16034:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16102:43;;;;;;;;16117:2;16102:43;;;;;;16128:15;16102:43;;;;;16079:11;:20;16091:7;16079:20;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16154:19;16186:1;16176:7;:11;;;;:::i;:::-;16154:33;;16239:1;16198:43;;:11;:24;16210:11;16198:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;16194:203;;;16256:20;16264:11;16256:7;:20::i;:::-;16252:138;;;16316:64;;;;;;;;16331:13;:18;;;16316:64;;;;;;16351:13;:28;;;16316:64;;;;;16289:11;:24;16301:11;16289:24;;;;;;;;;;;:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16252:138;16194:203;16429:7;16425:2;16410:27;;16419:4;16410:27;;;;;;;;;;;;16444:42;16465:4;16471:2;16475:7;16484:1;16444:20;:42::i;:::-;15362:1130;;;15272:1220;;;:::o;10758:590::-;10819:21;;:::i;:::-;10857:16;10865:7;10857;:16::i;:::-;10849:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10930:26;10978:12;10967:7;:23;10963:93;;11047:1;11032:12;11022:7;:22;;;;:::i;:::-;:26;;;;:::i;:::-;11001:47;;10963:93;11069:12;11084:7;11069:22;;11064:212;11101:18;11093:4;:26;11064:212;;11138:31;11172:11;:17;11184:4;11172:17;;;;;;;;;;;11138:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11228:1;11202:28;;:9;:14;;;:28;;;11198:71;;11250:9;11243:16;;;;;;;11198:71;11129:147;11121:6;;;;;:::i;:::-;;;;11064:212;;;;11284:58;;;;;;;;;;:::i;:::-;;;;;;;;10758:590;;;;:::o;3508:177::-;3578:16;3597:6;;;;;;;;;;;3578:25;;3619:8;3610:6;;:17;;;;;;;;;;;;;;;;;;3670:8;3639:40;;3660:8;3639:40;;;;;;;;;;;;3571:114;3508:177;:::o;13939:98::-;14004:27;14014:2;14018:8;14004:27;;;;;;;;;;;;:9;:27::i;:::-;13939:98;;:::o;16676:675::-;16813:4;16830:15;:2;:13;;;:15::i;:::-;16826:520;;;16876:2;16860:36;;;16897:12;:10;:12::i;:::-;16911:4;16917:7;16926:5;16860:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;16856:449;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17101:1;17084:6;:13;:18;17080:216;;;17117:62;;;;;;;;;;:::i;:::-;;;;;;;;17080:216;17264:6;17258:13;17249:6;17245:2;17241:15;17234:38;16856:449;16985:45;;;16975:55;;;:6;:55;;;;16968:62;;;;;16826:520;17334:4;17327:11;;16676:675;;;;;;;:::o;20941:102::-;21001:13;21030:7;21023:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20941:102;:::o;1366:454::-;1422:13;1457:1;1448:5;:10;1444:43;;;1469:10;;;;;;;;;;;;;;;;;;;;;1444:43;1493:12;1508:5;1493:20;;1520:14;1541:62;1556:1;1548:4;:9;1541:62;;1568:8;;;;;:::i;:::-;;;;1593:2;1585:10;;;;;:::i;:::-;;;1541:62;;;1609:19;1641:6;1631:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1609:39;;1655:132;1671:1;1662:5;:10;1655:132;;1693:1;1683:11;;;;;:::i;:::-;;;1754:2;1746:5;:10;;;;:::i;:::-;1733:2;:24;;;;:::i;:::-;1720:39;;1703:6;1710;1703:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;1777:2;1768:11;;;;;:::i;:::-;;;1655:132;;;1807:6;1793:21;;;;;1366:454;;;;:::o;17357:141::-;;;;;:::o;17504:140::-;;;;;:::o;14043:1223::-;14148:20;14171:12;;14148:35;;14212:1;14198:16;;:2;:16;;;;14190:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;14269:21;14277:12;14269:7;:21::i;:::-;14268:22;14260:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;14352:12;14340:8;:24;;14332:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14430:1;14419:8;:12;14411:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;14481;14511:1;14515:2;14519:12;14533:8;14481:21;:61::i;:::-;14551:30;14584:12;:16;14597:2;14584:16;;;;;;;;;;;;;;;14551:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14626:119;;;;;;;;14676:8;14646:11;:19;;;:39;;;;:::i;:::-;14626:119;;;;;;14729:8;14694:11;:24;;;:44;;;;:::i;:::-;14626:119;;;;;14607:12;:16;14620:2;14607:16;;;;;;;;;;;;;;;:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14780:43;;;;;;;;14795:2;14780:43;;;;;;14806:15;14780:43;;;;;14752:11;:25;14764:12;14752:25;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14832:20;14855:12;14832:35;;14881:9;14876:282;14900:8;14896:1;:12;14876:282;;;14954:12;14950:2;14929:38;;14946:1;14929:38;;;;;;;;;;;;14994:59;15025:1;15029:2;15033:12;15047:5;14994:22;:59::i;:::-;14976:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;15136:14;;;;;:::i;:::-;;;;14910:3;;;;;:::i;:::-;;;;14876:282;;;;15181:12;15166;:27;;;;15200:60;15229:1;15233:2;15237:12;15251:8;15200:20;:60::i;:::-;14141:1125;;;14043:1223;;;:::o;3715:174::-;3775:4;3790:12;3847:7;3835:20;3827:28;;3882:1;3875:4;:8;3868:15;;;3715:174;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:412::-;501:5;526:66;542:49;584:6;542:49;:::i;:::-;526:66;:::i;:::-;517:75;;615:6;608:5;601:21;653:4;646:5;642:16;691:3;682:6;677:3;673:16;670:25;667:112;;;698:79;;:::i;:::-;667:112;788:41;822:6;817:3;812;788:41;:::i;:::-;507:328;423:412;;;;;:::o;841:139::-;887:5;925:6;912:20;903:29;;941:33;968:5;941:33;:::i;:::-;841:139;;;;:::o;986:133::-;1029:5;1067:6;1054:20;1045:29;;1083:30;1107:5;1083:30;:::i;:::-;986:133;;;;:::o;1125:137::-;1170:5;1208:6;1195:20;1186:29;;1224:32;1250:5;1224:32;:::i;:::-;1125:137;;;;:::o;1268:141::-;1324:5;1355:6;1349:13;1340:22;;1371:32;1397:5;1371:32;:::i;:::-;1268:141;;;;:::o;1428:338::-;1483:5;1532:3;1525:4;1517:6;1513:17;1509:27;1499:122;;1540:79;;:::i;:::-;1499:122;1657:6;1644:20;1682:78;1756:3;1748:6;1741:4;1733:6;1729:17;1682:78;:::i;:::-;1673:87;;1489:277;1428:338;;;;:::o;1786:340::-;1842:5;1891:3;1884:4;1876:6;1872:17;1868:27;1858:122;;1899:79;;:::i;:::-;1858:122;2016:6;2003:20;2041:79;2116:3;2108:6;2101:4;2093:6;2089:17;2041:79;:::i;:::-;2032:88;;1848:278;1786:340;;;;:::o;2132:139::-;2178:5;2216:6;2203:20;2194:29;;2232:33;2259:5;2232:33;:::i;:::-;2132:139;;;;:::o;2277:143::-;2334:5;2365:6;2359:13;2350:22;;2381:33;2408:5;2381:33;:::i;:::-;2277:143;;;;:::o;2426:329::-;2485:6;2534:2;2522:9;2513:7;2509:23;2505:32;2502:119;;;2540:79;;:::i;:::-;2502:119;2660:1;2685:53;2730:7;2721:6;2710:9;2706:22;2685:53;:::i;:::-;2675:63;;2631:117;2426:329;;;;:::o;2761:474::-;2829:6;2837;2886:2;2874:9;2865:7;2861:23;2857:32;2854:119;;;2892:79;;:::i;:::-;2854:119;3012:1;3037:53;3082:7;3073:6;3062:9;3058:22;3037:53;:::i;:::-;3027:63;;2983:117;3139:2;3165:53;3210:7;3201:6;3190:9;3186:22;3165:53;:::i;:::-;3155:63;;3110:118;2761:474;;;;;:::o;3241:619::-;3318:6;3326;3334;3383:2;3371:9;3362:7;3358:23;3354:32;3351:119;;;3389:79;;:::i;:::-;3351:119;3509:1;3534:53;3579:7;3570:6;3559:9;3555:22;3534:53;:::i;:::-;3524:63;;3480:117;3636:2;3662:53;3707:7;3698:6;3687:9;3683:22;3662:53;:::i;:::-;3652:63;;3607:118;3764:2;3790:53;3835:7;3826:6;3815:9;3811:22;3790:53;:::i;:::-;3780:63;;3735:118;3241:619;;;;;:::o;3866:943::-;3961:6;3969;3977;3985;4034:3;4022:9;4013:7;4009:23;4005:33;4002:120;;;4041:79;;:::i;:::-;4002:120;4161:1;4186:53;4231:7;4222:6;4211:9;4207:22;4186:53;:::i;:::-;4176:63;;4132:117;4288:2;4314:53;4359:7;4350:6;4339:9;4335:22;4314:53;:::i;:::-;4304:63;;4259:118;4416:2;4442:53;4487:7;4478:6;4467:9;4463:22;4442:53;:::i;:::-;4432:63;;4387:118;4572:2;4561:9;4557:18;4544:32;4603:18;4595:6;4592:30;4589:117;;;4625:79;;:::i;:::-;4589:117;4730:62;4784:7;4775:6;4764:9;4760:22;4730:62;:::i;:::-;4720:72;;4515:287;3866:943;;;;;;;:::o;4815:468::-;4880:6;4888;4937:2;4925:9;4916:7;4912:23;4908:32;4905:119;;;4943:79;;:::i;:::-;4905:119;5063:1;5088:53;5133:7;5124:6;5113:9;5109:22;5088:53;:::i;:::-;5078:63;;5034:117;5190:2;5216:50;5258:7;5249:6;5238:9;5234:22;5216:50;:::i;:::-;5206:60;;5161:115;4815:468;;;;;:::o;5289:474::-;5357:6;5365;5414:2;5402:9;5393:7;5389:23;5385:32;5382:119;;;5420:79;;:::i;:::-;5382:119;5540:1;5565:53;5610:7;5601:6;5590:9;5586:22;5565:53;:::i;:::-;5555:63;;5511:117;5667:2;5693:53;5738:7;5729:6;5718:9;5714:22;5693:53;:::i;:::-;5683:63;;5638:118;5289:474;;;;;:::o;5769:327::-;5827:6;5876:2;5864:9;5855:7;5851:23;5847:32;5844:119;;;5882:79;;:::i;:::-;5844:119;6002:1;6027:52;6071:7;6062:6;6051:9;6047:22;6027:52;:::i;:::-;6017:62;;5973:116;5769:327;;;;:::o;6102:349::-;6171:6;6220:2;6208:9;6199:7;6195:23;6191:32;6188:119;;;6226:79;;:::i;:::-;6188:119;6346:1;6371:63;6426:7;6417:6;6406:9;6402:22;6371:63;:::i;:::-;6361:73;;6317:127;6102:349;;;;:::o;6457:509::-;6526:6;6575:2;6563:9;6554:7;6550:23;6546:32;6543:119;;;6581:79;;:::i;:::-;6543:119;6729:1;6718:9;6714:17;6701:31;6759:18;6751:6;6748:30;6745:117;;;6781:79;;:::i;:::-;6745:117;6886:63;6941:7;6932:6;6921:9;6917:22;6886:63;:::i;:::-;6876:73;;6672:287;6457:509;;;;:::o;6972:329::-;7031:6;7080:2;7068:9;7059:7;7055:23;7051:32;7048:119;;;7086:79;;:::i;:::-;7048:119;7206:1;7231:53;7276:7;7267:6;7256:9;7252:22;7231:53;:::i;:::-;7221:63;;7177:117;6972:329;;;;:::o;7307:351::-;7377:6;7426:2;7414:9;7405:7;7401:23;7397:32;7394:119;;;7432:79;;:::i;:::-;7394:119;7552:1;7577:64;7633:7;7624:6;7613:9;7609:22;7577:64;:::i;:::-;7567:74;;7523:128;7307:351;;;;:::o;7664:118::-;7751:24;7769:5;7751:24;:::i;:::-;7746:3;7739:37;7664:118;;:::o;7788:109::-;7869:21;7884:5;7869:21;:::i;:::-;7864:3;7857:34;7788:109;;:::o;7903:360::-;7989:3;8017:38;8049:5;8017:38;:::i;:::-;8071:70;8134:6;8129:3;8071:70;:::i;:::-;8064:77;;8150:52;8195:6;8190:3;8183:4;8176:5;8172:16;8150:52;:::i;:::-;8227:29;8249:6;8227:29;:::i;:::-;8222:3;8218:39;8211:46;;7993:270;7903:360;;;;:::o;8269:364::-;8357:3;8385:39;8418:5;8385:39;:::i;:::-;8440:71;8504:6;8499:3;8440:71;:::i;:::-;8433:78;;8520:52;8565:6;8560:3;8553:4;8546:5;8542:16;8520:52;:::i;:::-;8597:29;8619:6;8597:29;:::i;:::-;8592:3;8588:39;8581:46;;8361:272;8269:364;;;;:::o;8639:377::-;8745:3;8773:39;8806:5;8773:39;:::i;:::-;8828:89;8910:6;8905:3;8828:89;:::i;:::-;8821:96;;8926:52;8971:6;8966:3;8959:4;8952:5;8948:16;8926:52;:::i;:::-;9003:6;8998:3;8994:16;8987:23;;8749:267;8639:377;;;;:::o;9022:366::-;9164:3;9185:67;9249:2;9244:3;9185:67;:::i;:::-;9178:74;;9261:93;9350:3;9261:93;:::i;:::-;9379:2;9374:3;9370:12;9363:19;;9022:366;;;:::o;9394:::-;9536:3;9557:67;9621:2;9616:3;9557:67;:::i;:::-;9550:74;;9633:93;9722:3;9633:93;:::i;:::-;9751:2;9746:3;9742:12;9735:19;;9394:366;;;:::o;9766:::-;9908:3;9929:67;9993:2;9988:3;9929:67;:::i;:::-;9922:74;;10005:93;10094:3;10005:93;:::i;:::-;10123:2;10118:3;10114:12;10107:19;;9766:366;;;:::o;10138:::-;10280:3;10301:67;10365:2;10360:3;10301:67;:::i;:::-;10294:74;;10377:93;10466:3;10377:93;:::i;:::-;10495:2;10490:3;10486:12;10479:19;;10138:366;;;:::o;10510:::-;10652:3;10673:67;10737:2;10732:3;10673:67;:::i;:::-;10666:74;;10749:93;10838:3;10749:93;:::i;:::-;10867:2;10862:3;10858:12;10851:19;;10510:366;;;:::o;10882:::-;11024:3;11045:67;11109:2;11104:3;11045:67;:::i;:::-;11038:74;;11121:93;11210:3;11121:93;:::i;:::-;11239:2;11234:3;11230:12;11223:19;;10882:366;;;:::o;11254:::-;11396:3;11417:67;11481:2;11476:3;11417:67;:::i;:::-;11410:74;;11493:93;11582:3;11493:93;:::i;:::-;11611:2;11606:3;11602:12;11595:19;;11254:366;;;:::o;11626:::-;11768:3;11789:67;11853:2;11848:3;11789:67;:::i;:::-;11782:74;;11865:93;11954:3;11865:93;:::i;:::-;11983:2;11978:3;11974:12;11967:19;;11626:366;;;:::o;11998:::-;12140:3;12161:67;12225:2;12220:3;12161:67;:::i;:::-;12154:74;;12237:93;12326:3;12237:93;:::i;:::-;12355:2;12350:3;12346:12;12339:19;;11998:366;;;:::o;12370:::-;12512:3;12533:67;12597:2;12592:3;12533:67;:::i;:::-;12526:74;;12609:93;12698:3;12609:93;:::i;:::-;12727:2;12722:3;12718:12;12711:19;;12370:366;;;:::o;12742:::-;12884:3;12905:67;12969:2;12964:3;12905:67;:::i;:::-;12898:74;;12981:93;13070:3;12981:93;:::i;:::-;13099:2;13094:3;13090:12;13083:19;;12742:366;;;:::o;13114:::-;13256:3;13277:67;13341:2;13336:3;13277:67;:::i;:::-;13270:74;;13353:93;13442:3;13353:93;:::i;:::-;13471:2;13466:3;13462:12;13455:19;;13114:366;;;:::o;13486:::-;13628:3;13649:67;13713:2;13708:3;13649:67;:::i;:::-;13642:74;;13725:93;13814:3;13725:93;:::i;:::-;13843:2;13838:3;13834:12;13827:19;;13486:366;;;:::o;13858:::-;14000:3;14021:67;14085:2;14080:3;14021:67;:::i;:::-;14014:74;;14097:93;14186:3;14097:93;:::i;:::-;14215:2;14210:3;14206:12;14199:19;;13858:366;;;:::o;14230:::-;14372:3;14393:67;14457:2;14452:3;14393:67;:::i;:::-;14386:74;;14469:93;14558:3;14469:93;:::i;:::-;14587:2;14582:3;14578:12;14571:19;;14230:366;;;:::o;14602:::-;14744:3;14765:67;14829:2;14824:3;14765:67;:::i;:::-;14758:74;;14841:93;14930:3;14841:93;:::i;:::-;14959:2;14954:3;14950:12;14943:19;;14602:366;;;:::o;14974:::-;15116:3;15137:67;15201:2;15196:3;15137:67;:::i;:::-;15130:74;;15213:93;15302:3;15213:93;:::i;:::-;15331:2;15326:3;15322:12;15315:19;;14974:366;;;:::o;15346:::-;15488:3;15509:67;15573:2;15568:3;15509:67;:::i;:::-;15502:74;;15585:93;15674:3;15585:93;:::i;:::-;15703:2;15698:3;15694:12;15687:19;;15346:366;;;:::o;15718:::-;15860:3;15881:67;15945:2;15940:3;15881:67;:::i;:::-;15874:74;;15957:93;16046:3;15957:93;:::i;:::-;16075:2;16070:3;16066:12;16059:19;;15718:366;;;:::o;16090:::-;16232:3;16253:67;16317:2;16312:3;16253:67;:::i;:::-;16246:74;;16329:93;16418:3;16329:93;:::i;:::-;16447:2;16442:3;16438:12;16431:19;;16090:366;;;:::o;16462:::-;16604:3;16625:67;16689:2;16684:3;16625:67;:::i;:::-;16618:74;;16701:93;16790:3;16701:93;:::i;:::-;16819:2;16814:3;16810:12;16803:19;;16462:366;;;:::o;16834:::-;16976:3;16997:67;17061:2;17056:3;16997:67;:::i;:::-;16990:74;;17073:93;17162:3;17073:93;:::i;:::-;17191:2;17186:3;17182:12;17175:19;;16834:366;;;:::o;17206:::-;17348:3;17369:67;17433:2;17428:3;17369:67;:::i;:::-;17362:74;;17445:93;17534:3;17445:93;:::i;:::-;17563:2;17558:3;17554:12;17547:19;;17206:366;;;:::o;17578:::-;17720:3;17741:67;17805:2;17800:3;17741:67;:::i;:::-;17734:74;;17817:93;17906:3;17817:93;:::i;:::-;17935:2;17930:3;17926:12;17919:19;;17578:366;;;:::o;17950:::-;18092:3;18113:67;18177:2;18172:3;18113:67;:::i;:::-;18106:74;;18189:93;18278:3;18189:93;:::i;:::-;18307:2;18302:3;18298:12;18291:19;;17950:366;;;:::o;18322:::-;18464:3;18485:67;18549:2;18544:3;18485:67;:::i;:::-;18478:74;;18561:93;18650:3;18561:93;:::i;:::-;18679:2;18674:3;18670:12;18663:19;;18322:366;;;:::o;18694:118::-;18781:24;18799:5;18781:24;:::i;:::-;18776:3;18769:37;18694:118;;:::o;18818:435::-;18998:3;19020:95;19111:3;19102:6;19020:95;:::i;:::-;19013:102;;19132:95;19223:3;19214:6;19132:95;:::i;:::-;19125:102;;19244:3;19237:10;;18818:435;;;;;:::o;19259:222::-;19352:4;19390:2;19379:9;19375:18;19367:26;;19403:71;19471:1;19460:9;19456:17;19447:6;19403:71;:::i;:::-;19259:222;;;;:::o;19487:640::-;19682:4;19720:3;19709:9;19705:19;19697:27;;19734:71;19802:1;19791:9;19787:17;19778:6;19734:71;:::i;:::-;19815:72;19883:2;19872:9;19868:18;19859:6;19815:72;:::i;:::-;19897;19965:2;19954:9;19950:18;19941:6;19897:72;:::i;:::-;20016:9;20010:4;20006:20;20001:2;19990:9;19986:18;19979:48;20044:76;20115:4;20106:6;20044:76;:::i;:::-;20036:84;;19487:640;;;;;;;:::o;20133:210::-;20220:4;20258:2;20247:9;20243:18;20235:26;;20271:65;20333:1;20322:9;20318:17;20309:6;20271:65;:::i;:::-;20133:210;;;;:::o;20349:313::-;20462:4;20500:2;20489:9;20485:18;20477:26;;20549:9;20543:4;20539:20;20535:1;20524:9;20520:17;20513:47;20577:78;20650:4;20641:6;20577:78;:::i;:::-;20569:86;;20349:313;;;;:::o;20668:419::-;20834:4;20872:2;20861:9;20857:18;20849:26;;20921:9;20915:4;20911:20;20907:1;20896:9;20892:17;20885:47;20949:131;21075:4;20949:131;:::i;:::-;20941:139;;20668:419;;;:::o;21093:::-;21259:4;21297:2;21286:9;21282:18;21274:26;;21346:9;21340:4;21336:20;21332:1;21321:9;21317:17;21310:47;21374:131;21500:4;21374:131;:::i;:::-;21366:139;;21093:419;;;:::o;21518:::-;21684:4;21722:2;21711:9;21707:18;21699:26;;21771:9;21765:4;21761:20;21757:1;21746:9;21742:17;21735:47;21799:131;21925:4;21799:131;:::i;:::-;21791:139;;21518:419;;;:::o;21943:::-;22109:4;22147:2;22136:9;22132:18;22124:26;;22196:9;22190:4;22186:20;22182:1;22171:9;22167:17;22160:47;22224:131;22350:4;22224:131;:::i;:::-;22216:139;;21943:419;;;:::o;22368:::-;22534:4;22572:2;22561:9;22557:18;22549:26;;22621:9;22615:4;22611:20;22607:1;22596:9;22592:17;22585:47;22649:131;22775:4;22649:131;:::i;:::-;22641:139;;22368:419;;;:::o;22793:::-;22959:4;22997:2;22986:9;22982:18;22974:26;;23046:9;23040:4;23036:20;23032:1;23021:9;23017:17;23010:47;23074:131;23200:4;23074:131;:::i;:::-;23066:139;;22793:419;;;:::o;23218:::-;23384:4;23422:2;23411:9;23407:18;23399:26;;23471:9;23465:4;23461:20;23457:1;23446:9;23442:17;23435:47;23499:131;23625:4;23499:131;:::i;:::-;23491:139;;23218:419;;;:::o;23643:::-;23809:4;23847:2;23836:9;23832:18;23824:26;;23896:9;23890:4;23886:20;23882:1;23871:9;23867:17;23860:47;23924:131;24050:4;23924:131;:::i;:::-;23916:139;;23643:419;;;:::o;24068:::-;24234:4;24272:2;24261:9;24257:18;24249:26;;24321:9;24315:4;24311:20;24307:1;24296:9;24292:17;24285:47;24349:131;24475:4;24349:131;:::i;:::-;24341:139;;24068:419;;;:::o;24493:::-;24659:4;24697:2;24686:9;24682:18;24674:26;;24746:9;24740:4;24736:20;24732:1;24721:9;24717:17;24710:47;24774:131;24900:4;24774:131;:::i;:::-;24766:139;;24493:419;;;:::o;24918:::-;25084:4;25122:2;25111:9;25107:18;25099:26;;25171:9;25165:4;25161:20;25157:1;25146:9;25142:17;25135:47;25199:131;25325:4;25199:131;:::i;:::-;25191:139;;24918:419;;;:::o;25343:::-;25509:4;25547:2;25536:9;25532:18;25524:26;;25596:9;25590:4;25586:20;25582:1;25571:9;25567:17;25560:47;25624:131;25750:4;25624:131;:::i;:::-;25616:139;;25343:419;;;:::o;25768:::-;25934:4;25972:2;25961:9;25957:18;25949:26;;26021:9;26015:4;26011:20;26007:1;25996:9;25992:17;25985:47;26049:131;26175:4;26049:131;:::i;:::-;26041:139;;25768:419;;;:::o;26193:::-;26359:4;26397:2;26386:9;26382:18;26374:26;;26446:9;26440:4;26436:20;26432:1;26421:9;26417:17;26410:47;26474:131;26600:4;26474:131;:::i;:::-;26466:139;;26193:419;;;:::o;26618:::-;26784:4;26822:2;26811:9;26807:18;26799:26;;26871:9;26865:4;26861:20;26857:1;26846:9;26842:17;26835:47;26899:131;27025:4;26899:131;:::i;:::-;26891:139;;26618:419;;;:::o;27043:::-;27209:4;27247:2;27236:9;27232:18;27224:26;;27296:9;27290:4;27286:20;27282:1;27271:9;27267:17;27260:47;27324:131;27450:4;27324:131;:::i;:::-;27316:139;;27043:419;;;:::o;27468:::-;27634:4;27672:2;27661:9;27657:18;27649:26;;27721:9;27715:4;27711:20;27707:1;27696:9;27692:17;27685:47;27749:131;27875:4;27749:131;:::i;:::-;27741:139;;27468:419;;;:::o;27893:::-;28059:4;28097:2;28086:9;28082:18;28074:26;;28146:9;28140:4;28136:20;28132:1;28121:9;28117:17;28110:47;28174:131;28300:4;28174:131;:::i;:::-;28166:139;;27893:419;;;:::o;28318:::-;28484:4;28522:2;28511:9;28507:18;28499:26;;28571:9;28565:4;28561:20;28557:1;28546:9;28542:17;28535:47;28599:131;28725:4;28599:131;:::i;:::-;28591:139;;28318:419;;;:::o;28743:::-;28909:4;28947:2;28936:9;28932:18;28924:26;;28996:9;28990:4;28986:20;28982:1;28971:9;28967:17;28960:47;29024:131;29150:4;29024:131;:::i;:::-;29016:139;;28743:419;;;:::o;29168:::-;29334:4;29372:2;29361:9;29357:18;29349:26;;29421:9;29415:4;29411:20;29407:1;29396:9;29392:17;29385:47;29449:131;29575:4;29449:131;:::i;:::-;29441:139;;29168:419;;;:::o;29593:::-;29759:4;29797:2;29786:9;29782:18;29774:26;;29846:9;29840:4;29836:20;29832:1;29821:9;29817:17;29810:47;29874:131;30000:4;29874:131;:::i;:::-;29866:139;;29593:419;;;:::o;30018:::-;30184:4;30222:2;30211:9;30207:18;30199:26;;30271:9;30265:4;30261:20;30257:1;30246:9;30242:17;30235:47;30299:131;30425:4;30299:131;:::i;:::-;30291:139;;30018:419;;;:::o;30443:::-;30609:4;30647:2;30636:9;30632:18;30624:26;;30696:9;30690:4;30686:20;30682:1;30671:9;30667:17;30660:47;30724:131;30850:4;30724:131;:::i;:::-;30716:139;;30443:419;;;:::o;30868:::-;31034:4;31072:2;31061:9;31057:18;31049:26;;31121:9;31115:4;31111:20;31107:1;31096:9;31092:17;31085:47;31149:131;31275:4;31149:131;:::i;:::-;31141:139;;30868:419;;;:::o;31293:::-;31459:4;31497:2;31486:9;31482:18;31474:26;;31546:9;31540:4;31536:20;31532:1;31521:9;31517:17;31510:47;31574:131;31700:4;31574:131;:::i;:::-;31566:139;;31293:419;;;:::o;31718:222::-;31811:4;31849:2;31838:9;31834:18;31826:26;;31862:71;31930:1;31919:9;31915:17;31906:6;31862:71;:::i;:::-;31718:222;;;;:::o;31946:129::-;31980:6;32007:20;;:::i;:::-;31997:30;;32036:33;32064:4;32056:6;32036:33;:::i;:::-;31946:129;;;:::o;32081:75::-;32114:6;32147:2;32141:9;32131:19;;32081:75;:::o;32162:307::-;32223:4;32313:18;32305:6;32302:30;32299:56;;;32335:18;;:::i;:::-;32299:56;32373:29;32395:6;32373:29;:::i;:::-;32365:37;;32457:4;32451;32447:15;32439:23;;32162:307;;;:::o;32475:308::-;32537:4;32627:18;32619:6;32616:30;32613:56;;;32649:18;;:::i;:::-;32613:56;32687:29;32709:6;32687:29;:::i;:::-;32679:37;;32771:4;32765;32761:15;32753:23;;32475:308;;;:::o;32789:98::-;32840:6;32874:5;32868:12;32858:22;;32789:98;;;:::o;32893:99::-;32945:6;32979:5;32973:12;32963:22;;32893:99;;;:::o;32998:168::-;33081:11;33115:6;33110:3;33103:19;33155:4;33150:3;33146:14;33131:29;;32998:168;;;;:::o;33172:169::-;33256:11;33290:6;33285:3;33278:19;33330:4;33325:3;33321:14;33306:29;;33172:169;;;;:::o;33347:148::-;33449:11;33486:3;33471:18;;33347:148;;;;:::o;33501:273::-;33541:3;33560:20;33578:1;33560:20;:::i;:::-;33555:25;;33594:20;33612:1;33594:20;:::i;:::-;33589:25;;33716:1;33680:34;33676:42;33673:1;33670:49;33667:75;;;33722:18;;:::i;:::-;33667:75;33766:1;33763;33759:9;33752:16;;33501:273;;;;:::o;33780:305::-;33820:3;33839:20;33857:1;33839:20;:::i;:::-;33834:25;;33873:20;33891:1;33873:20;:::i;:::-;33868:25;;34027:1;33959:66;33955:74;33952:1;33949:81;33946:107;;;34033:18;;:::i;:::-;33946:107;34077:1;34074;34070:9;34063:16;;33780:305;;;;:::o;34091:185::-;34131:1;34148:20;34166:1;34148:20;:::i;:::-;34143:25;;34182:20;34200:1;34182:20;:::i;:::-;34177:25;;34221:1;34211:35;;34226:18;;:::i;:::-;34211:35;34268:1;34265;34261:9;34256:14;;34091:185;;;;:::o;34282:348::-;34322:7;34345:20;34363:1;34345:20;:::i;:::-;34340:25;;34379:20;34397:1;34379:20;:::i;:::-;34374:25;;34567:1;34499:66;34495:74;34492:1;34489:81;34484:1;34477:9;34470:17;34466:105;34463:131;;;34574:18;;:::i;:::-;34463:131;34622:1;34619;34615:9;34604:20;;34282:348;;;;:::o;34636:191::-;34676:4;34696:20;34714:1;34696:20;:::i;:::-;34691:25;;34730:20;34748:1;34730:20;:::i;:::-;34725:25;;34769:1;34766;34763:8;34760:34;;;34774:18;;:::i;:::-;34760:34;34819:1;34816;34812:9;34804:17;;34636:191;;;;:::o;34833:96::-;34870:7;34899:24;34917:5;34899:24;:::i;:::-;34888:35;;34833:96;;;:::o;34935:90::-;34969:7;35012:5;35005:13;34998:21;34987:32;;34935:90;;;:::o;35031:149::-;35067:7;35107:66;35100:5;35096:78;35085:89;;35031:149;;;:::o;35186:118::-;35223:7;35263:34;35256:5;35252:46;35241:57;;35186:118;;;:::o;35310:126::-;35347:7;35387:42;35380:5;35376:54;35365:65;;35310:126;;;:::o;35442:77::-;35479:7;35508:5;35497:16;;35442:77;;;:::o;35525:154::-;35609:6;35604:3;35599;35586:30;35671:1;35662:6;35657:3;35653:16;35646:27;35525:154;;;:::o;35685:307::-;35753:1;35763:113;35777:6;35774:1;35771:13;35763:113;;;35862:1;35857:3;35853:11;35847:18;35843:1;35838:3;35834:11;35827:39;35799:2;35796:1;35792:10;35787:15;;35763:113;;;35894:6;35891:1;35888:13;35885:101;;;35974:1;35965:6;35960:3;35956:16;35949:27;35885:101;35734:258;35685:307;;;:::o;35998:171::-;36037:3;36060:24;36078:5;36060:24;:::i;:::-;36051:33;;36106:4;36099:5;36096:15;36093:41;;;36114:18;;:::i;:::-;36093:41;36161:1;36154:5;36150:13;36143:20;;35998:171;;;:::o;36175:320::-;36219:6;36256:1;36250:4;36246:12;36236:22;;36303:1;36297:4;36293:12;36324:18;36314:81;;36380:4;36372:6;36368:17;36358:27;;36314:81;36442:2;36434:6;36431:14;36411:18;36408:38;36405:84;;;36461:18;;:::i;:::-;36405:84;36226:269;36175:320;;;:::o;36501:281::-;36584:27;36606:4;36584:27;:::i;:::-;36576:6;36572:40;36714:6;36702:10;36699:22;36678:18;36666:10;36663:34;36660:62;36657:88;;;36725:18;;:::i;:::-;36657:88;36765:10;36761:2;36754:22;36544:238;36501:281;;:::o;36788:233::-;36827:3;36850:24;36868:5;36850:24;:::i;:::-;36841:33;;36896:66;36889:5;36886:77;36883:103;;;36966:18;;:::i;:::-;36883:103;37013:1;37006:5;37002:13;36995:20;;36788:233;;;:::o;37027:176::-;37059:1;37076:20;37094:1;37076:20;:::i;:::-;37071:25;;37110:20;37128:1;37110:20;:::i;:::-;37105:25;;37149:1;37139:35;;37154:18;;:::i;:::-;37139:35;37195:1;37192;37188:9;37183:14;;37027:176;;;;:::o;37209:180::-;37257:77;37254:1;37247:88;37354:4;37351:1;37344:15;37378:4;37375:1;37368:15;37395:180;37443:77;37440:1;37433:88;37540:4;37537:1;37530:15;37564:4;37561:1;37554:15;37581:180;37629:77;37626:1;37619:88;37726:4;37723:1;37716:15;37750:4;37747:1;37740:15;37767:180;37815:77;37812:1;37805:88;37912:4;37909:1;37902:15;37936:4;37933:1;37926:15;37953:180;38001:77;37998:1;37991:88;38098:4;38095:1;38088:15;38122:4;38119:1;38112:15;38139:117;38248:1;38245;38238:12;38262:117;38371:1;38368;38361:12;38385:117;38494:1;38491;38484:12;38508:117;38617:1;38614;38607:12;38631:102;38672:6;38723:2;38719:7;38714:2;38707:5;38703:14;38699:28;38689:38;;38631:102;;;:::o;38739:238::-;38879:34;38875:1;38867:6;38863:14;38856:58;38948:21;38943:2;38935:6;38931:15;38924:46;38739:238;:::o;38983:221::-;39123:34;39119:1;39111:6;39107:14;39100:58;39192:4;39187:2;39179:6;39175:15;39168:29;38983:221;:::o;39210:222::-;39350:34;39346:1;39338:6;39334:14;39327:58;39419:5;39414:2;39406:6;39402:15;39395:30;39210:222;:::o;39438:225::-;39578:34;39574:1;39566:6;39562:14;39555:58;39647:8;39642:2;39634:6;39630:15;39623:33;39438:225;:::o;39669:170::-;39809:22;39805:1;39797:6;39793:14;39786:46;39669:170;:::o;39845:172::-;39985:24;39981:1;39973:6;39969:14;39962:48;39845:172;:::o;40023:245::-;40163:34;40159:1;40151:6;40147:14;40140:58;40232:28;40227:2;40219:6;40215:15;40208:53;40023:245;:::o;40274:235::-;40414:34;40410:1;40402:6;40398:14;40391:58;40483:18;40478:2;40470:6;40466:15;40459:43;40274:235;:::o;40515:181::-;40655:33;40651:1;40643:6;40639:14;40632:57;40515:181;:::o;40702:180::-;40842:32;40838:1;40830:6;40826:14;40819:56;40702:180;:::o;40888:225::-;41028:34;41024:1;41016:6;41012:14;41005:58;41097:8;41092:2;41084:6;41080:15;41073:33;40888:225;:::o;41119:239::-;41259:34;41255:1;41247:6;41243:14;41236:58;41328:22;41323:2;41315:6;41311:15;41304:47;41119:239;:::o;41364:231::-;41504:34;41500:1;41492:6;41488:14;41481:58;41573:14;41568:2;41560:6;41556:15;41549:39;41364:231;:::o;41601:230::-;41741:34;41737:1;41729:6;41725:14;41718:58;41810:13;41805:2;41797:6;41793:15;41786:38;41601:230;:::o;41837:182::-;41977:34;41973:1;41965:6;41961:14;41954:58;41837:182;:::o;42025:223::-;42165:34;42161:1;42153:6;42149:14;42142:58;42234:6;42229:2;42221:6;42217:15;42210:31;42025:223;:::o;42254:234::-;42394:34;42390:1;42382:6;42378:14;42371:58;42463:17;42458:2;42450:6;42446:15;42439:42;42254:234;:::o;42494:223::-;42634:34;42630:1;42622:6;42618:14;42611:58;42703:6;42698:2;42690:6;42686:15;42679:31;42494:223;:::o;42723:234::-;42863:34;42859:1;42851:6;42847:14;42840:58;42932:17;42927:2;42919:6;42915:15;42908:42;42723:234;:::o;42963:222::-;43103:34;43099:1;43091:6;43087:14;43080:58;43172:5;43167:2;43159:6;43155:15;43148:30;42963:222;:::o;43191:177::-;43331:29;43327:1;43319:6;43315:14;43308:53;43191:177;:::o;43374:170::-;43514:22;43510:1;43502:6;43498:14;43491:46;43374:170;:::o;43550:226::-;43690:34;43686:1;43678:6;43674:14;43667:58;43759:9;43754:2;43746:6;43742:15;43735:34;43550:226;:::o;43782:233::-;43922:34;43918:1;43910:6;43906:14;43899:58;43991:16;43986:2;43978:6;43974:15;43967:41;43782:233;:::o;44021:222::-;44161:34;44157:1;44149:6;44145:14;44138:58;44230:5;44225:2;44217:6;44213:15;44206:30;44021:222;:::o;44249:169::-;44389:21;44385:1;44377:6;44373:14;44366:45;44249:169;:::o;44424:122::-;44497:24;44515:5;44497:24;:::i;:::-;44490:5;44487:35;44477:63;;44536:1;44533;44526:12;44477:63;44424:122;:::o;44552:116::-;44622:21;44637:5;44622:21;:::i;:::-;44615:5;44612:32;44602:60;;44658:1;44655;44648:12;44602:60;44552:116;:::o;44674:120::-;44746:23;44763:5;44746:23;:::i;:::-;44739:5;44736:34;44726:62;;44784:1;44781;44774:12;44726:62;44674:120;:::o;44800:122::-;44873:24;44891:5;44873:24;:::i;:::-;44866:5;44863:35;44853:63;;44912:1;44909;44902:12;44853:63;44800:122;:::o

Swarm Source

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