ETH Price: $3,960.75 (+1.30%)

Token

FAMPIT Founding Membership (FAMPIT)
 

Overview

Max Total Supply

107 FAMPIT

Holders

87

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A

Other Info

Balance
1 FAMPIT
0x8fa41a1df6f89c430626b9055650c91f394d8a16
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:
FAMPIT

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

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

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0; 
library MerkleProof {
    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }
   function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];
            if (computedHash <= proofElement) {
                computedHash = _efficientHash(computedHash, proofElement);
            } else {
                computedHash = _efficientHash(proofElement, computedHash);
            }
        }
        return computedHash;
    }

    function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) {
        assembly {
            mstore(0x00, a)
            mstore(0x20, b)
            value := keccak256(0x00, 0x40)
        }
    }
}
abstract contract ReentrancyGuard { 
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }
    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
   _status = _ENTERED;

        _;
        _status = _NOT_ENTERED;
    }
}

library 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
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else { 
            if (returndata.length > 0) { 

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
 
interface IERC721Receiver { 
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}
 
interface IERC165 { 
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
 
abstract contract ERC165 is IERC165 { 
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
} 
interface IERC721 is IERC165 { 
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); 
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); 
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved); 
    function balanceOf(address owner) external view returns (uint256 balance); 
    function ownerOf(uint256 tokenId) external view returns (address owner); 
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external; 
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external; 
    function approve(address to, uint256 tokenId) external;
 
    function getApproved(uint256 tokenId) external view returns (address operator); 
    function setApprovalForAll(address operator, bool _approved) external; 
    function isApprovedForAll(address owner, address operator) external view returns (bool); 
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
} 
interface IERC721Enumerable is IERC721 { 
    function totalSupply() external view returns (uint256); 
    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); 
    function tokenByIndex(uint256 index) external view returns (uint256);
}  
interface IERC721Metadata is IERC721 { 
    function name() external view returns (string memory); 
    function symbol() external view returns (string memory); 
    function tokenURI(uint256 tokenId) external view returns (string memory);
} 
contract ERC721A 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 private currentIndex = 0;

  uint256 internal immutable collectionSize;
  uint256 internal immutable maxBatchSize; 
  string private _name; 
  string private _symbol; 
  mapping(uint256 => TokenOwnership) private _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_,
    uint256 collectionSize_
  ) {
    require(
      collectionSize_ > 0,
      "ERC721A: collection must have a nonzero supply"
    );
    require(maxBatchSize_ > 0, "ERC721A: max batch size must be nonzero");
    _name = name_;
    _symbol = symbol_;
    maxBatchSize = maxBatchSize_;
    collectionSize = collectionSize_;
  } 
  function totalSupply() public view override returns (uint256) {
    return currentIndex;
  } 
  function tokenByIndex(uint256 index) public view override returns (uint256) {
    require(index < totalSupply(), "ERC721A: global index out of bounds");
    return index;
  } 
  function tokenOfOwnerByIndex(address owner, uint256 index)
    public
    view
    override
    returns (uint256)
  {
    require(index < balanceOf(owner), "ERC721A: 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("ERC721A: 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), "ERC721A: balance query for the zero address");
    return uint256(_addressData[owner].balance);
  }

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

  function ownershipOf(uint256 tokenId)
    internal
    view
    returns (TokenOwnership memory)
  {
    require(_exists(tokenId), "ERC721A: 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("ERC721A: 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(),_getUriExtension()))
        : "";
  } 
  function _baseURI() internal view virtual returns (string memory) {
    return "";
  }

  function _getUriExtension() internal view virtual returns (string memory) {
    return "";
  }
 
  function approve(address to, uint256 tokenId) public override {
    address owner = ERC721A.ownerOf(tokenId);
    require(to != owner, "ERC721A: approval to current owner");

    require(
      _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
      "ERC721A: 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), "ERC721A: approved query for nonexistent token");

    return _tokenApprovals[tokenId];
  } 
  function setApprovalForAll(address operator, bool approved) public override {
    require(operator != _msgSender(), "ERC721A: 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),
      "ERC721A: transfer to non ERC721Receiver implementer"
    );
  } 
  function _exists(uint256 tokenId) internal view returns (bool) {
    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), "ERC721A: mint to the zero address"); 
    require(!_exists(startTokenId), "ERC721A: token already minted");
    require(quantity <= maxBatchSize, "ERC721A: quantity to mint too high");

    _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),
        "ERC721A: 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,
      "ERC721A: transfer caller is not owner nor approved"
    );

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

    _beforeTokenTransfers(from, to, tokenId, 1); 
    _approve(address(0), tokenId, prevOwnership.addr);

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

  uint256 public nextOwnerToExplicitlySet = 0; 
  function _setOwnersExplicit(uint256 quantity) internal {
    uint256 oldNextOwnerToSet = nextOwnerToExplicitlySet;
    require(quantity > 0, "quantity must be nonzero");
    uint256 endIndex = oldNextOwnerToSet + quantity - 1;
    if (endIndex > collectionSize - 1) {
      endIndex = collectionSize - 1;
    } 
    require(_exists(endIndex), "not enough minted yet for this cleanup");
    for (uint256 i = oldNextOwnerToSet; i <= endIndex; i++) {
      if (_ownerships[i].addr == address(0)) {
        TokenOwnership memory ownership = ownershipOf(i);
        _ownerships[i] = TokenOwnership(
          ownership.addr,
          ownership.startTimestamp
        );
      }
    }
    nextOwnerToExplicitlySet = endIndex + 1;
  } 
  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("ERC721A: 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 FAMPIT is Ownable, ERC721A, ReentrancyGuard {
    using Strings for uint256;


  uint256 public MAX_PER_Transtion = 1; // maximam amount that user can mint
  uint256 public MAX_PER_Address = 1; // maximam amount that user can mint

  uint256 public  PRICE = 0.19 ether;

  uint256 private constant TotalCollectionSize_ = 500; // total number of nfts
  uint256 private constant MaxMintPerBatch_ = 50; //max mint per traction

  string private _baseTokenURI;
  uint private stopat = 500;
  uint private reserve = 0; 

  uint public status = 0; //0-pause 1-whitelist 2-public

  mapping(address => bool) private whitelistedAddresses;

  bytes32 public merkleRoot = 0x90b0a49d4440fb57a17b6c07765890bf5df427a4652e8fdeb73c135acd6581ad;

  constructor() ERC721A("FAMPIT Founding Membership","FAMPIT", MaxMintPerBatch_, TotalCollectionSize_) {
    _baseTokenURI = "ipfs://QmY2TGvTQPzDv8wiGdSXt3anQWCBZKawURgBaSkrLwg1i1/";
  }

  modifier callerIsUser() {
    require(tx.origin == msg.sender, "The caller is another contract");
    _;
  }

  function setMerkleRoot(bytes32 m) public onlyOwner{
    merkleRoot = m;
  }
 
  function whitelistMint(uint256 quantity, bytes32[] calldata merkleproof) external payable callerIsUser {
    require(status == 1, "Whitelist Sale is not Active");
    require(totalSupply() + quantity <= collectionSize - reserve, "reached max supply");
    require(numberMinted(msg.sender) + quantity <= MAX_PER_Address, "Quantity exceeds allowed Mints" );
    require(quantity <= MAX_PER_Transtion,"can not mint this many");
    require(msg.value >= PRICE * quantity, "Need to send more ETH.");
    require(MerkleProof.verify( merkleproof, merkleRoot, keccak256(abi.encodePacked(msg.sender))),"Not whitelisted");
    _safeMint(msg.sender, quantity);
    if(totalSupply() >= stopat) {status = 0;}
  }

  function mint(uint256 quantity) external payable callerIsUser {
    require(status == 2 , "Public Sale is not Active");
    require(totalSupply() + quantity <= collectionSize - reserve, "reached max supply");
    require(numberMinted(msg.sender) + quantity <= MAX_PER_Address, "Quantity exceeds allowed Mints" );
    require(quantity <= MAX_PER_Transtion,"can not mint this many");
    require(msg.value >= PRICE * quantity, "Need to send more ETH.");
    _safeMint(msg.sender, quantity);   
    if(totalSupply() >= stopat) {status = 0;}
  }

   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 configure(uint256 Status , uint256 MaxPerAddress , uint256 MaxPerWallet , uint256 Price, uint256 Stop_At )external onlyOwner{
      status = Status;
      stopat = Stop_At;
      PRICE = Price;
      MAX_PER_Address = MaxPerAddress;
      MAX_PER_Transtion = MaxPerWallet;
  } 
  function setBaseURI(string memory baseURI) external onlyOwner {
    _baseTokenURI = baseURI;
  }
  function _baseURI() internal view virtual override returns (string memory) {
    return _baseTokenURI;
  }
  function numberMinted(address owner) public view returns (uint256) {
    return _numberMinted(owner);
  }
  function getOwnershipData(uint256 tokenId)
    external
    view
    returns (TokenOwnership memory)
  {
    return ownershipOf(tokenId);
  }
  function withdrawMoney() external onlyOwner nonReentrant {
    (bool success, ) = msg.sender.call{value: address(this).balance}("");
    require(success, "Transfer failed.");
  }
  function changeMintPrice(uint256 _newPrice) external onlyOwner
  {
      PRICE = _newPrice;
  }
  function changeMAX_PER_Transtion(uint256 MAXPERTranstion) external onlyOwner
  {
      MAX_PER_Transtion = MAXPERTranstion;
  }
  function changeMAX_PER_Address(uint256 MAXPERAddress) external onlyOwner
  {
      MAX_PER_Address = MAXPERAddress;
  }
  function setStatus(uint256 status_)external onlyOwner{
      status = status_;
  }
  function getStatus()public view returns(uint){
      return status;
  }
  function getPrice()public view returns(uint){
      return PRICE;
  }
  function giveaway(address address_, uint quantity_)public onlyOwner{
    require(totalSupply() + quantity_ <= collectionSize, "reached max supply");
    _safeMint(address_, quantity_);
  }
    function setStop(uint256 stopat_)external onlyOwner{
      stopat = stopat_;
  }
  function setReserve(uint256 reserve_)external onlyOwner{
      reserve = reserve_;
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX_PER_Address","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PER_Transtion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"MAXPERAddress","type":"uint256"}],"name":"changeMAX_PER_Address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"MAXPERTranstion","type":"uint256"}],"name":"changeMAX_PER_Transtion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"changeMintPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Status","type":"uint256"},{"internalType":"uint256","name":"MaxPerAddress","type":"uint256"},{"internalType":"uint256","name":"MaxPerWallet","type":"uint256"},{"internalType":"uint256","name":"Price","type":"uint256"},{"internalType":"uint256","name":"Stop_At","type":"uint256"}],"name":"configure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getOwnershipData","outputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"}],"internalType":"struct ERC721A.TokenOwnership","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStatus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"address_","type":"address"},{"internalType":"uint256","name":"quantity_","type":"uint256"}],"name":"giveaway","outputs":[],"stateMutability":"nonpayable","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":"merkleRoot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextOwnerToExplicitlySet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"numberMinted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"m","type":"bytes32"}],"name":"setMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"reserve_","type":"uint256"}],"name":"setReserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"status_","type":"uint256"}],"name":"setStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"stopat_","type":"uint256"}],"name":"setStop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"status","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"},{"internalType":"bytes32[]","name":"merkleproof","type":"bytes32[]"}],"name":"whitelistMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"withdrawMoney","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c0604052600060015560006008556001600a556001600b556702a303fe4b530000600c556101f4600e556000600f5560006010557f90b0a49d4440fb57a17b6c07765890bf5df427a4652e8fdeb73c135acd6581ad60001b6012553480156200006857600080fd5b506040518060400160405280601a81526020017f46414d50495420466f756e64696e67204d656d626572736869700000000000008152506040518060400160405280600681526020017f46414d504954000000000000000000000000000000000000000000000000000081525060326101f4620000fa620000ee6200020c60201b60201c565b6200021460201b60201c565b6000811162000140576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200013790620003f8565b60405180910390fd5b6000821162000186576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200017d90620003d6565b60405180910390fd5b83600290805190602001906200019e929190620002d8565b508260039080519060200190620001b7929190620002d8565b508160a08181525050806080818152505050505050600160098190555060405180606001604052806036815260200162005b5860369139600d908051906020019062000205929190620002d8565b506200052e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002e6906200042b565b90600052602060002090601f0160209004810192826200030a576000855562000356565b82601f106200032557805160ff191683800117855562000356565b8280016001018555821562000356579182015b828111156200035557825182559160200191906001019062000338565b5b50905062000365919062000369565b5090565b5b80821115620003845760008160009055506001016200036a565b5090565b6000620003976027836200041a565b9150620003a48262000490565b604082019050919050565b6000620003be602e836200041a565b9150620003cb82620004df565b604082019050919050565b60006020820190508181036000830152620003f18162000388565b9050919050565b600060208201905081810360008301526200041381620003af565b9050919050565b600082825260208201905092915050565b600060028204905060018216806200044457607f821691505b602082108114156200045b576200045a62000461565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f455243373231413a206d61782062617463682073697a65206d7573742062652060008201527f6e6f6e7a65726f00000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20636f6c6c656374696f6e206d757374206861766520612060008201527f6e6f6e7a65726f20737570706c79000000000000000000000000000000000000602082015250565b60805160a0516155e86200057060003960008181612a7301528181612a9c0152613232015260008181610c00015281816117ce0152611f2d01526155e86000f3fe6080604052600436106102515760003560e01c80637126a85511610139578063ac446002116100b6578063d04950a11161007a578063d04950a11461089d578063d2cab056146108c8578063d7224ba0146108e4578063dc33e6811461090f578063e985e9c51461094c578063f2fde38b1461098957610251565b8063ac446002146107ce578063af7b26e9146107e5578063b88d4fde1461080e578063c1f127e214610837578063c87b56dd1461086057610251565b80639231ab2a116100fd5780639231ab2a146106f657806395d89b411461073357806398d5fdca1461075e578063a0712d6814610789578063a22cb465146107a557610251565b80637126a85514610637578063715018a6146106605780637cb64759146106775780638d859f3e146106a05780638da5cb5b146106cb57610251565b80632f2ffc57116101d25780634e69d560116101965780634e69d560146105035780634f6ccce71461052e57806355f804b31461056b5780636352211e1461059457806369ba1a75146105d157806370a08231146105fa57610251565b80632f2ffc57146104205780632f745c591461044b5780633fd17366146104885780634256dbe3146104b157806342842e0e146104da57610251565b8063095ea7b311610219578063095ea7b31461034d57806318160ddd14610376578063200d2ed2146103a157806323b872dd146103cc5780632eb4a7ab146103f557610251565b80630199e3471461025657806301ffc9a71461027f578063050225ea146102bc57806306fdde03146102e5578063081812fc14610310575b600080fd5b34801561026257600080fd5b5061027d60048036038101906102789190613c1f565b6109b2565b005b34801561028b57600080fd5b506102a660048036038101906102a19190613b7c565b610a38565b6040516102b39190614385565b60405180910390f35b3480156102c857600080fd5b506102e360048036038101906102de9190613b0f565b610b82565b005b3480156102f157600080fd5b506102fa610c81565b60405161030791906143bb565b60405180910390f35b34801561031c57600080fd5b5061033760048036038101906103329190613c1f565b610d13565b604051610344919061431e565b60405180910390f35b34801561035957600080fd5b50610374600480360381019061036f9190613b0f565b610d98565b005b34801561038257600080fd5b5061038b610eb1565b60405161039891906147d8565b60405180910390f35b3480156103ad57600080fd5b506103b6610ebb565b6040516103c391906147d8565b60405180910390f35b3480156103d857600080fd5b506103f360048036038101906103ee91906139f9565b610ec1565b005b34801561040157600080fd5b5061040a610ed1565b60405161041791906143a0565b60405180910390f35b34801561042c57600080fd5b50610435610ed7565b60405161044291906147d8565b60405180910390f35b34801561045757600080fd5b50610472600480360381019061046d9190613b0f565b610edd565b60405161047f91906147d8565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa9190613c1f565b6110db565b005b3480156104bd57600080fd5b506104d860048036038101906104d39190613c1f565b611161565b005b3480156104e657600080fd5b5061050160048036038101906104fc91906139f9565b6111e7565b005b34801561050f57600080fd5b50610518611207565b60405161052591906147d8565b60405180910390f35b34801561053a57600080fd5b5061055560048036038101906105509190613c1f565b611211565b60405161056291906147d8565b60405180910390f35b34801561057757600080fd5b50610592600480360381019061058d9190613bd6565b611264565b005b3480156105a057600080fd5b506105bb60048036038101906105b69190613c1f565b6112fa565b6040516105c8919061431e565b60405180910390f35b3480156105dd57600080fd5b506105f860048036038101906105f39190613c1f565b611310565b005b34801561060657600080fd5b50610621600480360381019061061c919061398c565b611396565b60405161062e91906147d8565b60405180910390f35b34801561064357600080fd5b5061065e60048036038101906106599190613cac565b61147f565b005b34801561066c57600080fd5b50610675611525565b005b34801561068357600080fd5b5061069e60048036038101906106999190613b4f565b6115ad565b005b3480156106ac57600080fd5b506106b5611633565b6040516106c291906147d8565b60405180910390f35b3480156106d757600080fd5b506106e0611639565b6040516106ed919061431e565b60405180910390f35b34801561070257600080fd5b5061071d60048036038101906107189190613c1f565b611662565b60405161072a91906147bd565b60405180910390f35b34801561073f57600080fd5b5061074861167a565b60405161075591906143bb565b60405180910390f35b34801561076a57600080fd5b5061077361170c565b60405161078091906147d8565b60405180910390f35b6107a3600480360381019061079e9190613c1f565b611716565b005b3480156107b157600080fd5b506107cc60048036038101906107c79190613acf565b61195e565b005b3480156107da57600080fd5b506107e3611adf565b005b3480156107f157600080fd5b5061080c60048036038101906108079190613c1f565b611c60565b005b34801561081a57600080fd5b5061083560048036038101906108309190613a4c565b611ce6565b005b34801561084357600080fd5b5061085e60048036038101906108599190613c1f565b611d42565b005b34801561086c57600080fd5b5061088760048036038101906108829190613c1f565b611dc8565b60405161089491906143bb565b60405180910390f35b3480156108a957600080fd5b506108b2611e6f565b6040516108bf91906147d8565b60405180910390f35b6108e260048036038101906108dd9190613c4c565b611e75565b005b3480156108f057600080fd5b506108f9612172565b60405161090691906147d8565b60405180910390f35b34801561091b57600080fd5b506109366004803603810190610931919061398c565b612178565b60405161094391906147d8565b60405180910390f35b34801561095857600080fd5b50610973600480360381019061096e91906139b9565b61218a565b6040516109809190614385565b60405180910390f35b34801561099557600080fd5b506109b060048036038101906109ab919061398c565b61221e565b005b6109ba612316565b73ffffffffffffffffffffffffffffffffffffffff166109d8611639565b73ffffffffffffffffffffffffffffffffffffffff1614610a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a25906145bd565b60405180910390fd5b80600b8190555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b0357507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b6b57507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b7b5750610b7a8261231e565b5b9050919050565b610b8a612316565b73ffffffffffffffffffffffffffffffffffffffff16610ba8611639565b73ffffffffffffffffffffffffffffffffffffffff1614610bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf5906145bd565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081610c28610eb1565b610c32919061490e565b1115610c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6a9061455d565b60405180910390fd5b610c7d8282612388565b5050565b606060028054610c9090614b71565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbc90614b71565b8015610d095780601f10610cde57610100808354040283529160200191610d09565b820191906000526020600020905b815481529060010190602001808311610cec57829003601f168201915b5050505050905090565b6000610d1e826123a6565b610d5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d549061477d565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610da3826112fa565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0b9061463d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610e33612316565b73ffffffffffffffffffffffffffffffffffffffff161480610e625750610e6181610e5c612316565b61218a565b5b610ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e98906144fd565b60405180910390fd5b610eac8383836123b4565b505050565b6000600154905090565b60105481565b610ecc838383612466565b505050565b60125481565b600b5481565b6000610ee883611396565b8210610f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f20906143dd565b60405180910390fd5b6000610f33610eb1565b905060008060005b83811015611099576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461102d57806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561108557868414156110765781955050505050506110d5565b838061108190614bd4565b9450505b50808061109190614bd4565b915050610f3b565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cc9061471d565b60405180910390fd5b92915050565b6110e3612316565b73ffffffffffffffffffffffffffffffffffffffff16611101611639565b73ffffffffffffffffffffffffffffffffffffffff1614611157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114e906145bd565b60405180910390fd5b80600c8190555050565b611169612316565b73ffffffffffffffffffffffffffffffffffffffff16611187611639565b73ffffffffffffffffffffffffffffffffffffffff16146111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d4906145bd565b60405180910390fd5b80600f8190555050565b61120283838360405180602001604052806000815250611ce6565b505050565b6000601054905090565b600061121b610eb1565b821061125c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112539061443d565b60405180910390fd5b819050919050565b61126c612316565b73ffffffffffffffffffffffffffffffffffffffff1661128a611639565b73ffffffffffffffffffffffffffffffffffffffff16146112e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d7906145bd565b60405180910390fd5b80600d90805190602001906112f69291906136fb565b5050565b600061130582612a1f565b600001519050919050565b611318612316565b73ffffffffffffffffffffffffffffffffffffffff16611336611639565b73ffffffffffffffffffffffffffffffffffffffff161461138c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611383906145bd565b60405180910390fd5b8060108190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611407576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fe9061453d565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b611487612316565b73ffffffffffffffffffffffffffffffffffffffff166114a5611639565b73ffffffffffffffffffffffffffffffffffffffff16146114fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f2906145bd565b60405180910390fd5b8460108190555080600e8190555081600c8190555083600b8190555082600a819055505050505050565b61152d612316565b73ffffffffffffffffffffffffffffffffffffffff1661154b611639565b73ffffffffffffffffffffffffffffffffffffffff16146115a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611598906145bd565b60405180910390fd5b6115ab6000612c22565b565b6115b5612316565b73ffffffffffffffffffffffffffffffffffffffff166115d3611639565b73ffffffffffffffffffffffffffffffffffffffff1614611629576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611620906145bd565b60405180910390fd5b8060128190555050565b600c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61166a613781565b61167382612a1f565b9050919050565b60606003805461168990614b71565b80601f01602080910402602001604051908101604052809291908181526020018280546116b590614b71565b80156117025780601f106116d757610100808354040283529160200191611702565b820191906000526020600020905b8154815290600101906020018083116116e557829003601f168201915b5050505050905090565b6000600c54905090565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177b906144bd565b60405180910390fd5b6002601054146117c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c09061459d565b60405180910390fd5b600f547f00000000000000000000000000000000000000000000000000000000000000006117f79190614a23565b81611800610eb1565b61180a919061490e565b111561184b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118429061455d565b60405180910390fd5b600b548161185833612178565b611862919061490e565b11156118a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189a9061451d565b60405180910390fd5b600a548111156118e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118df906146fd565b60405180910390fd5b80600c546118f69190614995565b341015611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192f9061469d565b60405180910390fd5b6119423382612388565b600e5461194d610eb1565b1061195b5760006010819055505b50565b611966612316565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cb906145fd565b60405180910390fd5b80600760006119e1612316565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611a8e612316565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611ad39190614385565b60405180910390a35050565b611ae7612316565b73ffffffffffffffffffffffffffffffffffffffff16611b05611639565b73ffffffffffffffffffffffffffffffffffffffff1614611b5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b52906145bd565b60405180910390fd5b60026009541415611ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b989061473d565b60405180910390fd5b600260098190555060003373ffffffffffffffffffffffffffffffffffffffff1647604051611bcf90614309565b60006040518083038185875af1925050503d8060008114611c0c576040519150601f19603f3d011682016040523d82523d6000602084013e611c11565b606091505b5050905080611c55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4c9061465d565b60405180910390fd5b506001600981905550565b611c68612316565b73ffffffffffffffffffffffffffffffffffffffff16611c86611639565b73ffffffffffffffffffffffffffffffffffffffff1614611cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd3906145bd565b60405180910390fd5b80600a8190555050565b611cf1848484612466565b611cfd84848484612ce6565b611d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d339061467d565b60405180910390fd5b50505050565b611d4a612316565b73ffffffffffffffffffffffffffffffffffffffff16611d68611639565b73ffffffffffffffffffffffffffffffffffffffff1614611dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db5906145bd565b60405180910390fd5b80600e8190555050565b6060611dd3826123a6565b611e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e09906145dd565b60405180910390fd5b6000611e1c612e7d565b90506000815111611e3c5760405180602001604052806000815250611e67565b80611e4684612f0f565b604051602001611e579291906142e5565b6040516020818303038152906040525b915050919050565b600a5481565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eda906144bd565b60405180910390fd5b600160105414611f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1f9061449d565b60405180910390fd5b600f547f0000000000000000000000000000000000000000000000000000000000000000611f569190614a23565b83611f5f610eb1565b611f69919061490e565b1115611faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa19061455d565b60405180910390fd5b600b5483611fb733612178565b611fc1919061490e565b1115612002576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff99061451d565b60405180910390fd5b600a54831115612047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203e906146fd565b60405180910390fd5b82600c546120559190614995565b341015612097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208e9061469d565b60405180910390fd5b61210b828280806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050601254336040516020016120f091906142ca565b60405160208183030381529060405280519060200120613070565b61214a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612141906144dd565b60405180910390fd5b6121543384612388565b600e5461215f610eb1565b1061216d5760006010819055505b505050565b60085481565b600061218382613087565b9050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612226612316565b73ffffffffffffffffffffffffffffffffffffffff16612244611639565b73ffffffffffffffffffffffffffffffffffffffff161461229a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612291906145bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561230a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612301906143fd565b60405180910390fd5b61231381612c22565b50565b600033905090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6123a2828260405180602001604052806000815250613170565b5050565b600060015482109050919050565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600061247182612a1f565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16612498612316565b73ffffffffffffffffffffffffffffffffffffffff1614806124f457506124bd612316565b73ffffffffffffffffffffffffffffffffffffffff166124dc84610d13565b73ffffffffffffffffffffffffffffffffffffffff16145b80612510575061250f826000015161250a612316565b61218a565b5b905080612552576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125499061461d565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146125c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bb9061457d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612634576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262b9061445d565b60405180910390fd5b6126418585856001613650565b61265160008484600001516123b4565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166126bf91906149ef565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff1661276391906148c8565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506000600184612869919061490e565b9050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156129af576128df816123a6565b156129ae576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612a178686866001613656565b505050505050565b612a27613781565b612a30826123a6565b612a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a669061441d565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000008310612ad35760017f000000000000000000000000000000000000000000000000000000000000000084612ac69190614a23565b612ad0919061490e565b90505b60008390505b818110612be1576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612bcd57809350505050612c1d565b508080612bd990614b47565b915050612ad9565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c149061475d565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612d078473ffffffffffffffffffffffffffffffffffffffff1661365c565b15612e70578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612d30612316565b8786866040518563ffffffff1660e01b8152600401612d529493929190614339565b602060405180830381600087803b158015612d6c57600080fd5b505af1925050508015612d9d57506040513d601f19601f82011682018060405250810190612d9a9190613ba9565b60015b612e20573d8060008114612dcd576040519150601f19603f3d011682016040523d82523d6000602084013e612dd2565b606091505b50600081511415612e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0f9061467d565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612e75565b600190505b949350505050565b6060600d8054612e8c90614b71565b80601f0160208091040260200160405190810160405280929190818152602001828054612eb890614b71565b8015612f055780601f10612eda57610100808354040283529160200191612f05565b820191906000526020600020905b815481529060010190602001808311612ee857829003601f168201915b5050505050905090565b60606000821415612f57576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061306b565b600082905060005b60008214612f89578080612f7290614bd4565b915050600a82612f829190614964565b9150612f5f565b60008167ffffffffffffffff811115612fa557612fa4614d2e565b5b6040519080825280601f01601f191660200182016040528015612fd75781602001600182028036833780820191505090505b5090505b6000851461306457600182612ff09190614a23565b9150600a85612fff9190614c41565b603061300b919061490e565b60f81b81838151811061302157613020614cff565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561305d9190614964565b9450612fdb565b8093505050505b919050565b60008261307d858461366f565b1490509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156130f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ef9061447d565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156131e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131de906146dd565b60405180910390fd5b6131f0816123a6565b15613230576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613227906146bd565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000831115613293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328a9061479d565b60405180910390fd5b6132a06000858386613650565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815250509050604051806040016040528085836000015161339d91906148c8565b6fffffffffffffffffffffffffffffffff1681526020018583602001516133c491906148c8565b6fffffffffffffffffffffffffffffffff16815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b8581101561363357818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46135d36000888488612ce6565b613612576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136099061467d565b60405180910390fd5b818061361d90614bd4565b925050808061362b90614bd4565b915050613562565b50806001819055506136486000878588613656565b505050505050565b50505050565b50505050565b600080823b905060008111915050919050565b60008082905060005b84518110156136d957600085828151811061369657613695614cff565b5b602002602001015190508083116136b8576136b183826136e4565b92506136c5565b6136c281846136e4565b92505b5080806136d190614bd4565b915050613678565b508091505092915050565b600082600052816020526040600020905092915050565b82805461370790614b71565b90600052602060002090601f0160209004810192826137295760008555613770565b82601f1061374257805160ff1916838001178555613770565b82800160010185558215613770579182015b8281111561376f578251825591602001919060010190613754565b5b50905061377d91906137bb565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b808211156137d45760008160009055506001016137bc565b5090565b60006137eb6137e684614818565b6147f3565b90508281526020810184848401111561380757613806614d6c565b5b613812848285614b05565b509392505050565b600061382d61382884614849565b6147f3565b90508281526020810184848401111561384957613848614d6c565b5b613854848285614b05565b509392505050565b60008135905061386b8161553f565b92915050565b60008083601f84011261388757613886614d62565b5b8235905067ffffffffffffffff8111156138a4576138a3614d5d565b5b6020830191508360208202830111156138c0576138bf614d67565b5b9250929050565b6000813590506138d681615556565b92915050565b6000813590506138eb8161556d565b92915050565b60008135905061390081615584565b92915050565b60008151905061391581615584565b92915050565b600082601f8301126139305761392f614d62565b5b81356139408482602086016137d8565b91505092915050565b600082601f83011261395e5761395d614d62565b5b813561396e84826020860161381a565b91505092915050565b6000813590506139868161559b565b92915050565b6000602082840312156139a2576139a1614d76565b5b60006139b08482850161385c565b91505092915050565b600080604083850312156139d0576139cf614d76565b5b60006139de8582860161385c565b92505060206139ef8582860161385c565b9150509250929050565b600080600060608486031215613a1257613a11614d76565b5b6000613a208682870161385c565b9350506020613a318682870161385c565b9250506040613a4286828701613977565b9150509250925092565b60008060008060808587031215613a6657613a65614d76565b5b6000613a748782880161385c565b9450506020613a858782880161385c565b9350506040613a9687828801613977565b925050606085013567ffffffffffffffff811115613ab757613ab6614d71565b5b613ac38782880161391b565b91505092959194509250565b60008060408385031215613ae657613ae5614d76565b5b6000613af48582860161385c565b9250506020613b05858286016138c7565b9150509250929050565b60008060408385031215613b2657613b25614d76565b5b6000613b348582860161385c565b9250506020613b4585828601613977565b9150509250929050565b600060208284031215613b6557613b64614d76565b5b6000613b73848285016138dc565b91505092915050565b600060208284031215613b9257613b91614d76565b5b6000613ba0848285016138f1565b91505092915050565b600060208284031215613bbf57613bbe614d76565b5b6000613bcd84828501613906565b91505092915050565b600060208284031215613bec57613beb614d76565b5b600082013567ffffffffffffffff811115613c0a57613c09614d71565b5b613c1684828501613949565b91505092915050565b600060208284031215613c3557613c34614d76565b5b6000613c4384828501613977565b91505092915050565b600080600060408486031215613c6557613c64614d76565b5b6000613c7386828701613977565b935050602084013567ffffffffffffffff811115613c9457613c93614d71565b5b613ca086828701613871565b92509250509250925092565b600080600080600060a08688031215613cc857613cc7614d76565b5b6000613cd688828901613977565b9550506020613ce788828901613977565b9450506040613cf888828901613977565b9350506060613d0988828901613977565b9250506080613d1a88828901613977565b9150509295509295909350565b613d3081614a57565b82525050565b613d3f81614a57565b82525050565b613d56613d5182614a57565b614c1d565b82525050565b613d6581614a69565b82525050565b613d7481614a75565b82525050565b6000613d858261487a565b613d8f8185614890565b9350613d9f818560208601614b14565b613da881614d7b565b840191505092915050565b6000613dbe82614885565b613dc881856148ac565b9350613dd8818560208601614b14565b613de181614d7b565b840191505092915050565b6000613df782614885565b613e0181856148bd565b9350613e11818560208601614b14565b80840191505092915050565b6000613e2a6022836148ac565b9150613e3582614d99565b604082019050919050565b6000613e4d6026836148ac565b9150613e5882614de8565b604082019050919050565b6000613e70602a836148ac565b9150613e7b82614e37565b604082019050919050565b6000613e936023836148ac565b9150613e9e82614e86565b604082019050919050565b6000613eb66025836148ac565b9150613ec182614ed5565b604082019050919050565b6000613ed96031836148ac565b9150613ee482614f24565b604082019050919050565b6000613efc601c836148ac565b9150613f0782614f73565b602082019050919050565b6000613f1f601e836148ac565b9150613f2a82614f9c565b602082019050919050565b6000613f42600f836148ac565b9150613f4d82614fc5565b602082019050919050565b6000613f656039836148ac565b9150613f7082614fee565b604082019050919050565b6000613f88601e836148ac565b9150613f938261503d565b602082019050919050565b6000613fab602b836148ac565b9150613fb682615066565b604082019050919050565b6000613fce6012836148ac565b9150613fd9826150b5565b602082019050919050565b6000613ff16026836148ac565b9150613ffc826150de565b604082019050919050565b60006140146019836148ac565b915061401f8261512d565b602082019050919050565b60006140376020836148ac565b915061404282615156565b602082019050919050565b600061405a602f836148ac565b91506140658261517f565b604082019050919050565b600061407d601a836148ac565b9150614088826151ce565b602082019050919050565b60006140a06032836148ac565b91506140ab826151f7565b604082019050919050565b60006140c36022836148ac565b91506140ce82615246565b604082019050919050565b60006140e66000836148a1565b91506140f182615295565b600082019050919050565b60006141096010836148ac565b915061411482615298565b602082019050919050565b600061412c6033836148ac565b9150614137826152c1565b604082019050919050565b600061414f6016836148ac565b915061415a82615310565b602082019050919050565b6000614172601d836148ac565b915061417d82615339565b602082019050919050565b60006141956021836148ac565b91506141a082615362565b604082019050919050565b60006141b86016836148ac565b91506141c3826153b1565b602082019050919050565b60006141db602e836148ac565b91506141e6826153da565b604082019050919050565b60006141fe601f836148ac565b915061420982615429565b602082019050919050565b6000614221602f836148ac565b915061422c82615452565b604082019050919050565b6000614244602d836148ac565b915061424f826154a1565b604082019050919050565b60006142676022836148ac565b9150614272826154f0565b604082019050919050565b6040820160008201516142936000850182613d27565b5060208201516142a660208501826142bb565b50505050565b6142b581614ae7565b82525050565b6142c481614af1565b82525050565b60006142d68284613d45565b60148201915081905092915050565b60006142f18285613dec565b91506142fd8284613dec565b91508190509392505050565b6000614314826140d9565b9150819050919050565b60006020820190506143336000830184613d36565b92915050565b600060808201905061434e6000830187613d36565b61435b6020830186613d36565b61436860408301856142ac565b818103606083015261437a8184613d7a565b905095945050505050565b600060208201905061439a6000830184613d5c565b92915050565b60006020820190506143b56000830184613d6b565b92915050565b600060208201905081810360008301526143d58184613db3565b905092915050565b600060208201905081810360008301526143f681613e1d565b9050919050565b6000602082019050818103600083015261441681613e40565b9050919050565b6000602082019050818103600083015261443681613e63565b9050919050565b6000602082019050818103600083015261445681613e86565b9050919050565b6000602082019050818103600083015261447681613ea9565b9050919050565b6000602082019050818103600083015261449681613ecc565b9050919050565b600060208201905081810360008301526144b681613eef565b9050919050565b600060208201905081810360008301526144d681613f12565b9050919050565b600060208201905081810360008301526144f681613f35565b9050919050565b6000602082019050818103600083015261451681613f58565b9050919050565b6000602082019050818103600083015261453681613f7b565b9050919050565b6000602082019050818103600083015261455681613f9e565b9050919050565b6000602082019050818103600083015261457681613fc1565b9050919050565b6000602082019050818103600083015261459681613fe4565b9050919050565b600060208201905081810360008301526145b681614007565b9050919050565b600060208201905081810360008301526145d68161402a565b9050919050565b600060208201905081810360008301526145f68161404d565b9050919050565b6000602082019050818103600083015261461681614070565b9050919050565b6000602082019050818103600083015261463681614093565b9050919050565b60006020820190508181036000830152614656816140b6565b9050919050565b60006020820190508181036000830152614676816140fc565b9050919050565b600060208201905081810360008301526146968161411f565b9050919050565b600060208201905081810360008301526146b681614142565b9050919050565b600060208201905081810360008301526146d681614165565b9050919050565b600060208201905081810360008301526146f681614188565b9050919050565b60006020820190508181036000830152614716816141ab565b9050919050565b60006020820190508181036000830152614736816141ce565b9050919050565b60006020820190508181036000830152614756816141f1565b9050919050565b6000602082019050818103600083015261477681614214565b9050919050565b6000602082019050818103600083015261479681614237565b9050919050565b600060208201905081810360008301526147b68161425a565b9050919050565b60006040820190506147d2600083018461427d565b92915050565b60006020820190506147ed60008301846142ac565b92915050565b60006147fd61480e565b90506148098282614ba3565b919050565b6000604051905090565b600067ffffffffffffffff82111561483357614832614d2e565b5b61483c82614d7b565b9050602081019050919050565b600067ffffffffffffffff82111561486457614863614d2e565b5b61486d82614d7b565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006148d382614aab565b91506148de83614aab565b9250826fffffffffffffffffffffffffffffffff0382111561490357614902614c72565b5b828201905092915050565b600061491982614ae7565b915061492483614ae7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561495957614958614c72565b5b828201905092915050565b600061496f82614ae7565b915061497a83614ae7565b92508261498a57614989614ca1565b5b828204905092915050565b60006149a082614ae7565b91506149ab83614ae7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156149e4576149e3614c72565b5b828202905092915050565b60006149fa82614aab565b9150614a0583614aab565b925082821015614a1857614a17614c72565b5b828203905092915050565b6000614a2e82614ae7565b9150614a3983614ae7565b925082821015614a4c57614a4b614c72565b5b828203905092915050565b6000614a6282614ac7565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b83811015614b32578082015181840152602081019050614b17565b83811115614b41576000848401525b50505050565b6000614b5282614ae7565b91506000821415614b6657614b65614c72565b5b600182039050919050565b60006002820490506001821680614b8957607f821691505b60208210811415614b9d57614b9c614cd0565b5b50919050565b614bac82614d7b565b810181811067ffffffffffffffff82111715614bcb57614bca614d2e565b5b80604052505050565b6000614bdf82614ae7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c1257614c11614c72565b5b600182019050919050565b6000614c2882614c2f565b9050919050565b6000614c3a82614d8c565b9050919050565b6000614c4c82614ae7565b9150614c5783614ae7565b925082614c6757614c66614ca1565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f57686974656c6973742053616c65206973206e6f742041637469766500000000600082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f4e6f742077686974656c69737465640000000000000000000000000000000000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f5175616e74697479206578636565647320616c6c6f776564204d696e74730000600082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f72656163686564206d617820737570706c790000000000000000000000000000600082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f5075626c69632053616c65206973206e6f742041637469766500000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f4e65656420746f2073656e64206d6f7265204554482e00000000000000000000600082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f63616e206e6f74206d696e742074686973206d616e7900000000000000000000600082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b61554881614a57565b811461555357600080fd5b50565b61555f81614a69565b811461556a57600080fd5b50565b61557681614a75565b811461558157600080fd5b50565b61558d81614a7f565b811461559857600080fd5b50565b6155a481614ae7565b81146155af57600080fd5b5056fea2646970667358221220f78db4e25b2a00ed3dacd14e9c72b2acb451478cc9c211eb063b0584a97ae6ab64736f6c63430008070033697066733a2f2f516d59325447765451507a4476387769476453587433616e515743425a4b61775552674261536b724c77673169312f

