Contract 0x9c466304100861C8a5864939eb5681233F13c20d

Contract Overview

Vending Machines NFT: VMG Token
Balance:
0.506135704245738721 AVAX

AVAX Value:
$7.18 (@ $14.19/AVAX)

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x3f8a7e91591c3cb1ab75f52e58ad7804cb0f99f5eae69b4722d659a9c7cc5ac9Set Approval For...228704712022-11-26 15:26:358 days 16 hrs ago0xdbc35fb4ed163425953928fc2c0d6f9425855035 IN  Vending Machines NFT: VMG Token0 AVAX0.0007719185 26.5
0x7ed1ced4b6902ae291b95d60b1f4f11ba0e27ebf1647c4f034ad5b6787a3e04aSet Approval For...228578752022-11-26 8:06:208 days 23 hrs ago0xec5702441bd31ce0c8a6b8b951bb388276f1321d IN  Vending Machines NFT: VMG Token0 AVAX0.000774145654 26.576458309
0x812b4d571fb3195c135c2c783b5084d938924204390b7550a22c4c042326c165Set Approval For...228057392022-11-25 2:00:1010 days 5 hrs ago0xab7727c55155234b7a53eda30cead15902cca5e8 IN  Vending Machines NFT: VMG Token0 AVAX0.00125072012 27.047860557
0xd3ae259d57042283f9329063868cbc3c63929915fd288ab76775c64a4081cc9eSet Approval For...226445762022-11-21 6:02:1314 days 1 hr ago0xdb1893cee7e4415756f4a09c8227ec80c40b48cd IN  Vending Machines NFT: VMG Token0 AVAX0.00125608115 27.213232025
0x602072e921dd02d6d39e5c7ce3793758d52259e499182d62061a4ab0833f78e8Set Approval For...226272722022-11-20 20:08:3514 days 11 hrs ago0x9f5c5f1d7887e9bc122200f0f7a4744529631d49 IN  Vending Machines NFT: VMG Token0 AVAX0.0012253865 26.5
0xbfb94e9d1d88c0662b9ff1d70045d03db552c53c952a9834afec279ddf960e5aSafe Transfer Fr...226184282022-11-20 15:03:5714 days 16 hrs ago0x8649771e73fd4ecf939636af1d0b47dcb1982a1f IN  Vending Machines NFT: VMG Token0 AVAX0.0049352933 27.425
0xa9390e3b945d931165de183cd6d0779336ed063168e77a27a6ddb263934a7c61Set Approval For...226071292022-11-20 8:33:4014 days 23 hrs ago0xa138ec43525f7f64e6d07386c0b30e2ff8e80eed IN  Vending Machines NFT: VMG Token0 AVAX0.0012253865 26.5
0x07712b8a750d13d1463f62602b4f8b7c5d4e582b3bc038ecf0dbd2b08825ad2cSet Approval For...225853422022-11-19 19:46:0515 days 11 hrs ago0x6954f7add88b0c0a2761a5dd0a56913df88894c8 IN  Vending Machines NFT: VMG Token0 AVAX0.001264795392 27.35225
0xff86438aaa0de058d97d6f9710477dbe90680f5393083a9fb71212ce586198e2Set Approval For...225520932022-11-19 0:14:5916 days 7 hrs ago0x93083415e91da89c8bc92be621993bcc85e8c200 IN  Vending Machines NFT: VMG Token0 AVAX0.001230746425 26.664350483
0x48839e57d95d714848b5ba9cc0d5662f0f5b337ffbafd8dbfdbdb8fcf6ff3808Set Approval For...225378542022-11-18 15:59:4916 days 15 hrs ago0x274a0b7583192b8a7b243b531e983c6b54675423 IN  Vending Machines NFT: VMG Token0 AVAX0.0012253865 26.5
0x661f38a9a2ffb86012a015cd399450d4d882ddf1292ab9d680fdc966bc7465eeSet Approval For...225116312022-11-18 0:40:2817 days 6 hrs ago0xa309e549a70f2aa1b6a403b5364e00517a645ead IN  Vending Machines NFT: VMG Token0 AVAX0.0012253865 26.5
0xa571e477593f0e8246c9ff494cc2072516795bf8c75e6e8c6b28eacae00fcd16Air Drop VM Owne...224759122022-11-17 3:55:5218 days 3 hrs agoVending Machines NFT: Deployer IN  Vending Machines NFT: VMG Token0 AVAX0.00725283 26
0xe82e7e571fdb06f9056f50ce1f74b8710602cf67d35914560c7af6c100fd3a1cAir Drop VM Owne...224687682022-11-16 23:46:1818 days 7 hrs agoVending Machines NFT: Deployer IN  Vending Machines NFT: VMG Token0 AVAX0.015799186 26
0xb52d4f95c555b1809e0cbb3a3dca31c93dd84406e6b62ca0714c730301da3195Set Approval For...224405152022-11-16 7:23:1019 days 16 mins ago0xd1e0199fb69000ec1d6f87d3d32a1affc9fdcb08 IN  Vending Machines NFT: VMG Token0 AVAX0.000794688129 27.2816825
0x5835166c1e81a986751f0cadde26d4a528c575be7e431f7f9c2285366c08168dSet Approval For...224340632022-11-16 3:34:0519 days 4 hrs ago0xedfa2a7217bd59e30ae8e8c5915db1bfe9e46255 IN  Vending Machines NFT: VMG Token0 AVAX0.0007719185 26.5
0x2cfb44d99f69dabedea97396663b51457d5d0d6171fa6b5870f04ad86c23323dSet Approval For...224267722022-11-15 23:18:3819 days 8 hrs ago0xfbe8529277c7db9187fce93a214bcfbab6e8b1c8 IN  Vending Machines NFT: VMG Token0 AVAX0.001233754192 26.680958297
0xaba6c1881c27c19ac16762f297fd20a59e6903c3eb161ca8c3ba350b7b145e2dSet Approval For...223674112022-11-14 13:07:1720 days 18 hrs ago0xd5cf6ca3976b64ea10350cf0aa09ba9951060a10 IN  Vending Machines NFT: VMG Token0 AVAX0.00124573254 26.94
0x389ed99ef58bc10e307e37b1fe9c5e7749803f9b8273ac18cf115f8af5b51e67Safe Transfer Fr...223645102022-11-14 11:28:0820 days 20 hrs ago0x2ed087297c56f469c033ff2188a5916f4478063c IN  Vending Machines NFT: VMG Token0 AVAX0.005308875 27.5
0x19806c783a0459f5f53a8774ff35ddb8609bedaed89416b538e367d5f1f17fdaSet Approval For...223315142022-11-13 16:39:0921 days 15 hrs ago0xccc265c161ca71926b1312a9d0e54cb35d7135c4 IN  Vending Machines NFT: VMG Token0 AVAX0.001303610052 28.191649243
0xb403915ba2df55da8d8ad2cee7b703107bf8c022d9091597b5e7067755f06cc3Safe Transfer Fr...222904012022-11-12 17:02:2622 days 14 hrs ago0xe329e52a2da7d3433a8133a240a1d2e7185b7c76 IN  Vending Machines NFT: VMG Token0 AVAX0.00502546 27.5
0x3917c116baaebc898d67b897e8d23ef729bb2de75c0443584d67d057dbb83ad1Safe Transfer Fr...222903942022-11-12 17:02:1222 days 14 hrs ago0xe329e52a2da7d3433a8133a240a1d2e7185b7c76 IN  Vending Machines NFT: VMG Token0 AVAX0.00455521 27.5
0x42c2cbc9768be24e4941679899126eee62257800ddfbbc2aaa3d07a349faa9a2Safe Transfer Fr...222903632022-11-12 17:01:1022 days 14 hrs ago0xe329e52a2da7d3433a8133a240a1d2e7185b7c76 IN  Vending Machines NFT: VMG Token0 AVAX0.00502546 27.5
0xbcfd8ab551c041526acdd56519a6cf66c1ff39fd00ba76fad3350e80d2f8061cSet Approval For...222263752022-11-11 4:31:1524 days 3 hrs ago0xa6813dfa87843056d5cc18b396ded7d90bcc45dd IN  Vending Machines NFT: VMG Token0 AVAX0.001262497803 27.35225
0xbd3347175bad8c346302832f42b0ed03f1d3ea9d67d109c7e6d3cec28990c014Set Approval For...220454882022-11-06 23:12:1128 days 8 hrs ago0xfbe8529277c7db9187fce93a214bcfbab6e8b1c8 IN  Vending Machines NFT: VMG Token0 AVAX0.0012253865 26.5
0x877b4d6e0bb1d706bafd46e4a3078740fa135c5d9d73b5fe5890a1ae3fc87d56Set Approval For...220404532022-11-06 20:20:5228 days 11 hrs ago0xfbe8529277c7db9187fce93a214bcfbab6e8b1c8 IN  Vending Machines NFT: VMG Token0 AVAX0.0012253865 26.5
[ Download CSV Export 

OVERVIEW

VM Gorillas NFT is your key to our interactive P2E game. How many coins can you collect?

Latest 11 internal transactions
Parent Txn Hash Block From To Value
0x7f2b0613eb5f7bb7b095b1c2b244a571ce13bb25c75fcc5d499e37e62f4405e9217535072022-10-31 1:05:4835 days 6 hrs ago Vending Machines NFT: VMG TokenVending Machines NFT: Deployer1.853199999000004286 AVAX
0x7f2b0613eb5f7bb7b095b1c2b244a571ce13bb25c75fcc5d499e37e62f4405e9217535072022-10-31 1:05:4835 days 6 hrs ago Vending Machines NFT: VMG Token0x1070aa92aa80d0bdf14692352726bc22cd8d91300.370640000000000857 AVAX
0x7f2b0613eb5f7bb7b095b1c2b244a571ce13bb25c75fcc5d499e37e62f4405e9217535072022-10-31 1:05:4835 days 6 hrs ago Vending Machines NFT: VMG Token0x4057f6d0c49358b88a318dcb230f7d3140fa78de1.482560000000003428 AVAX
0x84c239db5ac35a06d754d5284b0349c92ce8f97b741e92682f4b13dc84d1bebb207928892022-10-08 7:14:4258 days 25 mins ago 0xbf6bfe5d6b86308cf3b7f147dd03ef11f80bfde3 Vending Machines NFT: VMG Token0.0018 AVAX
0xa821557fcae1d885229b8dc7a7057ae21788fc3df9ea176192fdb650a4a7babd207181072022-10-06 12:24:3759 days 19 hrs ago Vending Machines NFT: VMG Token0x15384d0578cfcba6c9e29777599871c8e08785130.291000000000000504 AVAX
0x76ccc83625c1143692cdccfc79bf74df003a7379bfa18c043aabe2bb42878fff157476082022-06-08 5:29:29180 days 2 hrs ago Vending Machines NFT: VMG Token0x7771b2d01828bf9f5773e221dc8ed9d7425b46820.194000000000000912 AVAX
0xf41b8c4efb924dce4d862af782bd4981cb9abfbd631433cb7213e76d32c07d03157475942022-06-08 5:29:01180 days 2 hrs ago Vending Machines NFT: VMG Token0x7771b2d01828bf9f5773e221dc8ed9d7425b46820.194000000000000912 AVAX
0x23941b3657903474bd225869ada2b2cd883828819c9ed606bc3b7f9b944ba592113071802022-02-23 21:00:48284 days 10 hrs ago Vending Machines NFT: VMG Token0xbf52c41e7696e01114c253031a688fd8ceee238f0.00008809891808346 AVAX
0x1d828fae33f3ae00f4b4b60ad6ce4aa658d64d0c12543176c04dae9643a82b51112195972022-02-21 19:14:28286 days 12 hrs ago Vending Machines NFT: VMG Token0xbd73518c1974a4408ebdfac9dfc09a92f7565f4b0.00002936630602782 AVAX
0x9ad9113d75c67e45f82fba0500aca517721c578486587aaefb013978c47b2013112099372022-02-21 13:43:21286 days 17 hrs ago Vending Machines NFT: VMG Token0x2778d8ca0807b2cebc3472167076ba0198d90fc60.00008809891808346 AVAX
0xd4ac218a9466fb486b4611f5ef8cf87a3c6686b8cc9981c2a49d1cd793c08b7c112064562022-02-21 11:45:49286 days 19 hrs ago Vending Machines NFT: VMG Token0x4226f83b6761fe3259505a5edf31ae4657582d150.00005873261205564 AVAX
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
VMGorillas

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at snowtrace.io on 2022-02-07
*/

// SPDX-License-Identifier: MIT
// Created by petdomaa100 & modified by xrpant

pragma solidity 0.8.11;


library Strings {
	function toString(uint256 value) internal pure returns(string memory) {
		if (value == 0) return "0";

		uint256 temp = value;
		uint256 digits;

		while (temp != 0) {
			digits++;
			temp /= 10;
		}

		bytes memory buffer = new bytes(digits);

		while (value != 0) {
			digits -= 1;
			buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
			value /= 10;
		}

		return string(buffer);
	}
}

library Address {
	function isContract(address account) internal view returns(bool) {
		return account.code.length > 0;
	}
}

library Counters {
	struct Counter {
		uint256 _value;
	}


	function current(Counter storage counter) internal view returns(uint256) {
		return counter._value;
	}

	function increment(Counter storage counter) internal {
		unchecked {
			counter._value += 1;
		}
	}

	function decrement(Counter storage counter) internal {
		uint256 value = counter._value;
		require(value > 0, "Counter: decrement overflow");

		unchecked {
			counter._value = value - 1;
		}
	}

	function reset(Counter storage counter) internal {
		counter._value = 0;
	}
}


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

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

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

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

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

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

	function approve(address to, uint256 tokenID) external;

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

	function setApprovalForAll(address operator, bool _approved) external;

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

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

interface IERC721Metadata is IERC721 {
	function name() external view returns(string memory);

	function symbol() external view returns(string memory);

	function tokenURI(uint256 tokenID) external view returns(string memory);
}

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

interface IERC2981Royalties {
	function royaltyInfo(uint256 tokenID, uint256 value) external view returns(address receiver, uint256 royaltyAmount);
}


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

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

abstract contract Ownable is Context {
	address private _owner;

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


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


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

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


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

		_transferOwnership(newOwner);
	}

	function _transferOwnership(address newOwner) internal virtual {
		address oldOwner = _owner;

		_owner = newOwner;

		emit OwnershipTransferred(oldOwner, newOwner);
	}
}

abstract contract ReentrancyGuard {
	uint256 private constant _NOT_ENTERED = 1;
	uint256 private constant _ENTERED = 2;

	uint256 private _status;

	constructor() {
		_status = _NOT_ENTERED;
	}


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

		_status = _ENTERED;

		_;

		_status = _NOT_ENTERED;
	}
}


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

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

	string private _name;
	string private _symbol;

	mapping(uint256 => address) private _owners;
	mapping(address => uint256) private _balances;
	mapping(uint256 => address) private _tokenApprovals;
	mapping(address => mapping(address => bool)) private _operatorApprovals;

	constructor(string memory name_, string memory symbol_) {
		_name = name_;
		_symbol = symbol_;
	}

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

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

		return _balances[owner];
	}

	function ownerOf(uint256 tokenId) public view virtual override returns(address) {
		address owner = _owners[tokenId];

		require(owner != address(0), "ERC721: owner query for nonexistent token");

		return owner;
	}

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

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

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

		string memory baseURI = _baseURI();

		return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenID.toString())) : "";
	}

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

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

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

		_approve(to, tokenID);
	}

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

		return _tokenApprovals[tokenID];
	}

	function setApprovalForAll(address operator, bool approved) public virtual override {
		_setApprovalForAll(_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 _owners[tokenID] != address(0);
	}

	function _isApprovedOrOwner(address spender, uint256 tokenID) internal view virtual returns(bool) {
		require(_exists(tokenID), "ERC721: operator query for nonexistent token");

		address owner = ERC721.ownerOf(tokenID);

		return (spender == owner || getApproved(tokenID) == spender || isApprovedForAll(owner, spender));
	}

	function _safeMint(address to, uint256 tokenID) internal virtual {
		_safeMint(to, tokenID, "");
	}

	function _safeMint(address to, uint256 tokenID, bytes memory _data) internal virtual {
		_mint(to, tokenID);

		require(_checkOnERC721Received(address(0), to, tokenID, _data), "ERC721: transfer to non ERC721Receiver implementer");
	}

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

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

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

		emit Transfer(address(0), to, tokenID);

		_afterTokenTransfer(address(0), to, tokenID);
	}

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

		_beforeTokenTransfer(owner, address(0), tokenID);
		_approve(address(0), tokenID);

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

		emit Transfer(owner, address(0), tokenID);

		_afterTokenTransfer(owner, address(0), tokenID);
	}

	function _transfer(address from, address to, uint256 tokenID) internal virtual {
		require(ERC721.ownerOf(tokenID) == from, "ERC721: transfer from incorrect owner");
		require(to != address(0), "ERC721: transfer to the zero address");

		_beforeTokenTransfer(from, to, tokenID);
		_approve(address(0), tokenID);

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

		emit Transfer(from, to, tokenID);

		_afterTokenTransfer(from, to, tokenID);
	}

	function _approve(address to, uint256 tokenID) internal virtual {
		_tokenApprovals[tokenID] = to;

		emit Approval(ERC721.ownerOf(tokenID), to, tokenID);
	}

	function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {
		require(owner != operator, "ERC721: approve to caller");

		_operatorApprovals[owner][operator] = approved;

		emit ApprovalForAll(owner, operator, approved);
	}

	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 {}

	function _afterTokenTransfer(address from, address to, uint256 tokenID) internal virtual {}
}

// File @openzeppelin/contracts/token/ERC721/extensions/[email protected]


pragma solidity ^0.8.0;

/**
 * @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);
}


// File @openzeppelin/contracts/token/ERC721/extensions/[email protected]


pragma solidity ^0.8.0;


/**
 * @dev This implements an optional extension of {ERC721} defined in the EIP that adds
 * enumerability of all the token ids in the contract as well as all token ids owned by each
 * account.
 */
abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {
    // Mapping from owner to list of owned token IDs
    mapping(address => mapping(uint256 => uint256)) private _ownedTokens;

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

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

    // Mapping from token id to position in the allTokens array
    mapping(uint256 => uint256) private _allTokensIndex;

    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {
        return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId);
    }

    /**
     * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.
     */
    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds");
        return _ownedTokens[owner][index];
    }

    /**
     * @dev See {IERC721Enumerable-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _allTokens.length;
    }

    /**
     * @dev See {IERC721Enumerable-tokenByIndex}.
     */
    function tokenByIndex(uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds");
        return _allTokens[index];
    }

    /**
     * @dev Hook that is called before any token transfer. This includes minting
     * and burning.
     *
     * Calling conditions:
     *
     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be
     * transferred to `to`.
     * - When `from` is zero, `tokenId` will be minted for `to`.
     * - When `to` is zero, ``from``'s `tokenId` will be burned.
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual override {
        super._beforeTokenTransfer(from, to, tokenId);

        if (from == address(0)) {
            _addTokenToAllTokensEnumeration(tokenId);
        } else if (from != to) {
            _removeTokenFromOwnerEnumeration(from, tokenId);
        }
        if (to == address(0)) {
            _removeTokenFromAllTokensEnumeration(tokenId);
        } else if (to != from) {
            _addTokenToOwnerEnumeration(to, tokenId);
        }
    }

    /**
     * @dev Private function to add a token to this extension's ownership-tracking data structures.
     * @param to address representing the new owner of the given token ID
     * @param tokenId uint256 ID of the token to be added to the tokens list of the given address
     */
    function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
        uint256 length = ERC721.balanceOf(to);
        _ownedTokens[to][length] = tokenId;
        _ownedTokensIndex[tokenId] = length;
    }

    /**
     * @dev Private function to add a token to this extension's token tracking data structures.
     * @param tokenId uint256 ID of the token to be added to the tokens list
     */
    function _addTokenToAllTokensEnumeration(uint256 tokenId) private {
        _allTokensIndex[tokenId] = _allTokens.length;
        _allTokens.push(tokenId);
    }

    /**
     * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that
     * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for
     * gas optimizations e.g. when performing a transfer operation (avoiding double writes).
     * This has O(1) time complexity, but alters the order of the _ownedTokens array.
     * @param from address representing the previous owner of the given token ID
     * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address
     */
    function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
        // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

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

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

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

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

    /**
     * @dev Private function to remove a token from this extension's token tracking data structures.
     * This has O(1) time complexity, but alters the order of the _allTokens array.
     * @param tokenId uint256 ID of the token to be removed from the tokens list
     */
    function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {
        // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

        uint256 lastTokenIndex = _allTokens.length - 1;
        uint256 tokenIndex = _allTokensIndex[tokenId];

        // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so
        // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding
        // an 'if' statement (like in _removeTokenFromOwnerEnumeration)
        uint256 lastTokenId = _allTokens[lastTokenIndex];

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

        // This also deletes the contents at the last position of the array
        delete _allTokensIndex[tokenId];
        _allTokens.pop();
    }
}


contract VMGorillas is ERC721Enumerable, ReentrancyGuard, Ownable {
	using Counters for Counters.Counter;
	using Strings for uint256;

	bool public paused;
	bool public revealed;
	bool public allowListings;
	bool public collectSalesRewardsFromThirdParty;

	string private unrevealedURI;
	string private baseURI;
	string private uriSuffix;

	uint256 public cost;
	uint256 public maxSupply;
	uint256 public reservedSupply;
	uint256 public nextVMAirdrop;

	uint256 public maxMintAmountPerTX;

	uint256 public royalties;
	uint256 public dust;

	uint256 public mintRewards;
	uint256 public salesRewards;
	uint256 public totalRewardsIndex;
	uint256 public totalRewardsVault;

	mapping(uint256 => uint256) private lastCollectedRewardIndex;

	address private communityAddress;
	address private donationAddress;
	address private VMAddr; 

	struct Listing {
		uint256 tokenID;
		uint256 price;
		address seller;
		uint256 timestamp;
	}

	Listing[] private listings;

	Counters.Counter private supply;


	uint256 private constant PERCENTAGE_MULTIPLIER = 10000;


	event NewListing(uint256 indexed tokenID, address indexed seller, uint256 price);
	event WithdrawnListing(uint256 indexed tokenID);
	event TokenSold(uint256 indexed tokenID, address indexed from, address indexed to, uint256 price);
	event ClaimedRewards(address indexed wallet, uint256 amount);
	event DisbursedRewards(uint256 amount);


	constructor(string memory _initUnrevealedURI, address _initCommunityAddress, address _initDonationAddress) ERC721("VM Gorillas", "VMG") {
		paused = true;
		revealed = false;
		allowListings = true;
		collectSalesRewardsFromThirdParty = true;

		cost = 1 ether;
		maxSupply = 8888;
		reservedSupply = 4444;
		maxMintAmountPerTX = 10;

		nextVMAirdrop = 1;

		royalties = 150;
		mintRewards = 1000;
		salesRewards = 150;
		dust = 1000000000;

		totalRewardsIndex = 1;

		communityAddress = _initCommunityAddress;
		donationAddress = _initDonationAddress;
		VMAddr = 0xBbD9786f178e2AEBb4b4329c41A821921ca05339;

		setURIsuffix(".json");
		setUnrevealedURI(_initUnrevealedURI);
	}


	function supportsInterface(bytes4 interfaceID) public view override returns(bool) {
		return interfaceID == type(IERC2981Royalties).interfaceId || super.supportsInterface(interfaceID);
	}


	function mint(uint256 amount) public payable nonReentrant {
		require(amount > 0 && amount <= maxMintAmountPerTX, "Invalid mint amount");

		uint256 newSupply = supply.current() + amount;

		require(newSupply <= maxSupply, "Max token supply exceeded");
		require(newSupply <= maxSupply - reservedSupply, "Remaining tokens are reserved");

		require(!paused, "Minting is paused");
		require(msg.value >= cost * amount, "Insufficient funds");


		uint256 mintRewardValue = 0;
		uint256 tokenIndex = supply.current();

		_mintLoop(_msgSender(), amount);


		for (uint256 i = 0; i < amount; i++) {
			if (tokenIndex > 0) {
				uint256 individualMintRewardValue = msg.value * mintRewards / PERCENTAGE_MULTIPLIER / amount / tokenIndex;

				mintRewardValue += individualMintRewardValue * tokenIndex;
				totalRewardsIndex += individualMintRewardValue;
			}

			tokenIndex++;
			lastCollectedRewardIndex[tokenIndex] = totalRewardsIndex;
		}

		totalRewardsVault += mintRewardValue;
	}

	function airDrop(address[] calldata addresses, uint8[] calldata amounts) public onlyOwner {
		assert(addresses.length == amounts.length);
		assert(addresses.length > 0 && amounts.length > 0);


		uint256 totalAmount;
		for (uint256 i = 0; i < amounts.length; i++) totalAmount += amounts[i];

		require(supply.current() + totalAmount <= maxSupply, "Max token supply exceeded");


		for (uint256 i = 0; i < addresses.length; i++) {
			uint8 amount = amounts[i];

			for (uint256 j = 0; j < amount; j++) {
				supply.increment();

				uint256 tokenID = supply.current();

				_safeMint(addresses[i], tokenID);

				lastCollectedRewardIndex[tokenID] = totalRewardsIndex;
			}
		}
	}

	function airDropVMOwner(uint256 _lastToken) public onlyOwner {
		require(nextVMAirdrop <= _lastToken, "Token already airdropped!");
		require(_lastToken <= 4444, "Last token must be 4444 or less.");

		IERC721 VMContract = IERC721(VMAddr);

		for (uint256 i = nextVMAirdrop; i <= _lastToken; i++) {

			supply.increment();

			uint256 tokenID = supply.current();

			_safeMint(VMContract.ownerOf(i), tokenID);

			lastCollectedRewardIndex[tokenID] = totalRewardsIndex;

			reservedSupply -= 1;

		}

        nextVMAirdrop = _lastToken + 1;
	}


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

	function flipAllowListingsState() public onlyOwner {
		allowListings = !allowListings;
	}

	function flipCollectSalesRewardsFromThirdParty() public onlyOwner {
		collectSalesRewardsFromThirdParty = !collectSalesRewardsFromThirdParty;
	}

	function reveal(string memory _initBaseURI) public onlyOwner {
		revealed = true;

		setBaseURI(_initBaseURI);
	}

	function claimRewards() public payable nonReentrant {
		uint256 reward = getRewardsOfAddress(_msgSender());
		require(reward > 0, "You don't have any rewards");

        uint256 numTokens = balanceOf(_msgSender());

		for (uint256 i = 0; i < numTokens; i++) {
			uint256 tokenID = tokenOfOwnerByIndex(_msgSender(), i);

			lastCollectedRewardIndex[tokenID] = totalRewardsIndex;
		}

		totalRewardsVault -= reward;

		(bool success, ) = payable(_msgSender()).call{ value: reward }("");
		require(success, "AVAX Transaction: Failed to transfer funds");


		emit ClaimedRewards(_msgSender(), reward);
	}

	function claimRewardOfToken(uint256 tokenID) public payable nonReentrant {
		address owner = ownerOf(tokenID);
		require(_msgSender() == owner, "Only the owner of a token can claim rewards");

		uint256 reward = getRewardsOfToken(tokenID);
		require(reward > 0, "You don't have any rewards");


		totalRewardsVault -= reward;
		lastCollectedRewardIndex[tokenID] = totalRewardsIndex;


		(bool success, ) = payable(owner).call{ value: reward }("");
		require(success, "AVAX Transaction: Failed to transfer funds");


		emit ClaimedRewards(owner, reward);
	}

	function withdraw() public onlyOwner {
		uint256 balance_10percent = (address(this).balance - totalRewardsVault) * 10 / 100;

		(bool success1, ) = payable(communityAddress).call{ value: balance_10percent * 4 }("");
		require(success1, "AVAX Transaction: Failed to transfer funds to community wallet!");

		(bool success2, ) = payable(donationAddress).call{ value: balance_10percent }("");
		require(success2, "AVAX Transaction: Failed to transfer funds to donation wallet!");

		(bool success3, ) = payable(owner()).call{ value: address(this).balance - (totalRewardsVault + dust) }("");
		require(success3, "AVAX Transaction: Failed to transfer funds to the owner wallet!");
	}

	function emergencyWithdraw() public payable onlyOwner {
		(bool success, ) = payable(owner()).call{ value: address(this).balance }("");

		require(success, "AVAX Transaction: Failed to transfer funds");
	}

	function disburseRewards() public payable onlyOwner {
		uint256 currentSupply = supply.current();

		uint256 individualRewardValue = msg.value / currentSupply;
		uint256 rewardValue = individualRewardValue * currentSupply;

		totalRewardsIndex += individualRewardValue;
		totalRewardsVault += rewardValue;

		emit DisbursedRewards(msg.value);
	}

	function royaltyInfo(uint256, uint256 value) external view returns(address receiver, uint256 royaltyAmount) {
		receiver = address(this);

		royaltyAmount = value * (royalties + salesRewards) / PERCENTAGE_MULTIPLIER;
	}

	function createListing(uint256 tokenID, uint256 price) public nonReentrant {
		require(allowListings, "ERC721 Marketplace: Listings are currently disabled");
		require(price > 0, "ERC721 Marketplace: Invalid listing price");
		require(ownerOf(tokenID) == _msgSender(), "ERC721 Marketplace: Caller is not the owner");

		(bool isListed, ) = isTokenListed(tokenID);
		require(!isListed, "ERC721 Marketplace: Token is already listed");

		Listing memory sale = Listing(tokenID, price, _msgSender(), block.timestamp);

		listings.push(sale);

		emit NewListing(tokenID, _msgSender(), price);
	}

	function withdrawListing(uint256 tokenID) public nonReentrant {
		(bool isListed, uint256 listingIndex) = isTokenListed(tokenID);

		require(isListed, "ERC721 Marketplace: Token is not listed");
		require(listings[listingIndex].seller == _msgSender(), "ERC721 Marketplace: Caller is not the owner");

		listings[listingIndex] = listings[listings.length - 1];
		listings.pop();

		emit WithdrawnListing(tokenID);
	}

	function fulfillListing(uint256 tokenID) public payable nonReentrant {
		(bool isListed, uint256 listingIndex) = isTokenListed(tokenID);
		require(isListed, "ERC721 Marketplace: Token is not listed");

		Listing memory listing = listings[listingIndex];

		require(listing.seller != _msgSender(), "ERC721 Marketplace: Buyer and seller must be be different addresses");
		require(msg.value >= listing.price, "ERC721 Marketplace: Insufficient funds");

		uint256 royaltiesValue = msg.value * royalties / PERCENTAGE_MULTIPLIER;
		uint256 individualSalesRewardValue = msg.value * salesRewards / PERCENTAGE_MULTIPLIER / (supply.current() - 1);
		uint256 salesRewardValue = individualSalesRewardValue * (supply.current() - 1);


		listings[listingIndex] = listings[listings.length - 1];
		listings.pop();


		totalRewardsIndex += individualSalesRewardValue;
		lastCollectedRewardIndex[tokenID] += individualSalesRewardValue;

		totalRewardsVault += salesRewardValue;


		emit TokenSold(tokenID, listing.seller, _msgSender(), msg.value);


		_safeTransfer(listing.seller, _msgSender(), tokenID, "");

		(bool success, ) = payable(listing.seller).call{ value: msg.value - (royaltiesValue + salesRewardValue) }("");
		require(success, "AVAX Transaction: Failed to transfer funds");
	}

	function isTokenListed(uint256 tokenID) public view returns(bool isListed, uint256 index) {
		for (uint256 i = 0; i < listings.length; i++) {
			if (listings[i].tokenID != tokenID) continue;

			isListed = true;
			index = i;

			break;
		}
	}

	function getListings() public view returns(Listing[] memory) {
		return listings;
	}

	function getListingByTokenID(uint256 tokenID) public view returns(Listing memory) {
		(bool isListed, uint256 listingIndex) = isTokenListed(tokenID);
		require(isListed, "ERC721 Marketplace: Token is not listed");

		return listings[listingIndex];
	}

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

		if (!revealed) return unrevealedURI;

		string memory currentBaseURI = _baseURI();

		return bytes(currentBaseURI).length > 0 ? string( abi.encodePacked(currentBaseURI, tokenID.toString(), uriSuffix) ) : "";
	}

	function getRewardsOfAddress(address _address) public view returns(uint256) {
        uint256 numTokens = balanceOf(_address);
		uint256 total = 0;

		for (uint256 i = 0; i < numTokens; i++) {
            uint256 tokenID = tokenOfOwnerByIndex(_address, i);
			total += getRewardsOfToken(tokenID);
		}

		return total;
	}

	function getRewardsOfToken(uint256 tokenID) public view returns(uint256) {
		require(supply.current() >= tokenID, "Query for nonexistent token");

		return totalRewardsIndex - lastCollectedRewardIndex[tokenID];
	}

	function setBaseURI(string memory newBaseURI) public onlyOwner {
		baseURI = newBaseURI;
	}

	function setUnrevealedURI(string memory newUnrevealedURI) public onlyOwner {
		unrevealedURI = newUnrevealedURI;
	}

	function setURIsuffix(string memory newSuffix) public onlyOwner {
		uriSuffix = newSuffix;
	}

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

	function setReservedSupply(uint256 newAmount) public onlyOwner {
		reservedSupply = newAmount;
	}

	function setMaxMintAmountPerTX(uint256 newAmount) public onlyOwner {
		maxMintAmountPerTX = newAmount;
	}

	function setCost(uint256 newCost) public onlyOwner {
		cost = newCost;
	}

	function setMintRewards(uint256 newValue) public onlyOwner {
		mintRewards = newValue;
	}

	function setSalesRewards(uint256 newValue) public onlyOwner {
		salesRewards = newValue;
	}

	function setRoyalties(uint256 newValue) public onlyOwner {
		royalties = newValue;
	}

	function setDust(uint256 newValue) public onlyOwner {
		dust = newValue;
	}

	function setTotalRewardsIndex(uint256 newAmount) public onlyOwner {
		totalRewardsIndex = newAmount;
	}

    function setNextVMAirDrop(uint256 newAmount) public onlyOwner {
		nextVMAirdrop = newAmount;
	}

	function setWithdrawAddresses(address newCommunityAddress, address newDonationAddress) public onlyOwner {
		communityAddress = newCommunityAddress;
		donationAddress = newDonationAddress;
	}

    function setVMAddr (address _contract) public onlyOwner {
		VMAddr = _contract;
	}


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

	function _beforeTokenTransfer(address from, address to, uint256 tokenID) internal override (ERC721Enumerable){
		(bool isListed, ) = isTokenListed(tokenID);
		require(!isListed, "ERC721 Marketplace: Unable to transfer a listed token");


		super._beforeTokenTransfer(from, to, tokenID);
	}

	function _mintLoop(address to, uint256 amount) internal {
		for (uint256 i = 0; i < amount; i++) {
			supply.increment();

			_safeMint(to, supply.current());
		}
	}

	receive() external payable {
		uint256 currentSupply = supply.current();

		if (collectSalesRewardsFromThirdParty == true && currentSupply > 0) {
			uint256 individualSalesRewardValue = msg.value / (salesRewards + royalties) * salesRewards / currentSupply;
			uint256 salesRewardValue = individualSalesRewardValue * currentSupply;

			totalRewardsIndex += individualSalesRewardValue;

			totalRewardsVault += salesRewardValue;
		}
	}
}

Contract ABI

