Feature Tip: Add private address tag to any address under My Name Tag !
Overview
TokenID
540
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BeardBears
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.10; abstract contract OG { function ownerOf(uint256 tokenId) public virtual view returns (address); function tokenOfOwnerByIndex(address owner, uint256 index) public virtual view returns (uint256); function balanceOf(address owner) external virtual view returns (uint256 balance); } import './ERC721Enumerable.sol'; import './Ownable.sol'; import './Strings.sol'; import './Payment.sol'; import './Guard.sol'; contract BeardBears is ERC721Enumerable, Ownable, Payment, Guard { using Strings for uint256; string public baseURI; OG private og; //settings uint256 public maxSupply = 10000; bool public OGStatus = false; bool public whitelistStatus = false; bool public whitelist2Status = false; bool public publicStatus = false; bool public communityStatus = false; mapping(address => uint256) public onWhitelist; mapping(address => uint256) public onWhitelist2; mapping(address => uint256) public purchaseWL; mapping(address => uint256) public purchaseWL2; //prices uint256 private price = 0.0888 ether; //maxmint uint256 public maxMintOG = 20; uint256 public maxMintWL = 5; uint256 public maxMintWL2 = 2; uint256 public maxMintPublic = 5; uint256 public transactionLimit = 1; uint256 public OGtransactionLimit = 1; //shares address[] private addressList = [ 0x3Ae370AcD5Fe41D40A484007EEdF8A060A6c210D ]; uint[] private shareList = [100]; //token constructor( string memory _name, string memory _symbol, string memory _initBaseURI, address ogaddr ) ERC721(_name, _symbol) Payment(addressList, shareList){ setURI(_initBaseURI); og = OG(ogaddr); } // public minting function mintPublic(uint256 _tokenAmount) public payable { uint256 s = totalSupply(); require(publicStatus, "Public sale is not active" ); require(_tokenAmount <= maxMintPublic, "Mint less"); require( s + _tokenAmount <= maxSupply, "Mint less"); require(msg.value >= price * _tokenAmount, "ETH input is wrong"); for (uint256 i = 0; i < _tokenAmount; ++i) { _safeMint(msg.sender, s + i, ""); } delete s; } // og minting function mintOG(uint256 _tokenAmount) public payable { uint o = og.balanceOf(msg.sender); uint256 s = totalSupply(); require(OGStatus, "Whitelist is not active" ); require(o > 0); require(_tokenAmount <= (maxMintOG * o), "Mint less"); require( s + _tokenAmount <= maxSupply, "Mint less"); require(msg.value >= price * _tokenAmount, "ETH input is wrong"); delete o; for (uint256 i = 0; i < _tokenAmount; ++i) { _safeMint(msg.sender, s + i, ""); } delete s; } // whitelist minting function mintWhitelist(uint256 _tokenAmount) public payable { uint256 s = totalSupply(); uint256 wl = onWhitelist[msg.sender]; require(whitelistStatus, "Whitelist is not active" ); require(wl > 0); require(_tokenAmount <= wl, "Try less"); require(_tokenAmount <= maxMintWL, "Mint less"); require(s + _tokenAmount <= maxSupply, "Mint less"); require(msg.value >= price * _tokenAmount, "ETH input is wrong"); delete wl; for (uint256 i = 0; i < _tokenAmount; ++i) { _safeMint(msg.sender, s + i, ""); } delete s; } // communityWL hash function communityWL(uint256 _tokenAmount) public payable { uint256 s = totalSupply(); require(communityStatus, "CommunityWL is not active" ); require(_tokenAmount <= maxMintWL, "Mint less"); require(s + _tokenAmount <= maxSupply, "Mint less"); require(msg.value >= price * _tokenAmount, "ETH input is wrong"); for (uint256 i = 0; i < _tokenAmount; ++i) { _safeMint(msg.sender, s + i, ""); } delete s; } // whitelist2 minting function mintWhitelist2(uint256 _tokenAmount) public payable { uint256 s = totalSupply(); uint256 wl2 = onWhitelist2[msg.sender]; require(whitelist2Status, "Whitelist is not active" ); require(wl2 > 0); require(_tokenAmount <= maxMintWL2, "Mint less"); require( s + _tokenAmount <= maxSupply, "Mint less"); require(msg.value >= price * _tokenAmount, "ETH input is wrong"); delete wl2; for (uint256 i = 0; i < _tokenAmount; ++i) { _safeMint(msg.sender, s + i, ""); } delete s; } // admin minting function gift(uint[] calldata gifts, address[] calldata recipient) external onlyOwner { require(gifts.length == recipient.length); uint g = 0; uint256 s = totalSupply(); for(uint i = 0; i < gifts.length; ++i){ g += gifts[i]; } require( s + g <= maxSupply, "Too many" ); delete g; for(uint i = 0; i < recipient.length; ++i){ for(uint j = 0; j < gifts[i]; ++j){ _safeMint( recipient[i], s++, "" ); } } delete s; } // admin functionality function whitelistSet(address[] calldata _addresses) public onlyOwner { for(uint256 i; i < _addresses.length; i++){ onWhitelist[_addresses[i]] = maxMintWL; } } // admin functionality function whitelistSet2(address[] calldata _addresses) public onlyOwner { for(uint256 i; i < _addresses.length; i++){ onWhitelist2[_addresses[i]] = maxMintWL2; } } //read metadata function _baseURI() internal view virtual returns (string memory) { return baseURI; } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(tokenId <= maxSupply); string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string(abi.encodePacked(currentBaseURI, tokenId.toString())) : ""; } //price switch function setPrice(uint256 _newPrice) public onlyOwner { price = _newPrice; } //max switch OG function setMaxOG(uint256 _newMaxMintAmount) public onlyOwner { maxMintOG = _newMaxMintAmount; } function setTransactionLimit(uint256 _newLimit) public onlyOwner { transactionLimit = _newLimit; } function setOGTransactionLimit(uint256 _newLimit) public onlyOwner { OGtransactionLimit = _newLimit; } //max switch WL function setMaxWL(uint256 _newMaxMintAmount) public onlyOwner { maxMintWL = _newMaxMintAmount; } //max switch WL2 function setMaxWL2(uint256 _newMaxMintAmount) public onlyOwner { maxMintWL2 = _newMaxMintAmount; } //max switch Public function setMaxPublic(uint256 _newMaxMintAmount) public onlyOwner { maxMintPublic = _newMaxMintAmount; } //write metadata function setURI(string memory _newBaseURI) public onlyOwner { baseURI = _newBaseURI; } //onoff switch function setOG(bool _status) public onlyOwner { OGStatus = _status; } function setWL(bool _status) public onlyOwner { whitelistStatus = _status; } function setCommunity(bool _status) public onlyOwner { communityStatus = _status; } function setWL2(bool _status) public onlyOwner { whitelist2Status = _status; } function setP(bool _status) public onlyOwner { publicStatus = _status; } function withdraw() public payable onlyOwner { (bool success, ) = payable(msg.sender).call{value: address(this).balance}(""); require(success); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ 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"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ 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"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC165.sol"; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } }
// SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.10; import "./IERC721.sol"; import "./IERC721Receiver.sol"; import "./IERC721Metadata.sol"; import "./Address.sol"; import "./Context.sol"; import "./ERC165.sol"; abstract contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; string private _name; string private _symbol; address[] internal _owners; mapping(uint256 => address) private _tokenApprovals; mapping(address => mapping(address => bool)) private _operatorApprovals; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); uint count = 0; uint length = _owners.length; for( uint i = 0; i < length; ++i ){ if( owner == _owners[i] ){ ++count; } } delete length; return count; } function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } function setApprovalForAll(address operator, bool approved) public virtual override { require(operator != _msgSender(), "ERC721: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } function _exists(uint256 tokenId) internal view virtual returns (bool) { return tokenId < _owners.length && _owners[tokenId] != address(0); } function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _owners.push(to); emit Transfer(address(0), to, tokenId); } function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _owners[tokenId] = address(0); emit Transfer(owner, address(0), tokenId); } function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _owners[tokenId] = to; emit Transfer(from, to, tokenId); } function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} }
// SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.10; import "./ERC721.sol"; import "./IERC721Enumerable.sol"; abstract contract ERC721Enumerable is ERC721, IERC721Enumerable { function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) { return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } function tokenOfOwnerByIndex(address owner, uint256 index) public view override returns (uint256 tokenId) { require(index < ERC721.balanceOf(owner), "ERC721Enum: owner ioob"); uint count; for( uint i; i < _owners.length; ++i ){ if( owner == _owners[i] ){ if( count == index ) return i; else ++count; } } require(false, "ERC721Enum: owner ioob"); } function tokensOfOwner(address owner) public view returns (uint256[] memory) { require(0 < ERC721.balanceOf(owner), "ERC721Enum: owner ioob"); uint256 tokenCount = balanceOf(owner); uint256[] memory tokenIds = new uint256[](tokenCount); for (uint256 i = 0; i < tokenCount; i++) { tokenIds[i] = tokenOfOwnerByIndex(owner, i); } return tokenIds; } function totalSupply() public view virtual override returns (uint256) { return _owners.length; } function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require(index < ERC721Enumerable.totalSupply(), "ERC721Enum: global ioob"); return index; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract Guard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC165.sol"; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC721.sol"; /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./IERC721.sol"; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./Address.sol"; import "./Context.sol"; import "./SafeMath.sol"; /** * @title PaymentSplitter * @dev This contract allows to split Ether payments among a group of accounts. The sender does not need to be aware * that the Ether will be split in this way, since it is handled transparently by the contract. * * The split can be in equal parts or in any other arbitrary proportion. The way this is specified is by assigning each * account to a number of shares. Of all the Ether that this contract receives, each account will then be able to claim * an amount proportional to the percentage of total shares they were assigned. * * `PaymentSplitter` follows a _pull payment_ model. This means that payments are not automatically forwarded to the * accounts but kept in this contract, and the actual transfer is triggered as a separate step by calling the {release} * function. */ contract Payment is Context { event PayeeAdded(address account, uint256 shares); event PaymentReleased(address to, uint256 amount); event PaymentReceived(address from, uint256 amount); uint256 private _totalShares; uint256 private _totalReleased; mapping(address => uint256) private _shares; mapping(address => uint256) private _released; address[] private _payees; /** * @dev Creates an instance of `PaymentSplitter` where each account in `payees` is assigned the number of shares at * the matching position in the `shares` array. * * All addresses in `payees` must be non-zero. Both arrays must have the same non-zero length, and there must be no * duplicates in `payees`. */ constructor(address[] memory payees, uint256[] memory shares_) payable { require(payees.length == shares_.length, "PaymentSplitter: payees and shares length mismatch"); require(payees.length > 0, "PaymentSplitter: no payees"); for (uint256 i = 0; i < payees.length; i++) { _addPayee(payees[i], shares_[i]); } } /** * @dev The Ether received will be logged with {PaymentReceived} events. Note that these events are not fully * reliable: it's possible for a contract to receive Ether without triggering this function. This only affects the * reliability of the events, and not the actual splitting of Ether. * * To learn more about this see the Solidity documentation for * https://solidity.readthedocs.io/en/latest/contracts.html#fallback-function[fallback * functions]. */ receive() external payable virtual { emit PaymentReceived(_msgSender(), msg.value); } /** * @dev Getter for the total shares held by payees. */ function totalShares() public view returns (uint256) { return _totalShares; } /** * @dev Getter for the total amount of Ether already released. */ function totalReleased() public view returns (uint256) { return _totalReleased; } /** * @dev Getter for the amount of shares held by an account. */ function shares(address account) public view returns (uint256) { return _shares[account]; } /** * @dev Getter for the amount of Ether already released to a payee. */ function released(address account) public view returns (uint256) { return _released[account]; } /** * @dev Getter for the address of the payee number `index`. */ function payee(uint256 index) public view returns (address) { return _payees[index]; } /** * @dev Triggers a transfer to `account` of the amount of Ether they are owed, according to their percentage of the * total shares and their previous withdrawals. */ function release(address payable account) public virtual { require(_shares[account] > 0, "PaymentSplitter: account has no shares"); uint256 totalReceived = address(this).balance + _totalReleased; uint256 payment = (totalReceived * _shares[account]) / _totalShares - _released[account]; require(payment != 0, "PaymentSplitter: account is not due payment"); _released[account] = _released[account] + payment; _totalReleased = _totalReleased + payment; Address.sendValue(account, payment); emit PaymentReleased(account, payment); } /** * @dev Add a new payee to the contract. * @param account The address of the payee to add. * @param shares_ The number of shares owned by the payee. */ function _addPayee(address account, uint256 shares_) private { require(account != address(0), "PaymentSplitter: account is the zero address"); require(shares_ > 0, "PaymentSplitter: shares are 0"); require(_shares[account] == 0, "PaymentSplitter: account already has shares"); _payees.push(account); _shares[account] = shares_; _totalShares = _totalShares + shares_; emit PayeeAdded(account, shares_); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ 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); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed 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); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_initBaseURI","type":"string"},{"internalType":"address","name":"ogaddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"PayeeAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReleased","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":"OGStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OGtransactionLimit","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":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"communityStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"communityWL","outputs":[],"stateMutability":"payable","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":"gifts","type":"uint256[]"},{"internalType":"address[]","name":"recipient","type":"address[]"}],"name":"gift","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":"maxMintOG","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintPublic","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintWL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintWL2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"mintOG","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"mintPublic","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"mintWhitelist","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"mintWhitelist2","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"onWhitelist","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"onWhitelist2","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":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"payee","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"purchaseWL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"purchaseWL2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setCommunity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMaxMintAmount","type":"uint256"}],"name":"setMaxOG","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMaxMintAmount","type":"uint256"}],"name":"setMaxPublic","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMaxMintAmount","type":"uint256"}],"name":"setMaxWL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMaxMintAmount","type":"uint256"}],"name":"setMaxWL2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setOG","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLimit","type":"uint256"}],"name":"setOGTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLimit","type":"uint256"}],"name":"setTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setWL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setWL2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"shares","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":"tokenId","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":[{"internalType":"address","name":"owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transactionLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"whitelist2Status","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"whitelistSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"}],"name":"whitelistSet2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"whitelistStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
612710600e55600f805464ffffffffff1916905567013b7b21280e0000601490815560155560056016819055600260175560185560016019819055601a81905560a0604052733ae370acd5fe41d40a484007eedf8a060a6c210d60809081526200006d91601b9190620005d5565b506040805160208101909152606481526200008d90601c9060016200063f565b503480156200009b57600080fd5b5060405162004cb338038062004cb3833981016040819052620000be91620007e3565b601b8054806020026020016040519081016040528092919081815260200182805480156200011657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311620000f7575b5050505050601c8054806020026020016040519081016040528092919081815260200182805480156200016957602002820191906000526020600020905b81548152602001906001019080831162000154575b50508851899350889250620001879150600090602085019062000682565b5080516200019d90600190602084019062000682565b5050506000620001b26200036e60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508051825114620002725760405162461bcd60e51b815260206004820152603260248201527f5061796d656e7453706c69747465723a2070617965657320616e6420736861726044820152710cae640d8cadccee8d040dad2e6dac2e8c6d60731b60648201526084015b60405180910390fd5b6000825111620002c55760405162461bcd60e51b815260206004820152601a60248201527f5061796d656e7453706c69747465723a206e6f20706179656573000000000000604482015260640162000269565b60005b825181101562000331576200031c838281518110620002eb57620002eb62000896565b602002602001015183838151811062000308576200030862000896565b60200260200101516200037260201b60201c565b806200032881620008c2565b915050620002c8565b50506001600b5550620003448262000560565b600d80546001600160a01b0319166001600160a01b03929092169190911790555062000938915050565b3390565b6001600160a01b038216620003df5760405162461bcd60e51b815260206004820152602c60248201527f5061796d656e7453706c69747465723a206163636f756e74206973207468652060448201526b7a65726f206164647265737360a01b606482015260840162000269565b60008111620004315760405162461bcd60e51b815260206004820152601d60248201527f5061796d656e7453706c69747465723a20736861726573206172652030000000604482015260640162000269565b6001600160a01b03821660009081526008602052604090205415620004ad5760405162461bcd60e51b815260206004820152602b60248201527f5061796d656e7453706c69747465723a206163636f756e7420616c726561647960448201526a206861732073686172657360a81b606482015260840162000269565b600a8054600181019091557fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80180546001600160a01b0319166001600160a01b038416908117909155600090815260086020526040902081905560065462000517908290620008e0565b600655604080516001600160a01b0384168152602081018390527f40c340f65e17194d14ddddb073d3c9f888e3cb52b5aae0c6c7706b4fbc905fac910160405180910390a15050565b6005546001600160a01b03163314620005bc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000269565b8051620005d190600c90602084019062000682565b5050565b8280548282559060005260206000209081019282156200062d579160200282015b828111156200062d57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620005f6565b506200063b929150620006ff565b5090565b8280548282559060005260206000209081019282156200062d579160200282015b828111156200062d578251829060ff1690559160200191906001019062000660565b8280546200069090620008fb565b90600052602060002090601f016020900481019282620006b457600085556200062d565b82601f10620006cf57805160ff19168380011785556200062d565b828001600101855582156200062d579182015b828111156200062d578251825591602001919060010190620006e2565b5b808211156200063b576000815560010162000700565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200073e57600080fd5b81516001600160401b03808211156200075b576200075b62000716565b604051601f8301601f19908116603f0116810190828211818310171562000786576200078662000716565b81604052838152602092508683858801011115620007a357600080fd5b600091505b83821015620007c75785820183015181830184015290820190620007a8565b83821115620007d95760008385830101525b9695505050505050565b60008060008060808587031215620007fa57600080fd5b84516001600160401b03808211156200081257600080fd5b62000820888389016200072c565b955060208701519150808211156200083757600080fd5b62000845888389016200072c565b945060408701519150808211156200085c57600080fd5b506200086b878288016200072c565b606087015190935090506001600160a01b03811681146200088b57600080fd5b939692955090935050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415620008d957620008d9620008ac565b5060010190565b60008219821115620008f657620008f6620008ac565b500190565b600181811c908216806200091057607f821691505b602082108114156200093257634e487b7160e01b600052602260045260246000fd5b50919050565b61436b80620009486000396000f3fe6080604052600436106103e25760003560e01c806384a303d61161020d578063bc29c96f11610128578063e985e9c5116100bb578063f19605d61161008a578063f711b1891161006f578063f711b18914610c2b578063f91798b114610c4b578063fbdb849414610c6c57600080fd5b8063f19605d614610bf5578063f2fde38b14610c0b57600080fd5b8063e985e9c514610b60578063ee13ed9e14610bb6578063ef9b63ba14610bcc578063efd0cbf914610be257600080fd5b8063d5abeb01116100f7578063d5abeb0114610afb578063e00cd18114610b11578063e33b7de314610b31578063e72b29de14610b4657600080fd5b8063bc29c96f14610a58578063bd986a2c14610a78578063c87b56dd14610a98578063ce7c2ac214610ab857600080fd5b80639852595c116101a0578063aa71d25e1161016f578063aa71d25e146109cb578063b645cab9146109f8578063b7fded2d14610a25578063b88d4fde14610a3857600080fd5b80639852595c146109335780639ddf7ad314610976578063a08aef2f14610995578063a22cb465146109ab57600080fd5b806391b7f5ed116101dc57806391b7f5ed146108cb57806394bb4c04146108eb57806395d89b41146108fe57806396ea3a471461091357600080fd5b806384a303d6146108405780638b83209b146108605780638da5cb5b146108805780638fd75ebd146108ab57600080fd5b80633a98ef39116102fd5780635841a03011610290578063708a92c21161025f578063708a92c2146107be57806370a08231146107de578063715018a6146107fe5780638462151c1461081357600080fd5b80635841a030146107495780636352211e1461076957806364bfa546146107895780636c0360eb146107a957600080fd5b806342842e0e116102cc57806342842e0e146106d65780634618163e146106f65780634e6cbcb3146107095780634f6ccce71461072957600080fd5b80633a98ef39146106795780633af4c2801461068e5780633ccfd60b146106ae5780633e9600b9146106b657600080fd5b80631b1aac231161037557806325a8a88e1161034457806325a8a88e1461060457806325b2eb611461062457806326bacaa0146106375780632f745c591461065957600080fd5b80631b1aac23146105745780631c19b263146105a15780631d608659146105b757806323b872dd146105e457600080fd5b8063095ea7b3116103b1578063095ea7b3146104fb5780630c73a7bf1461051b57806318160ddd1461053f578063191655871461055457600080fd5b806301ffc9a71461043d57806302fe53051461047257806306fdde0314610494578063081812fc146104b657600080fd5b36610438577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be770336040805173ffffffffffffffffffffffffffffffffffffffff90921682523460208301520160405180910390a1005b600080fd5b34801561044957600080fd5b5061045d610458366004613c06565b610c8c565b60405190151581526020015b60405180910390f35b34801561047e57600080fd5b5061049261048d366004613ce6565b610ce8565b005b3480156104a057600080fd5b506104a9610d6b565b6040516104699190613da5565b3480156104c257600080fd5b506104d66104d1366004613db8565b610dfd565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610469565b34801561050757600080fd5b50610492610516366004613df3565b610ea3565b34801561052757600080fd5b5061053160165481565b604051908152602001610469565b34801561054b57600080fd5b50600254610531565b34801561056057600080fd5b5061049261056f366004613e1f565b610ffc565b34801561058057600080fd5b5061053161058f366004613e1f565b60126020526000908152604090205481565b3480156105ad57600080fd5b5061053160175481565b3480156105c357600080fd5b506105316105d2366004613e1f565b60106020526000908152604090205481565b3480156105f057600080fd5b506104926105ff366004613e3c565b611237565b34801561061057600080fd5b5061049261061f366004613e92565b6112be565b610492610632366004613db8565b611356565b34801561064357600080fd5b50600f5461045d90640100000000900460ff1681565b34801561066557600080fd5b50610531610674366004613df3565b61152a565b34801561068557600080fd5b50600654610531565b34801561069a57600080fd5b50600f5461045d9062010000900460ff1681565b610492611646565b3480156106c257600080fd5b506104926106d1366004613db8565b611705565b3480156106e257600080fd5b506104926106f1366004613e3c565b611771565b610492610704366004613db8565b61178c565b34801561071557600080fd5b50610492610724366004613db8565b611994565b34801561073557600080fd5b50610531610744366004613db8565b611a00565b34801561075557600080fd5b50610492610764366004613db8565b611a5d565b34801561077557600080fd5b506104d6610784366004613db8565b611ac9565b34801561079557600080fd5b506104926107a4366004613db8565b611b76565b3480156107b557600080fd5b506104a9611be2565b3480156107ca57600080fd5b506104926107d9366004613ef9565b611c70565b3480156107ea57600080fd5b506105316107f9366004613e1f565b611d49565b34801561080a57600080fd5b50610492611e48565b34801561081f57600080fd5b5061083361082e366004613e1f565b611f1e565b6040516104699190613f3b565b34801561084c57600080fd5b5061049261085b366004613e92565b612018565b34801561086c57600080fd5b506104d661087b366004613db8565b6120b8565b34801561088c57600080fd5b5060055473ffffffffffffffffffffffffffffffffffffffff166104d6565b3480156108b757600080fd5b506104926108c6366004613db8565b6120f5565b3480156108d757600080fd5b506104926108e6366004613db8565b612161565b6104926108f9366004613db8565b6121cd565b34801561090a57600080fd5b506104a9612411565b34801561091f57600080fd5b5061049261092e366004613f7f565b612420565b34801561093f57600080fd5b5061053161094e366004613e1f565b73ffffffffffffffffffffffffffffffffffffffff1660009081526009602052604090205490565b34801561098257600080fd5b50600f5461045d90610100900460ff1681565b3480156109a157600080fd5b5061053160155481565b3480156109b757600080fd5b506104926109c6366004613feb565b6125e5565b3480156109d757600080fd5b506105316109e6366004613e1f565b60136020526000908152604090205481565b348015610a0457600080fd5b50610531610a13366004613e1f565b60116020526000908152604090205481565b610492610a33366004613db8565b6126e2565b348015610a4457600080fd5b50610492610a53366004614020565b61287d565b348015610a6457600080fd5b50610492610a73366004613e92565b612905565b348015610a8457600080fd5b50610492610a93366004613e92565b6129a6565b348015610aa457600080fd5b506104a9610ab3366004613db8565b612a44565b348015610ac457600080fd5b50610531610ad3366004613e1f565b73ffffffffffffffffffffffffffffffffffffffff1660009081526008602052604090205490565b348015610b0757600080fd5b50610531600e5481565b348015610b1d57600080fd5b50610492610b2c366004613ef9565b612ab1565b348015610b3d57600080fd5b50600754610531565b348015610b5257600080fd5b50600f5461045d9060ff1681565b348015610b6c57600080fd5b5061045d610b7b3660046140a0565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205460ff1690565b348015610bc257600080fd5b50610531601a5481565b348015610bd857600080fd5b5061053160185481565b610492610bf0366004613db8565b612b8a565b348015610c0157600080fd5b5061053160195481565b348015610c1757600080fd5b50610492610c26366004613e1f565b612d24565b348015610c3757600080fd5b50610492610c46366004613e92565b612ea2565b348015610c5757600080fd5b50600f5461045d906301000000900460ff1681565b348015610c7857600080fd5b50610492610c87366004613db8565b612f41565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d63000000000000000000000000000000000000000000000000000000001480610ce25750610ce282612fad565b92915050565b60055473ffffffffffffffffffffffffffffffffffffffff163314610d545760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b8051610d6790600c906020840190613b48565b5050565b606060008054610d7a906140d9565b80601f0160208091040260200160405190810160405280929190818152602001828054610da6906140d9565b8015610df35780601f10610dc857610100808354040283529160200191610df3565b820191906000526020600020905b815481529060010190602001808311610dd657829003601f168201915b5050505050905090565b6000610e0882613090565b610e7a5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610d4b565b5060009081526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6000610eae82611ac9565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f525760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610d4b565b3373ffffffffffffffffffffffffffffffffffffffff82161480610f7b5750610f7b8133610b7b565b610fed5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610d4b565b610ff783836130f4565b505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600860205260409020546110945760405162461bcd60e51b815260206004820152602660248201527f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060448201527f73686172657300000000000000000000000000000000000000000000000000006064820152608401610d4b565b6000600754476110a4919061415c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526009602090815260408083205460065460089093529083205493945091926110e89085614174565b6110f291906141e0565b6110fc91906141f4565b9050806111715760405162461bcd60e51b815260206004820152602b60248201527f5061796d656e7453706c69747465723a206163636f756e74206973206e6f742060448201527f647565207061796d656e740000000000000000000000000000000000000000006064820152608401610d4b565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600960205260409020546111a290829061415c565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600960205260409020556007546111d690829061415c565b6007556111e38382613194565b6040805173ffffffffffffffffffffffffffffffffffffffff85168152602081018390527fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b056910160405180910390a1505050565b61124133826132ba565b6112b35760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610d4b565b610ff78383836133f6565b60055473ffffffffffffffffffffffffffffffffffffffff1633146113255760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b600f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600061136160025490565b33600090815260116020526040902054600f549192509062010000900460ff166113cd5760405162461bcd60e51b815260206004820152601760248201527f57686974656c697374206973206e6f74206163746976650000000000000000006044820152606401610d4b565b600081116113da57600080fd5b60175483111561142c5760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610d4b565b600e54611439848461415c565b11156114875760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610d4b565b826014546114959190614174565b3410156114e45760405162461bcd60e51b815260206004820152601260248201527f45544820696e7075742069732077726f6e6700000000000000000000000000006044820152606401610d4b565b506000805b8381101561152457611514336114ff838661415c565b604051806020016040528060008152506135c5565b61151d8161420b565b90506114e9565b50505050565b600061153583611d49565b82106115835760405162461bcd60e51b815260206004820152601660248201527f455243373231456e756d3a206f776e657220696f6f62000000000000000000006044820152606401610d4b565b6000805b6002548110156115fd57600281815481106115a4576115a4614244565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff868116911614156115ed57838214156115e1579150610ce29050565b6115ea8261420b565b91505b6115f68161420b565b9050611587565b5060405162461bcd60e51b815260206004820152601660248201527f455243373231456e756d3a206f776e657220696f6f62000000000000000000006044820152606401610d4b565b60055473ffffffffffffffffffffffffffffffffffffffff1633146116ad5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b604051600090339047908381818185875af1925050503d80600081146116ef576040519150601f19603f3d011682016040523d82523d6000602084013e6116f4565b606091505b505090508061170257600080fd5b50565b60055473ffffffffffffffffffffffffffffffffffffffff16331461176c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b601a55565b610ff78383836040518060200160405280600081525061287d565b600061179760025490565b33600090815260106020526040902054600f5491925090610100900460ff166118025760405162461bcd60e51b815260206004820152601760248201527f57686974656c697374206973206e6f74206163746976650000000000000000006044820152606401610d4b565b6000811161180f57600080fd5b8083111561185f5760405162461bcd60e51b815260206004820152600860248201527f547279206c6573730000000000000000000000000000000000000000000000006044820152606401610d4b565b6016548311156118b15760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610d4b565b600e546118be848461415c565b111561190c5760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610d4b565b8260145461191a9190614174565b3410156119695760405162461bcd60e51b815260206004820152601260248201527f45544820696e7075742069732077726f6e6700000000000000000000000000006044820152606401610d4b565b506000805b8381101561152457611984336114ff838661415c565b61198d8161420b565b905061196e565b60055473ffffffffffffffffffffffffffffffffffffffff1633146119fb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b601555565b6000611a0b60025490565b8210611a595760405162461bcd60e51b815260206004820152601760248201527f455243373231456e756d3a20676c6f62616c20696f6f620000000000000000006044820152606401610d4b565b5090565b60055473ffffffffffffffffffffffffffffffffffffffff163314611ac45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b601655565b60008060028381548110611adf57611adf614244565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905080610ce25760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610d4b565b60055473ffffffffffffffffffffffffffffffffffffffff163314611bdd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b601955565b600c8054611bef906140d9565b80601f0160208091040260200160405190810160405280929190818152602001828054611c1b906140d9565b8015611c685780601f10611c3d57610100808354040283529160200191611c68565b820191906000526020600020905b815481529060010190602001808311611c4b57829003601f168201915b505050505081565b60055473ffffffffffffffffffffffffffffffffffffffff163314611cd75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b60005b81811015610ff75760175460116000858585818110611cfb57611cfb614244565b9050602002016020810190611d109190613e1f565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205580611d418161420b565b915050611cda565b600073ffffffffffffffffffffffffffffffffffffffff8216611dd45760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610d4b565b600254600090815b81811015611e3f5760028181548110611df757611df7614244565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff86811691161415611e2f57611e2c8361420b565b92505b611e388161420b565b9050611ddc565b50909392505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611eaf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b60055460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6060611f2982611d49565b600010611f785760405162461bcd60e51b815260206004820152601660248201527f455243373231456e756d3a206f776e657220696f6f62000000000000000000006044820152606401610d4b565b6000611f8383611d49565b905060008167ffffffffffffffff811115611fa057611fa0613c23565b604051908082528060200260200182016040528015611fc9578160200160208202803683370190505b50905060005b8281101561201057611fe1858261152a565b828281518110611ff357611ff3614244565b6020908102919091010152806120088161420b565b915050611fcf565b509392505050565b60055473ffffffffffffffffffffffffffffffffffffffff16331461207f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b600f80549115156301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff909216919091179055565b6000600a82815481106120cd576120cd614244565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1692915050565b60055473ffffffffffffffffffffffffffffffffffffffff16331461215c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b601755565b60055473ffffffffffffffffffffffffffffffffffffffff1633146121c85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b601455565b600d546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561223c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122609190614273565b9050600061226d60025490565b600f5490915060ff166122c25760405162461bcd60e51b815260206004820152601760248201527f57686974656c697374206973206e6f74206163746976650000000000000000006044820152606401610d4b565b600082116122cf57600080fd5b816015546122dd9190614174565b83111561232c5760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610d4b565b600e54612339848361415c565b11156123875760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610d4b565b826014546123959190614174565b3410156123e45760405162461bcd60e51b815260206004820152601260248201527f45544820696e7075742069732077726f6e6700000000000000000000000000006044820152606401610d4b565b6000915060005b8381101561152457612401336114ff838561415c565b61240a8161420b565b90506123eb565b606060018054610d7a906140d9565b60055473ffffffffffffffffffffffffffffffffffffffff1633146124875760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b82811461249357600080fd5b60008061249f60025490565b905060005b858110156124e2578686828181106124be576124be614244565b90506020020135836124d0919061415c565b92506124db8161420b565b90506124a4565b50600e546124f0838361415c565b111561253e5760405162461bcd60e51b815260206004820152600860248201527f546f6f206d616e790000000000000000000000000000000000000000000000006044820152606401610d4b565b6000915060005b838110156125dc5760005b87878381811061256257612562614244565b905060200201358110156125cb576125bb86868481811061258557612585614244565b905060200201602081019061259a9190613e1f565b846125a48161420b565b9550604051806020016040528060008152506135c5565b6125c48161420b565b9050612550565b506125d58161420b565b9050612545565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff821633141561264b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610d4b565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60006126ed60025490565b600f54909150640100000000900460ff1661274a5760405162461bcd60e51b815260206004820152601960248201527f436f6d6d756e697479574c206973206e6f7420616374697665000000000000006044820152606401610d4b565b60165482111561279c5760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610d4b565b600e546127a9838361415c565b11156127f75760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610d4b565b816014546128059190614174565b3410156128545760405162461bcd60e51b815260206004820152601260248201527f45544820696e7075742069732077726f6e6700000000000000000000000000006044820152606401610d4b565b60005b82811015610ff75761286d336114ff838561415c565b6128768161420b565b9050612857565b61288733836132ba565b6128f95760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610d4b565b6115248484848461364e565b60055473ffffffffffffffffffffffffffffffffffffffff16331461296c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b600f8054911515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff909216919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314612a0d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b600f8054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055565b6060600e54821115612a5557600080fd5b6000612a5f6136d7565b90506000815111612a7f5760405180602001604052806000815250612aaa565b80612a89846136e6565b604051602001612a9a92919061428c565b6040516020818303038152906040525b9392505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314612b185760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b60005b81811015610ff75760165460106000858585818110612b3c57612b3c614244565b9050602002016020810190612b519190613e1f565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205580612b828161420b565b915050612b1b565b6000612b9560025490565b600f549091506301000000900460ff16612bf15760405162461bcd60e51b815260206004820152601960248201527f5075626c69632073616c65206973206e6f7420616374697665000000000000006044820152606401610d4b565b601854821115612c435760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610d4b565b600e54612c50838361415c565b1115612c9e5760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610d4b565b81601454612cac9190614174565b341015612cfb5760405162461bcd60e51b815260206004820152601260248201527f45544820696e7075742069732077726f6e6700000000000000000000000000006044820152606401610d4b565b60005b82811015610ff757612d14336114ff838561415c565b612d1d8161420b565b9050612cfe565b60055473ffffffffffffffffffffffffffffffffffffffff163314612d8b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b73ffffffffffffffffffffffffffffffffffffffff8116612e145760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610d4b565b60055460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314612f095760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b600f805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314612fa85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b601855565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061304057507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610ce257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610ce2565b60025460009082108015610ce25750600073ffffffffffffffffffffffffffffffffffffffff16600283815481106130ca576130ca614244565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141592915050565b600081815260036020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155819061314e82611ac9565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b804710156131e45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610d4b565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461323e576040519150601f19603f3d011682016040523d82523d6000602084013e613243565b606091505b5050905080610ff75760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610d4b565b60006132c582613090565b6133375760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610d4b565b600061334283611ac9565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806133b157508373ffffffffffffffffffffffffffffffffffffffff1661339984610dfd565b73ffffffffffffffffffffffffffffffffffffffff16145b806133ee575073ffffffffffffffffffffffffffffffffffffffff80821660009081526004602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff1661341682611ac9565b73ffffffffffffffffffffffffffffffffffffffff161461349f5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e00000000000000000000000000000000000000000000006064820152608401610d4b565b73ffffffffffffffffffffffffffffffffffffffff82166135275760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610d4b565b6135326000826130f4565b816002828154811061354657613546614244565b6000918252602082200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff938416179055604051839285811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a4505050565b6135cf8383613818565b6135dc6000848484613972565b610ff75760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610d4b565b6136598484846133f6565b61366584848484613972565b6115245760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610d4b565b6060600c8054610d7a906140d9565b60608161372657505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115613750578061373a8161420b565b91506137499050600a836141e0565b915061372a565b60008167ffffffffffffffff81111561376b5761376b613c23565b6040519080825280601f01601f191660200182016040528015613795576020820181803683370190505b5090505b84156133ee576137aa6001836141f4565b91506137b7600a866142bb565b6137c290603061415c565b60f81b8183815181106137d7576137d7614244565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350613811600a866141e0565b9450613799565b73ffffffffffffffffffffffffffffffffffffffff821661387b5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610d4b565b61388481613090565b156138d15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610d4b565b6002805460018101825560009182527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091556040518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600073ffffffffffffffffffffffffffffffffffffffff84163b15613b3d576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906139e99033908990889088906004016142cf565b6020604051808303816000875af1925050508015613a42575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252613a3f91810190614318565b60015b613af2573d808015613a70576040519150601f19603f3d011682016040523d82523d6000602084013e613a75565b606091505b508051613aea5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610d4b565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490506133ee565b506001949350505050565b828054613b54906140d9565b90600052602060002090601f016020900481019282613b765760008555613bbc565b82601f10613b8f57805160ff1916838001178555613bbc565b82800160010185558215613bbc579182015b82811115613bbc578251825591602001919060010190613ba1565b50611a599291505b80821115611a595760008155600101613bc4565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461170257600080fd5b600060208284031215613c1857600080fd5b8135612aaa81613bd8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff80841115613c6d57613c6d613c23565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715613cb357613cb3613c23565b81604052809350858152868686011115613ccc57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215613cf857600080fd5b813567ffffffffffffffff811115613d0f57600080fd5b8201601f81018413613d2057600080fd5b6133ee84823560208401613c52565b60005b83811015613d4a578181015183820152602001613d32565b838111156115245750506000910152565b60008151808452613d73816020860160208601613d2f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612aaa6020830184613d5b565b600060208284031215613dca57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461170257600080fd5b60008060408385031215613e0657600080fd5b8235613e1181613dd1565b946020939093013593505050565b600060208284031215613e3157600080fd5b8135612aaa81613dd1565b600080600060608486031215613e5157600080fd5b8335613e5c81613dd1565b92506020840135613e6c81613dd1565b929592945050506040919091013590565b80358015158114613e8d57600080fd5b919050565b600060208284031215613ea457600080fd5b612aaa82613e7d565b60008083601f840112613ebf57600080fd5b50813567ffffffffffffffff811115613ed757600080fd5b6020830191508360208260051b8501011115613ef257600080fd5b9250929050565b60008060208385031215613f0c57600080fd5b823567ffffffffffffffff811115613f2357600080fd5b613f2f85828601613ead565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015613f7357835183529284019291840191600101613f57565b50909695505050505050565b60008060008060408587031215613f9557600080fd5b843567ffffffffffffffff80821115613fad57600080fd5b613fb988838901613ead565b90965094506020870135915080821115613fd257600080fd5b50613fdf87828801613ead565b95989497509550505050565b60008060408385031215613ffe57600080fd5b823561400981613dd1565b915061401760208401613e7d565b90509250929050565b6000806000806080858703121561403657600080fd5b843561404181613dd1565b9350602085013561405181613dd1565b925060408501359150606085013567ffffffffffffffff81111561407457600080fd5b8501601f8101871361408557600080fd5b61409487823560208401613c52565b91505092959194509250565b600080604083850312156140b357600080fd5b82356140be81613dd1565b915060208301356140ce81613dd1565b809150509250929050565b600181811c908216806140ed57607f821691505b60208210811415614127577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561416f5761416f61412d565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156141ac576141ac61412d565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826141ef576141ef6141b1565b500490565b6000828210156142065761420661412d565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561423d5761423d61412d565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561428557600080fd5b5051919050565b6000835161429e818460208801613d2f565b8351908301906142b2818360208801613d2f565b01949350505050565b6000826142ca576142ca6141b1565b500690565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261430e6080830184613d5b565b9695505050505050565b60006020828403121561432a57600080fd5b8151612aaa81613bd856fea2646970667358221220e3ebda94fa81878846de897394983763496a10c25143f70df23af7e5ad9774f964736f6c634300080a0033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000007e23e2f85c166d31859eae86a147210d02caaee1000000000000000000000000000000000000000000000000000000000000000b426561726420426561727300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064242454152530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005168747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d5854784a6b427766716e543579574377396f3958774651476965614176736769447051755869506a665568712f000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106103e25760003560e01c806384a303d61161020d578063bc29c96f11610128578063e985e9c5116100bb578063f19605d61161008a578063f711b1891161006f578063f711b18914610c2b578063f91798b114610c4b578063fbdb849414610c6c57600080fd5b8063f19605d614610bf5578063f2fde38b14610c0b57600080fd5b8063e985e9c514610b60578063ee13ed9e14610bb6578063ef9b63ba14610bcc578063efd0cbf914610be257600080fd5b8063d5abeb01116100f7578063d5abeb0114610afb578063e00cd18114610b11578063e33b7de314610b31578063e72b29de14610b4657600080fd5b8063bc29c96f14610a58578063bd986a2c14610a78578063c87b56dd14610a98578063ce7c2ac214610ab857600080fd5b80639852595c116101a0578063aa71d25e1161016f578063aa71d25e146109cb578063b645cab9146109f8578063b7fded2d14610a25578063b88d4fde14610a3857600080fd5b80639852595c146109335780639ddf7ad314610976578063a08aef2f14610995578063a22cb465146109ab57600080fd5b806391b7f5ed116101dc57806391b7f5ed146108cb57806394bb4c04146108eb57806395d89b41146108fe57806396ea3a471461091357600080fd5b806384a303d6146108405780638b83209b146108605780638da5cb5b146108805780638fd75ebd146108ab57600080fd5b80633a98ef39116102fd5780635841a03011610290578063708a92c21161025f578063708a92c2146107be57806370a08231146107de578063715018a6146107fe5780638462151c1461081357600080fd5b80635841a030146107495780636352211e1461076957806364bfa546146107895780636c0360eb146107a957600080fd5b806342842e0e116102cc57806342842e0e146106d65780634618163e146106f65780634e6cbcb3146107095780634f6ccce71461072957600080fd5b80633a98ef39146106795780633af4c2801461068e5780633ccfd60b146106ae5780633e9600b9146106b657600080fd5b80631b1aac231161037557806325a8a88e1161034457806325a8a88e1461060457806325b2eb611461062457806326bacaa0146106375780632f745c591461065957600080fd5b80631b1aac23146105745780631c19b263146105a15780631d608659146105b757806323b872dd146105e457600080fd5b8063095ea7b3116103b1578063095ea7b3146104fb5780630c73a7bf1461051b57806318160ddd1461053f578063191655871461055457600080fd5b806301ffc9a71461043d57806302fe53051461047257806306fdde0314610494578063081812fc146104b657600080fd5b36610438577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be770336040805173ffffffffffffffffffffffffffffffffffffffff90921682523460208301520160405180910390a1005b600080fd5b34801561044957600080fd5b5061045d610458366004613c06565b610c8c565b60405190151581526020015b60405180910390f35b34801561047e57600080fd5b5061049261048d366004613ce6565b610ce8565b005b3480156104a057600080fd5b506104a9610d6b565b6040516104699190613da5565b3480156104c257600080fd5b506104d66104d1366004613db8565b610dfd565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610469565b34801561050757600080fd5b50610492610516366004613df3565b610ea3565b34801561052757600080fd5b5061053160165481565b604051908152602001610469565b34801561054b57600080fd5b50600254610531565b34801561056057600080fd5b5061049261056f366004613e1f565b610ffc565b34801561058057600080fd5b5061053161058f366004613e1f565b60126020526000908152604090205481565b3480156105ad57600080fd5b5061053160175481565b3480156105c357600080fd5b506105316105d2366004613e1f565b60106020526000908152604090205481565b3480156105f057600080fd5b506104926105ff366004613e3c565b611237565b34801561061057600080fd5b5061049261061f366004613e92565b6112be565b610492610632366004613db8565b611356565b34801561064357600080fd5b50600f5461045d90640100000000900460ff1681565b34801561066557600080fd5b50610531610674366004613df3565b61152a565b34801561068557600080fd5b50600654610531565b34801561069a57600080fd5b50600f5461045d9062010000900460ff1681565b610492611646565b3480156106c257600080fd5b506104926106d1366004613db8565b611705565b3480156106e257600080fd5b506104926106f1366004613e3c565b611771565b610492610704366004613db8565b61178c565b34801561071557600080fd5b50610492610724366004613db8565b611994565b34801561073557600080fd5b50610531610744366004613db8565b611a00565b34801561075557600080fd5b50610492610764366004613db8565b611a5d565b34801561077557600080fd5b506104d6610784366004613db8565b611ac9565b34801561079557600080fd5b506104926107a4366004613db8565b611b76565b3480156107b557600080fd5b506104a9611be2565b3480156107ca57600080fd5b506104926107d9366004613ef9565b611c70565b3480156107ea57600080fd5b506105316107f9366004613e1f565b611d49565b34801561080a57600080fd5b50610492611e48565b34801561081f57600080fd5b5061083361082e366004613e1f565b611f1e565b6040516104699190613f3b565b34801561084c57600080fd5b5061049261085b366004613e92565b612018565b34801561086c57600080fd5b506104d661087b366004613db8565b6120b8565b34801561088c57600080fd5b5060055473ffffffffffffffffffffffffffffffffffffffff166104d6565b3480156108b757600080fd5b506104926108c6366004613db8565b6120f5565b3480156108d757600080fd5b506104926108e6366004613db8565b612161565b6104926108f9366004613db8565b6121cd565b34801561090a57600080fd5b506104a9612411565b34801561091f57600080fd5b5061049261092e366004613f7f565b612420565b34801561093f57600080fd5b5061053161094e366004613e1f565b73ffffffffffffffffffffffffffffffffffffffff1660009081526009602052604090205490565b34801561098257600080fd5b50600f5461045d90610100900460ff1681565b3480156109a157600080fd5b5061053160155481565b3480156109b757600080fd5b506104926109c6366004613feb565b6125e5565b3480156109d757600080fd5b506105316109e6366004613e1f565b60136020526000908152604090205481565b348015610a0457600080fd5b50610531610a13366004613e1f565b60116020526000908152604090205481565b610492610a33366004613db8565b6126e2565b348015610a4457600080fd5b50610492610a53366004614020565b61287d565b348015610a6457600080fd5b50610492610a73366004613e92565b612905565b348015610a8457600080fd5b50610492610a93366004613e92565b6129a6565b348015610aa457600080fd5b506104a9610ab3366004613db8565b612a44565b348015610ac457600080fd5b50610531610ad3366004613e1f565b73ffffffffffffffffffffffffffffffffffffffff1660009081526008602052604090205490565b348015610b0757600080fd5b50610531600e5481565b348015610b1d57600080fd5b50610492610b2c366004613ef9565b612ab1565b348015610b3d57600080fd5b50600754610531565b348015610b5257600080fd5b50600f5461045d9060ff1681565b348015610b6c57600080fd5b5061045d610b7b3660046140a0565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205460ff1690565b348015610bc257600080fd5b50610531601a5481565b348015610bd857600080fd5b5061053160185481565b610492610bf0366004613db8565b612b8a565b348015610c0157600080fd5b5061053160195481565b348015610c1757600080fd5b50610492610c26366004613e1f565b612d24565b348015610c3757600080fd5b50610492610c46366004613e92565b612ea2565b348015610c5757600080fd5b50600f5461045d906301000000900460ff1681565b348015610c7857600080fd5b50610492610c87366004613db8565b612f41565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d63000000000000000000000000000000000000000000000000000000001480610ce25750610ce282612fad565b92915050565b60055473ffffffffffffffffffffffffffffffffffffffff163314610d545760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b8051610d6790600c906020840190613b48565b5050565b606060008054610d7a906140d9565b80601f0160208091040260200160405190810160405280929190818152602001828054610da6906140d9565b8015610df35780601f10610dc857610100808354040283529160200191610df3565b820191906000526020600020905b815481529060010190602001808311610dd657829003601f168201915b5050505050905090565b6000610e0882613090565b610e7a5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610d4b565b5060009081526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b6000610eae82611ac9565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f525760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610d4b565b3373ffffffffffffffffffffffffffffffffffffffff82161480610f7b5750610f7b8133610b7b565b610fed5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610d4b565b610ff783836130f4565b505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600860205260409020546110945760405162461bcd60e51b815260206004820152602660248201527f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060448201527f73686172657300000000000000000000000000000000000000000000000000006064820152608401610d4b565b6000600754476110a4919061415c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526009602090815260408083205460065460089093529083205493945091926110e89085614174565b6110f291906141e0565b6110fc91906141f4565b9050806111715760405162461bcd60e51b815260206004820152602b60248201527f5061796d656e7453706c69747465723a206163636f756e74206973206e6f742060448201527f647565207061796d656e740000000000000000000000000000000000000000006064820152608401610d4b565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600960205260409020546111a290829061415c565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600960205260409020556007546111d690829061415c565b6007556111e38382613194565b6040805173ffffffffffffffffffffffffffffffffffffffff85168152602081018390527fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b056910160405180910390a1505050565b61124133826132ba565b6112b35760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610d4b565b610ff78383836133f6565b60055473ffffffffffffffffffffffffffffffffffffffff1633146113255760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b600f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b600061136160025490565b33600090815260116020526040902054600f549192509062010000900460ff166113cd5760405162461bcd60e51b815260206004820152601760248201527f57686974656c697374206973206e6f74206163746976650000000000000000006044820152606401610d4b565b600081116113da57600080fd5b60175483111561142c5760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610d4b565b600e54611439848461415c565b11156114875760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610d4b565b826014546114959190614174565b3410156114e45760405162461bcd60e51b815260206004820152601260248201527f45544820696e7075742069732077726f6e6700000000000000000000000000006044820152606401610d4b565b506000805b8381101561152457611514336114ff838661415c565b604051806020016040528060008152506135c5565b61151d8161420b565b90506114e9565b50505050565b600061153583611d49565b82106115835760405162461bcd60e51b815260206004820152601660248201527f455243373231456e756d3a206f776e657220696f6f62000000000000000000006044820152606401610d4b565b6000805b6002548110156115fd57600281815481106115a4576115a4614244565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff868116911614156115ed57838214156115e1579150610ce29050565b6115ea8261420b565b91505b6115f68161420b565b9050611587565b5060405162461bcd60e51b815260206004820152601660248201527f455243373231456e756d3a206f776e657220696f6f62000000000000000000006044820152606401610d4b565b60055473ffffffffffffffffffffffffffffffffffffffff1633146116ad5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b604051600090339047908381818185875af1925050503d80600081146116ef576040519150601f19603f3d011682016040523d82523d6000602084013e6116f4565b606091505b505090508061170257600080fd5b50565b60055473ffffffffffffffffffffffffffffffffffffffff16331461176c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b601a55565b610ff78383836040518060200160405280600081525061287d565b600061179760025490565b33600090815260106020526040902054600f5491925090610100900460ff166118025760405162461bcd60e51b815260206004820152601760248201527f57686974656c697374206973206e6f74206163746976650000000000000000006044820152606401610d4b565b6000811161180f57600080fd5b8083111561185f5760405162461bcd60e51b815260206004820152600860248201527f547279206c6573730000000000000000000000000000000000000000000000006044820152606401610d4b565b6016548311156118b15760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610d4b565b600e546118be848461415c565b111561190c5760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610d4b565b8260145461191a9190614174565b3410156119695760405162461bcd60e51b815260206004820152601260248201527f45544820696e7075742069732077726f6e6700000000000000000000000000006044820152606401610d4b565b506000805b8381101561152457611984336114ff838661415c565b61198d8161420b565b905061196e565b60055473ffffffffffffffffffffffffffffffffffffffff1633146119fb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b601555565b6000611a0b60025490565b8210611a595760405162461bcd60e51b815260206004820152601760248201527f455243373231456e756d3a20676c6f62616c20696f6f620000000000000000006044820152606401610d4b565b5090565b60055473ffffffffffffffffffffffffffffffffffffffff163314611ac45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b601655565b60008060028381548110611adf57611adf614244565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905080610ce25760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610d4b565b60055473ffffffffffffffffffffffffffffffffffffffff163314611bdd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b601955565b600c8054611bef906140d9565b80601f0160208091040260200160405190810160405280929190818152602001828054611c1b906140d9565b8015611c685780601f10611c3d57610100808354040283529160200191611c68565b820191906000526020600020905b815481529060010190602001808311611c4b57829003601f168201915b505050505081565b60055473ffffffffffffffffffffffffffffffffffffffff163314611cd75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b60005b81811015610ff75760175460116000858585818110611cfb57611cfb614244565b9050602002016020810190611d109190613e1f565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205580611d418161420b565b915050611cda565b600073ffffffffffffffffffffffffffffffffffffffff8216611dd45760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610d4b565b600254600090815b81811015611e3f5760028181548110611df757611df7614244565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff86811691161415611e2f57611e2c8361420b565b92505b611e388161420b565b9050611ddc565b50909392505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611eaf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b60055460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6060611f2982611d49565b600010611f785760405162461bcd60e51b815260206004820152601660248201527f455243373231456e756d3a206f776e657220696f6f62000000000000000000006044820152606401610d4b565b6000611f8383611d49565b905060008167ffffffffffffffff811115611fa057611fa0613c23565b604051908082528060200260200182016040528015611fc9578160200160208202803683370190505b50905060005b8281101561201057611fe1858261152a565b828281518110611ff357611ff3614244565b6020908102919091010152806120088161420b565b915050611fcf565b509392505050565b60055473ffffffffffffffffffffffffffffffffffffffff16331461207f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b600f80549115156301000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffff909216919091179055565b6000600a82815481106120cd576120cd614244565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1692915050565b60055473ffffffffffffffffffffffffffffffffffffffff16331461215c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b601755565b60055473ffffffffffffffffffffffffffffffffffffffff1633146121c85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b601455565b600d546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561223c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122609190614273565b9050600061226d60025490565b600f5490915060ff166122c25760405162461bcd60e51b815260206004820152601760248201527f57686974656c697374206973206e6f74206163746976650000000000000000006044820152606401610d4b565b600082116122cf57600080fd5b816015546122dd9190614174565b83111561232c5760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610d4b565b600e54612339848361415c565b11156123875760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610d4b565b826014546123959190614174565b3410156123e45760405162461bcd60e51b815260206004820152601260248201527f45544820696e7075742069732077726f6e6700000000000000000000000000006044820152606401610d4b565b6000915060005b8381101561152457612401336114ff838561415c565b61240a8161420b565b90506123eb565b606060018054610d7a906140d9565b60055473ffffffffffffffffffffffffffffffffffffffff1633146124875760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b82811461249357600080fd5b60008061249f60025490565b905060005b858110156124e2578686828181106124be576124be614244565b90506020020135836124d0919061415c565b92506124db8161420b565b90506124a4565b50600e546124f0838361415c565b111561253e5760405162461bcd60e51b815260206004820152600860248201527f546f6f206d616e790000000000000000000000000000000000000000000000006044820152606401610d4b565b6000915060005b838110156125dc5760005b87878381811061256257612562614244565b905060200201358110156125cb576125bb86868481811061258557612585614244565b905060200201602081019061259a9190613e1f565b846125a48161420b565b9550604051806020016040528060008152506135c5565b6125c48161420b565b9050612550565b506125d58161420b565b9050612545565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff821633141561264b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610d4b565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60006126ed60025490565b600f54909150640100000000900460ff1661274a5760405162461bcd60e51b815260206004820152601960248201527f436f6d6d756e697479574c206973206e6f7420616374697665000000000000006044820152606401610d4b565b60165482111561279c5760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610d4b565b600e546127a9838361415c565b11156127f75760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610d4b565b816014546128059190614174565b3410156128545760405162461bcd60e51b815260206004820152601260248201527f45544820696e7075742069732077726f6e6700000000000000000000000000006044820152606401610d4b565b60005b82811015610ff75761286d336114ff838561415c565b6128768161420b565b9050612857565b61288733836132ba565b6128f95760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610d4b565b6115248484848461364e565b60055473ffffffffffffffffffffffffffffffffffffffff16331461296c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b600f8054911515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff909216919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314612a0d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b600f8054911515610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909216919091179055565b6060600e54821115612a5557600080fd5b6000612a5f6136d7565b90506000815111612a7f5760405180602001604052806000815250612aaa565b80612a89846136e6565b604051602001612a9a92919061428c565b6040516020818303038152906040525b9392505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314612b185760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b60005b81811015610ff75760165460106000858585818110612b3c57612b3c614244565b9050602002016020810190612b519190613e1f565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205580612b828161420b565b915050612b1b565b6000612b9560025490565b600f549091506301000000900460ff16612bf15760405162461bcd60e51b815260206004820152601960248201527f5075626c69632073616c65206973206e6f7420616374697665000000000000006044820152606401610d4b565b601854821115612c435760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610d4b565b600e54612c50838361415c565b1115612c9e5760405162461bcd60e51b815260206004820152600960248201527f4d696e74206c65737300000000000000000000000000000000000000000000006044820152606401610d4b565b81601454612cac9190614174565b341015612cfb5760405162461bcd60e51b815260206004820152601260248201527f45544820696e7075742069732077726f6e6700000000000000000000000000006044820152606401610d4b565b60005b82811015610ff757612d14336114ff838561415c565b612d1d8161420b565b9050612cfe565b60055473ffffffffffffffffffffffffffffffffffffffff163314612d8b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b73ffffffffffffffffffffffffffffffffffffffff8116612e145760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610d4b565b60055460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314612f095760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b600f805491151562010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff909216919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314612fa85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610d4b565b601855565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061304057507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b80610ce257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610ce2565b60025460009082108015610ce25750600073ffffffffffffffffffffffffffffffffffffffff16600283815481106130ca576130ca614244565b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141592915050565b600081815260036020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155819061314e82611ac9565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b804710156131e45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610d4b565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461323e576040519150601f19603f3d011682016040523d82523d6000602084013e613243565b606091505b5050905080610ff75760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610d4b565b60006132c582613090565b6133375760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610d4b565b600061334283611ac9565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806133b157508373ffffffffffffffffffffffffffffffffffffffff1661339984610dfd565b73ffffffffffffffffffffffffffffffffffffffff16145b806133ee575073ffffffffffffffffffffffffffffffffffffffff80821660009081526004602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff1661341682611ac9565b73ffffffffffffffffffffffffffffffffffffffff161461349f5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e00000000000000000000000000000000000000000000006064820152608401610d4b565b73ffffffffffffffffffffffffffffffffffffffff82166135275760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610d4b565b6135326000826130f4565b816002828154811061354657613546614244565b6000918252602082200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff938416179055604051839285811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9190a4505050565b6135cf8383613818565b6135dc6000848484613972565b610ff75760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610d4b565b6136598484846133f6565b61366584848484613972565b6115245760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610d4b565b6060600c8054610d7a906140d9565b60608161372657505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115613750578061373a8161420b565b91506137499050600a836141e0565b915061372a565b60008167ffffffffffffffff81111561376b5761376b613c23565b6040519080825280601f01601f191660200182016040528015613795576020820181803683370190505b5090505b84156133ee576137aa6001836141f4565b91506137b7600a866142bb565b6137c290603061415c565b60f81b8183815181106137d7576137d7614244565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350613811600a866141e0565b9450613799565b73ffffffffffffffffffffffffffffffffffffffff821661387b5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610d4b565b61388481613090565b156138d15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610d4b565b6002805460018101825560009182527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091556040518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600073ffffffffffffffffffffffffffffffffffffffff84163b15613b3d576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906139e99033908990889088906004016142cf565b6020604051808303816000875af1925050508015613a42575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252613a3f91810190614318565b60015b613af2573d808015613a70576040519150601f19603f3d011682016040523d82523d6000602084013e613a75565b606091505b508051613aea5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610d4b565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490506133ee565b506001949350505050565b828054613b54906140d9565b90600052602060002090601f016020900481019282613b765760008555613bbc565b82601f10613b8f57805160ff1916838001178555613bbc565b82800160010185558215613bbc579182015b82811115613bbc578251825591602001919060010190613ba1565b50611a599291505b80821115611a595760008155600101613bc4565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461170257600080fd5b600060208284031215613c1857600080fd5b8135612aaa81613bd8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff80841115613c6d57613c6d613c23565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715613cb357613cb3613c23565b81604052809350858152868686011115613ccc57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215613cf857600080fd5b813567ffffffffffffffff811115613d0f57600080fd5b8201601f81018413613d2057600080fd5b6133ee84823560208401613c52565b60005b83811015613d4a578181015183820152602001613d32565b838111156115245750506000910152565b60008151808452613d73816020860160208601613d2f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612aaa6020830184613d5b565b600060208284031215613dca57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461170257600080fd5b60008060408385031215613e0657600080fd5b8235613e1181613dd1565b946020939093013593505050565b600060208284031215613e3157600080fd5b8135612aaa81613dd1565b600080600060608486031215613e5157600080fd5b8335613e5c81613dd1565b92506020840135613e6c81613dd1565b929592945050506040919091013590565b80358015158114613e8d57600080fd5b919050565b600060208284031215613ea457600080fd5b612aaa82613e7d565b60008083601f840112613ebf57600080fd5b50813567ffffffffffffffff811115613ed757600080fd5b6020830191508360208260051b8501011115613ef257600080fd5b9250929050565b60008060208385031215613f0c57600080fd5b823567ffffffffffffffff811115613f2357600080fd5b613f2f85828601613ead565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b81811015613f7357835183529284019291840191600101613f57565b50909695505050505050565b60008060008060408587031215613f9557600080fd5b843567ffffffffffffffff80821115613fad57600080fd5b613fb988838901613ead565b90965094506020870135915080821115613fd257600080fd5b50613fdf87828801613ead565b95989497509550505050565b60008060408385031215613ffe57600080fd5b823561400981613dd1565b915061401760208401613e7d565b90509250929050565b6000806000806080858703121561403657600080fd5b843561404181613dd1565b9350602085013561405181613dd1565b925060408501359150606085013567ffffffffffffffff81111561407457600080fd5b8501601f8101871361408557600080fd5b61409487823560208401613c52565b91505092959194509250565b600080604083850312156140b357600080fd5b82356140be81613dd1565b915060208301356140ce81613dd1565b809150509250929050565b600181811c908216806140ed57607f821691505b60208210811415614127577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561416f5761416f61412d565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156141ac576141ac61412d565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826141ef576141ef6141b1565b500490565b6000828210156142065761420661412d565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561423d5761423d61412d565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561428557600080fd5b5051919050565b6000835161429e818460208801613d2f565b8351908301906142b2818360208801613d2f565b01949350505050565b6000826142ca576142ca6141b1565b500690565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261430e6080830184613d5b565b9695505050505050565b60006020828403121561432a57600080fd5b8151612aaa81613bd856fea2646970667358221220e3ebda94fa81878846de897394983763496a10c25143f70df23af7e5ad9774f964736f6c634300080a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000007e23e2f85c166d31859eae86a147210d02caaee1000000000000000000000000000000000000000000000000000000000000000b426561726420426561727300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064242454152530000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005168747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d5854784a6b427766716e543579574377396f3958774651476965614176736769447051755869506a665568712f000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _name (string): Beard Bears
Arg [1] : _symbol (string): BBEARS
Arg [2] : _initBaseURI (string): https://gateway.pinata.cloud/ipfs/QmXTxJkBwfqnT5yWCw9o9XwFQGieaAvsgiDpQuXiPjfUhq/
Arg [3] : ogaddr (address): 0x7E23E2f85c166D31859EaE86A147210d02caAEe1
-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [3] : 0000000000000000000000007e23e2f85c166d31859eae86a147210d02caaee1
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [5] : 4265617264204265617273000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [7] : 4242454152530000000000000000000000000000000000000000000000000000
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000051
Arg [9] : 68747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066
Arg [10] : 732f516d5854784a6b427766716e543579574377396f39587746514769656141
Arg [11] : 76736769447051755869506a665568712f000000000000000000000000000000
Deployed Bytecode Sourcemap
476:6351:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2627:40:13;681:10:2;2627:40:13;;;218:42:16;206:55;;;188:74;;2657:9:13;293:2:16;278:18;;271:34;161:18;2627:40:13;;;;;;;476:6351:1;;;;;193:224:5;;;;;;;;;;-1:-1:-1;193:224:5;;;;;:::i;:::-;;:::i;:::-;;;913:14:16;;906:22;888:41;;876:2;861:18;193:224:5;;;;;;;;6167:88:1;;;;;;;;;;-1:-1:-1;6167:88:1;;;;;:::i;:::-;;:::i;:::-;;1672:100:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2305:221::-;;;;;;;;;;-1:-1:-1;2305:221:4;;;;;:::i;:::-;;:::i;:::-;;;3452:42:16;3440:55;;;3422:74;;3410:2;3395:18;2305:221:4;3276:226:16;1888:411:4;;;;;;;;;;-1:-1:-1;1888:411:4;;;;;:::i;:::-;;:::i;1147:28:1:-;;;;;;;;;;;;;;;;;;;4132:25:16;;;4120:2;4105:18;1147:28:1;3986:177:16;1351:110:5;;;;;;;;;;-1:-1:-1;1439:7:5;:14;1351:110;;3791:600:13;;;;;;;;;;-1:-1:-1;3791:600:13;;;;;:::i;:::-;;:::i;954:45:1:-;;;;;;;;;;-1:-1:-1;954:45:1;;;;;:::i;:::-;;;;;;;;;;;;;;1178:29;;;;;;;;;;;;;;;;855:46;;;;;;;;;;-1:-1:-1;855:46:1;;;;;:::i;:::-;;;;;;;;;;;;;;3003:339:4;;;;;;;;;;-1:-1:-1;3003:339:4;;;;;:::i;:::-;;:::i;6274:71:1:-;;;;;;;;;;-1:-1:-1;6274:71:1;;;;;:::i;:::-;;:::i;3633:494::-;;;;;;:::i;:::-;;:::i;817:35::-;;;;;;;;;;-1:-1:-1;817:35:1;;;;;;;;;;;423:499:5;;;;;;;;;;-1:-1:-1;423:499:5;;;;;:::i;:::-;;:::i;2752:89:13:-;;;;;;;;;;-1:-1:-1;2822:12:13;;2752:89;;743:36:1;;;;;;;;;;-1:-1:-1;743:36:1;;;;;;;;;;;6677:148;;;:::i;5673:104::-;;;;;;;;;;-1:-1:-1;5673:104:1;;;;;:::i;:::-;;:::i;3348:185:4:-;;;;;;;;;;-1:-1:-1;3348:185:4;;;;;:::i;:::-;;:::i;2642:528:1:-;;;;;;:::i;:::-;;:::i;5469:98::-;;;;;;;;;;-1:-1:-1;5469:98:1;;;;;:::i;:::-;;:::i;1467:200:5:-;;;;;;;;;;-1:-1:-1;1467:200:5;;;;;:::i;:::-;;:::i;5797:98:1:-;;;;;;;;;;-1:-1:-1;5797:98:1;;;;;:::i;:::-;;:::i;1427:239:4:-;;;;;;;;;;-1:-1:-1;1427:239:4;;;;;:::i;:::-;;:::i;5570:100:1:-;;;;;;;;;;-1:-1:-1;5570:100:1;;;;;:::i;:::-;;:::i;578:21::-;;;;;;;;;;;;;:::i;4798:166::-;;;;;;;;;;-1:-1:-1;4798:166:1;;;;;:::i;:::-;;:::i;1007:414:4:-;;;;;;;;;;-1:-1:-1;1007:414:4;;;;;:::i;:::-;;:::i;1746:148:12:-;;;;;;;;;;;;;:::i;928:417:5:-;;;;;;;;;;-1:-1:-1;928:417:5;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6600:74:1:-;;;;;;;;;;-1:-1:-1;6600:74:1;;;;;:::i;:::-;;:::i;3499:98:13:-;;;;;;;;;;-1:-1:-1;3499:98:13;;;;;:::i;:::-;;:::i;1095:87:12:-;;;;;;;;;;-1:-1:-1;1168:6:12;;;;1095:87;;5916:100:1;;;;;;;;;;-1:-1:-1;5916:100:1;;;;;:::i;:::-;;:::i;5371:78::-;;;;;;;;;;-1:-1:-1;5371:78:1;;;;;:::i;:::-;;:::i;2147:470::-;;;;;;:::i;:::-;;:::i;1778:104:4:-;;;;;;;;;;;;;:::i;4148:427:1:-;;;;;;;;;;-1:-1:-1;4148:427:1;;;;;:::i;:::-;;:::i;3306:107:13:-;;;;;;;;;;-1:-1:-1;3306:107:13;;;;;:::i;:::-;3388:18;;3362:7;3388:18;;;:9;:18;;;;;;;3306:107;705:35:1;;;;;;;;;;-1:-1:-1;705:35:1;;;;;;;;;;;1115:29;;;;;;;;;;;;;;;;2532:295:4;;;;;;;;;;-1:-1:-1;2532:295:4;;;;;:::i;:::-;;:::i;1002:46:1:-;;;;;;;;;;-1:-1:-1;1002:46:1;;;;;:::i;:::-;;;;;;;;;;;;;;904:47;;;;;;;;;;-1:-1:-1;904:47:1;;;;;:::i;:::-;;;;;;;;;;;;;;3194:413;;;;;;:::i;:::-;;:::i;3539:328:4:-;;;;;;;;;;-1:-1:-1;3539:328:4;;;;;:::i;:::-;;:::i;6429:85:1:-;;;;;;;;;;-1:-1:-1;6429:85:1;;;;;:::i;:::-;;:::i;6348:78::-;;;;;;;;;;-1:-1:-1;6348:78:1;;;;;:::i;:::-;;:::i;5074:278::-;;;;;;;;;;-1:-1:-1;5074:278:1;;;;;:::i;:::-;;:::i;3109:103:13:-;;;;;;;;;;-1:-1:-1;3109:103:13;;;;;:::i;:::-;3189:16;;3163:7;3189:16;;;:7;:16;;;;;;;3109:103;639:32:1;;;;;;;;;;;;;;;;4607:163;;;;;;;;;;-1:-1:-1;4607:163:1;;;;;:::i;:::-;;:::i;2930:93:13:-;;;;;;;;;;-1:-1:-1;3002:14:13;;2930:93;;674:28:1;;;;;;;;;;-1:-1:-1;674:28:1;;;;;;;;2833:164:4;;;;;;;;;;-1:-1:-1;2833:164:4;;;;;:::i;:::-;2954:25;;;;2930:4;2954:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;2833:164;1283:37:1;;;;;;;;;;;;;;;;1210:32;;;;;;;;;;;;;;;;1715:414;;;;;;:::i;:::-;;:::i;1245:35::-;;;;;;;;;;;;;;;;2049:244:12;;;;;;;;;;-1:-1:-1;2049:244:12;;;;;:::i;:::-;;:::i;6517:80:1:-;;;;;;;;;;-1:-1:-1;6517:80:1;;;;;:::i;:::-;;:::i;782:32::-;;;;;;;;;;-1:-1:-1;782:32:1;;;;;;;;;;;6040:106;;;;;;;;;;-1:-1:-1;6040:106:1;;;;;:::i;:::-;;:::i;193:224:5:-;295:4;319:50;;;334:35;319:50;;:90;;;373:36;397:11;373:23;:36::i;:::-;312:97;193:224;-1:-1:-1;;193:224:5:o;6167:88:1:-;1168:6:12;;1315:23;1168:6;681:10:2;1315:23:12;1307:68;;;;-1:-1:-1;;;1307:68:12;;9435:2:16;1307:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1307:68:12;;;;;;;;;6230:21:1;;::::1;::::0;:7:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;:::-;;6167:88:::0;:::o;1672:100:4:-;1726:13;1759:5;1752:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1672:100;:::o;2305:221::-;2381:7;2409:16;2417:7;2409;:16::i;:::-;2401:73;;;;-1:-1:-1;;;2401:73:4;;10238:2:16;2401:73:4;;;10220:21:16;10277:2;10257:18;;;10250:30;10316:34;10296:18;;;10289:62;10387:14;10367:18;;;10360:42;10419:19;;2401:73:4;10036:408:16;2401:73:4;-1:-1:-1;2494:24:4;;;;:15;:24;;;;;;;;;2305:221::o;1888:411::-;1969:13;1985:23;2000:7;1985:14;:23::i;:::-;1969:39;;2033:5;2027:11;;:2;:11;;;;2019:57;;;;-1:-1:-1;;;2019:57:4;;10651:2:16;2019:57:4;;;10633:21:16;10690:2;10670:18;;;10663:30;10729:34;10709:18;;;10702:62;10800:3;10780:18;;;10773:31;10821:19;;2019:57:4;10449:397:16;2019:57:4;681:10:2;2111:21:4;;;;;:62;;-1:-1:-1;2136:37:4;2153:5;681:10:2;2833:164:4;:::i;2136:37::-;2089:168;;;;-1:-1:-1;;;2089:168:4;;11053:2:16;2089:168:4;;;11035:21:16;11092:2;11072:18;;;11065:30;11131:34;11111:18;;;11104:62;11202:26;11182:18;;;11175:54;11246:19;;2089:168:4;10851:420:16;2089:168:4;2270:21;2279:2;2283:7;2270:8;:21::i;:::-;1958:341;1888:411;;:::o;3791:600:13:-;3866:16;;;3885:1;3866:16;;;:7;:16;;;;;;3858:71;;;;-1:-1:-1;;;3858:71:13;;11478:2:16;3858:71:13;;;11460:21:16;11517:2;11497:18;;;11490:30;11556:34;11536:18;;;11529:62;11627:8;11607:18;;;11600:36;11653:19;;3858:71:13;11276:402:16;3858:71:13;3940:21;3988:14;;3964:21;:38;;;;:::i;:::-;4082:18;;;4012:15;4082:18;;;:9;:18;;;;;;;;;4067:12;;4047:7;:16;;;;;;;3940:62;;-1:-1:-1;4012:15:13;;4031:32;;3940:62;4031:32;:::i;:::-;4030:49;;;;:::i;:::-;:70;;;;:::i;:::-;4012:88;-1:-1:-1;4119:12:13;4111:68;;;;-1:-1:-1;;;4111:68:13;;12884:2:16;4111:68:13;;;12866:21:16;12923:2;12903:18;;;12896:30;12962:34;12942:18;;;12935:62;13033:13;13013:18;;;13006:41;13064:19;;4111:68:13;12682:407:16;4111:68:13;4211:18;;;;;;;:9;:18;;;;;;:28;;4232:7;;4211:28;:::i;:::-;4190:18;;;;;;;:9;:18;;;;;:49;4266:14;;:24;;4283:7;;4266:24;:::i;:::-;4249:14;:41;4301:35;4319:7;4328;4301:17;:35::i;:::-;4351:33;;;218:42:16;206:55;;188:74;;293:2;278:18;;271:34;;;4351:33:13;;161:18:16;4351:33:13;;;;;;;3848:543;;3791:600;:::o;3003:339:4:-;3198:41;681:10:2;3231:7:4;3198:18;:41::i;:::-;3190:103;;;;-1:-1:-1;;;3190:103:4;;13606:2:16;3190:103:4;;;13588:21:16;13645:2;13625:18;;;13618:30;13684:34;13664:18;;;13657:62;13755:19;13735:18;;;13728:47;13792:19;;3190:103:4;13404:413:16;3190:103:4;3306:28;3316:4;3322:2;3326:7;3306:9;:28::i;6274:71:1:-;1168:6:12;;1315:23;1168:6;681:10:2;1315:23:12;1307:68;;;;-1:-1:-1;;;1307:68:12;;9435:2:16;1307:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1307:68:12;9233:356:16;1307:68:12;6323:8:1::1;:18:::0;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;6274:71::o;3633:494::-;3698:9;3710:13;1439:7:5;:14;;1351:110;3710:13:1;3756:10;3729:11;3743:24;;;:12;:24;;;;;;3778:16;;3698:25;;-1:-1:-1;3743:24:1;3778:16;;;;;3770:53;;;;-1:-1:-1;;;3770:53:1;;14024:2:16;3770:53:1;;;14006:21:16;14063:2;14043:18;;;14036:30;14102:25;14082:18;;;14075:53;14145:18;;3770:53:1;13822:347:16;3770:53:1;3840:1;3834:3;:7;3826:16;;;;;;3869:10;;3853:12;:26;;3845:48;;;;-1:-1:-1;;;3845:48:1;;14376:2:16;3845:48:1;;;14358:21:16;14415:1;14395:18;;;14388:29;14453:11;14433:18;;;14426:39;14482:18;;3845:48:1;14174:332:16;3845:48:1;3925:9;;3905:16;3909:12;3905:1;:16;:::i;:::-;:29;;3896:52;;;;-1:-1:-1;;;3896:52:1;;14376:2:16;3896:52:1;;;14358:21:16;14415:1;14395:18;;;14388:29;14453:11;14433:18;;;14426:39;14482:18;;3896:52:1;14174:332:16;3896:52:1;3980:12;3972:5;;:20;;;;:::i;:::-;3959:9;:33;;3951:64;;;;-1:-1:-1;;;3951:64:1;;14713:2:16;3951:64:1;;;14695:21:16;14752:2;14732:18;;;14725:30;14791:20;14771:18;;;14764:48;14829:18;;3951:64:1;14511:342:16;3951:64:1;-1:-1:-1;4018:10:1;;4031:82;4055:12;4051:1;:16;4031:82;;;4077:32;4087:10;4099:5;4103:1;4099;:5;:::i;:::-;4077:32;;;;;;;;;;;;:9;:32::i;:::-;4069:3;;;:::i;:::-;;;4031:82;;;-1:-1:-1;;;;3633:494:1:o;423:499:5:-;512:15;556:23;573:5;556:16;:23::i;:::-;548:5;:31;540:66;;;;-1:-1:-1;;;540:66:5;;15260:2:16;540:66:5;;;15242:21:16;15299:2;15279:18;;;15272:30;15338:24;15318:18;;;15311:52;15380:18;;540:66:5;15058:346:16;540:66:5;617:10;643:6;638:226;655:7;:14;651:18;;638:226;;;704:7;712:1;704:10;;;;;;;;:::i;:::-;;;;;;;;;;;;695:19;;;704:10;;695:19;691:162;;;748:5;739;:14;735:102;;;784:1;-1:-1:-1;777:8:5;;-1:-1:-1;777:8:5;735:102;830:7;;;:::i;:::-;;;735:102;671:3;;;:::i;:::-;;;638:226;;;-1:-1:-1;874:40:5;;-1:-1:-1;;;874:40:5;;15260:2:16;874:40:5;;;15242:21:16;15299:2;15279:18;;;15272:30;15338:24;15318:18;;;15311:52;15380:18;;874:40:5;15058:346:16;6677:148:1;1168:6:12;;1315:23;1168:6;681:10:2;1315:23:12;1307:68;;;;-1:-1:-1;;;1307:68:12;;9435:2:16;1307:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1307:68:12;9233:356:16;1307:68:12;6744:58:1::1;::::0;6726:12:::1;::::0;6752:10:::1;::::0;6776:21:::1;::::0;6726:12;6744:58;6726:12;6744:58;6776:21;6752:10;6744:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6725:77;;;6813:7;6805:16;;;::::0;::::1;;6722:103;6677:148::o:0;5673:104::-;1168:6:12;;1315:23;1168:6;681:10:2;1315:23:12;1307:68;;;;-1:-1:-1;;;1307:68:12;;9435:2:16;1307:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1307:68:12;9233:356:16;1307:68:12;5743:18:1::1;:30:::0;5673:104::o;3348:185:4:-;3486:39;3503:4;3509:2;3513:7;3486:39;;;;;;;;;;;;:16;:39::i;2642:528:1:-;2706:9;2718:13;1439:7:5;:14;;1351:110;2718:13:1;2762:10;2737;2750:23;;;:11;:23;;;;;;2784:15;;2706:25;;-1:-1:-1;2750:23:1;2784:15;;;;;2776:52;;;;-1:-1:-1;;;2776:52:1;;14024:2:16;2776:52:1;;;14006:21:16;14063:2;14043:18;;;14036:30;14102:25;14082:18;;;14075:53;14145:18;;2776:52:1;13822:347:16;2776:52:1;2844:1;2839:2;:6;2831:15;;;;;;2873:2;2857:12;:18;;2849:39;;;;-1:-1:-1;;;2849:39:1;;16010:2:16;2849:39:1;;;15992:21:16;16049:1;16029:18;;;16022:29;16087:10;16067:18;;;16060:38;16115:18;;2849:39:1;15808:331:16;2849:39:1;2915:9;;2899:12;:25;;2891:47;;;;-1:-1:-1;;;2891:47:1;;14376:2:16;2891:47:1;;;14358:21:16;14415:1;14395:18;;;14388:29;14453:11;14433:18;;;14426:39;14482:18;;2891:47:1;14174:332:16;2891:47:1;2969:9;;2949:16;2953:12;2949:1;:16;:::i;:::-;:29;;2941:51;;;;-1:-1:-1;;;2941:51:1;;14376:2:16;2941:51:1;;;14358:21:16;14415:1;14395:18;;;14388:29;14453:11;14433:18;;;14426:39;14482:18;;2941:51:1;14174:332:16;2941:51:1;3024:12;3016:5;;:20;;;;:::i;:::-;3003:9;:33;;2995:64;;;;-1:-1:-1;;;2995:64:1;;14713:2:16;2995:64:1;;;14695:21:16;14752:2;14732:18;;;14725:30;14791:20;14771:18;;;14764:48;14829:18;;2995:64:1;14511:342:16;2995:64:1;-1:-1:-1;3062:9:1;;3074:82;3098:12;3094:1;:16;3074:82;;;3120:32;3130:10;3142:5;3146:1;3142;:5;:::i;3120:32::-;3112:3;;;:::i;:::-;;;3074:82;;5469:98;1168:6:12;;1315:23;1168:6;681:10:2;1315:23:12;1307:68;;;;-1:-1:-1;;;1307:68:12;;9435:2:16;1307:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1307:68:12;9233:356:16;1307:68:12;5534:9:1::1;:29:::0;5469:98::o;1467:200:5:-;1542:7;1578:30;1439:7;:14;;1351:110;1578:30;1570:5;:38;1562:74;;;;-1:-1:-1;;;1562:74:5;;16346:2:16;1562:74:5;;;16328:21:16;16385:2;16365:18;;;16358:30;16424:25;16404:18;;;16397:53;16467:18;;1562:74:5;16144:347:16;1562:74:5;-1:-1:-1;1654:5:5;1467:200::o;5797:98:1:-;1168:6:12;;1315:23;1168:6;681:10:2;1315:23:12;1307:68;;;;-1:-1:-1;;;1307:68:12;;9435:2:16;1307:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1307:68:12;9233:356:16;1307:68:12;5862:9:1::1;:29:::0;5797:98::o;1427:239:4:-;1499:7;1519:13;1535:7;1543;1535:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;1570:19:4;1562:73;;;;-1:-1:-1;;;1562:73:4;;16698:2:16;1562:73:4;;;16680:21:16;16737:2;16717:18;;;16710:30;16776:34;16756:18;;;16749:62;16847:11;16827:18;;;16820:39;16876:19;;1562:73:4;16496:405:16;5570:100:1;1168:6:12;;1315:23;1168:6;681:10:2;1315:23:12;1307:68;;;;-1:-1:-1;;;1307:68:12;;9435:2:16;1307:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1307:68:12;9233:356:16;1307:68:12;5638:16:1::1;:28:::0;5570:100::o;578:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4798:166::-;1168:6:12;;1315:23;1168:6;681:10:2;1315:23:12;1307:68;;;;-1:-1:-1;;;1307:68:12;;9435:2:16;1307:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1307:68:12;9233:356:16;1307:68:12;4876:9:1::1;4872:89;4887:21:::0;;::::1;4872:89;;;4947:10;;4917:12;:27;4930:10;;4941:1;4930:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;4917:27;;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;4917:27:1;:40;4910:3;::::1;::::0;::::1;:::i;:::-;;;;4872:89;;1007:414:4::0;1079:7;1107:19;;;1099:74;;;;-1:-1:-1;;;1099:74:4;;17108:2:16;1099:74:4;;;17090:21:16;17147:2;17127:18;;;17120:30;17186:34;17166:18;;;17159:62;17257:12;17237:18;;;17230:40;17287:19;;1099:74:4;16906:406:16;1099:74:4;1223:7;:14;1184:10;;;1248:119;1269:6;1265:1;:10;1248:119;;;1308:7;1316:1;1308:10;;;;;;;;:::i;:::-;;;;;;;;;;;;1299:19;;;1308:10;;1299:19;1295:61;;;1335:7;;;:::i;:::-;;;1295:61;1277:3;;;:::i;:::-;;;1248:119;;;-1:-1:-1;1408:5:4;;1007:414;-1:-1:-1;;;1007:414:4:o;1746:148:12:-;1168:6;;1315:23;1168:6;681:10:2;1315:23:12;1307:68;;;;-1:-1:-1;;;1307:68:12;;9435:2:16;1307:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1307:68:12;9233:356:16;1307:68:12;1837:6:::1;::::0;1816:40:::1;::::0;1853:1:::1;::::0;1816:40:::1;1837:6;::::0;1816:40:::1;::::0;1853:1;;1816:40:::1;1867:6;:19:::0;;;::::1;::::0;;1746:148::o;928:417:5:-;987:16;1028:23;1045:5;1028:16;:23::i;:::-;1024:1;:27;1016:62;;;;-1:-1:-1;;;1016:62:5;;15260:2:16;1016:62:5;;;15242:21:16;15299:2;15279:18;;;15272:30;15338:24;15318:18;;;15311:52;15380:18;;1016:62:5;15058:346:16;1016:62:5;1089:18;1110:16;1120:5;1110:9;:16::i;:::-;1089:37;;1137:25;1179:10;1165:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1165:25:5;;1137:53;;1206:9;1201:111;1225:10;1221:1;:14;1201:111;;;1271:29;1291:5;1298:1;1271:19;:29::i;:::-;1257:8;1266:1;1257:11;;;;;;;;:::i;:::-;;;;;;;;;;:43;1237:3;;;;:::i;:::-;;;;1201:111;;;-1:-1:-1;1329:8:5;928:417;-1:-1:-1;;;928:417:5:o;6600:74:1:-;1168:6:12;;1315:23;1168:6;681:10:2;1315:23:12;1307:68;;;;-1:-1:-1;;;1307:68:12;;9435:2:16;1307:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1307:68:12;9233:356:16;1307:68:12;6648:12:1::1;:22:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;6600:74::o;3499:98:13:-;3550:7;3576;3584:5;3576:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;3499:98;-1:-1:-1;;3499:98:13:o;5916:100:1:-;1168:6:12;;1315:23;1168:6;681:10:2;1315:23:12;1307:68;;;;-1:-1:-1;;;1307:68:12;;9435:2:16;1307:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1307:68:12;9233:356:16;1307:68:12;5982:10:1::1;:30:::0;5916:100::o;5371:78::-;1168:6:12;;1315:23;1168:6;681:10:2;1315:23:12;1307:68;;;;-1:-1:-1;;;1307:68:12;;9435:2:16;1307:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1307:68:12;9233:356:16;1307:68:12;5428:5:1::1;:17:::0;5371:78::o;2147:470::-;2212:2;;:24;;;;;2225:10;2212:24;;;3422:74:16;2203:6:1;;2212:2;;;:12;;3395:18:16;;2212:24:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2203:33;;2239:9;2251:13;1439:7:5;:14;;1351:110;2251:13:1;2275:8;;2239:25;;-1:-1:-1;2275:8:1;;2267:45;;;;-1:-1:-1;;;2267:45:1;;14024:2:16;2267:45:1;;;14006:21:16;14063:2;14043:18;;;14036:30;14102:25;14082:18;;;14075:53;14145:18;;2267:45:1;13822:347:16;2267:45:1;2327:1;2323;:5;2315:14;;;;;;2369:1;2357:9;;:13;;;;:::i;:::-;2340:12;:31;;2332:53;;;;-1:-1:-1;;;2332:53:1;;14376:2:16;2332:53:1;;;14358:21:16;14415:1;14395:18;;;14388:29;14453:11;14433:18;;;14426:39;14482:18;;2332:53:1;14174:332:16;2332:53:1;2417:9;;2397:16;2401:12;2397:1;:16;:::i;:::-;:29;;2388:52;;;;-1:-1:-1;;;2388:52:1;;14376:2:16;2388:52:1;;;14358:21:16;14415:1;14395:18;;;14388:29;14453:11;14433:18;;;14426:39;14482:18;;2388:52:1;14174:332:16;2388:52:1;2472:12;2464:5;;:20;;;;:::i;:::-;2451:9;:33;;2443:64;;;;-1:-1:-1;;;2443:64:1;;14713:2:16;2443:64:1;;;14695:21:16;14752:2;14732:18;;;14725:30;14791:20;14771:18;;;14764:48;14829:18;;2443:64:1;14511:342:16;2443:64:1;2510:8;;;2526:9;2521:82;2545:12;2541:1;:16;2521:82;;;2567:32;2577:10;2589:5;2593:1;2589;:5;:::i;2567:32::-;2559:3;;;:::i;:::-;;;2521:82;;1778:104:4;1834:13;1867:7;1860:14;;;;;:::i;4148:427:1:-;1168:6:12;;1315:23;1168:6;681:10:2;1315:23:12;1307:68;;;;-1:-1:-1;;;1307:68:12;;9435:2:16;1307:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1307:68:12;9233:356:16;1307:68:12;4245:32:1;;::::1;4237:41;;;::::0;::::1;;4281:6;4294:9:::0;4306:13:::1;1439:7:5::0;:14;;1351:110;4306:13:1::1;4294:25;;4326:6;4322:58;4338:16:::0;;::::1;4322:58;;;4368:5;;4374:1;4368:8;;;;;;;:::i;:::-;;;;;;;4363:13;;;;;:::i;:::-;::::0;-1:-1:-1;4356:3:1::1;::::0;::::1;:::i;:::-;;;4322:58;;;-1:-1:-1::0;4400:9:1::1;::::0;4391:5:::1;4395:1:::0;4391;:5:::1;:::i;:::-;:18;;4382:41;;;::::0;-1:-1:-1;;;4382:41:1;;17708:2:16;4382:41:1::1;::::0;::::1;17690:21:16::0;17747:1;17727:18;;;17720:29;17785:10;17765:18;;;17758:38;17813:18;;4382:41:1::1;17506:331:16::0;4382:41:1::1;4426:8;;;4441:6;4437:123;4453:20:::0;;::::1;4437:123;;;4486:6;4482:75;4502:5;;4508:1;4502:8;;;;;;;:::i;:::-;;;;;;;4498:1;:12;4482:75;;;4519:34;4530:9;;4540:1;4530:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;4544:3:::0;::::1;::::0;::::1;:::i;:::-;;;4519:34;;;;;;;;;;;::::0;:9:::1;:34::i;:::-;4512:3;::::0;::::1;:::i;:::-;;;4482:75;;;-1:-1:-1::0;4475:3:1::1;::::0;::::1;:::i;:::-;;;4437:123;;;-1:-1:-1::0;;;;;;;4148:427:1:o;2532:295:4:-;2635:24;;;681:10:2;2635:24:4;;2627:62;;;;-1:-1:-1;;;2627:62:4;;18044:2:16;2627:62:4;;;18026:21:16;18083:2;18063:18;;;18056:30;18122:27;18102:18;;;18095:55;18167:18;;2627:62:4;17842:349:16;2627:62:4;681:10:2;2702:32:4;;;;:18;:32;;;;;;;;;:42;;;;;;;;;;;;:53;;;;;;;;;;;;;2771:48;;888:41:16;;;2702:42:4;;681:10:2;2771:48:4;;861:18:16;2771:48:4;;;;;;;2532:295;;:::o;3194:413:1:-;3255:9;3267:13;1439:7:5;:14;;1351:110;3267:13:1;3291:15;;3255:25;;-1:-1:-1;3291:15:1;;;;;3283:54;;;;-1:-1:-1;;;3283:54:1;;18398:2:16;3283:54:1;;;18380:21:16;18437:2;18417:18;;;18410:30;18476:27;18456:18;;;18449:55;18521:18;;3283:54:1;18196:349:16;3283:54:1;3364:9;;3348:12;:25;;3340:47;;;;-1:-1:-1;;;3340:47:1;;14376:2:16;3340:47:1;;;14358:21:16;14415:1;14395:18;;;14388:29;14453:11;14433:18;;;14426:39;14482:18;;3340:47:1;14174:332:16;3340:47:1;3418:9;;3398:16;3402:12;3398:1;:16;:::i;:::-;:29;;3390:51;;;;-1:-1:-1;;;3390:51:1;;14376:2:16;3390:51:1;;;14358:21:16;14415:1;14395:18;;;14388:29;14453:11;14433:18;;;14426:39;14482:18;;3390:51:1;14174:332:16;3390:51:1;3473:12;3465:5;;:20;;;;:::i;:::-;3452:9;:33;;3444:64;;;;-1:-1:-1;;;3444:64:1;;14713:2:16;3444:64:1;;;14695:21:16;14752:2;14732:18;;;14725:30;14791:20;14771:18;;;14764:48;14829:18;;3444:64:1;14511:342:16;3444:64:1;3516:9;3511:82;3535:12;3531:1;:16;3511:82;;;3557:32;3567:10;3579:5;3583:1;3579;:5;:::i;3557:32::-;3549:3;;;:::i;:::-;;;3511:82;;3539:328:4;3714:41;681:10:2;3747:7:4;3714:18;:41::i;:::-;3706:103;;;;-1:-1:-1;;;3706:103:4;;13606:2:16;3706:103:4;;;13588:21:16;13645:2;13625:18;;;13618:30;13684:34;13664:18;;;13657:62;13755:19;13735:18;;;13728:47;13792:19;;3706:103:4;13404:413:16;3706:103:4;3820:39;3834:4;3840:2;3844:7;3853:5;3820:13;:39::i;6429:85:1:-;1168:6:12;;1315:23;1168:6;681:10:2;1315:23:12;1307:68;;;;-1:-1:-1;;;1307:68:12;;9435:2:16;1307:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1307:68:12;9233:356:16;1307:68:12;6485:15:1::1;:25:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;6429:85::o;6348:78::-;1168:6:12;;1315:23;1168:6;681:10:2;1315:23:12;1307:68;;;;-1:-1:-1;;;1307:68:12;;9435:2:16;1307:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1307:68:12;9233:356:16;1307:68:12;6397:15:1::1;:25:::0;;;::::1;;;;::::0;;;::::1;::::0;;;::::1;::::0;;6348:78::o;5074:278::-;5147:13;5184:9;;5173:7;:20;;5165:29;;;;;;5197:28;5228:10;:8;:10::i;:::-;5197:41;;5279:1;5254:14;5248:28;:32;:100;;;;;;;;;;;;;;;;;5307:14;5323:18;:7;:16;:18::i;:::-;5290:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5248:100;5241:107;5074:278;-1:-1:-1;;;5074:278:1:o;4607:163::-;1168:6:12;;1315:23;1168:6;681:10:2;1315:23:12;1307:68;;;;-1:-1:-1;;;1307:68:12;;9435:2:16;1307:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1307:68:12;9233:356:16;1307:68:12;4684:9:1::1;4680:87;4695:21:::0;;::::1;4680:87;;;4754:9;;4725:11;:26;4737:10;;4748:1;4737:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;4725:26;;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;4725:26:1;:38;4718:3;::::1;::::0;::::1;:::i;:::-;;;;4680:87;;1715:414:::0;1775:9;1787:13;1439:7:5;:14;;1351:110;1787:13:1;1811:12;;1775:25;;-1:-1:-1;1811:12:1;;;;;1803:51;;;;-1:-1:-1;;;1803:51:1;;19227:2:16;1803:51:1;;;19209:21:16;19266:2;19246:18;;;19239:30;19305:27;19285:18;;;19278:55;19350:18;;1803:51:1;19025:349:16;1803:51:1;1881:13;;1865:12;:29;;1857:51;;;;-1:-1:-1;;;1857:51:1;;14376:2:16;1857:51:1;;;14358:21:16;14415:1;14395:18;;;14388:29;14453:11;14433:18;;;14426:39;14482:18;;1857:51:1;14174:332:16;1857:51:1;1940:9;;1920:16;1924:12;1920:1;:16;:::i;:::-;:29;;1911:52;;;;-1:-1:-1;;;1911:52:1;;14376:2:16;1911:52:1;;;14358:21:16;14415:1;14395:18;;;14388:29;14453:11;14433:18;;;14426:39;14482:18;;1911:52:1;14174:332:16;1911:52:1;1995:12;1987:5;;:20;;;;:::i;:::-;1974:9;:33;;1966:64;;;;-1:-1:-1;;;1966:64:1;;14713:2:16;1966:64:1;;;14695:21:16;14752:2;14732:18;;;14725:30;14791:20;14771:18;;;14764:48;14829:18;;1966:64:1;14511:342:16;1966:64:1;2038:9;2033:82;2057:12;2053:1;:16;2033:82;;;2079:32;2089:10;2101:5;2105:1;2101;:5;:::i;2079:32::-;2071:3;;;:::i;:::-;;;2033:82;;2049:244:12;1168:6;;1315:23;1168:6;681:10:2;1315:23:12;1307:68;;;;-1:-1:-1;;;1307:68:12;;9435:2:16;1307:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1307:68:12;9233:356:16;1307:68:12;2138:22:::1;::::0;::::1;2130:73;;;::::0;-1:-1:-1;;;2130:73:12;;19581:2:16;2130:73:12::1;::::0;::::1;19563:21:16::0;19620:2;19600:18;;;19593:30;19659:34;19639:18;;;19632:62;19730:8;19710:18;;;19703:36;19756:19;;2130:73:12::1;19379:402:16::0;2130:73:12::1;2240:6;::::0;2219:38:::1;::::0;::::1;::::0;;::::1;::::0;2240:6:::1;::::0;2219:38:::1;::::0;2240:6:::1;::::0;2219:38:::1;2268:6;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;2049:244::o;6517:80:1:-;1168:6:12;;1315:23;1168:6;681:10:2;1315:23:12;1307:68;;;;-1:-1:-1;;;1307:68:12;;9435:2:16;1307:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1307:68:12;9233:356:16;1307:68:12;6567:16:1::1;:26:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;6517:80::o;6040:106::-;1168:6:12;;1315:23;1168:6;681:10:2;1315:23:12;1307:68;;;;-1:-1:-1;;;1307:68:12;;9435:2:16;1307:68:12;;;9417:21:16;;;9454:18;;;9447:30;9513:34;9493:18;;;9486:62;9565:18;;1307:68:12;9233:356:16;1307:68:12;6109:13:1::1;:33:::0;6040:106::o;696:305:4:-;798:4;835:40;;;850:25;835:40;;:105;;-1:-1:-1;892:48:4;;;907:33;892:48;835:105;:158;;;-1:-1:-1;886:25:3;871:40;;;;957:36:4;763:155:3;4196::4;4295:7;:14;4261:4;;4285:24;;:58;;;;;4341:1;4313:30;;:7;4321;4313:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;:30;;4278:65;4196:155;-1:-1:-1;;4196:155:4:o;6345:174::-;6420:24;;;;:15;:24;;;;;:29;;;;;;;;;;;;;:24;;6474:23;6420:24;6474:14;:23::i;:::-;6465:46;;;;;;;;;;;;6345:174;;:::o;2100:397:0:-;2215:6;2190:21;:31;;2182:73;;;;-1:-1:-1;;;2182:73:0;;19988:2:16;2182:73:0;;;19970:21:16;20027:2;20007:18;;;20000:30;20066:31;20046:18;;;20039:59;20115:18;;2182:73:0;19786:353:16;2182:73:0;2347:12;2365:9;:14;;2388:6;2365:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2346:54;;;2419:7;2411:78;;;;-1:-1:-1;;;2411:78:0;;20346:2:16;2411:78:0;;;20328:21:16;20385:2;20365:18;;;20358:30;20424:34;20404:18;;;20397:62;20495:28;20475:18;;;20468:56;20541:19;;2411:78:0;20144:422:16;4354:348:4;4447:4;4472:16;4480:7;4472;:16::i;:::-;4464:73;;;;-1:-1:-1;;;4464:73:4;;20773:2:16;4464:73:4;;;20755:21:16;20812:2;20792:18;;;20785:30;20851:34;20831:18;;;20824:62;20922:14;20902:18;;;20895:42;20954:19;;4464:73:4;20571:408:16;4464:73:4;4548:13;4564:23;4579:7;4564:14;:23::i;:::-;4548:39;;4617:5;4606:16;;:7;:16;;;:51;;;;4650:7;4626:31;;:20;4638:7;4626:11;:20::i;:::-;:31;;;4606:51;:87;;;-1:-1:-1;2954:25:4;;;;2930:4;2954:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;4661:32;4598:96;4354:348;-1:-1:-1;;;;4354:348:4:o;5826:516::-;5985:4;5958:31;;:23;5973:7;5958:14;:23::i;:::-;:31;;;5950:85;;;;-1:-1:-1;;;5950:85:4;;21186:2:16;5950:85:4;;;21168:21:16;21225:2;21205:18;;;21198:30;21264:34;21244:18;;;21237:62;21335:11;21315:18;;;21308:39;21364:19;;5950:85:4;20984:405:16;5950:85:4;6054:16;;;6046:65;;;;-1:-1:-1;;;6046:65:4;;21596:2:16;6046:65:4;;;21578:21:16;21635:2;21615:18;;;21608:30;21674:34;21654:18;;;21647:62;21745:6;21725:18;;;21718:34;21769:19;;6046:65:4;21394:400:16;6046:65:4;6228:29;6245:1;6249:7;6228:8;:29::i;:::-;6287:2;6268:7;6276;6268:16;;;;;;;;:::i;:::-;;;;;;;;;:21;;;;;;;;;;;6307:27;;6326:7;;6307:27;;;;;;;;;;6268:16;6307:27;5826:516;;;:::o;4818:321::-;4948:18;4954:2;4958:7;4948:5;:18::i;:::-;4999:54;5030:1;5034:2;5038:7;5047:5;4999:22;:54::i;:::-;4977:154;;;;-1:-1:-1;;;4977:154:4;;22001:2:16;4977:154:4;;;21983:21:16;22040:2;22020:18;;;22013:30;22079:34;22059:18;;;22052:62;22150:20;22130:18;;;22123:48;22188:19;;4977:154:4;21799:414:16;3878:315:4;4035:28;4045:4;4051:2;4055:7;4035:9;:28::i;:::-;4082:48;4105:4;4111:2;4115:7;4124:5;4082:22;:48::i;:::-;4074:111;;;;-1:-1:-1;;;4074:111:4;;22001:2:16;4074:111:4;;;21983:21:16;22040:2;22020:18;;;22013:30;22079:34;22059:18;;;22052:62;22150:20;22130:18;;;22123:48;22188:19;;4074:111:4;21799:414:16;4984:87:1;5035:13;5060:7;5053:14;;;;;:::i;288:723:15:-;344:13;565:10;561:53;;-1:-1:-1;;592:10:15;;;;;;;;;;;;;;;;;;288:723::o;561:53::-;639:5;624:12;680:78;687:9;;680:78;;713:8;;;;:::i;:::-;;-1:-1:-1;736:10:15;;-1:-1:-1;744:2:15;736:10;;:::i;:::-;;;680:78;;;768:19;800:6;790:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;790:17:15;;768:39;;818:154;825:10;;818:154;;852:11;862:1;852:11;;:::i;:::-;;-1:-1:-1;921:10:15;929:2;921:5;:10;:::i;:::-;908:24;;:2;:24;:::i;:::-;895:39;;878:6;885;878:14;;;;;;;;:::i;:::-;;;;:56;;;;;;;;;;-1:-1:-1;949:11:15;958:2;949:11;;:::i;:::-;;;818:154;;5142:346:4;5222:16;;;5214:61;;;;-1:-1:-1;;;5214:61:4;;22537:2:16;5214:61:4;;;22519:21:16;;;22556:18;;;22549:30;22615:34;22595:18;;;22588:62;22667:18;;5214:61:4;22335:356:16;5214:61:4;5295:16;5303:7;5295;:16::i;:::-;5294:17;5286:58;;;;-1:-1:-1;;;5286:58:4;;22898:2:16;5286:58:4;;;22880:21:16;22937:2;22917:18;;;22910:30;22976;22956:18;;;22949:58;23024:18;;5286:58:4;22696:352:16;5286:58:4;5413:7;:16;;;;;;;-1:-1:-1;5413:16:4;;;;;;;;;;;;;;;;;;5447:33;;5472:7;;-1:-1:-1;5447:33:4;;-1:-1:-1;;5447:33:4;5142:346;;:::o;6522:799::-;6677:4;6698:13;;;1110:20:0;1149:8;6694:620:4;;6734:72;;;;;:36;;;;;;:72;;681:10:2;;6785:4:4;;6791:7;;6800:5;;6734:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6734:72:4;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;6730:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6976:13:4;;6972:272;;7019:60;;-1:-1:-1;;;7019:60:4;;22001:2:16;7019:60:4;;;21983:21:16;22040:2;22020:18;;;22013:30;22079:34;22059:18;;;22052:62;22150:20;22130:18;;;22123:48;22188:19;;7019:60:4;21799:414:16;6972:272:4;7194:6;7188:13;7179:6;7175:2;7171:15;7164:38;6730:529;6857:51;;6867:41;6857:51;;-1:-1:-1;6850:58:4;;6694:620;-1:-1:-1;7298:4:4;6522:799;;;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;316:177:16;401:66;394:5;390:78;383:5;380:89;370:117;;483:1;480;473:12;498:245;556:6;609:2;597:9;588:7;584:23;580:32;577:52;;;625:1;622;615:12;577:52;664:9;651:23;683:30;707:5;683:30;:::i;940:184::-;992:77;989:1;982:88;1089:4;1086:1;1079:15;1113:4;1110:1;1103:15;1129:691;1194:5;1224:18;1265:2;1257:6;1254:14;1251:40;;;1271:18;;:::i;:::-;1405:2;1399:9;1471:2;1459:15;;1310:66;1455:24;;;1481:2;1451:33;1447:42;1435:55;;;1505:18;;;1525:22;;;1502:46;1499:72;;;1551:18;;:::i;:::-;1591:10;1587:2;1580:22;1620:6;1611:15;;1650:6;1642;1635:22;1690:3;1681:6;1676:3;1672:16;1669:25;1666:45;;;1707:1;1704;1697:12;1666:45;1757:6;1752:3;1745:4;1737:6;1733:17;1720:44;1812:1;1805:4;1796:6;1788;1784:19;1780:30;1773:41;;;;1129:691;;;;;:::o;1825:451::-;1894:6;1947:2;1935:9;1926:7;1922:23;1918:32;1915:52;;;1963:1;1960;1953:12;1915:52;2003:9;1990:23;2036:18;2028:6;2025:30;2022:50;;;2068:1;2065;2058:12;2022:50;2091:22;;2144:4;2136:13;;2132:27;-1:-1:-1;2122:55:16;;2173:1;2170;2163:12;2122:55;2196:74;2262:7;2257:2;2244:16;2239:2;2235;2231:11;2196:74;:::i;2281:258::-;2353:1;2363:113;2377:6;2374:1;2371:13;2363:113;;;2453:11;;;2447:18;2434:11;;;2427:39;2399:2;2392:10;2363:113;;;2494:6;2491:1;2488:13;2485:48;;;-1:-1:-1;;2529:1:16;2511:16;;2504:27;2281:258::o;2544:317::-;2586:3;2624:5;2618:12;2651:6;2646:3;2639:19;2667:63;2723:6;2716:4;2711:3;2707:14;2700:4;2693:5;2689:16;2667:63;:::i;:::-;2775:2;2763:15;2780:66;2759:88;2750:98;;;;2850:4;2746:109;;2544:317;-1:-1:-1;;2544:317:16:o;2866:220::-;3015:2;3004:9;2997:21;2978:4;3035:45;3076:2;3065:9;3061:18;3053:6;3035:45;:::i;3091:180::-;3150:6;3203:2;3191:9;3182:7;3178:23;3174:32;3171:52;;;3219:1;3216;3209:12;3171:52;-1:-1:-1;3242:23:16;;3091:180;-1:-1:-1;3091:180:16:o;3507:154::-;3593:42;3586:5;3582:54;3575:5;3572:65;3562:93;;3651:1;3648;3641:12;3666:315;3734:6;3742;3795:2;3783:9;3774:7;3770:23;3766:32;3763:52;;;3811:1;3808;3801:12;3763:52;3850:9;3837:23;3869:31;3894:5;3869:31;:::i;:::-;3919:5;3971:2;3956:18;;;;3943:32;;-1:-1:-1;;;3666:315:16:o;4168:255::-;4235:6;4288:2;4276:9;4267:7;4263:23;4259:32;4256:52;;;4304:1;4301;4294:12;4256:52;4343:9;4330:23;4362:31;4387:5;4362:31;:::i;4680:456::-;4757:6;4765;4773;4826:2;4814:9;4805:7;4801:23;4797:32;4794:52;;;4842:1;4839;4832:12;4794:52;4881:9;4868:23;4900:31;4925:5;4900:31;:::i;:::-;4950:5;-1:-1:-1;5007:2:16;4992:18;;4979:32;5020:33;4979:32;5020:33;:::i;:::-;4680:456;;5072:7;;-1:-1:-1;;;5126:2:16;5111:18;;;;5098:32;;4680:456::o;5141:160::-;5206:20;;5262:13;;5255:21;5245:32;;5235:60;;5291:1;5288;5281:12;5235:60;5141:160;;;:::o;5306:180::-;5362:6;5415:2;5403:9;5394:7;5390:23;5386:32;5383:52;;;5431:1;5428;5421:12;5383:52;5454:26;5470:9;5454:26;:::i;5491:367::-;5554:8;5564:6;5618:3;5611:4;5603:6;5599:17;5595:27;5585:55;;5636:1;5633;5626:12;5585:55;-1:-1:-1;5659:20:16;;5702:18;5691:30;;5688:50;;;5734:1;5731;5724:12;5688:50;5771:4;5763:6;5759:17;5747:29;;5831:3;5824:4;5814:6;5811:1;5807:14;5799:6;5795:27;5791:38;5788:47;5785:67;;;5848:1;5845;5838:12;5785:67;5491:367;;;;;:::o;5863:437::-;5949:6;5957;6010:2;5998:9;5989:7;5985:23;5981:32;5978:52;;;6026:1;6023;6016:12;5978:52;6066:9;6053:23;6099:18;6091:6;6088:30;6085:50;;;6131:1;6128;6121:12;6085:50;6170:70;6232:7;6223:6;6212:9;6208:22;6170:70;:::i;:::-;6259:8;;6144:96;;-1:-1:-1;5863:437:16;-1:-1:-1;;;;5863:437:16:o;6305:632::-;6476:2;6528:21;;;6598:13;;6501:18;;;6620:22;;;6447:4;;6476:2;6699:15;;;;6673:2;6658:18;;;6447:4;6742:169;6756:6;6753:1;6750:13;6742:169;;;6817:13;;6805:26;;6886:15;;;;6851:12;;;;6778:1;6771:9;6742:169;;;-1:-1:-1;6928:3:16;;6305:632;-1:-1:-1;;;;;;6305:632:16:o;6942:773::-;7064:6;7072;7080;7088;7141:2;7129:9;7120:7;7116:23;7112:32;7109:52;;;7157:1;7154;7147:12;7109:52;7197:9;7184:23;7226:18;7267:2;7259:6;7256:14;7253:34;;;7283:1;7280;7273:12;7253:34;7322:70;7384:7;7375:6;7364:9;7360:22;7322:70;:::i;:::-;7411:8;;-1:-1:-1;7296:96:16;-1:-1:-1;7499:2:16;7484:18;;7471:32;;-1:-1:-1;7515:16:16;;;7512:36;;;7544:1;7541;7534:12;7512:36;;7583:72;7647:7;7636:8;7625:9;7621:24;7583:72;:::i;:::-;6942:773;;;;-1:-1:-1;7674:8:16;-1:-1:-1;;;;6942:773:16:o;7720:315::-;7785:6;7793;7846:2;7834:9;7825:7;7821:23;7817:32;7814:52;;;7862:1;7859;7852:12;7814:52;7901:9;7888:23;7920:31;7945:5;7920:31;:::i;:::-;7970:5;-1:-1:-1;7994:35:16;8025:2;8010:18;;7994:35;:::i;:::-;7984:45;;7720:315;;;;;:::o;8040:795::-;8135:6;8143;8151;8159;8212:3;8200:9;8191:7;8187:23;8183:33;8180:53;;;8229:1;8226;8219:12;8180:53;8268:9;8255:23;8287:31;8312:5;8287:31;:::i;:::-;8337:5;-1:-1:-1;8394:2:16;8379:18;;8366:32;8407:33;8366:32;8407:33;:::i;:::-;8459:7;-1:-1:-1;8513:2:16;8498:18;;8485:32;;-1:-1:-1;8568:2:16;8553:18;;8540:32;8595:18;8584:30;;8581:50;;;8627:1;8624;8617:12;8581:50;8650:22;;8703:4;8695:13;;8691:27;-1:-1:-1;8681:55:16;;8732:1;8729;8722:12;8681:55;8755:74;8821:7;8816:2;8803:16;8798:2;8794;8790:11;8755:74;:::i;:::-;8745:84;;;8040:795;;;;;;;:::o;8840:388::-;8908:6;8916;8969:2;8957:9;8948:7;8944:23;8940:32;8937:52;;;8985:1;8982;8975:12;8937:52;9024:9;9011:23;9043:31;9068:5;9043:31;:::i;:::-;9093:5;-1:-1:-1;9150:2:16;9135:18;;9122:32;9163:33;9122:32;9163:33;:::i;:::-;9215:7;9205:17;;;8840:388;;;;;:::o;9594:437::-;9673:1;9669:12;;;;9716;;;9737:61;;9791:4;9783:6;9779:17;9769:27;;9737:61;9844:2;9836:6;9833:14;9813:18;9810:38;9807:218;;;9881:77;9878:1;9871:88;9982:4;9979:1;9972:15;10010:4;10007:1;10000:15;9807:218;;9594:437;;;:::o;11683:184::-;11735:77;11732:1;11725:88;11832:4;11829:1;11822:15;11856:4;11853:1;11846:15;11872:128;11912:3;11943:1;11939:6;11936:1;11933:13;11930:39;;;11949:18;;:::i;:::-;-1:-1:-1;11985:9:16;;11872:128::o;12005:228::-;12045:7;12171:1;12103:66;12099:74;12096:1;12093:81;12088:1;12081:9;12074:17;12070:105;12067:131;;;12178:18;;:::i;:::-;-1:-1:-1;12218:9:16;;12005:228::o;12238:184::-;12290:77;12287:1;12280:88;12387:4;12384:1;12377:15;12411:4;12408:1;12401:15;12427:120;12467:1;12493;12483:35;;12498:18;;:::i;:::-;-1:-1:-1;12532:9:16;;12427:120::o;12552:125::-;12592:4;12620:1;12617;12614:8;12611:34;;;12625:18;;:::i;:::-;-1:-1:-1;12662:9:16;;12552:125::o;14858:195::-;14897:3;14928:66;14921:5;14918:77;14915:103;;;14998:18;;:::i;:::-;-1:-1:-1;15045:1:16;15034:13;;14858:195::o;15409:184::-;15461:77;15458:1;15451:88;15558:4;15555:1;15548:15;15582:4;15579:1;15572:15;17317:184;17387:6;17440:2;17428:9;17419:7;17415:23;17411:32;17408:52;;;17456:1;17453;17446:12;17408:52;-1:-1:-1;17479:16:16;;17317:184;-1:-1:-1;17317:184:16:o;18550:470::-;18729:3;18767:6;18761:13;18783:53;18829:6;18824:3;18817:4;18809:6;18805:17;18783:53;:::i;:::-;18899:13;;18858:16;;;;18921:57;18899:13;18858:16;18955:4;18943:17;;18921:57;:::i;:::-;18994:20;;18550:470;-1:-1:-1;;;;18550:470:16:o;22218:112::-;22250:1;22276;22266:35;;22281:18;;:::i;:::-;-1:-1:-1;22315:9:16;;22218:112::o;23053:512::-;23247:4;23276:42;23357:2;23349:6;23345:15;23334:9;23327:34;23409:2;23401:6;23397:15;23392:2;23381:9;23377:18;23370:43;;23449:6;23444:2;23433:9;23429:18;23422:34;23492:3;23487:2;23476:9;23472:18;23465:31;23513:46;23554:3;23543:9;23539:19;23531:6;23513:46;:::i;:::-;23505:54;23053:512;-1:-1:-1;;;;;;23053:512:16:o;23570:249::-;23639:6;23692:2;23680:9;23671:7;23667:23;23663:32;23660:52;;;23708:1;23705;23698:12;23660:52;23740:9;23734:16;23759:30;23783:5;23759:30;:::i
Swarm Source
ipfs://e3ebda94fa81878846de897394983763496a10c25143f70df23af7e5ad9774f9
Loading...
Loading
Loading...
Loading
[ 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.