Deployed Bytecode

0x6080604052600436106102515760003560e01c80637126a85511610139578063ac446002116100b6578063d04950a11161007a578063d04950a11461089d578063d2cab056146108c8578063d7224ba0146108e4578063dc33e6811461090f578063e985e9c51461094c578063f2fde38b1461098957610251565b8063ac446002146107ce578063af7b26e9146107e5578063b88d4fde1461080e578063c1f127e214610837578063c87b56dd1461086057610251565b80639231ab2a116100fd5780639231ab2a146106f657806395d89b411461073357806398d5fdca1461075e578063a0712d6814610789578063a22cb465146107a557610251565b80637126a85514610637578063715018a6146106605780637cb64759146106775780638d859f3e146106a05780638da5cb5b146106cb57610251565b80632f2ffc57116101d25780634e69d560116101965780634e69d560146105035780634f6ccce71461052e57806355f804b31461056b5780636352211e1461059457806369ba1a75146105d157806370a08231146105fa57610251565b80632f2ffc57146104205780632f745c591461044b5780633fd17366146104885780634256dbe3146104b157806342842e0e146104da57610251565b8063095ea7b311610219578063095ea7b31461034d57806318160ddd14610376578063200d2ed2146103a157806323b872dd146103cc5780632eb4a7ab146103f557610251565b80630199e3471461025657806301ffc9a71461027f578063050225ea146102bc57806306fdde03146102e5578063081812fc14610310575b600080fd5b34801561026257600080fd5b5061027d60048036038101906102789190613c1f565b6109b2565b005b34801561028b57600080fd5b506102a660048036038101906102a19190613b7c565b610a38565b6040516102b39190614385565b60405180910390f35b3480156102c857600080fd5b506102e360048036038101906102de9190613b0f565b610b82565b005b3480156102f157600080fd5b506102fa610c81565b60405161030791906143bb565b60405180910390f35b34801561031c57600080fd5b5061033760048036038101906103329190613c1f565b610d13565b604051610344919061431e565b60405180910390f35b34801561035957600080fd5b50610374600480360381019061036f9190613b0f565b610d98565b005b34801561038257600080fd5b5061038b610eb1565b60405161039891906147d8565b60405180910390f35b3480156103ad57600080fd5b506103b6610ebb565b6040516103c391906147d8565b60405180910390f35b3480156103d857600080fd5b506103f360048036038101906103ee91906139f9565b610ec1565b005b34801561040157600080fd5b5061040a610ed1565b60405161041791906143a0565b60405180910390f35b34801561042c57600080fd5b50610435610ed7565b60405161044291906147d8565b60405180910390f35b34801561045757600080fd5b50610472600480360381019061046d9190613b0f565b610edd565b60405161047f91906147d8565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa9190613c1f565b6110db565b005b3480156104bd57600080fd5b506104d860048036038101906104d39190613c1f565b611161565b005b3480156104e657600080fd5b5061050160048036038101906104fc91906139f9565b6111e7565b005b34801561050f57600080fd5b50610518611207565b60405161052591906147d8565b60405180910390f35b34801561053a57600080fd5b5061055560048036038101906105509190613c1f565b611211565b60405161056291906147d8565b60405180910390f35b34801561057757600080fd5b50610592600480360381019061058d9190613bd6565b611264565b005b3480156105a057600080fd5b506105bb60048036038101906105b69190613c1f565b6112fa565b6040516105c8919061431e565b60405180910390f35b3480156105dd57600080fd5b506105f860048036038101906105f39190613c1f565b611310565b005b34801561060657600080fd5b50610621600480360381019061061c919061398c565b611396565b60405161062e91906147d8565b60405180910390f35b34801561064357600080fd5b5061065e60048036038101906106599190613cac565b61147f565b005b34801561066c57600080fd5b50610675611525565b005b34801561068357600080fd5b5061069e60048036038101906106999190613b4f565b6115ad565b005b3480156106ac57600080fd5b506106b5611633565b6040516106c291906147d8565b60405180910390f35b3480156106d757600080fd5b506106e0611639565b6040516106ed919061431e565b60405180910390f35b34801561070257600080fd5b5061071d60048036038101906107189190613c1f565b611662565b60405161072a91906147bd565b60405180910390f35b34801561073f57600080fd5b5061074861167a565b60405161075591906143bb565b60405180910390f35b34801561076a57600080fd5b5061077361170c565b60405161078091906147d8565b60405180910390f35b6107a3600480360381019061079e9190613c1f565b611716565b005b3480156107b157600080fd5b506107cc60048036038101906107c79190613acf565b61195e565b005b3480156107da57600080fd5b506107e3611adf565b005b3480156107f157600080fd5b5061080c60048036038101906108079190613c1f565b611c60565b005b34801561081a57600080fd5b5061083560048036038101906108309190613a4c565b611ce6565b005b34801561084357600080fd5b5061085e60048036038101906108599190613c1f565b611d42565b005b34801561086c57600080fd5b5061088760048036038101906108829190613c1f565b611dc8565b60405161089491906143bb565b60405180910390f35b3480156108a957600080fd5b506108b2611e6f565b6040516108bf91906147d8565b60405180910390f35b6108e260048036038101906108dd9190613c4c565b611e75565b005b3480156108f057600080fd5b506108f9612172565b60405161090691906147d8565b60405180910390f35b34801561091b57600080fd5b506109366004803603810190610931919061398c565b612178565b60405161094391906147d8565b60405180910390f35b34801561095857600080fd5b50610973600480360381019061096e91906139b9565b61218a565b6040516109809190614385565b60405180910390f35b34801561099557600080fd5b506109b060048036038101906109ab919061398c565b61221e565b005b6109ba612316565b73ffffffffffffffffffffffffffffffffffffffff166109d8611639565b73ffffffffffffffffffffffffffffffffffffffff1614610a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a25906145bd565b60405180910390fd5b80600b8190555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b0357507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b6b57507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b7b5750610b7a8261231e565b5b9050919050565b610b8a612316565b73ffffffffffffffffffffffffffffffffffffffff16610ba8611639565b73ffffffffffffffffffffffffffffffffffffffff1614610bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf5906145bd565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000001f481610c28610eb1565b610c32919061490e565b1115610c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6a9061455d565b60405180910390fd5b610c7d8282612388565b5050565b606060028054610c9090614b71565b80601f0160208091040260200160405190810160405280929190818152602001828054610cbc90614b71565b8015610d095780601f10610cde57610100808354040283529160200191610d09565b820191906000526020600020905b815481529060010190602001808311610cec57829003601f168201915b5050505050905090565b6000610d1e826123a6565b610d5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d549061477d565b60405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610da3826112fa565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0b9061463d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610e33612316565b73ffffffffffffffffffffffffffffffffffffffff161480610e625750610e6181610e5c612316565b61218a565b5b610ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e98906144fd565b60405180910390fd5b610eac8383836123b4565b505050565b6000600154905090565b60105481565b610ecc838383612466565b505050565b60125481565b600b5481565b6000610ee883611396565b8210610f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f20906143dd565b60405180910390fd5b6000610f33610eb1565b905060008060005b83811015611099576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461102d57806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561108557868414156110765781955050505050506110d5565b838061108190614bd4565b9450505b50808061109190614bd4565b915050610f3b565b506040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cc9061471d565b60405180910390fd5b92915050565b6110e3612316565b73ffffffffffffffffffffffffffffffffffffffff16611101611639565b73ffffffffffffffffffffffffffffffffffffffff1614611157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114e906145bd565b60405180910390fd5b80600c8190555050565b611169612316565b73ffffffffffffffffffffffffffffffffffffffff16611187611639565b73ffffffffffffffffffffffffffffffffffffffff16146111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d4906145bd565b60405180910390fd5b80600f8190555050565b61120283838360405180602001604052806000815250611ce6565b505050565b6000601054905090565b600061121b610eb1565b821061125c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112539061443d565b60405180910390fd5b819050919050565b61126c612316565b73ffffffffffffffffffffffffffffffffffffffff1661128a611639565b73ffffffffffffffffffffffffffffffffffffffff16146112e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d7906145bd565b60405180910390fd5b80600d90805190602001906112f69291906136fb565b5050565b600061130582612a1f565b600001519050919050565b611318612316565b73ffffffffffffffffffffffffffffffffffffffff16611336611639565b73ffffffffffffffffffffffffffffffffffffffff161461138c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611383906145bd565b60405180910390fd5b8060108190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611407576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fe9061453d565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b611487612316565b73ffffffffffffffffffffffffffffffffffffffff166114a5611639565b73ffffffffffffffffffffffffffffffffffffffff16146114fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f2906145bd565b60405180910390fd5b8460108190555080600e8190555081600c8190555083600b8190555082600a819055505050505050565b61152d612316565b73ffffffffffffffffffffffffffffffffffffffff1661154b611639565b73ffffffffffffffffffffffffffffffffffffffff16146115a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611598906145bd565b60405180910390fd5b6115ab6000612c22565b565b6115b5612316565b73ffffffffffffffffffffffffffffffffffffffff166115d3611639565b73ffffffffffffffffffffffffffffffffffffffff1614611629576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611620906145bd565b60405180910390fd5b8060128190555050565b600c5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61166a613781565b61167382612a1f565b9050919050565b60606003805461168990614b71565b80601f01602080910402602001604051908101604052809291908181526020018280546116b590614b71565b80156117025780601f106116d757610100808354040283529160200191611702565b820191906000526020600020905b8154815290600101906020018083116116e557829003601f168201915b5050505050905090565b6000600c54905090565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177b906144bd565b60405180910390fd5b6002601054146117c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c09061459d565b60405180910390fd5b600f547f00000000000000000000000000000000000000000000000000000000000001f46117f79190614a23565b81611800610eb1565b61180a919061490e565b111561184b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118429061455d565b60405180910390fd5b600b548161185833612178565b611862919061490e565b11156118a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189a9061451d565b60405180910390fd5b600a548111156118e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118df906146fd565b60405180910390fd5b80600c546118f69190614995565b341015611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192f9061469d565b60405180910390fd5b6119423382612388565b600e5461194d610eb1565b1061195b5760006010819055505b50565b611966612316565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cb906145fd565b60405180910390fd5b80600760006119e1612316565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611a8e612316565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611ad39190614385565b60405180910390a35050565b611ae7612316565b73ffffffffffffffffffffffffffffffffffffffff16611b05611639565b73ffffffffffffffffffffffffffffffffffffffff1614611b5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b52906145bd565b60405180910390fd5b60026009541415611ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b989061473d565b60405180910390fd5b600260098190555060003373ffffffffffffffffffffffffffffffffffffffff1647604051611bcf90614309565b60006040518083038185875af1925050503d8060008114611c0c576040519150601f19603f3d011682016040523d82523d6000602084013e611c11565b606091505b5050905080611c55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4c9061465d565b60405180910390fd5b506001600981905550565b611c68612316565b73ffffffffffffffffffffffffffffffffffffffff16611c86611639565b73ffffffffffffffffffffffffffffffffffffffff1614611cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd3906145bd565b60405180910390fd5b80600a8190555050565b611cf1848484612466565b611cfd84848484612ce6565b611d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d339061467d565b60405180910390fd5b50505050565b611d4a612316565b73ffffffffffffffffffffffffffffffffffffffff16611d68611639565b73ffffffffffffffffffffffffffffffffffffffff1614611dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db5906145bd565b60405180910390fd5b80600e8190555050565b6060611dd3826123a6565b611e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e09906145dd565b60405180910390fd5b6000611e1c612e7d565b90506000815111611e3c5760405180602001604052806000815250611e67565b80611e4684612f0f565b604051602001611e579291906142e5565b6040516020818303038152906040525b915050919050565b600a5481565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eda906144bd565b60405180910390fd5b600160105414611f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1f9061449d565b60405180910390fd5b600f547f00000000000000000000000000000000000000000000000000000000000001f4611f569190614a23565b83611f5f610eb1565b611f69919061490e565b1115611faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa19061455d565b60405180910390fd5b600b5483611fb733612178565b611fc1919061490e565b1115612002576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff99061451d565b60405180910390fd5b600a54831115612047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203e906146fd565b60405180910390fd5b82600c546120559190614995565b341015612097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208e9061469d565b60405180910390fd5b61210b828280806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050601254336040516020016120f091906142ca565b60405160208183030381529060405280519060200120613070565b61214a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612141906144dd565b60405180910390fd5b6121543384612388565b600e5461215f610eb1565b1061216d5760006010819055505b505050565b60085481565b600061218382613087565b9050919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612226612316565b73ffffffffffffffffffffffffffffffffffffffff16612244611639565b73ffffffffffffffffffffffffffffffffffffffff161461229a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612291906145bd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561230a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612301906143fd565b60405180910390fd5b61231381612c22565b50565b600033905090565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6123a2828260405180602001604052806000815250613170565b5050565b600060015482109050919050565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600061247182612a1f565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16612498612316565b73ffffffffffffffffffffffffffffffffffffffff1614806124f457506124bd612316565b73ffffffffffffffffffffffffffffffffffffffff166124dc84610d13565b73ffffffffffffffffffffffffffffffffffffffff16145b80612510575061250f826000015161250a612316565b61218a565b5b905080612552576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125499061461d565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146125c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bb9061457d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612634576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262b9061445d565b60405180910390fd5b6126418585856001613650565b61265160008484600001516123b4565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff166126bf91906149ef565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff1661276391906148c8565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060405180604001604052808573ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050506000600184612869919061490e565b9050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156129af576128df816123a6565b156129ae576040518060400160405280846000015173ffffffffffffffffffffffffffffffffffffffff168152602001846020015167ffffffffffffffff168152506004600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055509050505b5b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612a178686866001613656565b505050505050565b612a27613781565b612a30826123a6565b612a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a669061441d565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000328310612ad35760017f000000000000000000000000000000000000000000000000000000000000003284612ac69190614a23565b612ad0919061490e565b90505b60008390505b818110612be1576000600460008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612bcd57809350505050612c1d565b508080612bd990614b47565b915050612ad9565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c149061475d565b60405180910390fd5b919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000612d078473ffffffffffffffffffffffffffffffffffffffff1661365c565b15612e70578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612d30612316565b8786866040518563ffffffff1660e01b8152600401612d529493929190614339565b602060405180830381600087803b158015612d6c57600080fd5b505af1925050508015612d9d57506040513d601f19601f82011682018060405250810190612d9a9190613ba9565b60015b612e20573d8060008114612dcd576040519150601f19603f3d011682016040523d82523d6000602084013e612dd2565b606091505b50600081511415612e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0f9061467d565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612e75565b600190505b949350505050565b6060600d8054612e8c90614b71565b80601f0160208091040260200160405190810160405280929190818152602001828054612eb890614b71565b8015612f055780601f10612eda57610100808354040283529160200191612f05565b820191906000526020600020905b815481529060010190602001808311612ee857829003601f168201915b5050505050905090565b60606000821415612f57576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061306b565b600082905060005b60008214612f89578080612f7290614bd4565b915050600a82612f829190614964565b9150612f5f565b60008167ffffffffffffffff811115612fa557612fa4614d2e565b5b6040519080825280601f01601f191660200182016040528015612fd75781602001600182028036833780820191505090505b5090505b6000851461306457600182612ff09190614a23565b9150600a85612fff9190614c41565b603061300b919061490e565b60f81b81838151811061302157613020614cff565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561305d9190614964565b9450612fdb565b8093505050505b919050565b60008261307d858461366f565b1490509392505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156130f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ef9061447d565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b60006001549050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156131e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131de906146dd565b60405180910390fd5b6131f0816123a6565b15613230576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613227906146bd565b60405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000032831115613293576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328a9061479d565b60405180910390fd5b6132a06000858386613650565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016000820160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16815250509050604051806040016040528085836000015161339d91906148c8565b6fffffffffffffffffffffffffffffffff1681526020018583602001516133c491906148c8565b6fffffffffffffffffffffffffffffffff16815250600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060208201518160000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555090505060405180604001604052808673ffffffffffffffffffffffffffffffffffffffff1681526020014267ffffffffffffffff168152506004600084815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050600082905060005b8581101561363357818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46135d36000888488612ce6565b613612576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136099061467d565b60405180910390fd5b818061361d90614bd4565b925050808061362b90614bd4565b915050613562565b50806001819055506136486000878588613656565b505050505050565b50505050565b50505050565b600080823b905060008111915050919050565b60008082905060005b84518110156136d957600085828151811061369657613695614cff565b5b602002602001015190508083116136b8576136b183826136e4565b92506136c5565b6136c281846136e4565b92505b5080806136d190614bd4565b915050613678565b508091505092915050565b600082600052816020526040600020905092915050565b82805461370790614b71565b90600052602060002090601f0160209004810192826137295760008555613770565b82601f1061374257805160ff1916838001178555613770565b82800160010185558215613770579182015b8281111561376f578251825591602001919060010190613754565b5b50905061377d91906137bb565b5090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b5b808211156137d45760008160009055506001016137bc565b5090565b60006137eb6137e684614818565b6147f3565b90508281526020810184848401111561380757613806614d6c565b5b613812848285614b05565b509392505050565b600061382d61382884614849565b6147f3565b90508281526020810184848401111561384957613848614d6c565b5b613854848285614b05565b509392505050565b60008135905061386b8161553f565b92915050565b60008083601f84011261388757613886614d62565b5b8235905067ffffffffffffffff8111156138a4576138a3614d5d565b5b6020830191508360208202830111156138c0576138bf614d67565b5b9250929050565b6000813590506138d681615556565b92915050565b6000813590506138eb8161556d565b92915050565b60008135905061390081615584565b92915050565b60008151905061391581615584565b92915050565b600082601f8301126139305761392f614d62565b5b81356139408482602086016137d8565b91505092915050565b600082601f83011261395e5761395d614d62565b5b813561396e84826020860161381a565b91505092915050565b6000813590506139868161559b565b92915050565b6000602082840312156139a2576139a1614d76565b5b60006139b08482850161385c565b91505092915050565b600080604083850312156139d0576139cf614d76565b5b60006139de8582860161385c565b92505060206139ef8582860161385c565b9150509250929050565b600080600060608486031215613a1257613a11614d76565b5b6000613a208682870161385c565b9350506020613a318682870161385c565b9250506040613a4286828701613977565b9150509250925092565b60008060008060808587031215613a6657613a65614d76565b5b6000613a748782880161385c565b9450506020613a858782880161385c565b9350506040613a9687828801613977565b925050606085013567ffffffffffffffff811115613ab757613ab6614d71565b5b613ac38782880161391b565b91505092959194509250565b60008060408385031215613ae657613ae5614d76565b5b6000613af48582860161385c565b9250506020613b05858286016138c7565b9150509250929050565b60008060408385031215613b2657613b25614d76565b5b6000613b348582860161385c565b9250506020613b4585828601613977565b9150509250929050565b600060208284031215613b6557613b64614d76565b5b6000613b73848285016138dc565b91505092915050565b600060208284031215613b9257613b91614d76565b5b6000613ba0848285016138f1565b91505092915050565b600060208284031215613bbf57613bbe614d76565b5b6000613bcd84828501613906565b91505092915050565b600060208284031215613bec57613beb614d76565b5b600082013567ffffffffffffffff811115613c0a57613c09614d71565b5b613c1684828501613949565b91505092915050565b600060208284031215613c3557613c34614d76565b5b6000613c4384828501613977565b91505092915050565b600080600060408486031215613c6557613c64614d76565b5b6000613c7386828701613977565b935050602084013567ffffffffffffffff811115613c9457613c93614d71565b5b613ca086828701613871565b92509250509250925092565b600080600080600060a08688031215613cc857613cc7614d76565b5b6000613cd688828901613977565b9550506020613ce788828901613977565b9450506040613cf888828901613977565b9350506060613d0988828901613977565b9250506080613d1a88828901613977565b9150509295509295909350565b613d3081614a57565b82525050565b613d3f81614a57565b82525050565b613d56613d5182614a57565b614c1d565b82525050565b613d6581614a69565b82525050565b613d7481614a75565b82525050565b6000613d858261487a565b613d8f8185614890565b9350613d9f818560208601614b14565b613da881614d7b565b840191505092915050565b6000613dbe82614885565b613dc881856148ac565b9350613dd8818560208601614b14565b613de181614d7b565b840191505092915050565b6000613df782614885565b613e0181856148bd565b9350613e11818560208601614b14565b80840191505092915050565b6000613e2a6022836148ac565b9150613e3582614d99565b604082019050919050565b6000613e4d6026836148ac565b9150613e5882614de8565b604082019050919050565b6000613e70602a836148ac565b9150613e7b82614e37565b604082019050919050565b6000613e936023836148ac565b9150613e9e82614e86565b604082019050919050565b6000613eb66025836148ac565b9150613ec182614ed5565b604082019050919050565b6000613ed96031836148ac565b9150613ee482614f24565b604082019050919050565b6000613efc601c836148ac565b9150613f0782614f73565b602082019050919050565b6000613f1f601e836148ac565b9150613f2a82614f9c565b602082019050919050565b6000613f42600f836148ac565b9150613f4d82614fc5565b602082019050919050565b6000613f656039836148ac565b9150613f7082614fee565b604082019050919050565b6000613f88601e836148ac565b9150613f938261503d565b602082019050919050565b6000613fab602b836148ac565b9150613fb682615066565b604082019050919050565b6000613fce6012836148ac565b9150613fd9826150b5565b602082019050919050565b6000613ff16026836148ac565b9150613ffc826150de565b604082019050919050565b60006140146019836148ac565b915061401f8261512d565b602082019050919050565b60006140376020836148ac565b915061404282615156565b602082019050919050565b600061405a602f836148ac565b91506140658261517f565b604082019050919050565b600061407d601a836148ac565b9150614088826151ce565b602082019050919050565b60006140a06032836148ac565b91506140ab826151f7565b604082019050919050565b60006140c36022836148ac565b91506140ce82615246565b604082019050919050565b60006140e66000836148a1565b91506140f182615295565b600082019050919050565b60006141096010836148ac565b915061411482615298565b602082019050919050565b600061412c6033836148ac565b9150614137826152c1565b604082019050919050565b600061414f6016836148ac565b915061415a82615310565b602082019050919050565b6000614172601d836148ac565b915061417d82615339565b602082019050919050565b60006141956021836148ac565b91506141a082615362565b604082019050919050565b60006141b86016836148ac565b91506141c3826153b1565b602082019050919050565b60006141db602e836148ac565b91506141e6826153da565b604082019050919050565b60006141fe601f836148ac565b915061420982615429565b602082019050919050565b6000614221602f836148ac565b915061422c82615452565b604082019050919050565b6000614244602d836148ac565b915061424f826154a1565b604082019050919050565b60006142676022836148ac565b9150614272826154f0565b604082019050919050565b6040820160008201516142936000850182613d27565b5060208201516142a660208501826142bb565b50505050565b6142b581614ae7565b82525050565b6142c481614af1565b82525050565b60006142d68284613d45565b60148201915081905092915050565b60006142f18285613dec565b91506142fd8284613dec565b91508190509392505050565b6000614314826140d9565b9150819050919050565b60006020820190506143336000830184613d36565b92915050565b600060808201905061434e6000830187613d36565b61435b6020830186613d36565b61436860408301856142ac565b818103606083015261437a8184613d7a565b905095945050505050565b600060208201905061439a6000830184613d5c565b92915050565b60006020820190506143b56000830184613d6b565b92915050565b600060208201905081810360008301526143d58184613db3565b905092915050565b600060208201905081810360008301526143f681613e1d565b9050919050565b6000602082019050818103600083015261441681613e40565b9050919050565b6000602082019050818103600083015261443681613e63565b9050919050565b6000602082019050818103600083015261445681613e86565b9050919050565b6000602082019050818103600083015261447681613ea9565b9050919050565b6000602082019050818103600083015261449681613ecc565b9050919050565b600060208201905081810360008301526144b681613eef565b9050919050565b600060208201905081810360008301526144d681613f12565b9050919050565b600060208201905081810360008301526144f681613f35565b9050919050565b6000602082019050818103600083015261451681613f58565b9050919050565b6000602082019050818103600083015261453681613f7b565b9050919050565b6000602082019050818103600083015261455681613f9e565b9050919050565b6000602082019050818103600083015261457681613fc1565b9050919050565b6000602082019050818103600083015261459681613fe4565b9050919050565b600060208201905081810360008301526145b681614007565b9050919050565b600060208201905081810360008301526145d68161402a565b9050919050565b600060208201905081810360008301526145f68161404d565b9050919050565b6000602082019050818103600083015261461681614070565b9050919050565b6000602082019050818103600083015261463681614093565b9050919050565b60006020820190508181036000830152614656816140b6565b9050919050565b60006020820190508181036000830152614676816140fc565b9050919050565b600060208201905081810360008301526146968161411f565b9050919050565b600060208201905081810360008301526146b681614142565b9050919050565b600060208201905081810360008301526146d681614165565b9050919050565b600060208201905081810360008301526146f681614188565b9050919050565b60006020820190508181036000830152614716816141ab565b9050919050565b60006020820190508181036000830152614736816141ce565b9050919050565b60006020820190508181036000830152614756816141f1565b9050919050565b6000602082019050818103600083015261477681614214565b9050919050565b6000602082019050818103600083015261479681614237565b9050919050565b600060208201905081810360008301526147b68161425a565b9050919050565b60006040820190506147d2600083018461427d565b92915050565b60006020820190506147ed60008301846142ac565b92915050565b60006147fd61480e565b90506148098282614ba3565b919050565b6000604051905090565b600067ffffffffffffffff82111561483357614832614d2e565b5b61483c82614d7b565b9050602081019050919050565b600067ffffffffffffffff82111561486457614863614d2e565b5b61486d82614d7b565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006148d382614aab565b91506148de83614aab565b9250826fffffffffffffffffffffffffffffffff0382111561490357614902614c72565b5b828201905092915050565b600061491982614ae7565b915061492483614ae7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561495957614958614c72565b5b828201905092915050565b600061496f82614ae7565b915061497a83614ae7565b92508261498a57614989614ca1565b5b828204905092915050565b60006149a082614ae7565b91506149ab83614ae7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156149e4576149e3614c72565b5b828202905092915050565b60006149fa82614aab565b9150614a0583614aab565b925082821015614a1857614a17614c72565b5b828203905092915050565b6000614a2e82614ae7565b9150614a3983614ae7565b925082821015614a4c57614a4b614c72565b5b828203905092915050565b6000614a6282614ac7565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b83811015614b32578082015181840152602081019050614b17565b83811115614b41576000848401525b50505050565b6000614b5282614ae7565b91506000821415614b6657614b65614c72565b5b600182039050919050565b60006002820490506001821680614b8957607f821691505b60208210811415614b9d57614b9c614cd0565b5b50919050565b614bac82614d7b565b810181811067ffffffffffffffff82111715614bcb57614bca614d2e565b5b80604052505050565b6000614bdf82614ae7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c1257614c11614c72565b5b600182019050919050565b6000614c2882614c2f565b9050919050565b6000614c3a82614d8c565b9050919050565b6000614c4c82614ae7565b9150614c5783614ae7565b925082614c6757614c66614ca1565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206e756d626572206d696e74656420717565727920666f7260008201527f20746865207a65726f2061646472657373000000000000000000000000000000602082015250565b7f57686974656c6973742053616c65206973206e6f742041637469766500000000600082015250565b7f5468652063616c6c657220697320616e6f7468657220636f6e74726163740000600082015250565b7f4e6f742077686974656c69737465640000000000000000000000000000000000600082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f5175616e74697479206578636565647320616c6c6f776564204d696e74730000600082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f72656163686564206d617820737570706c790000000000000000000000000000600082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f5075626c69632053616c65206973206e6f742041637469766500000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f4e65656420746f2073656e64206d6f7265204554482e00000000000000000000600082015250565b7f455243373231413a20746f6b656e20616c7265616479206d696e746564000000600082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f63616e206e6f74206d696e742074686973206d616e7900000000000000000000600082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e7469747920746f206d696e7420746f6f20686960008201527f6768000000000000000000000000000000000000000000000000000000000000602082015250565b61554881614a57565b811461555357600080fd5b50565b61555f81614a69565b811461556a57600080fd5b50565b61557681614a75565b811461558157600080fd5b50565b61558d81614a7f565b811461559857600080fd5b50565b6155a481614ae7565b81146155af57600080fd5b5056fea2646970667358221220f78db4e25b2a00ed3dacd14e9c72b2acb451478cc9c211eb063b0584a97ae6ab64736f6c63430008070033