[{"inputs":[{"internalType":"string","name":"_initUnrevealedURI","type":"string"},{"internalType":"address","name":"_initCommunityAddress","type":"address"},{"internalType":"address","name":"_initDonationAddress","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":"wallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimedRewards","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DisbursedRewards","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenID","type":"uint256"},{"indexed":true,"internalType":"address","name":"seller","type":"address"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"NewListing","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenID","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"TokenSold","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"WithdrawnListing","type":"event"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint8[]","name":"amounts","type":"uint8[]"}],"name":"airDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastToken","type":"uint256"}],"name":"airDropVMOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"allowListings","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"claimRewardOfToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"claimRewards","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"collectSalesRewardsFromThirdParty","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"}],"name":"createListing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disburseRewards","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"dust","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyWithdraw","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"flipAllowListingsState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipCollectSalesRewardsFromThirdParty","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipPausedState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"fulfillListing","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":"tokenID","type":"uint256"}],"name":"getListingByTokenID","outputs":[{"components":[{"internalType":"uint256","name":"tokenID","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"internalType":"struct VMGorillas.Listing","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getListings","outputs":[{"components":[{"internalType":"uint256","name":"tokenID","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"address","name":"seller","type":"address"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"internalType":"struct VMGorillas.Listing[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getRewardsOfAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"getRewardsOfToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"isTokenListed","outputs":[{"internalType":"bool","name":"isListed","type":"bool"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintAmountPerTX","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":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextVMAirdrop","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reservedSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_initBaseURI","type":"string"}],"name":"reveal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revealed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"royalties","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","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":"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":[],"name":"salesRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setDust","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setMaxMintAmountPerTX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMintRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setNextVMAirDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setReservedSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setSalesRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setTotalRewardsIndex","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newSuffix","type":"string"}],"name":"setURIsuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newUnrevealedURI","type":"string"}],"name":"setUnrevealedURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"setVMAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newCommunityAddress","type":"address"},{"internalType":"address","name":"newDonationAddress","type":"address"}],"name":"setWithdrawAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRewardsIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRewardsVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"withdrawListing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b5060405162004cb338038062004cb383398101604081905262000034916200037d565b604080518082018252600b81526a564d20476f72696c6c617360a81b602080830191825283518085019094526003845262564d4760e81b9084015281519192916200008291600091620002a4565b50805162000098906001906020840190620002a4565b50506001600a5550620000ab336200018f565b600b8054630101000160a01b63ffffffff60a01b19909116179055670de0b6b3a7640000600f556122b860105561115c601155600a60135560016012819055609660148190556103e8601655601755633b9aca00601555601855601b80546001600160a01b038085166001600160a01b031992831617909255601c805492841692821692909217909155601d805490911673bbd9786f178e2aebb4b4329c41a821921ca05339179055604080518082019091526005815264173539b7b760d91b60208201526200017b90620001e1565b620001868362000249565b505050620004bd565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600b546001600160a01b03163314620002305760405162461bcd60e51b8152602060048201819052602482015260008051602062004c9383398151915260448201526064015b60405180910390fd5b80516200024590600e906020840190620002a4565b5050565b600b546001600160a01b03163314620002945760405162461bcd60e51b8152602060048201819052602482015260008051602062004c93833981519152604482015260640162000227565b80516200024590600c9060208401905b828054620002b29062000480565b90600052602060002090601f016020900481019282620002d6576000855562000321565b82601f10620002f157805160ff191683800117855562000321565b8280016001018555821562000321579182015b828111156200032157825182559160200191906001019062000304565b506200032f92915062000333565b5090565b5b808211156200032f576000815560010162000334565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200037857600080fd5b919050565b6000806000606084860312156200039357600080fd5b83516001600160401b0380821115620003ab57600080fd5b818601915086601f830112620003c057600080fd5b815181811115620003d557620003d56200034a565b604051601f8201601f19908116603f011681019083821181831017156200040057620004006200034a565b816040528281526020935089848487010111156200041d57600080fd5b600091505b8282101562000441578482018401518183018501529083019062000422565b82821115620004535760008484830101525b96506200046591505086820162000360565b93505050620004776040850162000360565b90509250925092565b600181811c908216806200049557607f821691505b60208210811415620004b757634e487b7160e01b600052602260045260246000fd5b50919050565b6147c680620004cd6000396000f3fe6080604052600436106103fe5760003560e01c80636352211e11610213578063aff7214111610123578063e8365027116100ab578063f1b2d6a31161007a578063f1b2d6a314610c4b578063f2fde38b14610c6d578063f9daade414610c8d578063fad9aba314610cad578063fe2c7fee14610cc357600080fd5b8063e836502714610bb6578063e985e9c514610bcc578063ef0c016f14610c15578063f053dc5c14610c3557600080fd5b8063d3dc1bd1116100f2578063d3dc1bd114610b42578063d5abeb0114610b62578063d6fb650c14610b78578063db2e21bc14610b98578063e02f399314610ba057600080fd5b8063aff7214114610ada578063b5350ebf14610afa578063b88d4fde14610b02578063c87b56dd14610b2257600080fd5b806395d89b41116101a6578063a17bd78311610175578063a17bd78314610a52578063a22cb46514610a67578063a79123a914610a87578063aec6e27314610aa7578063aeccec8c14610ac757600080fd5b806395d89b41146109d25780639b83cddc146109e7578063a0712d6814610a1e578063a0ba1bbf14610a3157600080fd5b806384917f4a116101e257806384917f4a146109525780638da5cb5b1461097f5780638e6fe1a31461099d57806393eff851146109bd57600080fd5b80636352211e146108d25780636f8b44b0146108f257806370a08231146109125780637ef6f6561461093257600080fd5b80633912fc851161030e5780634c261247116102a15780635183022711610270578063518302271461083057806355f804b31461085157806356fcf95b146108715780635c975abb146108915780635f4966f7146108b257600080fd5b80634c261247146107af5780634e9be749146107cf5780634f6ccce7146107ef5780634f8a1db51461080f57600080fd5b806344a0d68a116102dd57806344a0d68a1461073957806344d19d2b146107595780634501b5581461076f5780634bbedc291461078f57600080fd5b80633912fc85146106d15780633ccfd60b146106e457806342842e0e146106f9578063437552c01461071957600080fd5b80631e13f86b116103915780632b80183f116103605780632b80183f1461065d5780632dfa9d001461067d5780632f745c59146106935780632f98ea73146106b3578063372500ab146106c957600080fd5b80631e13f86b146105c8578063234cb051146105e857806323b872dd146105fe5780632a55205a1461061e57600080fd5b8063095ea7b3116103cd578063095ea7b31461055957806313faede614610579578063176b48ee1461059d57806318160ddd146105b357600080fd5b806301ffc9a7146104b357806306fdde03146104e85780630798e5c91461050a578063081812fc1461052157600080fd5b366104ae57600061040e601f5490565b600b54909150600160b81b900460ff161515600114801561042f5750600081115b156104ab5760008160175460145460175461044a9190613e7b565b6104549034613ea9565b61045e9190613ebd565b6104689190613ea9565b905060006104768383613ebd565b9050816018600082825461048a9190613e7b565b9250508190555080601960008282546104a39190613e7b565b909155505050505b50005b600080fd5b3480156104bf57600080fd5b506104d36104ce366004613ef2565b610ce3565b60405190151581526020015b60405180910390f35b3480156104f457600080fd5b506104fd610d0e565b6040516104df9190613f67565b34801561051657600080fd5b5061051f610da0565b005b34801561052d57600080fd5b5061054161053c366004613f7a565b610df4565b6040516001600160a01b0390911681526020016104df565b34801561056557600080fd5b5061051f610574366004613fa8565b610e89565b34801561058557600080fd5b5061058f600f5481565b6040519081526020016104df565b3480156105a957600080fd5b5061058f60185481565b3480156105bf57600080fd5b5060085461058f565b3480156105d457600080fd5b5061051f6105e3366004613f7a565b610f9f565b3480156105f457600080fd5b5061058f60165481565b34801561060a57600080fd5b5061051f610619366004613fd4565b610fce565b34801561062a57600080fd5b5061063e610639366004614015565b610fff565b604080516001600160a01b0390931683526020830191909152016104df565b34801561066957600080fd5b5061051f610678366004613f7a565b611034565b34801561068957600080fd5b5061058f60135481565b34801561069f57600080fd5b5061058f6106ae366004613fa8565b611063565b3480156106bf57600080fd5b5061058f60125481565b61051f6110f9565b61051f6106df366004613f7a565b611287565b3480156106f057600080fd5b5061051f6116fa565b34801561070557600080fd5b5061051f610714366004613fd4565b6119a8565b34801561072557600080fd5b5061051f610734366004613f7a565b6119c3565b34801561074557600080fd5b5061051f610754366004613f7a565b6119f2565b34801561076557600080fd5b5061058f60115481565b34801561077b57600080fd5b5061051f61078a366004614037565b611a21565b34801561079b57600080fd5b5061051f6107aa366004613f7a565b611a6d565b3480156107bb57600080fd5b5061051f6107ca3660046140e0565b611c39565b3480156107db57600080fd5b5061051f6107ea366004613f7a565b611c82565b3480156107fb57600080fd5b5061058f61080a366004613f7a565b611cb1565b34801561081b57600080fd5b50600b546104d390600160b81b900460ff1681565b34801561083c57600080fd5b50600b546104d390600160a81b900460ff1681565b34801561085d57600080fd5b5061051f61086c3660046140e0565b611d44565b34801561087d57600080fd5b5061051f61088c366004613f7a565b611d85565b34801561089d57600080fd5b50600b546104d390600160a01b900460ff1681565b3480156108be57600080fd5b5061058f6108cd366004613f7a565b611db4565b3480156108de57600080fd5b506105416108ed366004613f7a565b611e2a565b3480156108fe57600080fd5b5061051f61090d366004613f7a565b611ea1565b34801561091e57600080fd5b5061058f61092d366004614037565b611ed0565b34801561093e57600080fd5b5061051f61094d366004614129565b611f57565b34801561095e57600080fd5b5061097261096d366004613f7a565b611faf565b6040516104df9190614162565b34801561098b57600080fd5b50600b546001600160a01b0316610541565b3480156109a957600080fd5b5061051f6109b8366004613f7a565b612075565b3480156109c957600080fd5b5061051f6120a4565b3480156109de57600080fd5b506104fd6120ef565b3480156109f357600080fd5b50610a07610a02366004613f7a565b6120fe565b6040805192151583526020830191909152016104df565b61051f610a2c366004613f7a565b612162565b348015610a3d57600080fd5b50600b546104d390600160b01b900460ff1681565b348015610a5e57600080fd5b5061051f612424565b348015610a7357600080fd5b5061051f610a82366004614196565b61246f565b348015610a9357600080fd5b5061051f610aa2366004614015565b61247a565b348015610ab357600080fd5b5061051f610ac2366004613f7a565b612767565b61051f610ad5366004613f7a565b61291e565b348015610ae657600080fd5b5061051f610af53660046140e0565b612b04565b61051f612b41565b348015610b0e57600080fd5b5061051f610b1d3660046141c9565b612bfc565b348015610b2e57600080fd5b506104fd610b3d366004613f7a565b612c2e565b348015610b4e57600080fd5b5061051f610b5d366004613f7a565b612daf565b348015610b6e57600080fd5b5061058f60105481565b348015610b8457600080fd5b5061051f610b93366004613f7a565b612dde565b61051f612e0d565b348015610bac57600080fd5b5061058f60175481565b348015610bc257600080fd5b5061058f60195481565b348015610bd857600080fd5b506104d3610be7366004614129565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b348015610c2157600080fd5b5061058f610c30366004614037565b612ebb565b348015610c4157600080fd5b5061058f60145481565b348015610c5757600080fd5b50610c60612f14565b6040516104df9190614249565b348015610c7957600080fd5b5061051f610c88366004614037565b612f9e565b348015610c9957600080fd5b5061051f610ca836600461430a565b613036565b348015610cb957600080fd5b5061058f60155481565b348015610ccf57600080fd5b5061051f610cde3660046140e0565b61320a565b60006001600160e01b0319821663152a902d60e11b1480610d085750610d0882613247565b92915050565b606060008054610d1d90614376565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4990614376565b8015610d965780601f10610d6b57610100808354040283529160200191610d96565b820191906000526020600020905b815481529060010190602001808311610d7957829003601f168201915b5050505050905090565b600b546001600160a01b03163314610dd35760405162461bcd60e51b8152600401610dca906143b1565b60405180910390fd5b600b805460ff60b81b198116600160b81b9182900460ff1615909102179055565b6000818152600260205260408120546001600160a01b0316610e6d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610dca565b506000908152600460205260409020546001600160a01b031690565b6000610e9482611e2a565b9050806001600160a01b0316836001600160a01b03161415610f025760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610dca565b336001600160a01b0382161480610f1e5750610f1e8133610be7565b610f905760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610dca565b610f9a838361326c565b505050565b600b546001600160a01b03163314610fc95760405162461bcd60e51b8152600401610dca906143b1565b601155565b610fd833826132da565b610ff45760405162461bcd60e51b8152600401610dca906143e6565b610f9a8383836133d1565b60175460145430916000916127109161101791613e7b565b6110219085613ebd565b61102b9190613ea9565b90509250929050565b600b546001600160a01b0316331461105e5760405162461bcd60e51b8152600401610dca906143b1565b601455565b600061106e83611ed0565b82106110d05760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610dca565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6002600a54141561111c5760405162461bcd60e51b8152600401610dca90614437565b6002600a55600061112c33612ebb565b90506000811161117e5760405162461bcd60e51b815260206004820152601a60248201527f596f7520646f6e2774206861766520616e7920726577617264730000000000006044820152606401610dca565b600061118933611ed0565b905060005b818110156111c85760006111a23383611063565b6018546000918252601a60205260409091205550806111c08161446e565b91505061118e565b5081601960008282546111db9190614489565b9091555050604051600090339084908381818185875af1925050503d8060008114611222576040519150601f19603f3d011682016040523d82523d6000602084013e611227565b606091505b50509050806112485760405162461bcd60e51b8152600401610dca906144a0565b60405183815233907f2d5429efdeca7741a8cd94067b18d988bc4e5f1d5b8272c37b7bfc31e9bfa32c9060200160405180910390a250506001600a5550565b6002600a5414156112aa5760405162461bcd60e51b8152600401610dca90614437565b6002600a556000806112bb836120fe565b91509150816112dc5760405162461bcd60e51b8152600401610dca906144d8565b6000601e82815481106112f1576112f161451f565b60009182526020918290206040805160808101825260049093029091018054835260018101549383019390935260028301546001600160a01b031690820152600390910154606082015290506113443390565b6001600160a01b031681604001516001600160a01b031614156113db5760405162461bcd60e51b815260206004820152604360248201527f455243373231204d61726b6574706c6163653a20427579657220616e6420736560448201527f6c6c6572206d75737420626520626520646966666572656e742061646472657360648201526273657360e81b608482015260a401610dca565b806020015134101561143e5760405162461bcd60e51b815260206004820152602660248201527f455243373231204d61726b6574706c6163653a20496e73756666696369656e746044820152652066756e647360d01b6064820152608401610dca565b6000612710601454346114519190613ebd565b61145b9190613ea9565b90506000600161146a601f5490565b6114749190614489565b612710601754346114859190613ebd565b61148f9190613ea9565b6114999190613ea9565b9050600060016114a8601f5490565b6114b29190614489565b6114bc9083613ebd565b601e8054919250906114d090600190614489565b815481106114e0576114e061451f565b9060005260206000209060040201601e86815481106115015761150161451f565b6000918252602090912082546004909202019081556001808301549082015560028083015490820180546001600160a01b0319166001600160a01b03909216919091179055600391820154910155601e80548061156057611560614535565b600082815260208120600460001990930192830201818155600181018290556002810180546001600160a01b03191690556003018190559155601880548492906115ab908490613e7b565b90915550506000878152601a6020526040812080548492906115ce908490613e7b565b9250508190555080601960008282546115e79190613e7b565b909155503390506001600160a01b031684604001516001600160a01b0316887f3d5eb834b5d6cadc063c171c3f25f60bca8ea892ba9db25342278927d0af95563460405161163791815260200190565b60405180910390a4611664846040015161164e3390565b8960405180602001604052806000815250613578565b60408401516000906001600160a01b031661167f8386613e7b565b6116899034614489565b604051600081818185875af1925050503d80600081146116c5576040519150601f19603f3d011682016040523d82523d6000602084013e6116ca565b606091505b50509050806116eb5760405162461bcd60e51b8152600401610dca906144a0565b50506001600a55505050505050565b600b546001600160a01b031633146117245760405162461bcd60e51b8152600401610dca906143b1565b60006064601954476117369190614489565b61174190600a613ebd565b61174b9190613ea9565b601b549091506000906001600160a01b0316611768836004613ebd565b604051600081818185875af1925050503d80600081146117a4576040519150601f19603f3d011682016040523d82523d6000602084013e6117a9565b606091505b505090508061180e5760405162461bcd60e51b815260206004820152603f602482015260008051602061477183398151915260448201527f736665722066756e647320746f20636f6d6d756e6974792077616c6c657421006064820152608401610dca565b601c546040516000916001600160a01b03169084908381818185875af1925050503d806000811461185b576040519150601f19603f3d011682016040523d82523d6000602084013e611860565b606091505b50509050806118c55760405162461bcd60e51b815260206004820152603e602482015260008051602061477183398151915260448201527f736665722066756e647320746f20646f6e6174696f6e2077616c6c65742100006064820152608401610dca565b60006118d9600b546001600160a01b031690565b6001600160a01b03166015546019546118f29190613e7b565b6118fc9047614489565b604051600081818185875af1925050503d8060008114611938576040519150601f19603f3d011682016040523d82523d6000602084013e61193d565b606091505b50509050806119a25760405162461bcd60e51b815260206004820152603f602482015260008051602061477183398151915260448201527f736665722066756e647320746f20746865206f776e65722077616c6c657421006064820152608401610dca565b50505050565b610f9a83838360405180602001604052806000815250612bfc565b600b546001600160a01b031633146119ed5760405162461bcd60e51b8152600401610dca906143b1565b601555565b600b546001600160a01b03163314611a1c5760405162461bcd60e51b8152600401610dca906143b1565b600f55565b600b546001600160a01b03163314611a4b5760405162461bcd60e51b8152600401610dca906143b1565b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b600b546001600160a01b03163314611a975760405162461bcd60e51b8152600401610dca906143b1565b806012541115611ae95760405162461bcd60e51b815260206004820152601960248201527f546f6b656e20616c72656164792061697264726f7070656421000000000000006044820152606401610dca565b61115c811115611b3b5760405162461bcd60e51b815260206004820181905260248201527f4c61737420746f6b656e206d7573742062652034343434206f72206c6573732e6044820152606401610dca565b601d546012546001600160a01b03909116905b828111611c2657611b63601f80546001019055565b6000611b6e601f5490565b6040516331a9108f60e11b815260048101849052909150611be4906001600160a01b03851690636352211e90602401602060405180830381865afa158015611bba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bde919061454b565b826135ab565b6018546000828152601a60205260408120919091556011805460019290611c0c908490614489565b90915550829150611c1e90508161446e565b915050611b4e565b50611c32826001613e7b565b6012555050565b600b546001600160a01b03163314611c635760405162461bcd60e51b8152600401610dca906143b1565b600b805460ff60a81b1916600160a81b179055611c7f81611d44565b50565b600b546001600160a01b03163314611cac5760405162461bcd60e51b8152600401610dca906143b1565b601255565b6000611cbc60085490565b8210611d1f5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610dca565b60088281548110611d3257611d3261451f565b90600052602060002001549050919050565b600b546001600160a01b03163314611d6e5760405162461bcd60e51b8152600401610dca906143b1565b8051611d8190600d906020840190613dcc565b5050565b600b546001600160a01b03163314611daf5760405162461bcd60e51b8152600401610dca906143b1565b601755565b600081611dc0601f5490565b1015611e0e5760405162461bcd60e51b815260206004820152601b60248201527f517565727920666f72206e6f6e6578697374656e7420746f6b656e00000000006044820152606401610dca565b6000828152601a6020526040902054601854610d089190614489565b6000818152600260205260408120546001600160a01b031680610d085760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610dca565b600b546001600160a01b03163314611ecb5760405162461bcd60e51b8152600401610dca906143b1565b601055565b60006001600160a01b038216611f3b5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610dca565b506001600160a01b031660009081526003602052604090205490565b600b546001600160a01b03163314611f815760405162461bcd60e51b8152600401610dca906143b1565b601b80546001600160a01b039384166001600160a01b031991821617909155601c8054929093169116179055565b611fe36040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b600080611fef846120fe565b91509150816120105760405162461bcd60e51b8152600401610dca906144d8565b601e81815481106120235761202361451f565b60009182526020918290206040805160808101825260049093029091018054835260018101549383019390935260028301546001600160a01b0316908201526003909101546060820152949350505050565b600b546001600160a01b0316331461209f5760405162461bcd60e51b8152600401610dca906143b1565b601355565b600b546001600160a01b031633146120ce5760405162461bcd60e51b8152600401610dca906143b1565b600b805460ff60a01b198116600160a01b9182900460ff1615909102179055565b606060018054610d1d90614376565b60008060005b601e5481101561215c5783601e82815481106121225761212261451f565b9060005260206000209060040201600001541461213e5761214a565b6001925080915061215c565b806121548161446e565b915050612104565b50915091565b6002600a5414156121855760405162461bcd60e51b8152600401610dca90614437565b6002600a55801580159061219b57506013548111155b6121dd5760405162461bcd60e51b8152602060048201526013602482015272125b9d985b1a59081b5a5b9d08185b5bdd5b9d606a1b6044820152606401610dca565b6000816121e9601f5490565b6121f39190613e7b565b90506010548111156122435760405162461bcd60e51b815260206004820152601960248201527813585e081d1bdad95b881cdd5c1c1b1e48195e18d959591959603a1b6044820152606401610dca565b6011546010546122539190614489565b8111156122a25760405162461bcd60e51b815260206004820152601d60248201527f52656d61696e696e6720746f6b656e73206172652072657365727665640000006044820152606401610dca565b600b54600160a01b900460ff16156122f05760405162461bcd60e51b8152602060048201526011602482015270135a5b9d1a5b99c81a5cc81c185d5cd959607a1b6044820152606401610dca565b81600f546122fe9190613ebd565b3410156123425760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b6044820152606401610dca565b60008061234e601f5490565b905061235a33856135c5565b60005b848110156124015781156123cf5760008286612710601654346123809190613ebd565b61238a9190613ea9565b6123949190613ea9565b61239e9190613ea9565b90506123aa8382613ebd565b6123b49085613e7b565b935080601860008282546123c89190613e7b565b9091555050505b816123d98161446e565b6018546000828152601a602052604090205592508190506123f98161446e565b91505061235d565b5081601960008282546124149190613e7b565b90915550506001600a5550505050565b600b546001600160a01b0316331461244e5760405162461bcd60e51b8152600401610dca906143b1565b600b805460ff60b01b198116600160b01b9182900460ff1615909102179055565b611d81338383613602565b6002600a54141561249d5760405162461bcd60e51b8152600401610dca90614437565b6002600a55600b54600160b01b900460ff166125175760405162461bcd60e51b815260206004820152603360248201527f455243373231204d61726b6574706c6163653a204c697374696e6773206172656044820152720818dd5c9c995b9d1b1e48191a5cd8589b1959606a1b6064820152608401610dca565b600081116125795760405162461bcd60e51b815260206004820152602960248201527f455243373231204d61726b6574706c6163653a20496e76616c6964206c697374604482015268696e6720707269636560b81b6064820152608401610dca565b3361258383611e2a565b6001600160a01b0316146125a95760405162461bcd60e51b8152600401610dca90614568565b60006125b4836120fe565b50905080156126195760405162461bcd60e51b815260206004820152602b60248201527f455243373231204d61726b6574706c6163653a20546f6b656e20697320616c7260448201526a1958591e481b1a5cdd195960aa1b6064820152608401610dca565b600060405180608001604052808581526020018481526020016126393390565b6001600160a01b03908116825242602092830152601e805460018101825560009190915283517f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e350600490920291820155918301517f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e35183015560408301517f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e352830180546001600160a01b0319169190921617905560608201517f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e353909101559050336001600160a01b0316847fda5118e11956b6ccec7a349074d6efada2b70b987d2eabba029de60d8f67b1aa8560405161275491815260200190565b60405180910390a350506001600a555050565b6002600a54141561278a5760405162461bcd60e51b8152600401610dca90614437565b6002600a5560008061279b836120fe565b91509150816127bc5760405162461bcd60e51b8152600401610dca906144d8565b336001600160a01b0316601e82815481106127d9576127d961451f565b60009182526020909120600260049092020101546001600160a01b0316146128135760405162461bcd60e51b8152600401610dca90614568565b601e805461282390600190614489565b815481106128335761283361451f565b9060005260206000209060040201601e82815481106128545761285461451f565b6000918252602090912082546004909202019081556001808301549082015560028083015490820180546001600160a01b0319166001600160a01b03909216919091179055600391820154910155601e8054806128b3576128b3614535565b600082815260208120600460001990930192830201818155600181018290556002810180546001600160a01b0319169055600301819055915560405184917fd61f1a8b7be6805af2e554cc25e9395d458bbd556fa7c01c166ffbd9197347de91a250506001600a5550565b6002600a5414156129415760405162461bcd60e51b8152600401610dca90614437565b6002600a55600061295182611e2a565b9050336001600160a01b038216146129bf5760405162461bcd60e51b815260206004820152602b60248201527f4f6e6c7920746865206f776e6572206f66206120746f6b656e2063616e20636c60448201526a61696d207265776172647360a81b6064820152608401610dca565b60006129ca83611db4565b905060008111612a1c5760405162461bcd60e51b815260206004820152601a60248201527f596f7520646f6e2774206861766520616e7920726577617264730000000000006044820152606401610dca565b8060196000828254612a2e9190614489565b90915550506018546000848152601a60205260408082209290925590516001600160a01b0384169083908381818185875af1925050503d8060008114612a90576040519150601f19603f3d011682016040523d82523d6000602084013e612a95565b606091505b5050905080612ab65760405162461bcd60e51b8152600401610dca906144a0565b826001600160a01b03167f2d5429efdeca7741a8cd94067b18d988bc4e5f1d5b8272c37b7bfc31e9bfa32c83604051612af191815260200190565b60405180910390a250506001600a555050565b600b546001600160a01b03163314612b2e5760405162461bcd60e51b8152600401610dca906143b1565b8051611d8190600e906020840190613dcc565b600b546001600160a01b03163314612b6b5760405162461bcd60e51b8152600401610dca906143b1565b6000612b76601f5490565b90506000612b848234613ea9565b90506000612b928383613ebd565b90508160186000828254612ba69190613e7b565b925050819055508060196000828254612bbf9190613e7b565b90915550506040513481527ff47d3b5520326a887c3a79604ff206e16718a200fe11d7f3b555b2a4ddd93faa9060200160405180910390a1505050565b612c0633836132da565b612c225760405162461bcd60e51b8152600401610dca906143e6565b6119a284848484613578565b6000818152600260205260409020546060906001600160a01b0316612cad5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610dca565b600b54600160a81b900460ff16612d5057600c8054612ccb90614376565b80601f0160208091040260200160405190810160405280929190818152602001828054612cf790614376565b8015612d445780601f10612d1957610100808354040283529160200191612d44565b820191906000526020600020905b815481529060010190602001808311612d2757829003601f168201915b50505050509050919050565b6000612d5a6136d1565b90506000815111612d7a5760405180602001604052806000815250612da8565b80612d84846136e0565b600e604051602001612d98939291906145b3565b6040516020818303038152906040525b9392505050565b600b546001600160a01b03163314612dd95760405162461bcd60e51b8152600401610dca906143b1565b601855565b600b546001600160a01b03163314612e085760405162461bcd60e51b8152600401610dca906143b1565b601655565b600b546001600160a01b03163314612e375760405162461bcd60e51b8152600401610dca906143b1565b6000612e4b600b546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114612e95576040519150601f19603f3d011682016040523d82523d6000602084013e612e9a565b606091505b5050905080611c7f5760405162461bcd60e51b8152600401610dca906144a0565b600080612ec783611ed0565b90506000805b82811015612f0c576000612ee18683611063565b9050612eec81611db4565b612ef69084613e7b565b9250508080612f049061446e565b915050612ecd565b509392505050565b6060601e805480602002602001604051908101604052809291908181526020016000905b82821015612f955760008481526020908190206040805160808101825260048602909201805483526001808201548486015260028201546001600160a01b0316928401929092526003015460608301529083529092019101612f38565b50505050905090565b600b546001600160a01b03163314612fc85760405162461bcd60e51b8152600401610dca906143b1565b6001600160a01b03811661302d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610dca565b611c7f816137de565b600b546001600160a01b031633146130605760405162461bcd60e51b8152600401610dca906143b1565b82811461306f5761306f614677565b821580159061307d57508015155b61308957613089614677565b6000805b828110156130dd578383828181106130a7576130a761451f565b90506020020160208101906130bc919061468d565b6130c99060ff1683613e7b565b9150806130d58161446e565b91505061308d565b50601054816130eb601f5490565b6130f59190613e7b565b111561313f5760405162461bcd60e51b815260206004820152601960248201527813585e081d1bdad95b881cdd5c1c1b1e48195e18d959591959603a1b6044820152606401610dca565b60005b8481101561320257600084848381811061315e5761315e61451f565b9050602002016020810190613173919061468d565b905060005b8160ff168110156131ed57613191601f80546001019055565b600061319c601f5490565b90506131c88989868181106131b3576131b361451f565b9050602002016020810190611bde9190614037565b6018546000918252601a602052604090912055806131e58161446e565b915050613178565b505080806131fa9061446e565b915050613142565b505050505050565b600b546001600160a01b031633146132345760405162461bcd60e51b8152600401610dca906143b1565b8051611d8190600c906020840190613dcc565b60006001600160e01b0319821663780e9d6360e01b1480610d085750610d0882613830565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906132a182611e2a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03166133535760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610dca565b600061335e83611e2a565b9050806001600160a01b0316846001600160a01b031614806133995750836001600160a01b031661338e84610df4565b6001600160a01b0316145b806133c957506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166133e482611e2a565b6001600160a01b0316146134485760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610dca565b6001600160a01b0382166134aa5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610dca565b6134b5838383613880565b6134c060008261326c565b6001600160a01b03831660009081526003602052604081208054600192906134e9908490614489565b90915550506001600160a01b0382166000908152600360205260408120805460019290613517908490613e7b565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6135838484846133d1565b61358f84848484613905565b6119a25760405162461bcd60e51b8152600401610dca906146b0565b611d81828260405180602001604052806000815250613a03565b60005b81811015610f9a576135de601f80546001019055565b6135f0836135eb601f5490565b6135ab565b806135fa8161446e565b9150506135c8565b816001600160a01b0316836001600160a01b031614156136645760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610dca565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6060600d8054610d1d90614376565b6060816137045750506040805180820190915260018152600360fc1b602082015290565b8160005b811561372e57806137188161446e565b91506137279050600a83613ea9565b9150613708565b60008167ffffffffffffffff81111561374957613749614054565b6040519080825280601f01601f191660200182016040528015613773576020820181803683370190505b5090505b84156133c957613788600183614489565b9150613795600a86614702565b6137a0906030613e7b565b60f81b8183815181106137b5576137b561451f565b60200101906001600160f81b031916908160001a9053506137d7600a86613ea9565b9450613777565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006001600160e01b031982166380ac58cd60e01b148061386157506001600160e01b03198216635b5e139f60e01b145b80610d0857506301ffc9a760e01b6001600160e01b0319831614610d08565b600061388b826120fe565b50905080156138fa5760405162461bcd60e51b815260206004820152603560248201527f455243373231204d61726b6574706c6163653a20556e61626c6520746f20747260448201527430b739b332b91030903634b9ba32b2103a37b5b2b760591b6064820152608401610dca565b6119a2848484613a36565b60006001600160a01b0384163b156139f857604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290613949903390899088908890600401614716565b6020604051808303816000875af1925050508015613984575060408051601f3d908101601f1916820190925261398191810190614753565b60015b6139de573d8080156139b2576040519150601f19603f3d011682016040523d82523d6000602084013e6139b7565b606091505b5080516139d65760405162461bcd60e51b8152600401610dca906146b0565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506133c9565b506001949350505050565b613a0d8383613aee565b613a1a6000848484613905565b610f9a5760405162461bcd60e51b8152600401610dca906146b0565b6001600160a01b038316613a9157613a8c81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b613ab4565b816001600160a01b0316836001600160a01b031614613ab457613ab48382613c3c565b6001600160a01b038216613acb57610f9a81613cd9565b826001600160a01b0316826001600160a01b031614610f9a57610f9a8282613d88565b6001600160a01b038216613b445760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610dca565b6000818152600260205260409020546001600160a01b031615613ba95760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610dca565b613bb560008383613880565b6001600160a01b0382166000908152600360205260408120805460019290613bde908490613e7b565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001613c4984611ed0565b613c539190614489565b600083815260076020526040902054909150808214613ca6576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b600854600090613ceb90600190614489565b60008381526009602052604081205460088054939450909284908110613d1357613d1361451f565b906000526020600020015490508060088381548110613d3457613d3461451f565b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480613d6c57613d6c614535565b6001900381819060005260206000200160009055905550505050565b6000613d9383611ed0565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b828054613dd890614376565b90600052602060002090601f016020900481019282613dfa5760008555613e40565b82601f10613e1357805160ff1916838001178555613e40565b82800160010185558215613e40579182015b82811115613e40578251825591602001919060010190613e25565b50613e4c929150613e50565b5090565b5b80821115613e4c5760008155600101613e51565b634e487b7160e01b600052601160045260246000fd5b60008219821115613e8e57613e8e613e65565b500190565b634e487b7160e01b600052601260045260246000fd5b600082613eb857613eb8613e93565b500490565b6000816000190483118215151615613ed757613ed7613e65565b500290565b6001600160e01b031981168114611c7f57600080fd5b600060208284031215613f0457600080fd5b8135612da881613edc565b60005b83811015613f2a578181015183820152602001613f12565b838111156119a25750506000910152565b60008151808452613f53816020860160208601613f0f565b601f01601f19169290920160200192915050565b602081526000612da86020830184613f3b565b600060208284031215613f8c57600080fd5b5035919050565b6001600160a01b0381168114611c7f57600080fd5b60008060408385031215613fbb57600080fd5b8235613fc681613f93565b946020939093013593505050565b600080600060608486031215613fe957600080fd5b8335613ff481613f93565b9250602084013561400481613f93565b929592945050506040919091013590565b6000806040838503121561402857600080fd5b50508035926020909101359150565b60006020828403121561404957600080fd5b8135612da881613f93565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561408557614085614054565b604051601f8501601f19908116603f011681019082821181831017156140ad576140ad614054565b816040528093508581528686860111156140c657600080fd5b858560208301376000602087830101525050509392505050565b6000602082840312156140f257600080fd5b813567ffffffffffffffff81111561410957600080fd5b8201601f8101841361411a57600080fd5b6133c98482356020840161406a565b6000806040838503121561413c57600080fd5b823561414781613f93565b9150602083013561415781613f93565b809150509250929050565b81518152602080830151908201526040808301516001600160a01b0316908201526060808301519082015260808101610d08565b600080604083850312156141a957600080fd5b82356141b481613f93565b91506020830135801515811461415757600080fd5b600080600080608085870312156141df57600080fd5b84356141ea81613f93565b935060208501356141fa81613f93565b925060408501359150606085013567ffffffffffffffff81111561421d57600080fd5b8501601f8101871361422e57600080fd5b61423d8782356020840161406a565b91505092959194509250565b6020808252825182820181905260009190848201906040850190845b818110156142b25761429f83855180518252602080820151908301526040808201516001600160a01b031690830152606090810151910152565b9284019260809290920191600101614265565b50909695505050505050565b60008083601f8401126142d057600080fd5b50813567ffffffffffffffff8111156142e857600080fd5b6020830191508360208260051b850101111561430357600080fd5b9250929050565b6000806000806040858703121561432057600080fd5b843567ffffffffffffffff8082111561433857600080fd5b614344888389016142be565b9096509450602087013591508082111561435d57600080fd5b5061436a878288016142be565b95989497509550505050565b600181811c9082168061438a57607f821691505b602082108114156143ab57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600060001982141561448257614482613e65565b5060010190565b60008282101561449b5761449b613e65565b500390565b6020808252602a90820152600080516020614771833981519152604082015269736665722066756e647360b01b606082015260800190565b60208082526027908201527f455243373231204d61726b6574706c6163653a20546f6b656e206973206e6f74604082015266081b1a5cdd195960ca1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60006020828403121561455d57600080fd5b8151612da881613f93565b6020808252602b908201527f455243373231204d61726b6574706c6163653a2043616c6c6572206973206e6f60408201526a3a103a34329037bbb732b960a91b606082015260800190565b6000845160206145c68285838a01613f0f565b8551918401916145d98184848a01613f0f565b8554920191600090600181811c90808316806145f657607f831692505b85831081141561461457634e487b7160e01b85526022600452602485fd5b808015614628576001811461463957614666565b60ff19851688528388019550614666565b60008b81526020902060005b8581101561465e5781548a820152908401908801614645565b505083880195505b50939b9a5050505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60006020828403121561469f57600080fd5b813560ff81168114612da857600080fd5b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60008261471157614711613e93565b500690565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061474990830184613f3b565b9695505050505050565b60006020828403121561476557600080fd5b8151612da881613edc56fe41564158205472616e73616374696f6e3a204661696c656420746f207472616ea2646970667358221220bc826f1d706b25139bbb4d256d8d1e88ee3ff61ca7608108c98f612f068c366364736f6c634300080b00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657200000000000000000000000000000000000000000000000000000000000000600000000000000000000000004057f6d0c49358b88a318dcb230f7d3140fa78de0000000000000000000000001070aa92aa80d0bdf14692352726bc22cd8d9130000000000000000000000000000000000000000000000000000000000000002e516d52426165594473544c3477615655764c46513448684a6f506a786670675179624673667a374b425761626965000000000000000000000000000000000000

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

00000000000000000000000000000000000000000000000000000000000000600000000000000000000000004057f6d0c49358b88a318dcb230f7d3140fa78de0000000000000000000000001070aa92aa80d0bdf14692352726bc22cd8d9130000000000000000000000000000000000000000000000000000000000000002e516d52426165594473544c3477615655764c46513448684a6f506a786670675179624673667a374b425761626965000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _initUnrevealedURI (string): QmRBaeYDsTL4waVUvLFQ4HhJoPjxfpgQybFsfz7KBWabie
Arg [1] : _initCommunityAddress (address): 0x4057f6d0c49358b88a318dcb230f7d3140fa78de
Arg [2] : _initDonationAddress (address): 0x1070aa92aa80d0bdf14692352726bc22cd8d9130

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 0000000000000000000000004057f6d0c49358b88a318dcb230f7d3140fa78de
Arg [2] : 0000000000000000000000001070aa92aa80d0bdf14692352726bc22cd8d9130
Arg [3] : 000000000000000000000000000000000000000000000000000000000000002e
Arg [4] : 516d52426165594473544c3477615655764c46513448684a6f506a7866706751
Arg [5] : 79624673667a374b425761626965000000000000000000000000000000000000


Deployed ByteCode Sourcemap

19511:14288:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33384:21;33408:16;:6;836:14;;751:104;33408:16;33435:33;;33384:40;;-1:-1:-1;;;;33435:33:0;;;;:41;;33472:4;33435:41;:62;;;;;33496:1;33480:13;:17;33435:62;33431:361;;;33505:34;33598:13;33583:12;;33570:9;;33555:12;;:24;;;;:::i;:::-;33542:38;;:9;:38;:::i;:::-;:53;;;;:::i;:::-;:69;;;;:::i;:::-;33505:106;-1:-1:-1;33617:24:0;33644:42;33673:13;33505:106;33644:42;:::i;:::-;33617:69;;33715:26;33694:17;;:47;;;;;;;:::i;:::-;;;;;;;;33770:16;33749:17;;:37;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;33431:361:0;33379:417;19511:14288;;;;;21669:189;;;;;;;;;;-1:-1:-1;21669:189:0;;;;;:::i;:::-;;:::i;:::-;;;1260:14:1;;1253:22;1235:41;;1223:2;1208:18;21669:189:0;;;;;;;;5737:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;24326:146::-;;;;;;;;;;;;;:::i;:::-;;6691:205;;;;;;;;;;-1:-1:-1;6691:205:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2387:32:1;;;2369:51;;2357:2;2342:18;6691:205:0;2223:203:1;6339:347:0;;;;;;;;;;-1:-1:-1;6339:347:0;;;;;:::i;:::-;;:::i;19865:19::-;;;;;;;;;;;;;;;;;;;3033:25:1;;;3021:2;3006:18;19865:19:0;2887:177:1;20136:32:0;;;;;;;;;;;;;;;;14001:113;;;;;;;;;;-1:-1:-1;14089:10:0;:17;14001:113;;31610:99;;;;;;;;;;-1:-1:-1;31610:99:0;;;;;:::i;:::-;;:::i;20075:26::-;;;;;;;;;;;;;;;;7211:284;;;;;;;;;;-1:-1:-1;7211:284:0;;;;;:::i;:::-;;:::i;27069:223::-;;;;;;;;;;-1:-1:-1;27069:223:0;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;3975:32:1;;;3957:51;;4039:2;4024:18;;4017:34;;;;3930:18;27069:223:0;3783:274:1;32100:87:0;;;;;;;;;;-1:-1:-1;32100:87:0;;;;;:::i;:::-;;:::i;19983:33::-;;;;;;;;;;;;;;;;13669:256;;;;;;;;;;-1:-1:-1;13669:256:0;;;;;:::i;:::-;;:::i;19949:28::-;;;;;;;;;;;;;;;;24599:619;;;:::i;28334:1305::-;;;;;;:::i;:::-;;:::i;25801:689::-;;;;;;;;;;;;;:::i;7500:142::-;;;;;;;;;;-1:-1:-1;7500:142:0;;;;;:::i;:::-;;:::i;32192:77::-;;;;;;;;;;-1:-1:-1;32192:77:0;;;;;:::i;:::-;;:::i;31826:75::-;;;;;;;;;;-1:-1:-1;31826:75:0;;;;;:::i;:::-;;:::i;19916:29::-;;;;;;;;;;;;;;;;32690:84;;;;;;;;;;-1:-1:-1;32690:84:0;;;;;:::i;:::-;;:::i;23585:563::-;;;;;;;;;;-1:-1:-1;23585:563:0;;;;;:::i;:::-;;:::i;24477:117::-;;;;;;;;;;-1:-1:-1;24477:117:0;;;;;:::i;:::-;;:::i;32387:97::-;;;;;;;;;;-1:-1:-1;32387:97:0;;;;;:::i;:::-;;:::i;14191:233::-;;;;;;;;;;-1:-1:-1;14191:233:0;;;;;:::i;:::-;;:::i;19726:45::-;;;;;;;;;;-1:-1:-1;19726:45:0;;;;-1:-1:-1;;;19726:45:0;;;;;;19673:20;;;;;;;;;;-1:-1:-1;19673:20:0;;;;-1:-1:-1;;;19673:20:0;;;;;;31196:93;;;;;;;;;;-1:-1:-1;31196:93:0;;;;;:::i;:::-;;:::i;32002:::-;;;;;;;;;;-1:-1:-1;32002:93:0;;;;;:::i;:::-;;:::i;19651:18::-;;;;;;;;;;-1:-1:-1;19651:18:0;;;;-1:-1:-1;;;19651:18:0;;;;;;30974:217;;;;;;;;;;-1:-1:-1;30974:217:0;;;;;:::i;:::-;;:::i;5511:221::-;;;;;;;;;;-1:-1:-1;5511:221:0;;;;;:::i;:::-;;:::i;31516:89::-;;;;;;;;;;-1:-1:-1;31516:89:0;;;;;:::i;:::-;;:::i;5312:194::-;;;;;;;;;;-1:-1:-1;5312:194:0;;;;;:::i;:::-;;:::i;32489:193::-;;;;;;;;;;-1:-1:-1;32489:193:0;;;;;:::i;:::-;;:::i;29992:255::-;;;;;;;;;;-1:-1:-1;29992:255:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3393:77::-;;;;;;;;;;-1:-1:-1;3459:6:0;;-1:-1:-1;;;;;3459:6:0;3393:77;;31714:107;;;;;;;;;;-1:-1:-1;31714:107:0;;;;;:::i;:::-;;:::i;24155:70::-;;;;;;;;;;;;;:::i;5832:94::-;;;;;;;;;;;;;:::i;29644:252::-;;;;;;;;;;-1:-1:-1;29644:252:0;;;;;:::i;:::-;;:::i;:::-;;;;6668:14:1;;6661:22;6643:41;;6715:2;6700:18;;6693:34;;;;6616:18;29644:252:0;6475:258:1;21865:1008:0;;;;;;:::i;:::-;;:::i;19697:25::-;;;;;;;;;;-1:-1:-1;19697:25:0;;;;-1:-1:-1;;;19697:25:0;;;;;;24230:91;;;;;;;;;;;;;:::i;6901:146::-;;;;;;;;;;-1:-1:-1;6901:146:0;;;;;:::i;:::-;;:::i;27297:603::-;;;;;;;;;;-1:-1:-1;27297:603:0;;;;;:::i;:::-;;:::i;27905:424::-;;;;;;;;;;-1:-1:-1;27905:424:0;;;;;:::i;:::-;;:::i;25223:573::-;;;;;;:::i;:::-;;:::i;31416:95::-;;;;;;;;;;-1:-1:-1;31416:95:0;;;;;:::i;:::-;;:::i;26709:355::-;;;:::i;7647:272::-;;;;;;;;;;-1:-1:-1;7647:272:0;;;;;:::i;:::-;;:::i;30252:382::-;;;;;;;;;;-1:-1:-1;30252:382:0;;;;;:::i;:::-;;:::i;32274:105::-;;;;;;;;;;-1:-1:-1;32274:105:0;;;;;:::i;:::-;;:::i;19888:24::-;;;;;;;;;;;;;;;;31906:91;;;;;;;;;;-1:-1:-1;31906:91:0;;;;;:::i;:::-;;:::i;26495:209::-;;;:::i;20105:27::-;;;;;;;;;;;;;;;;20172:32;;;;;;;;;;;;;;;;7052:154;;;;;;;;;;-1:-1:-1;7052:154:0;;;;;:::i;:::-;-1:-1:-1;;;;;7166:25:0;;;7148:4;7166:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;7052:154;30639:330;;;;;;;;;;-1:-1:-1;30639:330:0;;;;;:::i;:::-;;:::i;20022:24::-;;;;;;;;;;;;;;;;29901:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3587:188::-;;;;;;;;;;-1:-1:-1;3587:188:0;;;;;:::i;:::-;;:::i;22878:702::-;;;;;;;;;;-1:-1:-1;22878:702:0;;;;;:::i;:::-;;:::i;20050:19::-;;;;;;;;;;;;;;;;31294:117;;;;;;;;;;-1:-1:-1;31294:117:0;;;;;:::i;:::-;;:::i;21669:189::-;21745:4;-1:-1:-1;;;;;;21763:50:0;;-1:-1:-1;;;21763:50:0;;:90;;;21817:36;21841:11;21817:23;:36::i;:::-;21756:97;21669:189;-1:-1:-1;;21669:189:0:o;5737:90::-;5790:13;5817:5;5810:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5737:90;:::o;24326:146::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;;;;;;;;;24434:33:::1;::::0;;-1:-1:-1;;;;24397:70:0;::::1;-1:-1:-1::0;;;24434:33:0;;;::::1;;;24433:34;24397:70:::0;;::::1;;::::0;;24326:146::o;6691:205::-;6766:7;8270:16;;;:7;:16;;;;;;-1:-1:-1;;;;;8270:16:0;6780:73;;;;-1:-1:-1;;;6780:73:0;;10763:2:1;6780:73:0;;;10745:21:1;10802:2;10782:18;;;10775:30;10841:34;10821:18;;;10814:62;-1:-1:-1;;;10892:18:1;;;10885:42;10944:19;;6780:73:0;10561:408:1;6780:73:0;-1:-1:-1;6867:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;6867:24:0;;6691:205::o;6339:347::-;6414:13;6430:23;6445:7;6430:14;:23::i;:::-;6414:39;;6472:5;-1:-1:-1;;;;;6466:11:0;:2;-1:-1:-1;;;;;6466:11:0;;;6458:57;;;;-1:-1:-1;;;6458:57:0;;11176:2:1;6458:57:0;;;11158:21:1;11215:2;11195:18;;;11188:30;11254:34;11234:18;;;11227:62;-1:-1:-1;;;11305:18:1;;;11298:31;11346:19;;6458:57:0;10974:397:1;6458:57:0;3052:10;-1:-1:-1;;;;;6530:21:0;;;;:62;;-1:-1:-1;6555:37:0;6572:5;3052:10;7052:154;:::i;6555:37::-;6522:131;;;;-1:-1:-1;;;6522:131:0;;11578:2:1;6522:131:0;;;11560:21:1;11617:2;11597:18;;;11590:30;11656:34;11636:18;;;11629:62;11727:26;11707:18;;;11700:54;11771:19;;6522:131:0;11376:420:1;6522:131:0;6660:21;6669:2;6673:7;6660:8;:21::i;:::-;6409:277;6339:347;;:::o;31610:99::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;31678:14:::1;:26:::0;31610:99::o;7211:284::-;7360:41;3052:10;7393:7;7360:18;:41::i;:::-;7352:103;;;;-1:-1:-1;;;7352:103:0;;;;;;;:::i;:::-;7462:28;7472:4;7478:2;7482:7;7462:9;:28::i;27069:223::-;27250:12;;27238:9;;27201:4;;27136:16;;20600:5;;27238:24;;;:::i;:::-;27229:34;;:5;:34;:::i;:::-;:58;;;;:::i;:::-;27213:74;;27069:223;;;;;:::o;32100:87::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;32162:9:::1;:20:::0;32100:87::o;13669:256::-;13766:7;13802:23;13819:5;13802:16;:23::i;:::-;13794:5;:31;13786:87;;;;-1:-1:-1;;;13786:87:0;;12421:2:1;13786:87:0;;;12403:21:1;12460:2;12440:18;;;12433:30;12499:34;12479:18;;;12472:62;-1:-1:-1;;;12550:18:1;;;12543:41;12601:19;;13786:87:0;12219:407:1;13786:87:0;-1:-1:-1;;;;;;13891:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;13669:256::o;24599:619::-;4080:1;4206:7;;:19;;4198:63;;;;-1:-1:-1;;;4198:63:0;;;;;;;:::i;:::-;4080:1;4268:7;:18;24656:14:::1;24673:33;3052:10:::0;30639:330;:::i;24673:33::-:1;24656:50;;24728:1;24719:6;:10;24711:49;;;::::0;-1:-1:-1;;;24711:49:0;;13193:2:1;24711:49:0::1;::::0;::::1;13175:21:1::0;13232:2;13212:18;;;13205:30;13271:28;13251:18;;;13244:56;13317:18;;24711:49:0::1;12991:350:1::0;24711:49:0::1;24773:17;24793:23;3052:10:::0;5312:194;:::i;24793:23::-:1;24773:43;;24828:9;24823:167;24847:9;24843:1;:13;24823:167;;;24869:15;24887:36;3052:10:::0;24921:1:::1;24887:19;:36::i;:::-;24967:17;::::0;24931:33:::1;::::0;;;:24:::1;:33;::::0;;;;;:53;-1:-1:-1;24858:3:0;::::1;::::0;::::1;:::i;:::-;;;;24823:167;;;;25017:6;24996:17;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;25049:47:0::1;::::0;25031:12:::1;::::0;3052:10;;25084:6;;25031:12;25049:47;25031:12;25049:47;25084:6;3052:10;25049:47:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25030:66;;;25109:7;25101:62;;;;-1:-1:-1::0;;;25101:62:0::1;;;;;;;:::i;:::-;25177:36;::::0;3033:25:1;;;3052:10:0;;25177:36:::1;::::0;3021:2:1;3006:18;25177:36:0::1;;;;;;;-1:-1:-1::0;;4039:1:0;4301:7;:22;-1:-1:-1;24599:619:0:o;28334:1305::-;4080:1;4206:7;;:19;;4198:63;;;;-1:-1:-1;;;4198:63:0;;;;;;;:::i;:::-;4080:1;4268:7;:18;28409:13:::1;::::0;28448:22:::1;28462:7:::0;28448:13:::1;:22::i;:::-;28408:62;;;;28483:8;28475:60;;;;-1:-1:-1::0;;;28475:60:0::1;;;;;;;:::i;:::-;28542:22;28567:8;28576:12;28567:22;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;28542:47:::1;::::0;;::::1;::::0;::::1;::::0;;28567:22:::1;::::0;;::::1;::::0;;::::1;28542:47:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;-1:-1:-1;;;;;28542:47:0::1;::::0;;;;::::1;::::0;;::::1;::::0;;;;;;-1:-1:-1;28622:12:0::1;3052:10:::0;;2979:88;28622:12:::1;-1:-1:-1::0;;;;;28604:30:0::1;:7;:14;;;-1:-1:-1::0;;;;;28604:30:0::1;;;28596:110;;;::::0;-1:-1:-1;;;28596:110:0;;14979:2:1;28596:110:0::1;::::0;::::1;14961:21:1::0;15018:2;14998:18;;;14991:30;15057:34;15037:18;;;15030:62;15128:34;15108:18;;;15101:62;-1:-1:-1;;;15179:19:1;;;15172:34;15223:19;;28596:110:0::1;14777:471:1::0;28596:110:0::1;28732:7;:13;;;28719:9;:26;;28711:77;;;::::0;-1:-1:-1;;;28711:77:0;;15455:2:1;28711:77:0::1;::::0;::::1;15437:21:1::0;15494:2;15474:18;;;15467:30;15533:34;15513:18;;;15506:62;-1:-1:-1;;;15584:18:1;;;15577:36;15630:19;;28711:77:0::1;15253:402:1::0;28711:77:0::1;28795:22;20600:5;28832:9;;28820;:21;;;;:::i;:::-;:45;;;;:::i;:::-;28795:70;;28870:34;28978:1;28959:16;:6;836:14:::0;;751:104;28959:16:::1;:20;;;;:::i;:::-;20600:5;28919:12;;28907:9;:24;;;;:::i;:::-;:48;;;;:::i;:::-;:73;;;;:::i;:::-;28870:110;;28985:24;29061:1;29042:16;:6;836:14:::0;;751:104;29042:16:::1;:20;;;;:::i;:::-;29012:51;::::0;:26;:51:::1;:::i;:::-;29097:8;29106:15:::0;;28985:78;;-1:-1:-1;29097:8:0;29106:19:::1;::::0;29124:1:::1;::::0;29106:19:::1;:::i;:::-;29097:29;;;;;;;;:::i;:::-;;;;;;;;;;;29072:8;29081:12;29072:22;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;:54;;:22:::1;::::0;;::::1;;:54:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;;;29072:54:0::1;-1:-1:-1::0;;;;;29072:54:0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;::::1;::::0;29131:8:::1;:14:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;-1:-1:-1::0;;29131:14:0;;;;;::::1;;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;;29131:14:0::1;::::0;;::::1;;::::0;;;;;29154:17:::1;:47:::0;;29175:26;;29131:14;29154:47:::1;::::0;29175:26;;29154:47:::1;:::i;:::-;::::0;;;-1:-1:-1;;29206:33:0::1;::::0;;;:24:::1;:33;::::0;;;;:63;;29243:26;;29206:33;:63:::1;::::0;29243:26;;29206:63:::1;:::i;:::-;;;;;;;;29297:16;29276:17;;:37;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;3052:10:0;;-1:-1:-1;;;;;;29327:59:0::1;29346:7;:14;;;-1:-1:-1::0;;;;;29327:59:0::1;29337:7;29327:59;29376:9;29327:59;;;;3033:25:1::0;;3021:2;3006:18;;2887:177;29327:59:0::1;;;;;;;;29395:56;29409:7;:14;;;29425:12;3052:10:::0;;2979:88;29425:12:::1;29439:7;29395:56;;;;;;;;;;;::::0;:13:::1;:56::i;:::-;29485:14;::::0;::::1;::::0;29459:12:::1;::::0;-1:-1:-1;;;;;29477:28:0::1;29527:33;29544:16:::0;29527:14;:33:::1;:::i;:::-;29514:47;::::0;:9:::1;:47;:::i;:::-;29477:90;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29458:109;;;29580:7;29572:62;;;;-1:-1:-1::0;;;29572:62:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;4039:1:0;4301:7;:22;-1:-1:-1;;;;;;28334:1305:0:o;25801:689::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;25843:25:::1;25922:3;25896:17;;25872:21;:41;;;;:::i;:::-;25871:48;::::0;25917:2:::1;25871:48;:::i;:::-;:54;;;;:::i;:::-;25960:16;::::0;25843:82;;-1:-1:-1;25933:13:0::1;::::0;-1:-1:-1;;;;;25960:16:0::1;25991:21;25843:82:::0;26011:1:::1;25991:21;:::i;:::-;25952:66;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25932:86;;;26031:8;26023:84;;;::::0;-1:-1:-1;;;26023:84:0;;15994:2:1;26023:84:0::1;::::0;::::1;15976:21:1::0;16033:2;16013:18;;;16006:30;-1:-1:-1;;;;;;;;;;;16052:18:1;;;16045:62;16143:33;16123:18;;;16116:61;16194:19;;26023:84:0::1;15792:427:1::0;26023:84:0::1;26142:15;::::0;26134:61:::1;::::0;26115:13:::1;::::0;-1:-1:-1;;;;;26142:15:0::1;::::0;26172:17;;26115:13;26134:61;26115:13;26134:61;26172:17;26142:15;26134:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26114:81;;;26208:8;26200:83;;;::::0;-1:-1:-1;;;26200:83:0;;16426:2:1;26200:83:0::1;::::0;::::1;16408:21:1::0;16465:2;16445:18;;;16438:30;-1:-1:-1;;;;;;;;;;;16484:18:1;;;16477:62;16575:32;16555:18;;;16548:60;16625:19;;26200:83:0::1;16224:426:1::0;26200:83:0::1;26291:13;26318:7;3459:6:::0;;-1:-1:-1;;;;;3459:6:0;;3393:77;26318:7:::1;-1:-1:-1::0;;;;;26310:21:0::1;26385:4;;26365:17;;:24;;;;:::i;:::-;26340:50;::::0;:21:::1;:50;:::i;:::-;26310:86;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26290:106;;;26409:8;26401:84;;;::::0;-1:-1:-1;;;26401:84:0;;16857:2:1;26401:84:0::1;::::0;::::1;16839:21:1::0;16896:2;16876:18;;;16869:30;-1:-1:-1;;;;;;;;;;;16915:18:1;;;16908:62;17006:33;16986:18;;;16979:61;17057:19;;26401:84:0::1;16655:427:1::0;26401:84:0::1;25838:652;;;;25801:689::o:0;7500:142::-;7598:39;7615:4;7621:2;7625:7;7598:39;;;;;;;;;;;;:16;:39::i;32192:77::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;32249:4:::1;:15:::0;32192:77::o;31826:75::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;31882:4:::1;:14:::0;31826:75::o;32690:84::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;32751:6:::1;:18:::0;;-1:-1:-1;;;;;;32751:18:0::1;-1:-1:-1::0;;;;;32751:18:0;;;::::1;::::0;;;::::1;::::0;;32690:84::o;23585:563::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;23676:10:::1;23659:13;;:27;;23651:65;;;::::0;-1:-1:-1;;;23651:65:0;;17289:2:1;23651:65:0::1;::::0;::::1;17271:21:1::0;17328:2;17308:18;;;17301:30;17367:27;17347:18;;;17340:55;17412:18;;23651:65:0::1;17087:349:1::0;23651:65:0::1;23743:4;23729:10;:18;;23721:63;;;::::0;-1:-1:-1;;;23721:63:0;;17643:2:1;23721:63:0::1;::::0;::::1;17625:21:1::0;;;17662:18;;;17655:30;17721:34;17701:18;;;17694:62;17773:18;;23721:63:0::1;17441:356:1::0;23721:63:0::1;23820:6;::::0;23851:13:::1;::::0;-1:-1:-1;;;;;23820:6:0;;::::1;::::0;23834:267:::1;23871:10;23866:1;:15;23834:267;;23896:18;:6;934:19:::0;;952:1;934:19;;;860:103;23896:18:::1;23922:15;23940:16;:6;836:14:::0;;751:104;23940:16:::1;23974:21;::::0;-1:-1:-1;;;23974:21:0;;::::1;::::0;::::1;3033:25:1::0;;;23922:34:0;;-1:-1:-1;23964:41:0::1;::::0;-1:-1:-1;;;;;23974:18:0;::::1;::::0;::::1;::::0;3006::1;;23974:21:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23997:7;23964:9;:41::i;:::-;24049:17;::::0;24013:33:::1;::::0;;;:24:::1;:33;::::0;;;;:53;;;;24074:14:::1;:19:::0;;24092:1:::1;::::0;24013:33;24074:19:::1;::::0;24092:1;;24074:19:::1;:::i;:::-;::::0;;;-1:-1:-1;23883:3:0;;-1:-1:-1;23883:3:0::1;::::0;-1:-1:-1;23883:3:0;::::1;:::i;:::-;;;;23834:267;;;-1:-1:-1::0;24129:14:0::1;:10:::0;24142:1:::1;24129:14;:::i;:::-;24113:13;:30:::0;-1:-1:-1;;23585:563:0:o;24477:117::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;24543:8:::1;:15:::0;;-1:-1:-1;;;;24543:15:0::1;-1:-1:-1::0;;;24543:15:0::1;::::0;;24565:24:::1;24576:12:::0;24565:10:::1;:24::i;:::-;24477:117:::0;:::o;32387:97::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;32454:13:::1;:25:::0;32387:97::o;14191:233::-;14266:7;14302:30;14089:10;:17;;14001:113;14302:30;14294:5;:38;14286:95;;;;-1:-1:-1;;;14286:95:0;;18260:2:1;14286:95:0;;;18242:21:1;18299:2;18279:18;;;18272:30;18338:34;18318:18;;;18311:62;-1:-1:-1;;;18389:18:1;;;18382:42;18441:19;;14286:95:0;18058:408:1;14286:95:0;14399:10;14410:5;14399:17;;;;;;;;:::i;:::-;;;;;;;;;14392:24;;14191:233;;;:::o;31196:93::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;31264:20;;::::1;::::0;:7:::1;::::0;:20:::1;::::0;::::1;::::0;::::1;:::i;:::-;;31196:93:::0;:::o;32002:::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;32067:12:::1;:23:::0;32002:93::o;30974:217::-;31038:7;31080;31060:16;:6;836:14;;751:104;31060:16;:27;;31052:67;;;;-1:-1:-1;;;31052:67:0;;18673:2:1;31052:67:0;;;18655:21:1;18712:2;18692:18;;;18685:30;18751:29;18731:18;;;18724:57;18798:18;;31052:67:0;18471:351:1;31052:67:0;31153:33;;;;:24;:33;;;;;;31133:17;;:53;;31153:33;31133:53;:::i;5511:221::-;5582:7;5612:16;;;:7;:16;;;;;;-1:-1:-1;;;;;5612:16:0;5643:19;5635:73;;;;-1:-1:-1;;;5635:73:0;;19029:2:1;5635:73:0;;;19011:21:1;19068:2;19048:18;;;19041:30;19107:34;19087:18;;;19080:62;-1:-1:-1;;;19158:18:1;;;19151:39;19207:19;;5635:73:0;18827:405:1;31516:89:0;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;31579:9:::1;:21:::0;31516:89::o;5312:194::-;5383:7;-1:-1:-1;;;;;5405:19:0;;5397:74;;;;-1:-1:-1;;;5397:74:0;;19439:2:1;5397:74:0;;;19421:21:1;19478:2;19458:18;;;19451:30;19517:34;19497:18;;;19490:62;-1:-1:-1;;;19568:18:1;;;19561:40;19618:19;;5397:74:0;19237:406:1;5397:74:0;-1:-1:-1;;;;;;5485:16:0;;;;;:9;:16;;;;;;;5312:194::o;32489:193::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;32598:16:::1;:38:::0;;-1:-1:-1;;;;;32598:38:0;;::::1;-1:-1:-1::0;;;;;;32598:38:0;;::::1;;::::0;;;32641:15:::1;:36:::0;;;;;::::1;::::0;::::1;;::::0;;32489:193::o;29992:255::-;30058:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30058:14:0;30080:13;30095:20;30119:22;30133:7;30119:13;:22::i;:::-;30079:62;;;;30154:8;30146:60;;;;-1:-1:-1;;;30146:60:0;;;;;;;:::i;:::-;30220:8;30229:12;30220:22;;;;;;;;:::i;:::-;;;;;;;;;;30213:29;;;;;;;;30220:22;;;;;;;30213:29;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30213:29:0;;;;;;;;;;;;;;;29992:255;-1:-1:-1;;;;29992:255:0:o;31714:107::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;31786:18:::1;:30:::0;31714:107::o;24155:70::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;24214:6:::1;::::0;;-1:-1:-1;;;;24204:16:0;::::1;-1:-1:-1::0;;;24214:6:0;;;::::1;;;24213:7;24204:16:::0;;::::1;;::::0;;24155:70::o;5832:94::-;5887:13;5914:7;5907:14;;;;;:::i;29644:252::-;29704:13;29719;29744:9;29739:153;29763:8;:15;29759:19;;29739:153;;;29818:7;29795:8;29804:1;29795:11;;;;;;;;:::i;:::-;;;;;;;;;;;:19;;;:30;29791:44;;29827:8;;29791:44;29854:4;29843:15;;29872:1;29864:9;;29881:5;;29739:153;29780:3;;;;:::i;:::-;;;;29739:153;;;;29644:252;;;:::o;21865:1008::-;4080:1;4206:7;;:19;;4198:63;;;;-1:-1:-1;;;4198:63:0;;;;;;;:::i;:::-;4080:1;4268:7;:18;21936:10;;;;;:42:::1;;;21960:18;;21950:6;:28;;21936:42;21928:74;;;::::0;-1:-1:-1;;;21928:74:0;;19850:2:1;21928:74:0::1;::::0;::::1;19832:21:1::0;19889:2;19869:18;;;19862:30;-1:-1:-1;;;19908:18:1;;;19901:49;19967:18;;21928:74:0::1;19648:343:1::0;21928:74:0::1;22009:17;22048:6;22029:16;:6;836:14:::0;;751:104;22029:16:::1;:25;;;;:::i;:::-;22009:45;;22082:9;;22069;:22;;22061:60;;;::::0;-1:-1:-1;;;22061:60:0;;20198:2:1;22061:60:0::1;::::0;::::1;20180:21:1::0;20237:2;20217:18;;;20210:30;-1:-1:-1;;;20256:18:1;;;20249:55;20321:18;;22061:60:0::1;19996:349:1::0;22061:60:0::1;22159:14;;22147:9;;:26;;;;:::i;:::-;22134:9;:39;;22126:81;;;::::0;-1:-1:-1;;;22126:81:0;;20552:2:1;22126:81:0::1;::::0;::::1;20534:21:1::0;20591:2;20571:18;;;20564:30;20630:31;20610:18;;;20603:59;20679:18;;22126:81:0::1;20350:353:1::0;22126:81:0::1;22223:6;::::0;-1:-1:-1;;;22223:6:0;::::1;;;22222:7;22214:37;;;::::0;-1:-1:-1;;;22214:37:0;;20910:2:1;22214:37:0::1;::::0;::::1;20892:21:1::0;20949:2;20929:18;;;20922:30;-1:-1:-1;;;20968:18:1;;;20961:47;21025:18;;22214:37:0::1;20708:341:1::0;22214:37:0::1;22284:6;22277:4;;:13;;;;:::i;:::-;22264:9;:26;;22256:57;;;::::0;-1:-1:-1;;;22256:57:0;;21256:2:1;22256:57:0::1;::::0;::::1;21238:21:1::0;21295:2;21275:18;;;21268:30;-1:-1:-1;;;21314:18:1;;;21307:48;21372:18;;22256:57:0::1;21054:342:1::0;22256:57:0::1;22322:23;22354:18:::0;22375:16:::1;:6;836:14:::0;;751:104;22375:16:::1;22354:37:::0;-1:-1:-1;22398:31:0::1;3052:10:::0;22422:6:::1;22398:9;:31::i;:::-;22443:9;22438:388;22462:6;22458:1;:10;22438:388;;;22485:14:::0;;22481:258:::1;;22508:33;22603:10;22594:6;20600:5;22556:11;;22544:9;:23;;;;:::i;:::-;:47;;;;:::i;:::-;:56;;;;:::i;:::-;:69;;;;:::i;:::-;22508:105:::0;-1:-1:-1;22641:38:0::1;22669:10:::0;22508:105;22641:38:::1;:::i;:::-;22622:57;::::0;;::::1;:::i;:::-;;;22707:25;22686:17;;:46;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;22481:258:0::1;22746:12:::0;::::1;::::0;::::1;:::i;:::-;22803:17;::::0;22764:36:::1;::::0;;;:24:::1;:36;::::0;;;;:56;22746:12;-1:-1:-1;22470:3:0;;-1:-1:-1;22470:3:0::1;::::0;::::1;:::i;:::-;;;;22438:388;;;;22853:15;22832:17;;:36;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;4039:1:0;4301:7;:22;-1:-1:-1;;;;21865:1008:0:o;24230:91::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;24303:13:::1;::::0;;-1:-1:-1;;;;24286:30:0;::::1;-1:-1:-1::0;;;24303:13:0;;;::::1;;;24302:14;24286:30:::0;;::::1;;::::0;;24230:91::o;6901:146::-;6990:52;3052:10;7023:8;7033;6990:18;:52::i;27297:603::-;4080:1;4206:7;;:19;;4198:63;;;;-1:-1:-1;;;4198:63:0;;;;;;;:::i;:::-;4080:1;4268:7;:18;27385:13:::1;::::0;-1:-1:-1;;;27385:13:0;::::1;;;27377:77;;;::::0;-1:-1:-1;;;27377:77:0;;21603:2:1;27377:77:0::1;::::0;::::1;21585:21:1::0;21642:2;21622:18;;;21615:30;21681:34;21661:18;;;21654:62;-1:-1:-1;;;21732:18:1;;;21725:49;21791:19;;27377:77:0::1;21401:415:1::0;27377:77:0::1;27475:1;27467:5;:9;27459:63;;;::::0;-1:-1:-1;;;27459:63:0;;22023:2:1;27459:63:0::1;::::0;::::1;22005:21:1::0;22062:2;22042:18;;;22035:30;22101:34;22081:18;;;22074:62;-1:-1:-1;;;22152:18:1;;;22145:39;22201:19;;27459:63:0::1;21821:405:1::0;27459:63:0::1;3052:10:::0;27535:16:::1;27543:7:::0;27535::::1;:16::i;:::-;-1:-1:-1::0;;;;;27535:32:0::1;;27527:88;;;;-1:-1:-1::0;;;27527:88:0::1;;;;;;;:::i;:::-;27623:13;27642:22;27656:7;27642:13;:22::i;:::-;27622:42;;;27678:8;27677:9;27669:65;;;::::0;-1:-1:-1;;;27669:65:0;;22845:2:1;27669:65:0::1;::::0;::::1;22827:21:1::0;22884:2;22864:18;;;22857:30;22923:34;22903:18;;;22896:62;-1:-1:-1;;;22974:18:1;;;22967:41;23025:19;;27669:65:0::1;22643:407:1::0;27669:65:0::1;27741:19;27763:54;;;;;;;;27771:7;27763:54;;;;27780:5;27763:54;;;;27787:12;3052:10:::0;;2979:88;27787:12:::1;-1:-1:-1::0;;;;;27763:54:0;;::::1;::::0;;27801:15:::1;27763:54;::::0;;::::1;::::0;27824:8:::1;:19:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;27824:19:0;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;;;;;;27824:19:0::1;::::0;;;::::1;;::::0;;::::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;3052:10:0;-1:-1:-1;;;;;27855:40:0::1;27866:7;27855:40;27889:5;27855:40;;;;3033:25:1::0;;3021:2;3006:18;;2887:177;27855:40:0::1;;;;;;;;-1:-1:-1::0;;4039:1:0;4301:7;:22;-1:-1:-1;;27297:603:0:o;27905:424::-;4080:1;4206:7;;:19;;4198:63;;;;-1:-1:-1;;;4198:63:0;;;;;;;:::i;:::-;4080:1;4268:7;:18;27973:13:::1;::::0;28012:22:::1;28026:7:::0;28012:13:::1;:22::i;:::-;27972:62;;;;28049:8;28041:60;;;;-1:-1:-1::0;;;28041:60:0::1;;;;;;;:::i;:::-;3052:10:::0;-1:-1:-1;;;;;28114:45:0::1;:8;28123:12;28114:22;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;:29:::1;:22;::::0;;::::1;;:29;::::0;-1:-1:-1;;;;;28114:29:0::1;:45;28106:101;;;;-1:-1:-1::0;;;28106:101:0::1;;;;;;;:::i;:::-;28239:8;28248:15:::0;;:19:::1;::::0;28266:1:::1;::::0;28248:19:::1;:::i;:::-;28239:29;;;;;;;;:::i;:::-;;;;;;;;;;;28214:8;28223:12;28214:22;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;:54;;:22:::1;::::0;;::::1;;:54:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;;;28214:54:0::1;-1:-1:-1::0;;;;;28214:54:0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;::::1;::::0;28273:8:::1;:14:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;-1:-1:-1::0;;28273:14:0;;;;;::::1;;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;;28273:14:0::1;::::0;;::::1;;::::0;;;;;28299:25:::1;::::0;28316:7;;28299:25:::1;::::0;::::1;-1:-1:-1::0;;4039:1:0;4301:7;:22;-1:-1:-1;27905:424:0:o;25223:573::-;4080:1;4206:7;;:19;;4198:63;;;;-1:-1:-1;;;4198:63:0;;;;;;;:::i;:::-;4080:1;4268:7;:18;25301:13:::1;25317:16;25325:7:::0;25317::::1;:16::i;:::-;25301:32:::0;-1:-1:-1;3052:10:0;-1:-1:-1;;;;;25346:21:0;::::1;;25338:77;;;::::0;-1:-1:-1;;;25338:77:0;;23257:2:1;25338:77:0::1;::::0;::::1;23239:21:1::0;23296:2;23276:18;;;23269:30;23335:34;23315:18;;;23308:62;-1:-1:-1;;;23386:18:1;;;23379:41;23437:19;;25338:77:0::1;23055:407:1::0;25338:77:0::1;25422:14;25439:26;25457:7;25439:17;:26::i;:::-;25422:43;;25487:1;25478:6;:10;25470:49;;;::::0;-1:-1:-1;;;25470:49:0;;13193:2:1;25470:49:0::1;::::0;::::1;13175:21:1::0;13232:2;13212:18;;;13205:30;13271:28;13251:18;;;13244:56;13317:18;;25470:49:0::1;12991:350:1::0;25470:49:0::1;25549:6;25528:17;;:27;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;25596:17:0::1;::::0;25560:33:::1;::::0;;;:24:::1;:33;::::0;;;;;:53;;;;25641:40;;-1:-1:-1;;;;;25641:19:0;::::1;::::0;25669:6;;25560:33;25641:40;25560:33;25641:40;25669:6;25641:19;:40:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25622:59;;;25694:7;25686:62;;;;-1:-1:-1::0;;;25686:62:0::1;;;;;;;:::i;:::-;25777:5;-1:-1:-1::0;;;;;25762:29:0::1;;25784:6;25762:29;;;;3033:25:1::0;;3021:2;3006:18;;2887:177;25762:29:0::1;;;;;;;;-1:-1:-1::0;;4039:1:0;4301:7;:22;-1:-1:-1;;25223:573:0:o;31416:95::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;31485:21;;::::1;::::0;:9:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;26709:355::-:0;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;26766:21:::1;26790:16;:6;836:14:::0;;751:104;26790:16:::1;26766:40:::0;-1:-1:-1;26813:29:0::1;26845:25;26766:40:::0;26845:9:::1;:25;:::i;:::-;26813:57:::0;-1:-1:-1;26875:19:0::1;26897:37;26921:13:::0;26813:57;26897:37:::1;:::i;:::-;26875:59;;26962:21;26941:17;;:42;;;;;;;:::i;:::-;;;;;;;;27009:11;26988:17;;:32;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;27032:27:0::1;::::0;27049:9:::1;3033:25:1::0;;27032:27:0::1;::::0;3021:2:1;3006:18;27032:27:0::1;;;;;;;26761:303;;;26709:355::o:0;7647:272::-;7773:41;3052:10;7806:7;7773:18;:41::i;:::-;7765:103;;;;-1:-1:-1;;;7765:103:0;;;;;;;:::i;:::-;7875:39;7889:4;7895:2;7899:7;7908:5;7875:13;:39::i;30252:382::-;8252:4;8270:16;;;:7;:16;;;;;;30316:13;;-1:-1:-1;;;;;8270:16:0;30336:76;;;;-1:-1:-1;;;30336:76:0;;23669:2:1;30336:76:0;;;23651:21:1;23708:2;23688:18;;;23681:30;23747:34;23727:18;;;23720:62;-1:-1:-1;;;23798:18:1;;;23791:45;23853:19;;30336:76:0;23467:411:1;30336:76:0;30424:8;;-1:-1:-1;;;30424:8:0;;;;30419:35;;30441:13;30434:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30252:382;;;:::o;30419:35::-;30461:28;30492:10;:8;:10::i;:::-;30461:41;;30547:1;30522:14;30516:28;:32;:113;;;;;;;;;;;;;;;;;30576:14;30592:18;:7;:16;:18::i;:::-;30612:9;30559:63;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;30516:113;30509:120;30252:382;-1:-1:-1;;;30252:382:0:o;32274:105::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;32345:17:::1;:29:::0;32274:105::o;31906:91::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;31970:11:::1;:22:::0;31906:91::o;26495:209::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;26555:12:::1;26581:7;3459:6:::0;;-1:-1:-1;;;;;3459:6:0;;3393:77;26581:7:::1;-1:-1:-1::0;;;;;26573:21:0::1;26603;26573:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26554:76;;;26645:7;26637:62;;;;-1:-1:-1::0;;;26637:62:0::1;;;;;;;:::i;30639:330::-:0;30706:7;30726:17;30746:19;30756:8;30746:9;:19::i;:::-;30726:39;;30770:13;30799:9;30794:152;30818:9;30814:1;:13;30794:152;;;30849:15;30867:32;30887:8;30897:1;30867:19;:32::i;:::-;30849:50;;30914:26;30932:7;30914:17;:26::i;:::-;30905:35;;;;:::i;:::-;;;30834:112;30829:3;;;;;:::i;:::-;;;;30794:152;;;-1:-1:-1;30959:5:0;30639:330;-1:-1:-1;;;30639:330:0:o;29901:86::-;29944:16;29974:8;29967:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29967:15:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29901:86;:::o;3587:188::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3670:22:0;::::1;3662:73;;;::::0;-1:-1:-1;;;3662:73:0;;25743:2:1;3662:73:0::1;::::0;::::1;25725:21:1::0;25782:2;25762:18;;;25755:30;25821:34;25801:18;;;25794:62;-1:-1:-1;;;25872:18:1;;;25865:36;25918:19;;3662:73:0::1;25541:402:1::0;3662:73:0::1;3742:28;3761:8;3742:18;:28::i;22878:702::-:0;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;22980:34;;::::1;22973:42;;;;:::i;:::-;23027:20:::0;;;;;:42:::1;;-1:-1:-1::0;23051:18:0;;;23027:42:::1;23020:50;;;;:::i;:::-;23079:19;::::0;23103:70:::1;23123:18:::0;;::::1;23103:70;;;23163:7;;23171:1;23163:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;23148:25;::::0;::::1;;::::0;::::1;:::i;:::-;::::0;-1:-1:-1;23143:3:0;::::1;::::0;::::1;:::i;:::-;;;;23103:70;;;;23222:9;;23207:11;23188:16;:6;836:14:::0;;751:104;23188:16:::1;:30;;;;:::i;:::-;:43;;23180:81;;;::::0;-1:-1:-1;;;23180:81:0;;20198:2:1;23180:81:0::1;::::0;::::1;20180:21:1::0;20237:2;20217:18;;;20210:30;-1:-1:-1;;;20256:18:1;;;20249:55;20321:18;;23180:81:0::1;19996:349:1::0;23180:81:0::1;23275:9;23270:306;23290:20:::0;;::::1;23270:306;;;23323:12;23338:7;;23346:1;23338:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;23323:25;;23361:9;23356:215;23380:6;23376:10;;:1;:10;23356:215;;;23400:18;:6;934:19:::0;;952:1;934:19;;;860:103;23400:18:::1;23427:15;23445:16;:6;836:14:::0;;751:104;23445:16:::1;23427:34;;23470:32;23480:9;;23490:1;23480:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;23470:32::-;23547:17;::::0;23511:33:::1;::::0;;;:24:::1;:33;::::0;;;;;:53;23388:3;::::1;::::0;::::1;:::i;:::-;;;;23356:215;;;;23317:259;23312:3;;;;;:::i;:::-;;;;23270:306;;;;22968:612;22878:702:::0;;;;:::o;31294:117::-;3459:6;;-1:-1:-1;;;;;3459:6:0;3052:10;3509:23;3501:68;;;;-1:-1:-1;;;3501:68:0;;;;;;;:::i;:::-;31374:32;;::::1;::::0;:13:::1;::::0;:32:::1;::::0;::::1;::::0;::::1;:::i;13361:224::-:0;13463:4;-1:-1:-1;;;;;;13487:50:0;;-1:-1:-1;;;13487:50:0;;:90;;;13541:36;13565:11;13541:23;:36::i;10227:161::-;10296:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;10296:29:0;-1:-1:-1;;;;;10296:29:0;;;;;;;;:24;;10346:23;10296:24;10346:14;:23::i;:::-;-1:-1:-1;;;;;10337:46:0;;;;;;;;;;;10227:161;;:::o;8310:330::-;8402:4;8270:16;;;:7;:16;;;;;;-1:-1:-1;;;;;8270:16:0;8413:73;;;;-1:-1:-1;;;8413:73:0;;26556:2:1;8413:73:0;;;26538:21:1;26595:2;26575:18;;;26568:30;26634:34;26614:18;;;26607:62;-1:-1:-1;;;26685:18:1;;;26678:42;26737:19;;8413:73:0;26354:408:1;8413:73:0;8493:13;8509:23;8524:7;8509:14;:23::i;:::-;8493:39;;8558:5;-1:-1:-1;;;;;8547:16:0;:7;-1:-1:-1;;;;;8547:16:0;;:51;;;;8591:7;-1:-1:-1;;;;;8567:31:0;:20;8579:7;8567:11;:20::i;:::-;-1:-1:-1;;;;;8567:31:0;;8547:51;:87;;;-1:-1:-1;;;;;;7166:25:0;;;7148:4;7166:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;8602:32;8539:96;8310:330;-1:-1:-1;;;;8310:330:0:o;9742:480::-;9861:4;-1:-1:-1;;;;;9834:31:0;:23;9849:7;9834:14;:23::i;:::-;-1:-1:-1;;;;;9834:31:0;;9826:81;;;;-1:-1:-1;;;9826:81:0;;26969:2:1;9826:81:0;;;26951:21:1;27008:2;26988:18;;;26981:30;27047:34;27027:18;;;27020:62;-1:-1:-1;;;27098:18:1;;;27091:35;27143:19;;9826:81:0;26767:401:1;9826:81:0;-1:-1:-1;;;;;9920:16:0;;9912:65;;;;-1:-1:-1;;;9912:65:0;;27375:2:1;9912:65:0;;;27357:21:1;27414:2;27394:18;;;27387:30;27453:34;27433:18;;;27426:62;-1:-1:-1;;;27504:18:1;;;27497:34;27548:19;;9912:65:0;27173:400:1;9912:65:0;9984:39;10005:4;10011:2;10015:7;9984:20;:39::i;:::-;10028:29;10045:1;10049:7;10028:8;:29::i;:::-;-1:-1:-1;;;;;10064:15:0;;;;;;:9;:15;;;;;:20;;10083:1;;10064:15;:20;;10083:1;;10064:20;:::i;:::-;;;;-1:-1:-1;;;;;;;10089:13:0;;;;;;:9;:13;;;;;:18;;10106:1;;10089:13;:18;;10106:1;;10089:18;:::i;:::-;;;;-1:-1:-1;;10112:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;10112:21:0;-1:-1:-1;;;;;10112:21:0;;;;;;;;;10145:27;;10112:16;;10145:27;;;;;;;6409:277;6339:347;;:::o;7924:259::-;8032:28;8042:4;8048:2;8052:7;8032:9;:28::i;:::-;8075:48;8098:4;8104:2;8108:7;8117:5;8075:22;:48::i;:::-;8067:111;;;;-1:-1:-1;;;8067:111:0;;;;;;;:::i;8645:101::-;8715:26;8725:2;8729:7;8715:26;;;;;;;;;;;;:9;:26::i;33176:171::-;33242:9;33237:106;33261:6;33257:1;:10;33237:106;;;33280:18;:6;934:19;;952:1;934:19;;;860:103;33280:18;33306:31;33316:2;33320:16;:6;836:14;;751:104;33320:16;33306:9;:31::i;:::-;33269:3;;;;:::i;:::-;;;;33237:106;;10393:264;10508:8;-1:-1:-1;;;;;10499:17:0;:5;-1:-1:-1;;;;;10499:17:0;;;10491:55;;;;-1:-1:-1;;;10491:55:0;;28199:2:1;10491:55:0;;;28181:21:1;28238:2;28218:18;;;28211:30;28277:27;28257:18;;;28250:55;28322:18;;10491:55:0;27997:349:1;10491:55:0;-1:-1:-1;;;;;10553:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;10553:46:0;;;;;;;;;;10611:41;;1235::1;;;10611::0;;1208:18:1;10611:41:0;;;;;;;10393:264;;;:::o;32781:90::-;32832:13;32859:7;32852:14;;;;;:::i;132:413::-;187:13;211:10;207:26;;-1:-1:-1;;223:10:0;;;;;;;;;;;;-1:-1:-1;;;223:10:0;;;;;132:413::o;207:26::-;255:5;240:12;286:54;293:9;;286:54;;310:8;;;;:::i;:::-;;-1:-1:-1;324:10:0;;-1:-1:-1;332:2:0;324:10;;:::i;:::-;;;286:54;;;346:19;378:6;368:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;368:17:0;;346:39;;392:121;399:10;;392:121;;417:11;427:1;417:11;;:::i;:::-;;-1:-1:-1;477:10:0;485:2;477:5;:10;:::i;:::-;464:24;;:2;:24;:::i;:::-;451:39;;434:6;441;434:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;434:56:0;;;;;;;;-1:-1:-1;496:11:0;505:2;496:11;;:::i;:::-;;;392:121;;3780:174;3867:6;;;-1:-1:-1;;;;;3880:17:0;;;-1:-1:-1;;;;;;3880:17:0;;;;;;;3909:40;;3867:6;;;3880:17;3867:6;;3909:40;;3848:16;;3909:40;3843:111;3780:174;:::o;5051:256::-;5152:4;-1:-1:-1;;;;;;5170:40:0;;-1:-1:-1;;;5170:40:0;;:92;;-1:-1:-1;;;;;;;5214:48:0;;-1:-1:-1;;;5214:48:0;5170:92;:132;;;-1:-1:-1;;;;;;;;;;4479:40:0;;;5266:36;4377:147;32876:295;32991:13;33010:22;33024:7;33010:13;:22::i;:::-;32990:42;;;33046:8;33045:9;33037:75;;;;-1:-1:-1;;;33037:75:0;;28670:2:1;33037:75:0;;;28652:21:1;28709:2;28689:18;;;28682:30;28748:34;28728:18;;;28721:62;-1:-1:-1;;;28799:18:1;;;28792:51;28860:19;;33037:75:0;28468:417:1;33037:75:0;33121:45;33148:4;33154:2;33158:7;33121:26;:45::i;10662:572::-;10773:4;-1:-1:-1;;;;;10788:13:0;;649:19;:23;10784:445;;10815:72;;-1:-1:-1;;;10815:72:0;;-1:-1:-1;;;;;10815:36:0;;;;;:72;;3052:10;;10866:4;;10872:7;;10881:5;;10815:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10815:72:0;;;;;;;;-1:-1:-1;;10815:72:0;;;;;;;;;;;;:::i;:::-;;;10811:391;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11023:13:0;;11019:177;;11043:60;;-1:-1:-1;;;11043:60:0;;;;;;;:::i;11019:177::-;11173:6;11167:13;11158:6;11154:2;11150:15;11143:38;10811:391;-1:-1:-1;;;;;;10925:51:0;-1:-1:-1;;;10925:51:0;;-1:-1:-1;10918:58:0;;10784:445;-1:-1:-1;11225:4:0;10662:572;;;;;;:::o;8751:237::-;8841:18;8847:2;8851:7;8841:5;:18::i;:::-;8874:54;8905:1;8909:2;8913:7;8922:5;8874:22;:54::i;:::-;8866:117;;;;-1:-1:-1;;;8866:117:0;;;;;;;:::i;15037:589::-;-1:-1:-1;;;;;15243:18:0;;15239:187;;15278:40;15310:7;16453:10;:17;;16426:24;;;;:15;:24;;;;;:44;;;16481:24;;;;;;;;;;;;16349:164;15278:40;15239:187;;;15348:2;-1:-1:-1;;;;;15340:10:0;:4;-1:-1:-1;;;;;15340:10:0;;15336:90;;15367:47;15400:4;15406:7;15367:32;:47::i;:::-;-1:-1:-1;;;;;15440:16:0;;15436:183;;15473:45;15510:7;15473:36;:45::i;15436:183::-;15546:4;-1:-1:-1;;;;;15540:10:0;:2;-1:-1:-1;;;;;15540:10:0;;15536:83;;15567:40;15595:2;15599:7;15567:27;:40::i;8993:394::-;-1:-1:-1;;;;;9067:16:0;;9059:61;;;;-1:-1:-1;;;9059:61:0;;29840:2:1;9059:61:0;;;29822:21:1;;;29859:18;;;29852:30;29918:34;29898:18;;;29891:62;29970:18;;9059:61:0;29638:356:1;9059:61:0;8252:4;8270:16;;;:7;:16;;;;;;-1:-1:-1;;;;;8270:16:0;:30;9125:58;;;;-1:-1:-1;;;9125:58:0;;30201:2:1;9125:58:0;;;30183:21:1;30240:2;30220:18;;;30213:30;30279;30259:18;;;30252:58;30327:18;;9125:58:0;29999:352:1;9125:58:0;9190:45;9219:1;9223:2;9227:7;9190:20;:45::i;:::-;-1:-1:-1;;;;;9242:13:0;;;;;;:9;:13;;;;;:18;;9259:1;;9242:13;:18;;9259:1;;9242:18;:::i;:::-;;;;-1:-1:-1;;9265:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;9265:21:0;-1:-1:-1;;;;;9265:21:0;;;;;;;;9298:33;;9265:16;;;9298:33;;9265:16;;9298:33;31264:20:::1;31196:93:::0;:::o;17140:988::-;17406:22;17456:1;17431:22;17448:4;17431:16;:22::i;:::-;:26;;;;:::i;:::-;17468:18;17489:26;;;:17;:26;;;;;;17406:51;;-1:-1:-1;17622:28:0;;;17618:328;;-1:-1:-1;;;;;17689:18:0;;17667:19;17689:18;;;:12;:18;;;;;;;;:34;;;;;;;;;17740:30;;;;;;:44;;;17857:30;;:17;:30;;;;;:43;;;17618:328;-1:-1:-1;18042:26:0;;;;:17;:26;;;;;;;;18035:33;;;-1:-1:-1;;;;;18086:18:0;;;;;:12;:18;;;;;:34;;;;;;;18079:41;17140:988::o;18423:1079::-;18701:10;:17;18676:22;;18701:21;;18721:1;;18701:21;:::i;:::-;18733:18;18754:24;;;:15;:24;;;;;;19127:10;:26;;18676:46;;-1:-1:-1;18754:24:0;;18676:46;;19127:26;;;;;;:::i;:::-;;;;;;;;;19105:48;;19191:11;19166:10;19177;19166:22;;;;;;;;:::i;:::-;;;;;;;;;;;;:36;;;;19271:28;;;:15;:28;;;;;;;:41;;;19443:24;;;;;19436:31;19478:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;18494:1008;;;18423:1079;:::o;15927:221::-;16012:14;16029:20;16046:2;16029:16;:20::i;:::-;-1:-1:-1;;;;;16060:16:0;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;16105:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;15927:221:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:1;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:128;186:3;217:1;213:6;210:1;207:13;204:39;;;223:18;;:::i;:::-;-1:-1:-1;259:9:1;;146:128::o;279:127::-;340:10;335:3;331:20;328:1;321:31;371:4;368:1;361:15;395:4;392:1;385:15;411:120;451:1;477;467:35;;482:18;;:::i;:::-;-1:-1:-1;516:9:1;;411:120::o;536:168::-;576:7;642:1;638;634:6;630:14;627:1;624:21;619:1;612:9;605:17;601:45;598:71;;;649:18;;:::i;:::-;-1:-1:-1;689:9:1;;536:168::o;709:131::-;-1:-1:-1;;;;;;783:32:1;;773:43;;763:71;;830:1;827;820:12;845:245;903:6;956:2;944:9;935:7;931:23;927:32;924:52;;;972:1;969;962:12;924:52;1011:9;998:23;1030:30;1054:5;1030:30;:::i;1287:258::-;1359:1;1369:113;1383:6;1380:1;1377:13;1369:113;;;1459:11;;;1453:18;1440:11;;;1433:39;1405:2;1398:10;1369:113;;;1500:6;1497:1;1494:13;1491:48;;;-1:-1:-1;;1535:1:1;1517:16;;1510:27;1287:258::o;1550:::-;1592:3;1630:5;1624:12;1657:6;1652:3;1645:19;1673:63;1729:6;1722:4;1717:3;1713:14;1706:4;1699:5;1695:16;1673:63;:::i;:::-;1790:2;1769:15;-1:-1:-1;;1765:29:1;1756:39;;;;1797:4;1752:50;;1550:258;-1:-1:-1;;1550:258:1:o;1813:220::-;1962:2;1951:9;1944:21;1925:4;1982:45;2023:2;2012:9;2008:18;2000:6;1982:45;:::i;2038:180::-;2097:6;2150:2;2138:9;2129:7;2125:23;2121:32;2118:52;;;2166:1;2163;2156:12;2118:52;-1:-1:-1;2189:23:1;;2038:180;-1:-1:-1;2038:180:1:o;2431:131::-;-1:-1:-1;;;;;2506:31:1;;2496:42;;2486:70;;2552:1;2549;2542:12;2567:315;2635:6;2643;2696:2;2684:9;2675:7;2671:23;2667:32;2664:52;;;2712:1;2709;2702:12;2664:52;2751:9;2738:23;2770:31;2795:5;2770:31;:::i;:::-;2820:5;2872:2;2857:18;;;;2844:32;;-1:-1:-1;;;2567:315:1:o;3069:456::-;3146:6;3154;3162;3215:2;3203:9;3194:7;3190:23;3186:32;3183:52;;;3231:1;3228;3221:12;3183:52;3270:9;3257:23;3289:31;3314:5;3289:31;:::i;:::-;3339:5;-1:-1:-1;3396:2:1;3381:18;;3368:32;3409:33;3368:32;3409:33;:::i;:::-;3069:456;;3461:7;;-1:-1:-1;;;3515:2:1;3500:18;;;;3487:32;;3069:456::o;3530:248::-;3598:6;3606;3659:2;3647:9;3638:7;3634:23;3630:32;3627:52;;;3675:1;3672;3665:12;3627:52;-1:-1:-1;;3698:23:1;;;3768:2;3753:18;;;3740:32;;-1:-1:-1;3530:248:1:o;4062:247::-;4121:6;4174:2;4162:9;4153:7;4149:23;4145:32;4142:52;;;4190:1;4187;4180:12;4142:52;4229:9;4216:23;4248:31;4273:5;4248:31;:::i;4314:127::-;4375:10;4370:3;4366:20;4363:1;4356:31;4406:4;4403:1;4396:15;4430:4;4427:1;4420:15;4446:632;4511:5;4541:18;4582:2;4574:6;4571:14;4568:40;;;4588:18;;:::i;:::-;4663:2;4657:9;4631:2;4717:15;;-1:-1:-1;;4713:24:1;;;4739:2;4709:33;4705:42;4693:55;;;4763:18;;;4783:22;;;4760:46;4757:72;;;4809:18;;:::i;:::-;4849:10;4845:2;4838:22;4878:6;4869:15;;4908:6;4900;4893:22;4948:3;4939:6;4934:3;4930:16;4927:25;4924:45;;;4965:1;4962;4955:12;4924:45;5015:6;5010:3;5003:4;4995:6;4991:17;4978:44;5070:1;5063:4;5054:6;5046;5042:19;5038:30;5031:41;;;;4446:632;;;;;:::o;5083:451::-;5152:6;5205:2;5193:9;5184:7;5180:23;5176:32;5173:52;;;5221:1;5218;5211:12;5173:52;5261:9;5248:23;5294:18;5286:6;5283:30;5280:50;;;5326:1;5323;5316:12;5280:50;5349:22;;5402:4;5394:13;;5390:27;-1:-1:-1;5380:55:1;;5431:1;5428;5421:12;5380:55;5454:74;5520:7;5515:2;5502:16;5497:2;5493;5489:11;5454:74;:::i;5539:388::-;5607:6;5615;5668:2;5656:9;5647:7;5643:23;5639:32;5636:52;;;5684:1;5681;5674:12;5636:52;5723:9;5710:23;5742:31;5767:5;5742:31;:::i;:::-;5792:5;-1:-1:-1;5849:2:1;5834:18;;5821:32;5862:33;5821:32;5862:33;:::i;:::-;5914:7;5904:17;;;5539:388;;;;;:::o;6223:247::-;6005:12;;5993:25;;6067:4;6056:16;;;6050:23;6034:14;;;6027:47;6127:4;6116:16;;;6110:23;-1:-1:-1;;;;;6106:49:1;6090:14;;;6083:73;6205:4;6194:16;;;6188:23;6172:14;;;6165:47;6407:3;6392:19;;6420:44;5932:286;6738:416;6803:6;6811;6864:2;6852:9;6843:7;6839:23;6835:32;6832:52;;;6880:1;6877;6870:12;6832:52;6919:9;6906:23;6938:31;6963:5;6938:31;:::i;:::-;6988:5;-1:-1:-1;7045:2:1;7030:18;;7017:32;7087:15;;7080:23;7068:36;;7058:64;;7118:1;7115;7108:12;7159:795;7254:6;7262;7270;7278;7331:3;7319:9;7310:7;7306:23;7302:33;7299:53;;;7348:1;7345;7338:12;7299:53;7387:9;7374:23;7406:31;7431:5;7406:31;:::i;:::-;7456:5;-1:-1:-1;7513:2:1;7498:18;;7485:32;7526:33;7485:32;7526:33;:::i;:::-;7578:7;-1:-1:-1;7632:2:1;7617:18;;7604:32;;-1:-1:-1;7687:2:1;7672:18;;7659:32;7714:18;7703:30;;7700:50;;;7746:1;7743;7736:12;7700:50;7769:22;;7822:4;7814:13;;7810:27;-1:-1:-1;7800:55:1;;7851:1;7848;7841:12;7800:55;7874:74;7940:7;7935:2;7922:16;7917:2;7913;7909:11;7874:74;:::i;:::-;7864:84;;;7159:795;;;;;;;:::o;7959:703::-;8180:2;8232:21;;;8302:13;;8205:18;;;8324:22;;;8151:4;;8180:2;8403:15;;;;8377:2;8362:18;;;8151:4;8446:190;8460:6;8457:1;8454:13;8446:190;;;8509:45;8550:3;8541:6;8535:13;6005:12;;5993:25;;6067:4;6056:16;;;6050:23;6034:14;;;6027:47;6127:4;6116:16;;;6110:23;-1:-1:-1;;;;;6106:49:1;6090:14;;;6083:73;6205:4;6194:16;;;6188:23;6172:14;;6165:47;5932:286;8509:45;8611:15;;;;8583:4;8574:14;;;;;8482:1;8475:9;8446:190;;;-1:-1:-1;8653:3:1;;7959:703;-1:-1:-1;;;;;;7959:703:1:o;8667:367::-;8730:8;8740:6;8794:3;8787:4;8779:6;8775:17;8771:27;8761:55;;8812:1;8809;8802:12;8761:55;-1:-1:-1;8835:20:1;;8878:18;8867:30;;8864:50;;;8910:1;8907;8900:12;8864:50;8947:4;8939:6;8935:17;8923:29;;9007:3;9000:4;8990:6;8987:1;8983:14;8975:6;8971:27;8967:38;8964:47;8961:67;;;9024:1;9021;9014:12;8961:67;8667:367;;;;;:::o;9039:771::-;9159:6;9167;9175;9183;9236:2;9224:9;9215:7;9211:23;9207:32;9204:52;;;9252:1;9249;9242:12;9204:52;9292:9;9279:23;9321:18;9362:2;9354:6;9351:14;9348:34;;;9378:1;9375;9368:12;9348:34;9417:70;9479:7;9470:6;9459:9;9455:22;9417:70;:::i;:::-;9506:8;;-1:-1:-1;9391:96:1;-1:-1:-1;9594:2:1;9579:18;;9566:32;;-1:-1:-1;9610:16:1;;;9607:36;;;9639:1;9636;9629:12;9607:36;;9678:72;9742:7;9731:8;9720:9;9716:24;9678:72;:::i;:::-;9039:771;;;;-1:-1:-1;9769:8:1;-1:-1:-1;;;;9039:771:1:o;9815:380::-;9894:1;9890:12;;;;9937;;;9958:61;;10012:4;10004:6;10000:17;9990:27;;9958:61;10065:2;10057:6;10054:14;10034:18;10031:38;10028:161;;;10111:10;10106:3;10102:20;10099:1;10092:31;10146:4;10143:1;10136:15;10174:4;10171:1;10164:15;10028:161;;9815:380;;;:::o;10200:356::-;10402:2;10384:21;;;10421:18;;;10414:30;10480:34;10475:2;10460:18;;10453:62;10547:2;10532:18;;10200:356::o;11801:413::-;12003:2;11985:21;;;12042:2;12022:18;;;12015:30;12081:34;12076:2;12061:18;;12054:62;-1:-1:-1;;;12147:2:1;12132:18;;12125:47;12204:3;12189:19;;11801:413::o;12631:355::-;12833:2;12815:21;;;12872:2;12852:18;;;12845:30;12911:33;12906:2;12891:18;;12884:61;12977:2;12962:18;;12631:355::o;13346:135::-;13385:3;-1:-1:-1;;13406:17:1;;13403:43;;;13426:18;;:::i;:::-;-1:-1:-1;13473:1:1;13462:13;;13346:135::o;13486:125::-;13526:4;13554:1;13551;13548:8;13545:34;;;13559:18;;:::i;:::-;-1:-1:-1;13596:9:1;;13486:125::o;13826:406::-;14028:2;14010:21;;;14067:2;14047:18;;;14040:30;-1:-1:-1;;;;;;;;;;;14101:2:1;14086:18;;14079:62;-1:-1:-1;;;14172:2:1;14157:18;;14150:40;14222:3;14207:19;;13826:406::o;14237:403::-;14439:2;14421:21;;;14478:2;14458:18;;;14451:30;14517:34;14512:2;14497:18;;14490:62;-1:-1:-1;;;14583:2:1;14568:18;;14561:37;14630:3;14615:19;;14237:403::o;14645:127::-;14706:10;14701:3;14697:20;14694:1;14687:31;14737:4;14734:1;14727:15;14761:4;14758:1;14751:15;15660:127;15721:10;15716:3;15712:20;15709:1;15702:31;15752:4;15749:1;15742:15;15776:4;15773:1;15766:15;17802:251;17872:6;17925:2;17913:9;17904:7;17900:23;17896:32;17893:52;;;17941:1;17938;17931:12;17893:52;17973:9;17967:16;17992:31;18017:5;17992:31;:::i;22231:407::-;22433:2;22415:21;;;22472:2;22452:18;;;22445:30;22511:34;22506:2;22491:18;;22484:62;-1:-1:-1;;;22577:2:1;22562:18;;22555:41;22628:3;22613:19;;22231:407::o;24009:1527::-;24233:3;24271:6;24265:13;24297:4;24310:51;24354:6;24349:3;24344:2;24336:6;24332:15;24310:51;:::i;:::-;24424:13;;24383:16;;;;24446:55;24424:13;24383:16;24468:15;;;24446:55;:::i;:::-;24590:13;;24523:20;;;24563:1;;24650;24672:18;;;;24725;;;;24752:93;;24830:4;24820:8;24816:19;24804:31;;24752:93;24893:2;24883:8;24880:16;24860:18;24857:40;24854:167;;;-1:-1:-1;;;24920:33:1;;24976:4;24973:1;24966:15;25006:4;24927:3;24994:17;24854:167;25037:18;25064:110;;;;25188:1;25183:328;;;;25030:481;;25064:110;-1:-1:-1;;25099:24:1;;25085:39;;25144:20;;;;-1:-1:-1;25064:110:1;;25183:328;23956:1;23949:14;;;23993:4;23980:18;;25278:1;25292:169;25306:8;25303:1;25300:15;25292:169;;;25388:14;;25373:13;;;25366:37;25431:16;;;;25323:10;;25292:169;;;25296:3;;25492:8;25485:5;25481:20;25474:27;;25030:481;-1:-1:-1;25527:3:1;;24009:1527;-1:-1:-1;;;;;;;;;;;24009:1527:1:o;25948:127::-;26009:10;26004:3;26000:20;25997:1;25990:31;26040:4;26037:1;26030:15;26064:4;26061:1;26054:15;26080:269;26137:6;26190:2;26178:9;26169:7;26165:23;26161:32;26158:52;;;26206:1;26203;26196:12;26158:52;26245:9;26232:23;26295:4;26288:5;26284:16;26277:5;26274:27;26264:55;;26315:1;26312;26305:12;27578:414;27780:2;27762:21;;;27819:2;27799:18;;;27792:30;27858:34;27853:2;27838:18;;27831:62;-1:-1:-1;;;27924:2:1;27909:18;;27902:48;27982:3;27967:19;;27578:414::o;28351:112::-;28383:1;28409;28399:35;;28414:18;;:::i;:::-;-1:-1:-1;28448:9:1;;28351:112::o;28890:489::-;-1:-1:-1;;;;;29159:15:1;;;29141:34;;29211:15;;29206:2;29191:18;;29184:43;29258:2;29243:18;;29236:34;;;29306:3;29301:2;29286:18;;29279:31;;;29084:4;;29327:46;;29353:19;;29345:6;29327:46;:::i;:::-;29319:54;28890:489;-1:-1:-1;;;;;;28890:489:1:o;29384:249::-;29453:6;29506:2;29494:9;29485:7;29481:23;29477:32;29474:52;;;29522:1;29519;29512:12;29474:52;29554:9;29548:16;29573:30;29597:5;29573:30;:::i

Swarm Source

ipfs://bc826f1d706b25139bbb4d256d8d1e88ee3ff61ca7608108c98f612f068c3663
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.