Deployed Bytecode Sourcemap

21025:4708:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24993:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12285:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25359:191;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13857:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15058:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14674:379;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11255:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21568:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15741:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21688:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21197:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11536:744;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24757:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25642:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15888:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25207:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11354:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24096:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13734:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25119:84;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12660:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23800:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3744:103;;;;;;;;;;;;;:::i;:::-;;22098:77;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21275:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3521:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24421:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13956:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25284:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22896:549;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15267:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24572:181;;;;;;;;;;;;;:::i;:::-;;24859:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16050:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25556:82;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23452:342;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21119:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22182:708;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19180:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24310:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15548:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3856:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24993:122;3666:12;:10;:12::i;:::-;3655:23;;:7;:5;:7::i;:::-;:23;;;3647:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25096:13:::1;25078:15;:31;;;;24993:122:::0;:::o;12285:370::-;12412:4;12457:25;12442:40;;;:11;:40;;;;:99;;;;12508:33;12493:48;;;:11;:48;;;;12442:99;:160;;;;12567:35;12552:50;;;:11;:50;;;;12442:160;:207;;;;12613:36;12637:11;12613:23;:36::i;:::-;12442:207;12428:221;;12285:370;;;:::o;25359:191::-;3666:12;:10;:12::i;:::-;3655:23;;:7;:5;:7::i;:::-;:23;;;3647:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25470:14:::1;25457:9;25441:13;:11;:13::i;:::-;:25;;;;:::i;:::-;:43;;25433:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;25514:30;25524:8;25534:9;25514;:30::i;:::-;25359:191:::0;;:::o;13857:94::-;13911:13;13940:5;13933:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13857:94;:::o;15058:204::-;15126:7;15150:16;15158:7;15150;:16::i;:::-;15142:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15232:15;:24;15248:7;15232:24;;;;;;;;;;;;;;;;;;;;;15225:31;;15058:204;;;:::o;14674:379::-;14743:13;14759:24;14775:7;14759:15;:24::i;:::-;14743:40;;14804:5;14798:11;;:2;:11;;;;14790:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;14889:5;14873:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;14898:37;14915:5;14922:12;:10;:12::i;:::-;14898:16;:37::i;:::-;14873:62;14857:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;15019:28;15028:2;15032:7;15041:5;15019:8;:28::i;:::-;14736:317;14674:379;;:::o;11255:94::-;11308:7;11331:12;;11324:19;;11255:94;:::o;21568:22::-;;;;:::o;15741:142::-;15849:28;15859:4;15865:2;15869:7;15849:9;:28::i;:::-;15741:142;;;:::o;21688:94::-;;;;:::o;21197:34::-;;;;:::o;11536:744::-;11645:7;11680:16;11690:5;11680:9;:16::i;:::-;11672:5;:24;11664:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11742:22;11767:13;:11;:13::i;:::-;11742:38;;11787:19;11817:25;11867:9;11862:350;11886:14;11882:1;:18;11862:350;;;11916:31;11950:11;:14;11962:1;11950:14;;;;;;;;;;;11916:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12003:1;11977:28;;:9;:14;;;:28;;;11973:89;;12038:9;:14;;;12018:34;;11973:89;12095:5;12074:26;;:17;:26;;;12070:135;;;12132:5;12117:11;:20;12113:59;;;12159:1;12152:8;;;;;;;;;12113:59;12182:13;;;;;:::i;:::-;;;;12070:135;11907:305;11902:3;;;;;:::i;:::-;;;;11862:350;;;;12218:56;;;;;;;;;;:::i;:::-;;;;;;;;11536:744;;;;;:::o;24757:98::-;3666:12;:10;:12::i;:::-;3655:23;;:7;:5;:7::i;:::-;:23;;;3647:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24840:9:::1;24832:5;:17;;;;24757:98:::0;:::o;25642:88::-;3666:12;:10;:12::i;:::-;3655:23;;:7;:5;:7::i;:::-;:23;;;3647:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25716:8:::1;25706:7;:18;;;;25642:88:::0;:::o;15888:157::-;16000:39;16017:4;16023:2;16027:7;16000:39;;;;;;;;;;;;:16;:39::i;:::-;15888:157;;;:::o;25207:73::-;25247:4;25268:6;;25261:13;;25207:73;:::o;11354:177::-;11421:7;11453:13;:11;:13::i;:::-;11445:5;:21;11437:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;11520:5;11513:12;;11354:177;;;:::o;24096:98::-;3666:12;:10;:12::i;:::-;3655:23;;:7;:5;:7::i;:::-;:23;;;3647:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24181:7:::1;24165:13;:23;;;;;;;;;;;;:::i;:::-;;24096:98:::0;:::o;13734:118::-;13798:7;13821:20;13833:7;13821:11;:20::i;:::-;:25;;;13814:32;;13734:118;;;:::o;25119:84::-;3666:12;:10;:12::i;:::-;3655:23;;:7;:5;:7::i;:::-;:23;;;3647:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25190:7:::1;25181:6;:16;;;;25119:84:::0;:::o;12660:211::-;12724:7;12765:1;12748:19;;:5;:19;;;;12740:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;12837:12;:19;12850:5;12837:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;12829:36;;12822:43;;12660:211;;;:::o;23800:291::-;3666:12;:10;:12::i;:::-;3655:23;;:7;:5;:7::i;:::-;:23;;;3647:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23951:6:::1;23942;:15;;;;23975:7;23966:6;:16;;;;23999:5;23991;:13;;;;24031;24013:15;:31;;;;24073:12;24053:17;:32;;;;23800:291:::0;;;;;:::o;3744:103::-;3666:12;:10;:12::i;:::-;3655:23;;:7;:5;:7::i;:::-;:23;;;3647:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3809:30:::1;3836:1;3809:18;:30::i;:::-;3744:103::o:0;22098:77::-;3666:12;:10;:12::i;:::-;3655:23;;:7;:5;:7::i;:::-;:23;;;3647:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22168:1:::1;22155:10;:14;;;;22098:77:::0;:::o;21275:34::-;;;;:::o;3521:87::-;3567:7;3594:6;;;;;;;;;;;3587:13;;3521:87;:::o;24421:147::-;24502:21;;:::i;:::-;24542:20;24554:7;24542:11;:20::i;:::-;24535:27;;24421:147;;;:::o;13956:98::-;14012:13;14041:7;14034:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13956:98;:::o;25284:71::-;25323:4;25344:5;;25337:12;;25284:71;:::o;22896:549::-;22033:10;22020:23;;:9;:23;;;22012:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;22983:1:::1;22973:6;;:11;22965:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;23075:7;;23058:14;:24;;;;:::i;:::-;23046:8;23030:13;:11;:13::i;:::-;:24;;;;:::i;:::-;:52;;23022:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;23159:15;;23147:8;23120:24;23133:10;23120:12;:24::i;:::-;:35;;;;:::i;:::-;:54;;23112:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;23237:17;;23225:8;:29;;23217:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;23316:8;23308:5;;:16;;;;:::i;:::-;23295:9;:29;;23287:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23358:31;23368:10;23380:8;23358:9;:31::i;:::-;23419:6;;23402:13;:11;:13::i;:::-;:23;23399:41;;23437:1;23428:6;:10;;;;23399:41;22896:549:::0;:::o;15267:274::-;15370:12;:10;:12::i;:::-;15358:24;;:8;:24;;;;15350:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;15467:8;15422:18;:32;15441:12;:10;:12::i;:::-;15422:32;;;;;;;;;;;;;;;:42;15455:8;15422:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;15516:8;15487:48;;15502:12;:10;:12::i;:::-;15487:48;;;15526:8;15487:48;;;;;;:::i;:::-;;;;;;;;15267:274;;:::o;24572:181::-;3666:12;:10;:12::i;:::-;3655:23;;:7;:5;:7::i;:::-;:23;;;3647:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1303:1:::1;1449:7;;:19;;1441:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1303:1;1510:7;:18;;;;24637:12:::2;24655:10;:15;;24678:21;24655:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24636:68;;;24719:7;24711:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;24629:124;1259:1:::1;1553:7;:22;;;;24572:181::o:0;24859:130::-;3666:12;:10;:12::i;:::-;3655:23;;:7;:5;:7::i;:::-;:23;;;3647:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24968:15:::1;24948:17;:35;;;;24859:130:::0;:::o;16050:311::-;16187:28;16197:4;16203:2;16207:7;16187:9;:28::i;:::-;16238:48;16261:4;16267:2;16271:7;16280:5;16238:22;:48::i;:::-;16222:133;;;;;;;;;;;;:::i;:::-;;;;;;;;;16050:311;;;;:::o;25556:82::-;3666:12;:10;:12::i;:::-;3655:23;;:7;:5;:7::i;:::-;:23;;;3647:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25625:7:::1;25616:6;:16;;;;25556:82:::0;:::o;23452:342::-;23525:13;23555:16;23563:7;23555;:16::i;:::-;23547:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;23629:21;23653:10;:8;:10::i;:::-;23629:34;;23708:1;23690:7;23684:21;:25;:104;;;;;;;;;;;;;;;;;23745:7;23754:18;:7;:16;:18::i;:::-;23728:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;23684:104;23670:118;;;23452:342;;;:::o;21119:36::-;;;;:::o;22182:708::-;22033:10;22020:23;;:9;:23;;;22012:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;22310:1:::1;22300:6;;:11;22292:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;22404:7;;22387:14;:24;;;;:::i;:::-;22375:8;22359:13;:11;:13::i;:::-;:24;;;;:::i;:::-;:52;;22351:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;22488:15;;22476:8;22449:24;22462:10;22449:12;:24::i;:::-;:35;;;;:::i;:::-;:54;;22441:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;22566:17;;22554:8;:29;;22546:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;22645:8;22637:5;;:16;;;;:::i;:::-;22624:9;:29;;22616:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22695:85;22715:11;;22695:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22728:10;;22767;22750:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;22740:39;;;;;;22695:18;:85::i;:::-;22687:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;22806:31;22816:10;22828:8;22806:9;:31::i;:::-;22864:6;;22847:13;:11;:13::i;:::-;:23;22844:41;;22882:1;22873:6;:10;;;;22844:41;22182:708:::0;;;:::o;19180:43::-;;;;:::o;24310:107::-;24368:7;24391:20;24405:5;24391:13;:20::i;:::-;24384:27;;24310:107;;;:::o;15548:186::-;15670:4;15693:18;:25;15712:5;15693:25;;;;;;;;;;;;;;;:35;15719:8;15693:35;;;;;;;;;;;;;;;;;;;;;;;;;15686:42;;15548:186;;;;:::o;3856:201::-;3666:12;:10;:12::i;:::-;3655:23;;:7;:5;:7::i;:::-;:23;;;3647:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3965:1:::1;3945:22;;:8;:22;;;;3937:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;4021:28;4040:8;4021:18;:28::i;:::-;3856:201:::0;:::o;3064:98::-;3117:7;3144:10;3137:17;;3064:98;:::o;8174:157::-;8259:4;8298:25;8283:40;;;:11;:40;;;;8276:47;;8174:157;;;:::o;16477:98::-;16542:27;16552:2;16556:8;16542:27;;;;;;;;;;;;:9;:27::i;:::-;16477:98;;:::o;16366:105::-;16423:4;16453:12;;16443:7;:22;16436:29;;16366:105;;;:::o;19002:172::-;19126:2;19099:15;:24;19115:7;19099:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;19160:7;19156:2;19140:28;;19149:5;19140:28;;;;;;;;;;;;19002:172;;;:::o;17737:1260::-;17834:35;17872:20;17884:7;17872:11;:20::i;:::-;17834:58;;17901:22;17943:13;:18;;;17927:34;;:12;:10;:12::i;:::-;:34;;;:81;;;;17996:12;:10;:12::i;:::-;17972:36;;:20;17984:7;17972:11;:20::i;:::-;:36;;;17927:81;:142;;;;18019:50;18036:13;:18;;;18056:12;:10;:12::i;:::-;18019:16;:50::i;:::-;17927:142;17901:169;;18095:17;18079:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;18227:4;18205:26;;:13;:18;;;:26;;;18189:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;18316:1;18302:16;;:2;:16;;;;18294:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;18369:43;18391:4;18397:2;18401:7;18410:1;18369:21;:43::i;:::-;18420:49;18437:1;18441:7;18450:13;:18;;;18420:8;:49::i;:::-;18508:1;18478:12;:18;18491:4;18478:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18544:1;18516:12;:16;18529:2;18516:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18575:43;;;;;;;;18590:2;18575:43;;;;;;18601:15;18575:43;;;;;18552:11;:20;18564:7;18552:20;;;;;;;;;;;:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18626:19;18658:1;18648:7;:11;;;;:::i;:::-;18626:33;;18711:1;18670:43;;:11;:24;18682:11;18670:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;18666:236;;;18728:20;18736:11;18728:7;:20::i;:::-;18724:171;;;18788:97;;;;;;;;18815:13;:18;;;18788:97;;;;;;18846:13;:28;;;18788:97;;;;;18761:11;:24;18773:11;18761:24;;;;;;;;;;;:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18724:171;18666:236;18934:7;18930:2;18915:27;;18924:4;18915:27;;;;;;;;;;;;18949:42;18970:4;18976:2;18980:7;18989:1;18949:20;:42::i;:::-;17827:1170;;;17737:1260;;;:::o;13123:606::-;13199:21;;:::i;:::-;13240:16;13248:7;13240;:16::i;:::-;13232:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13312:26;13360:12;13349:7;:23;13345:93;;13429:1;13414:12;13404:7;:22;;;;:::i;:::-;:26;;;;:::i;:::-;13383:47;;13345:93;13451:12;13466:7;13451:22;;13446:212;13483:18;13475:4;:26;13446:212;;13520:31;13554:11;:17;13566:4;13554:17;;;;;;;;;;;13520:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13610:1;13584:28;;:9;:14;;;:28;;;13580:71;;13632:9;13625:16;;;;;;;13580:71;13511:147;13503:6;;;;;:::i;:::-;;;;13446:212;;;;13666:57;;;;;;;;;;:::i;:::-;;;;;;;;13123:606;;;;:::o;4066:191::-;4140:16;4159:6;;;;;;;;;;;4140:25;;4185:8;4176:6;;:17;;;;;;;;;;;;;;;;;;4240:8;4209:40;;4230:8;4209:40;;;;;;;;;;;;4129:128;4066:191;:::o;19980:690::-;20117:4;20134:15;:2;:13;;;:15::i;:::-;20130:535;;;20189:2;20173:36;;;20210:12;:10;:12::i;:::-;20224:4;20230:7;20239:5;20173:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;20160:464;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20421:1;20404:6;:13;:18;20400:215;;;20437:61;;;;;;;;;;:::i;:::-;;;;;;;;20400:215;20583:6;20577:13;20568:6;20564:2;20560:15;20553:38;20160:464;20305:45;;;20295:55;;;:6;:55;;;;20288:62;;;;;20130:535;20653:4;20646:11;;19980:690;;;;;;;:::o;24198:108::-;24258:13;24287;24280:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24198:108;:::o;1681:533::-;1737:13;1777:1;1768:5;:10;1764:53;;;1795:10;;;;;;;;;;;;;;;;;;;;;1764:53;1827:12;1842:5;1827:20;;1858:14;1883:78;1898:1;1890:4;:9;1883:78;;1916:8;;;;;:::i;:::-;;;;1947:2;1939:10;;;;;:::i;:::-;;;1883:78;;;1971:19;2003:6;1993:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1971:39;;2021:154;2037:1;2028:5;:10;2021:154;;2065:1;2055:11;;;;;:::i;:::-;;;2132:2;2124:5;:10;;;;:::i;:::-;2111:2;:24;;;;:::i;:::-;2098:39;;2081:6;2088;2081:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;2161:2;2152:11;;;;;:::i;:::-;;;2021:154;;;2199:6;2185:21;;;;;1681:533;;;;:::o;228:190::-;353:4;406;377:25;390:5;397:4;377:12;:25::i;:::-;:33;370:40;;228:190;;;;;:::o;12877:240::-;12938:7;12987:1;12970:19;;:5;:19;;;;12954:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;13078:12;:19;13091:5;13078:19;;;;;;;;;;;;;;;:32;;;;;;;;;;;;13070:41;;13063:48;;12877:240;;;:::o;16580:1152::-;16685:20;16708:12;;16685:35;;16749:1;16735:16;;:2;:16;;;;16727:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;16806:21;16814:12;16806:7;:21::i;:::-;16805:22;16797:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;16888:12;16876:8;:24;;16868:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16948:61;16978:1;16982:2;16986:12;17000:8;16948:21;:61::i;:::-;17018:30;17051:12;:16;17064:2;17051:16;;;;;;;;;;;;;;;17018:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17093:119;;;;;;;;17143:8;17113:11;:19;;;:39;;;;:::i;:::-;17093:119;;;;;;17196:8;17161:11;:24;;;:44;;;;:::i;:::-;17093:119;;;;;17074:12;:16;17087:2;17074:16;;;;;;;;;;;;;;;:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17247:43;;;;;;;;17262:2;17247:43;;;;;;17273:15;17247:43;;;;;17219:11;:25;17231:12;17219:25;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17299:20;17322:12;17299:35;;17348:9;17343:281;17367:8;17363:1;:12;17343:281;;;17421:12;17417:2;17396:38;;17413:1;17396:38;;;;;;;;;;;;17461:59;17492:1;17496:2;17500:12;17514:5;17461:22;:59::i;:::-;17443:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;17602:14;;;;;:::i;:::-;;;;17377:3;;;;;:::i;:::-;;;;17343:281;;;;17647:12;17632;:27;;;;17666:60;17695:1;17699:2;17703:12;17717:8;17666:20;:60::i;:::-;16678:1054;;;16580:1152;;;:::o;20675:141::-;;;;;:::o;20821:140::-;;;;;:::o;4289:197::-;4349:4;4367:12;4434:7;4422:20;4414:28;;4477:1;4470:4;:8;4463:15;;;4289:197;;;:::o;423:517::-;506:7;526:20;549:4;526:27;;569:9;564:339;588:5;:12;584:1;:16;564:339;;;622:20;645:5;651:1;645:8;;;;;;;;:::i;:::-;;;;;;;;622:31;;688:12;672;:28;668:224;;736:42;751:12;765;736:14;:42::i;:::-;721:57;;668:224;;;834:42;849:12;863;834:14;:42::i;:::-;819:57;;668:224;607:296;602:3;;;;;:::i;:::-;;;;564:339;;;;920:12;913:19;;;423:517;;;;:::o;948:224::-;1016:13;1079:1;1073:4;1066:15;1108:1;1102:4;1095:15;1149:4;1143;1133:21;1124:30;;948:224;;;;:::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;1003:568::-;1076:8;1086:6;1136:3;1129:4;1121:6;1117:17;1113:27;1103:122;;1144:79;;:::i;:::-;1103:122;1257:6;1244:20;1234:30;;1287:18;1279:6;1276:30;1273:117;;;1309:79;;:::i;:::-;1273:117;1423:4;1415:6;1411:17;1399:29;;1477:3;1469:4;1461:6;1457:17;1447:8;1443:32;1440:41;1437:128;;;1484:79;;:::i;:::-;1437:128;1003:568;;;;;:::o;1577:133::-;1620:5;1658:6;1645:20;1636:29;;1674:30;1698:5;1674:30;:::i;:::-;1577:133;;;;:::o;1716:139::-;1762:5;1800:6;1787:20;1778:29;;1816:33;1843:5;1816:33;:::i;:::-;1716:139;;;;:::o;1861:137::-;1906:5;1944:6;1931:20;1922:29;;1960:32;1986:5;1960:32;:::i;:::-;1861:137;;;;:::o;2004:141::-;2060:5;2091:6;2085:13;2076:22;;2107:32;2133:5;2107:32;:::i;:::-;2004:141;;;;:::o;2164:338::-;2219:5;2268:3;2261:4;2253:6;2249:17;2245:27;2235:122;;2276:79;;:::i;:::-;2235:122;2393:6;2380:20;2418:78;2492:3;2484:6;2477:4;2469:6;2465:17;2418:78;:::i;:::-;2409:87;;2225:277;2164:338;;;;:::o;2522:340::-;2578:5;2627:3;2620:4;2612:6;2608:17;2604:27;2594:122;;2635:79;;:::i;:::-;2594:122;2752:6;2739:20;2777:79;2852:3;2844:6;2837:4;2829:6;2825:17;2777:79;:::i;:::-;2768:88;;2584:278;2522:340;;;;:::o;2868:139::-;2914:5;2952:6;2939:20;2930:29;;2968:33;2995:5;2968:33;:::i;:::-;2868:139;;;;:::o;3013:329::-;3072:6;3121:2;3109:9;3100:7;3096:23;3092:32;3089:119;;;3127:79;;:::i;:::-;3089:119;3247:1;3272:53;3317:7;3308:6;3297:9;3293:22;3272:53;:::i;:::-;3262:63;;3218:117;3013:329;;;;:::o;3348:474::-;3416:6;3424;3473:2;3461:9;3452:7;3448:23;3444:32;3441:119;;;3479:79;;:::i;:::-;3441:119;3599:1;3624:53;3669:7;3660:6;3649:9;3645:22;3624:53;:::i;:::-;3614:63;;3570:117;3726:2;3752:53;3797:7;3788:6;3777:9;3773:22;3752:53;:::i;:::-;3742:63;;3697:118;3348:474;;;;;:::o;3828:619::-;3905:6;3913;3921;3970:2;3958:9;3949:7;3945:23;3941:32;3938:119;;;3976:79;;:::i;:::-;3938:119;4096:1;4121:53;4166:7;4157:6;4146:9;4142:22;4121:53;:::i;:::-;4111:63;;4067:117;4223:2;4249:53;4294:7;4285:6;4274:9;4270:22;4249:53;:::i;:::-;4239:63;;4194:118;4351:2;4377:53;4422:7;4413:6;4402:9;4398:22;4377:53;:::i;:::-;4367:63;;4322:118;3828:619;;;;;:::o;4453:943::-;4548:6;4556;4564;4572;4621:3;4609:9;4600:7;4596:23;4592:33;4589:120;;;4628:79;;:::i;:::-;4589:120;4748:1;4773:53;4818:7;4809:6;4798:9;4794:22;4773:53;:::i;:::-;4763:63;;4719:117;4875:2;4901:53;4946:7;4937:6;4926:9;4922:22;4901:53;:::i;:::-;4891:63;;4846:118;5003:2;5029:53;5074:7;5065:6;5054:9;5050:22;5029:53;:::i;:::-;5019:63;;4974:118;5159:2;5148:9;5144:18;5131:32;5190:18;5182:6;5179:30;5176:117;;;5212:79;;:::i;:::-;5176:117;5317:62;5371:7;5362:6;5351:9;5347:22;5317:62;:::i;:::-;5307:72;;5102:287;4453:943;;;;;;;:::o;5402:468::-;5467:6;5475;5524:2;5512:9;5503:7;5499:23;5495:32;5492:119;;;5530:79;;:::i;:::-;5492:119;5650:1;5675:53;5720:7;5711:6;5700:9;5696:22;5675:53;:::i;:::-;5665:63;;5621:117;5777:2;5803:50;5845:7;5836:6;5825:9;5821:22;5803:50;:::i;:::-;5793:60;;5748:115;5402:468;;;;;:::o;5876:474::-;5944:6;5952;6001:2;5989:9;5980:7;5976:23;5972:32;5969:119;;;6007:79;;:::i;:::-;5969:119;6127:1;6152:53;6197:7;6188:6;6177:9;6173:22;6152:53;:::i;:::-;6142:63;;6098:117;6254:2;6280:53;6325:7;6316:6;6305:9;6301:22;6280:53;:::i;:::-;6270:63;;6225:118;5876:474;;;;;:::o;6356:329::-;6415:6;6464:2;6452:9;6443:7;6439:23;6435:32;6432:119;;;6470:79;;:::i;:::-;6432:119;6590:1;6615:53;6660:7;6651:6;6640:9;6636:22;6615:53;:::i;:::-;6605:63;;6561:117;6356:329;;;;:::o;6691:327::-;6749:6;6798:2;6786:9;6777:7;6773:23;6769:32;6766:119;;;6804:79;;:::i;:::-;6766:119;6924:1;6949:52;6993:7;6984:6;6973:9;6969:22;6949:52;:::i;:::-;6939:62;;6895:116;6691:327;;;;:::o;7024:349::-;7093:6;7142:2;7130:9;7121:7;7117:23;7113:32;7110:119;;;7148:79;;:::i;:::-;7110:119;7268:1;7293:63;7348:7;7339:6;7328:9;7324:22;7293:63;:::i;:::-;7283:73;;7239:127;7024:349;;;;:::o;7379:509::-;7448:6;7497:2;7485:9;7476:7;7472:23;7468:32;7465:119;;;7503:79;;:::i;:::-;7465:119;7651:1;7640:9;7636:17;7623:31;7681:18;7673:6;7670:30;7667:117;;;7703:79;;:::i;:::-;7667:117;7808:63;7863:7;7854:6;7843:9;7839:22;7808:63;:::i;:::-;7798:73;;7594:287;7379:509;;;;:::o;7894:329::-;7953:6;8002:2;7990:9;7981:7;7977:23;7973:32;7970:119;;;8008:79;;:::i;:::-;7970:119;8128:1;8153:53;8198:7;8189:6;8178:9;8174:22;8153:53;:::i;:::-;8143:63;;8099:117;7894:329;;;;:::o;8229:704::-;8324:6;8332;8340;8389:2;8377:9;8368:7;8364:23;8360:32;8357:119;;;8395:79;;:::i;:::-;8357:119;8515:1;8540:53;8585:7;8576:6;8565:9;8561:22;8540:53;:::i;:::-;8530:63;;8486:117;8670:2;8659:9;8655:18;8642:32;8701:18;8693:6;8690:30;8687:117;;;8723:79;;:::i;:::-;8687:117;8836:80;8908:7;8899:6;8888:9;8884:22;8836:80;:::i;:::-;8818:98;;;;8613:313;8229:704;;;;;:::o;8939:911::-;9034:6;9042;9050;9058;9066;9115:3;9103:9;9094:7;9090:23;9086:33;9083:120;;;9122:79;;:::i;:::-;9083:120;9242:1;9267:53;9312:7;9303:6;9292:9;9288:22;9267:53;:::i;:::-;9257:63;;9213:117;9369:2;9395:53;9440:7;9431:6;9420:9;9416:22;9395:53;:::i;:::-;9385:63;;9340:118;9497:2;9523:53;9568:7;9559:6;9548:9;9544:22;9523:53;:::i;:::-;9513:63;;9468:118;9625:2;9651:53;9696:7;9687:6;9676:9;9672:22;9651:53;:::i;:::-;9641:63;;9596:118;9753:3;9780:53;9825:7;9816:6;9805:9;9801:22;9780:53;:::i;:::-;9770:63;;9724:119;8939:911;;;;;;;;:::o;9856:108::-;9933:24;9951:5;9933:24;:::i;:::-;9928:3;9921:37;9856:108;;:::o;9970:118::-;10057:24;10075:5;10057:24;:::i;:::-;10052:3;10045:37;9970:118;;:::o;10094:157::-;10199:45;10219:24;10237:5;10219:24;:::i;:::-;10199:45;:::i;:::-;10194:3;10187:58;10094:157;;:::o;10257:109::-;10338:21;10353:5;10338:21;:::i;:::-;10333:3;10326:34;10257:109;;:::o;10372:118::-;10459:24;10477:5;10459:24;:::i;:::-;10454:3;10447:37;10372:118;;:::o;10496:360::-;10582:3;10610:38;10642:5;10610:38;:::i;:::-;10664:70;10727:6;10722:3;10664:70;:::i;:::-;10657:77;;10743:52;10788:6;10783:3;10776:4;10769:5;10765:16;10743:52;:::i;:::-;10820:29;10842:6;10820:29;:::i;:::-;10815:3;10811:39;10804:46;;10586:270;10496:360;;;;:::o;10862:364::-;10950:3;10978:39;11011:5;10978:39;:::i;:::-;11033:71;11097:6;11092:3;11033:71;:::i;:::-;11026:78;;11113:52;11158:6;11153:3;11146:4;11139:5;11135:16;11113:52;:::i;:::-;11190:29;11212:6;11190:29;:::i;:::-;11185:3;11181:39;11174:46;;10954:272;10862:364;;;;:::o;11232:377::-;11338:3;11366:39;11399:5;11366:39;:::i;:::-;11421:89;11503:6;11498:3;11421:89;:::i;:::-;11414:96;;11519:52;11564:6;11559:3;11552:4;11545:5;11541:16;11519:52;:::i;:::-;11596:6;11591:3;11587:16;11580:23;;11342:267;11232:377;;;;:::o;11615:366::-;11757:3;11778:67;11842:2;11837:3;11778:67;:::i;:::-;11771:74;;11854:93;11943:3;11854:93;:::i;:::-;11972:2;11967:3;11963:12;11956:19;;11615:366;;;:::o;11987:::-;12129:3;12150:67;12214:2;12209:3;12150:67;:::i;:::-;12143:74;;12226:93;12315:3;12226:93;:::i;:::-;12344:2;12339:3;12335:12;12328:19;;11987:366;;;:::o;12359:::-;12501:3;12522:67;12586:2;12581:3;12522:67;:::i;:::-;12515:74;;12598:93;12687:3;12598:93;:::i;:::-;12716:2;12711:3;12707:12;12700:19;;12359:366;;;:::o;12731:::-;12873:3;12894:67;12958:2;12953:3;12894:67;:::i;:::-;12887:74;;12970:93;13059:3;12970:93;:::i;:::-;13088:2;13083:3;13079:12;13072:19;;12731:366;;;:::o;13103:::-;13245:3;13266:67;13330:2;13325:3;13266:67;:::i;:::-;13259:74;;13342:93;13431:3;13342:93;:::i;:::-;13460:2;13455:3;13451:12;13444:19;;13103:366;;;:::o;13475:::-;13617:3;13638:67;13702:2;13697:3;13638:67;:::i;:::-;13631:74;;13714:93;13803:3;13714:93;:::i;:::-;13832:2;13827:3;13823:12;13816:19;;13475:366;;;:::o;13847:::-;13989:3;14010:67;14074:2;14069:3;14010:67;:::i;:::-;14003:74;;14086:93;14175:3;14086:93;:::i;:::-;14204:2;14199:3;14195:12;14188:19;;13847:366;;;:::o;14219:::-;14361:3;14382:67;14446:2;14441:3;14382:67;:::i;:::-;14375:74;;14458:93;14547:3;14458:93;:::i;:::-;14576:2;14571:3;14567:12;14560:19;;14219:366;;;:::o;14591:::-;14733:3;14754:67;14818:2;14813:3;14754:67;:::i;:::-;14747:74;;14830:93;14919:3;14830:93;:::i;:::-;14948:2;14943:3;14939:12;14932:19;;14591:366;;;:::o;14963:::-;15105:3;15126:67;15190:2;15185:3;15126:67;:::i;:::-;15119:74;;15202:93;15291:3;15202:93;:::i;:::-;15320:2;15315:3;15311:12;15304:19;;14963:366;;;:::o;15335:::-;15477:3;15498:67;15562:2;15557:3;15498:67;:::i;:::-;15491:74;;15574:93;15663:3;15574:93;:::i;:::-;15692:2;15687:3;15683:12;15676:19;;15335:366;;;:::o;15707:::-;15849:3;15870:67;15934:2;15929:3;15870:67;:::i;:::-;15863:74;;15946:93;16035:3;15946:93;:::i;:::-;16064:2;16059:3;16055:12;16048:19;;15707:366;;;:::o;16079:::-;16221:3;16242:67;16306:2;16301:3;16242:67;:::i;:::-;16235:74;;16318:93;16407:3;16318:93;:::i;:::-;16436:2;16431:3;16427:12;16420:19;;16079:366;;;:::o;16451:::-;16593:3;16614:67;16678:2;16673:3;16614:67;:::i;:::-;16607:74;;16690:93;16779:3;16690:93;:::i;:::-;16808:2;16803:3;16799:12;16792:19;;16451:366;;;:::o;16823:::-;16965:3;16986:67;17050:2;17045:3;16986:67;:::i;:::-;16979:74;;17062:93;17151:3;17062:93;:::i;:::-;17180:2;17175:3;17171:12;17164:19;;16823:366;;;:::o;17195:::-;17337:3;17358:67;17422:2;17417:3;17358:67;:::i;:::-;17351:74;;17434:93;17523:3;17434:93;:::i;:::-;17552:2;17547:3;17543:12;17536:19;;17195:366;;;:::o;17567:::-;17709:3;17730:67;17794:2;17789:3;17730:67;:::i;:::-;17723:74;;17806:93;17895:3;17806:93;:::i;:::-;17924:2;17919:3;17915:12;17908:19;;17567:366;;;:::o;17939:::-;18081:3;18102:67;18166:2;18161:3;18102:67;:::i;:::-;18095:74;;18178:93;18267:3;18178:93;:::i;:::-;18296:2;18291:3;18287:12;18280:19;;17939:366;;;:::o;18311:::-;18453:3;18474:67;18538:2;18533:3;18474:67;:::i;:::-;18467:74;;18550:93;18639:3;18550:93;:::i;:::-;18668:2;18663:3;18659:12;18652:19;;18311:366;;;:::o;18683:::-;18825:3;18846:67;18910:2;18905:3;18846:67;:::i;:::-;18839:74;;18922:93;19011:3;18922:93;:::i;:::-;19040:2;19035:3;19031:12;19024:19;;18683:366;;;:::o;19055:398::-;19214:3;19235:83;19316:1;19311:3;19235:83;:::i;:::-;19228:90;;19327:93;19416:3;19327:93;:::i;:::-;19445:1;19440:3;19436:11;19429:18;;19055:398;;;:::o;19459:366::-;19601:3;19622:67;19686:2;19681:3;19622:67;:::i;:::-;19615:74;;19698:93;19787:3;19698:93;:::i;:::-;19816:2;19811:3;19807:12;19800:19;;19459:366;;;:::o;19831:::-;19973:3;19994:67;20058:2;20053:3;19994:67;:::i;:::-;19987:74;;20070:93;20159:3;20070:93;:::i;:::-;20188:2;20183:3;20179:12;20172:19;;19831:366;;;:::o;20203:::-;20345:3;20366:67;20430:2;20425:3;20366:67;:::i;:::-;20359:74;;20442:93;20531:3;20442:93;:::i;:::-;20560:2;20555:3;20551:12;20544:19;;20203:366;;;:::o;20575:::-;20717:3;20738:67;20802:2;20797:3;20738:67;:::i;:::-;20731:74;;20814:93;20903:3;20814:93;:::i;:::-;20932:2;20927:3;20923:12;20916:19;;20575:366;;;:::o;20947:::-;21089:3;21110:67;21174:2;21169:3;21110:67;:::i;:::-;21103:74;;21186:93;21275:3;21186:93;:::i;:::-;21304:2;21299:3;21295:12;21288:19;;20947:366;;;:::o;21319:::-;21461:3;21482:67;21546:2;21541:3;21482:67;:::i;:::-;21475:74;;21558:93;21647:3;21558:93;:::i;:::-;21676:2;21671:3;21667:12;21660:19;;21319:366;;;:::o;21691:::-;21833:3;21854:67;21918:2;21913:3;21854:67;:::i;:::-;21847:74;;21930:93;22019:3;21930:93;:::i;:::-;22048:2;22043:3;22039:12;22032:19;;21691:366;;;:::o;22063:::-;22205:3;22226:67;22290:2;22285:3;22226:67;:::i;:::-;22219:74;;22302:93;22391:3;22302:93;:::i;:::-;22420:2;22415:3;22411:12;22404:19;;22063:366;;;:::o;22435:::-;22577:3;22598:67;22662:2;22657:3;22598:67;:::i;:::-;22591:74;;22674:93;22763:3;22674:93;:::i;:::-;22792:2;22787:3;22783:12;22776:19;;22435:366;;;:::o;22807:::-;22949:3;22970:67;23034:2;23029:3;22970:67;:::i;:::-;22963:74;;23046:93;23135:3;23046:93;:::i;:::-;23164:2;23159:3;23155:12;23148:19;;22807:366;;;:::o;23179:::-;23321:3;23342:67;23406:2;23401:3;23342:67;:::i;:::-;23335:74;;23418:93;23507:3;23418:93;:::i;:::-;23536:2;23531:3;23527:12;23520:19;;23179:366;;;:::o;23621:527::-;23780:4;23775:3;23771:14;23867:4;23860:5;23856:16;23850:23;23886:63;23943:4;23938:3;23934:14;23920:12;23886:63;:::i;:::-;23795:164;24051:4;24044:5;24040:16;24034:23;24070:61;24125:4;24120:3;24116:14;24102:12;24070:61;:::i;:::-;23969:172;23749:399;23621:527;;:::o;24154:118::-;24241:24;24259:5;24241:24;:::i;:::-;24236:3;24229:37;24154:118;;:::o;24278:105::-;24353:23;24370:5;24353:23;:::i;:::-;24348:3;24341:36;24278:105;;:::o;24389:256::-;24501:3;24516:75;24587:3;24578:6;24516:75;:::i;:::-;24616:2;24611:3;24607:12;24600:19;;24636:3;24629:10;;24389:256;;;;:::o;24651:435::-;24831:3;24853:95;24944:3;24935:6;24853:95;:::i;:::-;24846:102;;24965:95;25056:3;25047:6;24965:95;:::i;:::-;24958:102;;25077:3;25070:10;;24651:435;;;;;:::o;25092:379::-;25276:3;25298:147;25441:3;25298:147;:::i;:::-;25291:154;;25462:3;25455:10;;25092:379;;;:::o;25477:222::-;25570:4;25608:2;25597:9;25593:18;25585:26;;25621:71;25689:1;25678:9;25674:17;25665:6;25621:71;:::i;:::-;25477:222;;;;:::o;25705:640::-;25900:4;25938:3;25927:9;25923:19;25915:27;;25952:71;26020:1;26009:9;26005:17;25996:6;25952:71;:::i;:::-;26033:72;26101:2;26090:9;26086:18;26077:6;26033:72;:::i;:::-;26115;26183:2;26172:9;26168:18;26159:6;26115:72;:::i;:::-;26234:9;26228:4;26224:20;26219:2;26208:9;26204:18;26197:48;26262:76;26333:4;26324:6;26262:76;:::i;:::-;26254:84;;25705:640;;;;;;;:::o;26351:210::-;26438:4;26476:2;26465:9;26461:18;26453:26;;26489:65;26551:1;26540:9;26536:17;26527:6;26489:65;:::i;:::-;26351:210;;;;:::o;26567:222::-;26660:4;26698:2;26687:9;26683:18;26675:26;;26711:71;26779:1;26768:9;26764:17;26755:6;26711:71;:::i;:::-;26567:222;;;;:::o;26795:313::-;26908:4;26946:2;26935:9;26931:18;26923:26;;26995:9;26989:4;26985:20;26981:1;26970:9;26966:17;26959:47;27023:78;27096:4;27087:6;27023:78;:::i;:::-;27015:86;;26795:313;;;;:::o;27114:419::-;27280:4;27318:2;27307:9;27303:18;27295:26;;27367:9;27361:4;27357:20;27353:1;27342:9;27338:17;27331:47;27395:131;27521:4;27395:131;:::i;:::-;27387:139;;27114:419;;;:::o;27539:::-;27705:4;27743:2;27732:9;27728:18;27720:26;;27792:9;27786:4;27782:20;27778:1;27767:9;27763:17;27756:47;27820:131;27946:4;27820:131;:::i;:::-;27812:139;;27539:419;;;:::o;27964:::-;28130:4;28168:2;28157:9;28153:18;28145:26;;28217:9;28211:4;28207:20;28203:1;28192:9;28188:17;28181:47;28245:131;28371:4;28245:131;:::i;:::-;28237:139;;27964:419;;;:::o;28389:::-;28555:4;28593:2;28582:9;28578:18;28570:26;;28642:9;28636:4;28632:20;28628:1;28617:9;28613:17;28606:47;28670:131;28796:4;28670:131;:::i;:::-;28662:139;;28389:419;;;:::o;28814:::-;28980:4;29018:2;29007:9;29003:18;28995:26;;29067:9;29061:4;29057:20;29053:1;29042:9;29038:17;29031:47;29095:131;29221:4;29095:131;:::i;:::-;29087:139;;28814:419;;;:::o;29239:::-;29405:4;29443:2;29432:9;29428:18;29420:26;;29492:9;29486:4;29482:20;29478:1;29467:9;29463:17;29456:47;29520:131;29646:4;29520:131;:::i;:::-;29512:139;;29239:419;;;:::o;29664:::-;29830:4;29868:2;29857:9;29853:18;29845:26;;29917:9;29911:4;29907:20;29903:1;29892:9;29888:17;29881:47;29945:131;30071:4;29945:131;:::i;:::-;29937:139;;29664:419;;;:::o;30089:::-;30255:4;30293:2;30282:9;30278:18;30270:26;;30342:9;30336:4;30332:20;30328:1;30317:9;30313:17;30306:47;30370:131;30496:4;30370:131;:::i;:::-;30362:139;;30089:419;;;:::o;30514:::-;30680:4;30718:2;30707:9;30703:18;30695:26;;30767:9;30761:4;30757:20;30753:1;30742:9;30738:17;30731:47;30795:131;30921:4;30795:131;:::i;:::-;30787:139;;30514:419;;;:::o;30939:::-;31105:4;31143:2;31132:9;31128:18;31120:26;;31192:9;31186:4;31182:20;31178:1;31167:9;31163:17;31156:47;31220:131;31346:4;31220:131;:::i;:::-;31212:139;;30939:419;;;:::o;31364:::-;31530:4;31568:2;31557:9;31553:18;31545:26;;31617:9;31611:4;31607:20;31603:1;31592:9;31588:17;31581:47;31645:131;31771:4;31645:131;:::i;:::-;31637:139;;31364:419;;;:::o;31789:::-;31955:4;31993:2;31982:9;31978:18;31970:26;;32042:9;32036:4;32032:20;32028:1;32017:9;32013:17;32006:47;32070:131;32196:4;32070:131;:::i;:::-;32062:139;;31789:419;;;:::o;32214:::-;32380:4;32418:2;32407:9;32403:18;32395:26;;32467:9;32461:4;32457:20;32453:1;32442:9;32438:17;32431:47;32495:131;32621:4;32495:131;:::i;:::-;32487:139;;32214:419;;;:::o;32639:::-;32805:4;32843:2;32832:9;32828:18;32820:26;;32892:9;32886:4;32882:20;32878:1;32867:9;32863:17;32856:47;32920:131;33046:4;32920:131;:::i;:::-;32912:139;;32639:419;;;:::o;33064:::-;33230:4;33268:2;33257:9;33253:18;33245:26;;33317:9;33311:4;33307:20;33303:1;33292:9;33288:17;33281:47;33345:131;33471:4;33345:131;:::i;:::-;33337:139;;33064:419;;;:::o;33489:::-;33655:4;33693:2;33682:9;33678:18;33670:26;;33742:9;33736:4;33732:20;33728:1;33717:9;33713:17;33706:47;33770:131;33896:4;33770:131;:::i;:::-;33762:139;;33489:419;;;:::o;33914:::-;34080:4;34118:2;34107:9;34103:18;34095:26;;34167:9;34161:4;34157:20;34153:1;34142:9;34138:17;34131:47;34195:131;34321:4;34195:131;:::i;:::-;34187:139;;33914:419;;;:::o;34339:::-;34505:4;34543:2;34532:9;34528:18;34520:26;;34592:9;34586:4;34582:20;34578:1;34567:9;34563:17;34556:47;34620:131;34746:4;34620:131;:::i;:::-;34612:139;;34339:419;;;:::o;34764:::-;34930:4;34968:2;34957:9;34953:18;34945:26;;35017:9;35011:4;35007:20;35003:1;34992:9;34988:17;34981:47;35045:131;35171:4;35045:131;:::i;:::-;35037:139;;34764:419;;;:::o;35189:::-;35355:4;35393:2;35382:9;35378:18;35370:26;;35442:9;35436:4;35432:20;35428:1;35417:9;35413:17;35406:47;35470:131;35596:4;35470:131;:::i;:::-;35462:139;;35189:419;;;:::o;35614:::-;35780:4;35818:2;35807:9;35803:18;35795:26;;35867:9;35861:4;35857:20;35853:1;35842:9;35838:17;35831:47;35895:131;36021:4;35895:131;:::i;:::-;35887:139;;35614:419;;;:::o;36039:::-;36205:4;36243:2;36232:9;36228:18;36220:26;;36292:9;36286:4;36282:20;36278:1;36267:9;36263:17;36256:47;36320:131;36446:4;36320:131;:::i;:::-;36312:139;;36039:419;;;:::o;36464:::-;36630:4;36668:2;36657:9;36653:18;36645:26;;36717:9;36711:4;36707:20;36703:1;36692:9;36688:17;36681:47;36745:131;36871:4;36745:131;:::i;:::-;36737:139;;36464:419;;;:::o;36889:::-;37055:4;37093:2;37082:9;37078:18;37070:26;;37142:9;37136:4;37132:20;37128:1;37117:9;37113:17;37106:47;37170:131;37296:4;37170:131;:::i;:::-;37162:139;;36889:419;;;:::o;37314:::-;37480:4;37518:2;37507:9;37503:18;37495:26;;37567:9;37561:4;37557:20;37553:1;37542:9;37538:17;37531:47;37595:131;37721:4;37595:131;:::i;:::-;37587:139;;37314:419;;;:::o;37739:::-;37905:4;37943:2;37932:9;37928:18;37920:26;;37992:9;37986:4;37982:20;37978:1;37967:9;37963:17;37956:47;38020:131;38146:4;38020:131;:::i;:::-;38012:139;;37739:419;;;:::o;38164:::-;38330:4;38368:2;38357:9;38353:18;38345:26;;38417:9;38411:4;38407:20;38403:1;38392:9;38388:17;38381:47;38445:131;38571:4;38445:131;:::i;:::-;38437:139;;38164:419;;;:::o;38589:::-;38755:4;38793:2;38782:9;38778:18;38770:26;;38842:9;38836:4;38832:20;38828:1;38817:9;38813:17;38806:47;38870:131;38996:4;38870:131;:::i;:::-;38862:139;;38589:419;;;:::o;39014:::-;39180:4;39218:2;39207:9;39203:18;39195:26;;39267:9;39261:4;39257:20;39253:1;39242:9;39238:17;39231:47;39295:131;39421:4;39295:131;:::i;:::-;39287:139;;39014:419;;;:::o;39439:::-;39605:4;39643:2;39632:9;39628:18;39620:26;;39692:9;39686:4;39682:20;39678:1;39667:9;39663:17;39656:47;39720:131;39846:4;39720:131;:::i;:::-;39712:139;;39439:419;;;:::o;39864:::-;40030:4;40068:2;40057:9;40053:18;40045:26;;40117:9;40111:4;40107:20;40103:1;40092:9;40088:17;40081:47;40145:131;40271:4;40145:131;:::i;:::-;40137:139;;39864:419;;;:::o;40289:346::-;40444:4;40482:2;40471:9;40467:18;40459:26;;40495:133;40625:1;40614:9;40610:17;40601:6;40495:133;:::i;:::-;40289:346;;;;:::o;40641:222::-;40734:4;40772:2;40761:9;40757:18;40749:26;;40785:71;40853:1;40842:9;40838:17;40829:6;40785:71;:::i;:::-;40641:222;;;;:::o;40869:129::-;40903:6;40930:20;;:::i;:::-;40920:30;;40959:33;40987:4;40979:6;40959:33;:::i;:::-;40869:129;;;:::o;41004:75::-;41037:6;41070:2;41064:9;41054:19;;41004:75;:::o;41085:307::-;41146:4;41236:18;41228:6;41225:30;41222:56;;;41258:18;;:::i;:::-;41222:56;41296:29;41318:6;41296:29;:::i;:::-;41288:37;;41380:4;41374;41370:15;41362:23;;41085:307;;;:::o;41398:308::-;41460:4;41550:18;41542:6;41539:30;41536:56;;;41572:18;;:::i;:::-;41536:56;41610:29;41632:6;41610:29;:::i;:::-;41602:37;;41694:4;41688;41684:15;41676:23;;41398:308;;;:::o;41712:98::-;41763:6;41797:5;41791:12;41781:22;;41712:98;;;:::o;41816:99::-;41868:6;41902:5;41896:12;41886:22;;41816:99;;;:::o;41921:168::-;42004:11;42038:6;42033:3;42026:19;42078:4;42073:3;42069:14;42054:29;;41921:168;;;;:::o;42095:147::-;42196:11;42233:3;42218:18;;42095:147;;;;:::o;42248:169::-;42332:11;42366:6;42361:3;42354:19;42406:4;42401:3;42397:14;42382:29;;42248:169;;;;:::o;42423:148::-;42525:11;42562:3;42547:18;;42423:148;;;;:::o;42577:273::-;42617:3;42636:20;42654:1;42636:20;:::i;:::-;42631:25;;42670:20;42688:1;42670:20;:::i;:::-;42665:25;;42792:1;42756:34;42752:42;42749:1;42746:49;42743:75;;;42798:18;;:::i;:::-;42743:75;42842:1;42839;42835:9;42828:16;;42577:273;;;;:::o;42856:305::-;42896:3;42915:20;42933:1;42915:20;:::i;:::-;42910:25;;42949:20;42967:1;42949:20;:::i;:::-;42944:25;;43103:1;43035:66;43031:74;43028:1;43025:81;43022:107;;;43109:18;;:::i;:::-;43022:107;43153:1;43150;43146:9;43139:16;;42856:305;;;;:::o;43167:185::-;43207:1;43224:20;43242:1;43224:20;:::i;:::-;43219:25;;43258:20;43276:1;43258:20;:::i;:::-;43253:25;;43297:1;43287:35;;43302:18;;:::i;:::-;43287:35;43344:1;43341;43337:9;43332:14;;43167:185;;;;:::o;43358:348::-;43398:7;43421:20;43439:1;43421:20;:::i;:::-;43416:25;;43455:20;43473:1;43455:20;:::i;:::-;43450:25;;43643:1;43575:66;43571:74;43568:1;43565:81;43560:1;43553:9;43546:17;43542:105;43539:131;;;43650:18;;:::i;:::-;43539:131;43698:1;43695;43691:9;43680:20;;43358:348;;;;:::o;43712:191::-;43752:4;43772:20;43790:1;43772:20;:::i;:::-;43767:25;;43806:20;43824:1;43806:20;:::i;:::-;43801:25;;43845:1;43842;43839:8;43836:34;;;43850:18;;:::i;:::-;43836:34;43895:1;43892;43888:9;43880:17;;43712:191;;;;:::o;43909:::-;43949:4;43969:20;43987:1;43969:20;:::i;:::-;43964:25;;44003:20;44021:1;44003:20;:::i;:::-;43998:25;;44042:1;44039;44036:8;44033:34;;;44047:18;;:::i;:::-;44033:34;44092:1;44089;44085:9;44077:17;;43909:191;;;;:::o;44106:96::-;44143:7;44172:24;44190:5;44172:24;:::i;:::-;44161:35;;44106:96;;;:::o;44208:90::-;44242:7;44285:5;44278:13;44271:21;44260:32;;44208:90;;;:::o;44304:77::-;44341:7;44370:5;44359:16;;44304:77;;;:::o;44387:149::-;44423:7;44463:66;44456:5;44452:78;44441:89;;44387:149;;;:::o;44542:118::-;44579:7;44619:34;44612:5;44608:46;44597:57;;44542:118;;;:::o;44666:126::-;44703:7;44743:42;44736:5;44732:54;44721:65;;44666:126;;;:::o;44798:77::-;44835:7;44864:5;44853:16;;44798:77;;;:::o;44881:101::-;44917:7;44957:18;44950:5;44946:30;44935:41;;44881:101;;;:::o;44988:154::-;45072:6;45067:3;45062;45049:30;45134:1;45125:6;45120:3;45116:16;45109:27;44988:154;;;:::o;45148:307::-;45216:1;45226:113;45240:6;45237:1;45234:13;45226:113;;;45325:1;45320:3;45316:11;45310:18;45306:1;45301:3;45297:11;45290:39;45262:2;45259:1;45255:10;45250:15;;45226:113;;;45357:6;45354:1;45351:13;45348:101;;;45437:1;45428:6;45423:3;45419:16;45412:27;45348:101;45197:258;45148:307;;;:::o;45461:171::-;45500:3;45523:24;45541:5;45523:24;:::i;:::-;45514:33;;45569:4;45562:5;45559:15;45556:41;;;45577:18;;:::i;:::-;45556:41;45624:1;45617:5;45613:13;45606:20;;45461:171;;;:::o;45638:320::-;45682:6;45719:1;45713:4;45709:12;45699:22;;45766:1;45760:4;45756:12;45787:18;45777:81;;45843:4;45835:6;45831:17;45821:27;;45777:81;45905:2;45897:6;45894:14;45874:18;45871:38;45868:84;;;45924:18;;:::i;:::-;45868:84;45689:269;45638:320;;;:::o;45964:281::-;46047:27;46069:4;46047:27;:::i;:::-;46039:6;46035:40;46177:6;46165:10;46162:22;46141:18;46129:10;46126:34;46123:62;46120:88;;;46188:18;;:::i;:::-;46120:88;46228:10;46224:2;46217:22;46007:238;45964:281;;:::o;46251:233::-;46290:3;46313:24;46331:5;46313:24;:::i;:::-;46304:33;;46359:66;46352:5;46349:77;46346:103;;;46429:18;;:::i;:::-;46346:103;46476:1;46469:5;46465:13;46458:20;;46251:233;;;:::o;46490:100::-;46529:7;46558:26;46578:5;46558:26;:::i;:::-;46547:37;;46490:100;;;:::o;46596:94::-;46635:7;46664:20;46678:5;46664:20;:::i;:::-;46653:31;;46596:94;;;:::o;46696:176::-;46728:1;46745:20;46763:1;46745:20;:::i;:::-;46740:25;;46779:20;46797:1;46779:20;:::i;:::-;46774:25;;46818:1;46808:35;;46823:18;;:::i;:::-;46808:35;46864:1;46861;46857:9;46852:14;;46696:176;;;;:::o;46878:180::-;46926:77;46923:1;46916:88;47023:4;47020:1;47013:15;47047:4;47044:1;47037:15;47064:180;47112:77;47109:1;47102:88;47209:4;47206:1;47199:15;47233:4;47230:1;47223:15;47250:180;47298:77;47295:1;47288:88;47395:4;47392:1;47385:15;47419:4;47416:1;47409:15;47436:180;47484:77;47481:1;47474:88;47581:4;47578:1;47571:15;47605:4;47602:1;47595:15;47622:180;47670:77;47667:1;47660:88;47767:4;47764:1;47757:15;47791:4;47788:1;47781:15;47808:117;47917:1;47914;47907:12;47931:117;48040:1;48037;48030:12;48054:117;48163:1;48160;48153:12;48177:117;48286:1;48283;48276:12;48300:117;48409:1;48406;48399:12;48423:117;48532:1;48529;48522:12;48546:102;48587:6;48638:2;48634:7;48629:2;48622:5;48618:14;48614:28;48604:38;;48546:102;;;:::o;48654:94::-;48687:8;48735:5;48731:2;48727:14;48706:35;;48654:94;;;:::o;48754:221::-;48894:34;48890:1;48882:6;48878:14;48871:58;48963:4;48958:2;48950:6;48946:15;48939:29;48754:221;:::o;48981:225::-;49121:34;49117:1;49109:6;49105:14;49098:58;49190:8;49185:2;49177:6;49173:15;49166:33;48981:225;:::o;49212:229::-;49352:34;49348:1;49340:6;49336:14;49329:58;49421:12;49416:2;49408:6;49404:15;49397:37;49212:229;:::o;49447:222::-;49587:34;49583:1;49575:6;49571:14;49564:58;49656:5;49651:2;49643:6;49639:15;49632:30;49447:222;:::o;49675:224::-;49815:34;49811:1;49803:6;49799:14;49792:58;49884:7;49879:2;49871:6;49867:15;49860:32;49675:224;:::o;49905:236::-;50045:34;50041:1;50033:6;50029:14;50022:58;50114:19;50109:2;50101:6;50097:15;50090:44;49905:236;:::o;50147:178::-;50287:30;50283:1;50275:6;50271:14;50264:54;50147:178;:::o;50331:180::-;50471:32;50467:1;50459:6;50455:14;50448:56;50331:180;:::o;50517:165::-;50657:17;50653:1;50645:6;50641:14;50634:41;50517:165;:::o;50688:244::-;50828:34;50824:1;50816:6;50812:14;50805:58;50897:27;50892:2;50884:6;50880:15;50873:52;50688:244;:::o;50938:180::-;51078:32;51074:1;51066:6;51062:14;51055:56;50938:180;:::o;51124:230::-;51264:34;51260:1;51252:6;51248:14;51241:58;51333:13;51328:2;51320:6;51316:15;51309:38;51124:230;:::o;51360:168::-;51500:20;51496:1;51488:6;51484:14;51477:44;51360:168;:::o;51534:225::-;51674:34;51670:1;51662:6;51658:14;51651:58;51743:8;51738:2;51730:6;51726:15;51719:33;51534:225;:::o;51765:175::-;51905:27;51901:1;51893:6;51889:14;51882:51;51765:175;:::o;51946:182::-;52086:34;52082:1;52074:6;52070:14;52063:58;51946:182;:::o;52134:234::-;52274:34;52270:1;52262:6;52258:14;52251:58;52343:17;52338:2;52330:6;52326:15;52319:42;52134:234;:::o;52374:176::-;52514:28;52510:1;52502:6;52498:14;52491:52;52374:176;:::o;52556:237::-;52696:34;52692:1;52684:6;52680:14;52673:58;52765:20;52760:2;52752:6;52748:15;52741:45;52556:237;:::o;52799:221::-;52939:34;52935:1;52927:6;52923:14;52916:58;53008:4;53003:2;52995:6;52991:15;52984:29;52799:221;:::o;53026:114::-;;:::o;53146:166::-;53286:18;53282:1;53274:6;53270:14;53263:42;53146:166;:::o;53318:238::-;53458:34;53454:1;53446:6;53442:14;53435:58;53527:21;53522:2;53514:6;53510:15;53503:46;53318:238;:::o;53562:172::-;53702:24;53698:1;53690:6;53686:14;53679:48;53562:172;:::o;53740:179::-;53880:31;53876:1;53868:6;53864:14;53857:55;53740:179;:::o;53925:220::-;54065:34;54061:1;54053:6;54049:14;54042:58;54134:3;54129:2;54121:6;54117:15;54110:28;53925:220;:::o;54151:172::-;54291:24;54287:1;54279:6;54275:14;54268:48;54151:172;:::o;54329:233::-;54469:34;54465:1;54457:6;54453:14;54446:58;54538:16;54533:2;54525:6;54521:15;54514:41;54329:233;:::o;54568:181::-;54708:33;54704:1;54696:6;54692:14;54685:57;54568:181;:::o;54755:234::-;54895:34;54891:1;54883:6;54879:14;54872:58;54964:17;54959:2;54951:6;54947:15;54940:42;54755:234;:::o;54995:232::-;55135:34;55131:1;55123:6;55119:14;55112:58;55204:15;55199:2;55191:6;55187:15;55180:40;54995:232;:::o;55233:221::-;55373:34;55369:1;55361:6;55357:14;55350:58;55442:4;55437:2;55429:6;55425:15;55418:29;55233:221;:::o;55460:122::-;55533:24;55551:5;55533:24;:::i;:::-;55526:5;55523:35;55513:63;;55572:1;55569;55562:12;55513:63;55460:122;:::o;55588:116::-;55658:21;55673:5;55658:21;:::i;:::-;55651:5;55648:32;55638:60;;55694:1;55691;55684:12;55638:60;55588:116;:::o;55710:122::-;55783:24;55801:5;55783:24;:::i;:::-;55776:5;55773:35;55763:63;;55822:1;55819;55812:12;55763:63;55710:122;:::o;55838:120::-;55910:23;55927:5;55910:23;:::i;:::-;55903:5;55900:34;55890:62;;55948:1;55945;55938:12;55890:62;55838:120;:::o;55964:122::-;56037:24;56055:5;56037:24;:::i;:::-;56030:5;56027:35;56017:63;;56076:1;56073;56066:12;56017:63;55964:122;:::o

Swarm Source

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