Contract
0xBbD9786f178e2AEBb4b4329c41A821921ca05339
3
[ Download CSV Export ]
OVERVIEW
4444 unique Vending Machine NFTs have been introduced to the Avalanche network.
Latest 25 internal transaction
[ Download CSV Export ]
Contract Name:
VendingMachinesNFT
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/** *Submitted for verification at snowtrace.io on 2022-01-30 */ // SPDX-License-Identifier: MIT // Created by petdomaa100 & 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 {} } contract VendingMachinesNFT is ERC721, 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 maxMintAmountPerTX; uint256 public royalties; uint256 public dust; uint256 public mintRewards; uint256 public salesRewards; uint256 public mintRewardsIndex; uint256 public salesRewardsIndex; uint256 public totalMintRewardsVault; uint256 public totalSalesRewardsVault; mapping(uint256 => uint256) private lastCollectedMintRewardIndex; mapping(uint256 => uint256) private lastCollectedSalesRewardIndex; address private communityAddress; address private donationAddress; 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, uint8 indexed rewardType); event DisbursedRewards(uint256 amount); constructor(string memory _initUnrevealedURI, address _initCommunityAddress, address _initDonationAddress) ERC721("Vending Machines NFT", "VMN") { paused = true; revealed = false; allowListings = true; collectSalesRewardsFromThirdParty = true; cost = 2 ether; maxSupply = 4444; reservedSupply = 400; maxMintAmountPerTX = 10; royalties = 150; mintRewards = 1000; salesRewards = 150; dust = 100000000; mintRewardsIndex = 0; salesRewardsIndex = 0; communityAddress = _initCommunityAddress; donationAddress = _initDonationAddress; 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; mintRewardsIndex += individualMintRewardValue; } tokenIndex++; lastCollectedMintRewardIndex[tokenIndex] = mintRewardsIndex; } totalMintRewardsVault += 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); lastCollectedMintRewardIndex[tokenID] = mintRewardsIndex; } } } 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 claimMintRewards() public payable nonReentrant { uint256 reward = getMintRewardsOfAddress(_msgSender()); require(reward > 0, "You don't have any rewards"); uint256[] memory tokens = walletOfOwner(_msgSender()); for (uint256 i = 0; i < tokens.length; i++) { uint256 tokenID = tokens[i]; lastCollectedMintRewardIndex[tokenID] = mintRewardsIndex; } totalMintRewardsVault -= reward; (bool success, ) = payable(_msgSender()).call{ value: reward }(""); require(success, "AVAX Transaction: Failed to transfer funds"); emit ClaimedRewards(_msgSender(), reward, 1); } function claimMintRewardOfToken(uint256 tokenID) public payable nonReentrant { address owner = ownerOf(tokenID); require(_msgSender() == owner, "Only the owner of a token can claim rewards"); uint256 reward = getMintRewardsOfToken(tokenID); require(reward > 0, "You don't have any rewards"); totalMintRewardsVault -= reward; lastCollectedMintRewardIndex[tokenID] = mintRewardsIndex; (bool success, ) = payable(owner).call{ value: reward }(""); require(success, "AVAX Transaction: Failed to transfer funds"); emit ClaimedRewards(owner, reward, 1); } function claimSalesRewards() public payable nonReentrant { uint256 reward = getSalesRewardsOfAddress(_msgSender()); require(reward > 0, "You don't have any rewards"); uint256[] memory tokens = walletOfOwner(_msgSender()); for (uint256 i = 0; i < tokens.length; i++) { uint256 tokenID = tokens[i]; lastCollectedSalesRewardIndex[tokenID] = salesRewardsIndex; } totalSalesRewardsVault -= reward; (bool success, ) = payable(_msgSender()).call{ value: reward }(""); require(success, "AVAX Transaction: Failed to transfer funds"); emit ClaimedRewards(_msgSender(), reward, 2); } function claimSalesRewardOfToken(uint256 tokenID) public payable nonReentrant { address owner = ownerOf(tokenID); require(_msgSender() == owner, "Only the owner of a token can claim rewards"); uint256 reward = getSalesRewardsOfToken(tokenID); require(reward > 0, "You don't have any rewards"); totalSalesRewardsVault -= reward; lastCollectedSalesRewardIndex[tokenID] = salesRewardsIndex; (bool success, ) = payable(owner).call{ value: reward }(""); require(success, "AVAX Transaction: Failed to transfer funds"); emit ClaimedRewards(owner, reward, 2); } function withdraw() public onlyOwner { uint256 totalRewards = totalMintRewardsVault + totalSalesRewardsVault; uint256 balance_10percent = (address(this).balance - totalRewards) * 10 / 100; (bool success1, ) = payable(communityAddress).call{ value: balance_10percent * 3 }(""); 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 - (totalRewards + 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; mintRewardsIndex += individualRewardValue; totalMintRewardsVault += 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(); salesRewardsIndex += individualSalesRewardValue; lastCollectedSalesRewardIndex[tokenID] += individualSalesRewardValue; totalSalesRewardsVault += 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 totalSupply() public view returns(uint256) { return supply.current(); } function walletOfOwner(address _address) public view returns(uint256[] memory) { uint256 ownerTokenCount = balanceOf(_address); uint256[] memory ownedTokenIDs = new uint256[](ownerTokenCount); uint256 tokenIndex = 1; uint256 ownedTokenIndex = 0; while (ownedTokenIndex < ownerTokenCount && tokenIndex <= maxSupply) { address owner = ownerOf(tokenIndex); if (owner == _address) { ownedTokenIDs[ownedTokenIndex] = tokenIndex; ownedTokenIndex++; } tokenIndex++; } return ownedTokenIDs; } function getMintRewardsOfAddress(address _address) public view returns(uint256) { uint256[] memory tokens = walletOfOwner(_address); uint256 total = 0; for (uint256 i = 0; i < tokens.length; i++) { total += getMintRewardsOfToken(tokens[i]); } return total; } function getSalesRewardsOfAddress(address _address) public view returns(uint256) { uint256[] memory tokens = walletOfOwner(_address); uint256 total = 0; for (uint256 i = 0; i < tokens.length; i++) { total += getSalesRewardsOfToken(tokens[i]); } return total; } function getMintRewardsOfToken(uint256 tokenID) public view returns(uint256) { require(supply.current() >= tokenID, "Query for nonexistent token"); return mintRewardsIndex - lastCollectedMintRewardIndex[tokenID]; } function getSalesRewardsOfToken(uint256 tokenID) public view returns(uint256) { require(supply.current() >= tokenID, "Query for nonexistent token"); return salesRewardsIndex - lastCollectedSalesRewardIndex[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 setMintRewardsIndex(uint256 newAmount) public onlyOwner { mintRewardsIndex = newAmount; } function setSalesRewardsIndex(uint256 newAmount) public onlyOwner { salesRewardsIndex = newAmount; } function setWithdrawAddresses(address newCommunityAddress, address newDonationAddress) public onlyOwner { communityAddress = newCommunityAddress; donationAddress = newDonationAddress; } function _baseURI() internal view override returns(string memory) { return baseURI; } function _beforeTokenTransfer(address from, address to, uint256 tokenID) internal override { (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; salesRewardsIndex += individualSalesRewardValue; totalSalesRewardsVault += salesRewardValue; } } }
[{"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"},{"indexed":true,"internalType":"uint8","name":"rewardType","type":"uint8"}],"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":[],"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":"claimMintRewardOfToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"claimMintRewards","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"claimSalesRewardOfToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"claimSalesRewards","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 VendingMachinesNFT.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 VendingMachinesNFT.Listing[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getMintRewardsOfAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"getMintRewardsOfToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getSalesRewardsOfAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"getSalesRewardsOfToken","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":"mintRewardsIndex","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":"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":[],"name":"salesRewardsIndex","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":"setMintRewardsIndex","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":"setSalesRewardsIndex","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":"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":"tokenID","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMintRewardsVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSalesRewardsVault","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":[{"internalType":"address","name":"_address","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","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"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162004b8b38038062004b8b833981016040819052620000349162000370565b604080518082018252601481527f56656e64696e67204d616368696e6573204e46540000000000000000000000006020808301918252835180850190945260038452622b26a760e91b908401528151919291620000949160009162000297565b508051620000aa90600190602084019062000297565b5050600160065550620000bd3362000182565b60078054630101000160a01b63ffffffff60a01b19909116179055671bc16d674ec80000600b5561115c600c55610190600d55600a600e556096600f8190556103e86011556012556305f5e10060105560006013819055601455601980546001600160a01b038085166001600160a01b031992831617909255601a805492841692909116919091179055604080518082019091526005815264173539b7b760d91b60208201526200016e90620001d4565b62000179836200023c565b505050620004b0565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6007546001600160a01b03163314620002235760405162461bcd60e51b8152602060048201819052602482015260008051602062004b6b83398151915260448201526064015b60405180910390fd5b80516200023890600a90602084019062000297565b5050565b6007546001600160a01b03163314620002875760405162461bcd60e51b8152602060048201819052602482015260008051602062004b6b83398151915260448201526064016200021a565b8051620002389060089060208401905b828054620002a59062000473565b90600052602060002090601f016020900481019282620002c9576000855562000314565b82601f10620002e457805160ff191683800117855562000314565b8280016001018555821562000314579182015b8281111562000314578251825591602001919060010190620002f7565b506200032292915062000326565b5090565b5b8082111562000322576000815560010162000327565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200036b57600080fd5b919050565b6000806000606084860312156200038657600080fd5b83516001600160401b03808211156200039e57600080fd5b818601915086601f830112620003b357600080fd5b815181811115620003c857620003c86200033d565b604051601f8201601f19908116603f01168101908382118183101715620003f357620003f36200033d565b816040528281526020935089848487010111156200041057600080fd5b600091505b8282101562000434578482018401518183018501529083019062000415565b82821115620004465760008484830101525b96506200045891505086820162000353565b935050506200046a6040850162000353565b90509250925092565b600181811c908216806200048857607f821691505b60208210811415620004aa57634e487b7160e01b600052602260045260246000fd5b50919050565b6146ab80620004c06000396000f3fe6080604052600436106104145760003560e01c80637ef6f6561161021e578063b5350ebf11610123578063e02f3993116100ab578063f1b2d6a31161007a578063f1b2d6a314610c56578063f2fde38b14610c78578063f9daade414610c98578063fad9aba314610cb8578063fe2c7fee14610cce57600080fd5b8063e02f399314610bf7578063e985e9c514610c0d578063f053dc5c14610c2d578063f1629d1314610c4357600080fd5b8063d5abeb01116100f2578063d5abeb0114610b8d578063d6fb650c14610ba3578063db2e21bc14610bc3578063dceb262914610bcb578063dd76cba314610be157600080fd5b8063b5350ebf14610b2f578063b88d4fde14610b37578063bf72daad14610b57578063c87b56dd14610b6d57600080fd5b80639b83cddc116101a6578063a22cb46511610175578063a22cb46514610a8f578063a79123a914610aaf578063aec6e27314610acf578063aff7214114610aef578063b36a206414610b0f57600080fd5b80639b83cddc14610a0f578063a0712d6814610a46578063a0ba1bbf14610a59578063a17bd78314610a7a57600080fd5b80638d5190d9116101ed5780638d5190d9146109875780638da5cb5b146109a75780638e6fe1a3146109c557806393eff851146109e557806395d89b41146109fa57600080fd5b80637ef6f65614610912578063825875741461093257806384917f4a1461095257806389ac1fa81461097f57600080fd5b80633ccfd60b116103245780634c261247116102ac57806356fcf95b1161027b57806356fcf95b146108715780635c975abb146108915780636352211e146108b25780636f8b44b0146108d257806370a08231146108f257600080fd5b80634c261247146107ef5780634f8a1db51461080f578063518302271461083057806355f804b31461085157600080fd5b8063437552c0116102f3578063437552c01461074c578063438b63001461076c57806344a0d68a1461079957806344d19d2b146107b957806347d616bc146107cf57600080fd5b80633ccfd60b146106fc5780633e57bb141461071157806342842e0e1461071957806342bba11a1461073957600080fd5b806318160ddd116103a757806328e3a0b21161037657806328e3a0b21461065e5780632a55205a146106745780632b80183f146106b35780632dfa9d00146106d35780633912fc85146106e957600080fd5b806318160ddd146105f35780631e13f86b14610608578063234cb0511461062857806323b872dd1461063e57600080fd5b80630798e5c9116103e35780630798e5c91461056e578063081812fc14610585578063095ea7b3146105bd57806313faede6146105dd57600080fd5b806301ffc9a7146104c9578063048d228b146104fe57806305e79db21461052c57806306fdde031461054c57600080fd5b366104c4576000610424601c5490565b600754909150600160b81b900460ff16151560011480156104455750600081115b156104c157600081601254600f546012546104609190613ccf565b61046a9034613cfd565b6104749190613d11565b61047e9190613cfd565b9050600061048c8383613d11565b905081601460008282546104a09190613ccf565b9250508190555080601660008282546104b99190613ccf565b909155505050505b50005b600080fd5b3480156104d557600080fd5b506104e96104e4366004613d46565b610cee565b60405190151581526020015b60405180910390f35b34801561050a57600080fd5b5061051e610519366004613d7f565b610d19565b6040519081526020016104f5565b34801561053857600080fd5b5061051e610547366004613d9a565b610d7c565b34801561055857600080fd5b50610561610df7565b6040516104f59190613e0b565b34801561057a57600080fd5b50610583610e89565b005b34801561059157600080fd5b506105a56105a0366004613d9a565b610ed4565b6040516001600160a01b0390911681526020016104f5565b3480156105c957600080fd5b506105836105d8366004613e1e565b610f69565b3480156105e957600080fd5b5061051e600b5481565b3480156105ff57600080fd5b5061051e61107f565b34801561061457600080fd5b50610583610623366004613d9a565b61108f565b34801561063457600080fd5b5061051e60115481565b34801561064a57600080fd5b50610583610659366004613e48565b6110be565b34801561066a57600080fd5b5061051e60135481565b34801561068057600080fd5b5061069461068f366004613e84565b6110ef565b604080516001600160a01b0390931683526020830191909152016104f5565b3480156106bf57600080fd5b506105836106ce366004613d9a565b611124565b3480156106df57600080fd5b5061051e600e5481565b6105836106f7366004613d9a565b611153565b34801561070857600080fd5b506105836115c6565b610583611883565b34801561072557600080fd5b50610583610734366004613e48565b611a06565b610583610747366004613d9a565b611a21565b34801561075857600080fd5b50610583610767366004613d9a565b611b95565b34801561077857600080fd5b5061078c610787366004613d7f565b611bc4565b6040516104f59190613ea6565b3480156107a557600080fd5b506105836107b4366004613d9a565b611ca5565b3480156107c557600080fd5b5061051e600d5481565b3480156107db57600080fd5b506105836107ea366004613d9a565b611cd4565b3480156107fb57600080fd5b5061058361080a366004613f76565b611d03565b34801561081b57600080fd5b506007546104e990600160b81b900460ff1681565b34801561083c57600080fd5b506007546104e990600160a81b900460ff1681565b34801561085d57600080fd5b5061058361086c366004613f76565b611d4c565b34801561087d57600080fd5b5061058361088c366004613d9a565b611d8d565b34801561089d57600080fd5b506007546104e990600160a01b900460ff1681565b3480156108be57600080fd5b506105a56108cd366004613d9a565b611dbc565b3480156108de57600080fd5b506105836108ed366004613d9a565b611e33565b3480156108fe57600080fd5b5061051e61090d366004613d7f565b611e62565b34801561091e57600080fd5b5061058361092d366004613fbf565b611ee9565b34801561093e57600080fd5b5061051e61094d366004613d9a565b611f41565b34801561095e57600080fd5b5061097261096d366004613d9a565b611fb7565b6040516104f59190613fe9565b61058361207d565b34801561099357600080fd5b506105836109a2366004613d9a565b6121b8565b3480156109b357600080fd5b506007546001600160a01b03166105a5565b3480156109d157600080fd5b506105836109e0366004613d9a565b6121e7565b3480156109f157600080fd5b50610583612216565b348015610a0657600080fd5b50610561612261565b348015610a1b57600080fd5b50610a2f610a2a366004613d9a565b612270565b6040805192151583526020830191909152016104f5565b610583610a54366004613d9a565b6122d4565b348015610a6557600080fd5b506007546104e990600160b01b900460ff1681565b348015610a8657600080fd5b50610583612596565b348015610a9b57600080fd5b50610583610aaa36600461401d565b6125e1565b348015610abb57600080fd5b50610583610aca366004613e84565b6125ec565b348015610adb57600080fd5b50610583610aea366004613d9a565b6128c6565b348015610afb57600080fd5b50610583610b0a366004613f76565b612a7d565b348015610b1b57600080fd5b5061051e610b2a366004613d7f565b612aba565b610583612b15565b348015610b4357600080fd5b50610583610b52366004614059565b612bd0565b348015610b6357600080fd5b5061051e60145481565b348015610b7957600080fd5b50610561610b88366004613d9a565b612c08565b348015610b9957600080fd5b5061051e600c5481565b348015610baf57600080fd5b50610583610bbe366004613d9a565b612d89565b610583612db8565b348015610bd757600080fd5b5061051e60155481565b348015610bed57600080fd5b5061051e60165481565b348015610c0357600080fd5b5061051e60125481565b348015610c1957600080fd5b506104e9610c28366004613fbf565b612e66565b348015610c3957600080fd5b5061051e600f5481565b610583610c51366004613d9a565b612e94565b348015610c6257600080fd5b50610c6b612ff5565b6040516104f591906140d5565b348015610c8457600080fd5b50610583610c93366004613d7f565b61307f565b348015610ca457600080fd5b50610583610cb336600461418a565b613117565b348015610cc457600080fd5b5061051e60105481565b348015610cda57600080fd5b50610583610ce9366004613f76565b6132f1565b60006001600160e01b0319821663152a902d60e11b1480610d135750610d138261332e565b92915050565b600080610d2583611bc4565b90506000805b8251811015610d7457610d56838281518110610d4957610d496141f6565b6020026020010151610d7c565b610d609083613ccf565b915080610d6c8161420c565b915050610d2b565b509392505050565b600081610d88601c5490565b1015610ddb5760405162461bcd60e51b815260206004820152601b60248201527f517565727920666f72206e6f6e6578697374656e7420746f6b656e000000000060448201526064015b60405180910390fd5b600082815260186020526040902054601454610d139190614227565b606060008054610e069061423e565b80601f0160208091040260200160405190810160405280929190818152602001828054610e329061423e565b8015610e7f5780601f10610e5457610100808354040283529160200191610e7f565b820191906000526020600020905b815481529060010190602001808311610e6257829003601f168201915b5050505050905090565b6007546001600160a01b03163314610eb35760405162461bcd60e51b8152600401610dd290614279565b6007805460ff60b81b198116600160b81b9182900460ff1615909102179055565b6000818152600260205260408120546001600160a01b0316610f4d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610dd2565b506000908152600460205260409020546001600160a01b031690565b6000610f7482611dbc565b9050806001600160a01b0316836001600160a01b03161415610fe25760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610dd2565b336001600160a01b0382161480610ffe5750610ffe8133612e66565b6110705760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610dd2565b61107a838361337e565b505050565b600061108a601c5490565b905090565b6007546001600160a01b031633146110b95760405162461bcd60e51b8152600401610dd290614279565b600d55565b6110c833826133ec565b6110e45760405162461bcd60e51b8152600401610dd2906142ae565b61107a8383836134c3565b601254600f5430916000916127109161110791613ccf565b6111119085613d11565b61111b9190613cfd565b90509250929050565b6007546001600160a01b0316331461114e5760405162461bcd60e51b8152600401610dd290614279565b600f55565b600260065414156111765760405162461bcd60e51b8152600401610dd2906142ff565b600260065560008061118783612270565b91509150816111a85760405162461bcd60e51b8152600401610dd290614336565b6000601b82815481106111bd576111bd6141f6565b60009182526020918290206040805160808101825260049093029091018054835260018101549383019390935260028301546001600160a01b031690820152600390910154606082015290506112103390565b6001600160a01b031681604001516001600160a01b031614156112a75760405162461bcd60e51b815260206004820152604360248201527f455243373231204d61726b6574706c6163653a20427579657220616e6420736560448201527f6c6c6572206d75737420626520626520646966666572656e742061646472657360648201526273657360e81b608482015260a401610dd2565b806020015134101561130a5760405162461bcd60e51b815260206004820152602660248201527f455243373231204d61726b6574706c6163653a20496e73756666696369656e746044820152652066756e647360d01b6064820152608401610dd2565b6000612710600f543461131d9190613d11565b6113279190613cfd565b905060006001611336601c5490565b6113409190614227565b612710601254346113519190613d11565b61135b9190613cfd565b6113659190613cfd565b905060006001611374601c5490565b61137e9190614227565b6113889083613d11565b601b80549192509061139c90600190614227565b815481106113ac576113ac6141f6565b9060005260206000209060040201601b86815481106113cd576113cd6141f6565b6000918252602090912082546004909202019081556001808301549082015560028083015490820180546001600160a01b0319166001600160a01b03909216919091179055600391820154910155601b80548061142c5761142c61437d565b600082815260208120600460001990930192830201818155600181018290556002810180546001600160a01b0319169055600301819055915560148054849290611477908490613ccf565b90915550506000878152601860205260408120805484929061149a908490613ccf565b9250508190555080601660008282546114b39190613ccf565b909155503390506001600160a01b031684604001516001600160a01b0316887f3d5eb834b5d6cadc063c171c3f25f60bca8ea892ba9db25342278927d0af95563460405161150391815260200190565b60405180910390a4611530846040015161151a3390565b896040518060200160405280600081525061366a565b60408401516000906001600160a01b031661154b8386613ccf565b6115559034614227565b604051600081818185875af1925050503d8060008114611591576040519150601f19603f3d011682016040523d82523d6000602084013e611596565b606091505b50509050806115b75760405162461bcd60e51b8152600401610dd290614393565b50506001600655505050505050565b6007546001600160a01b031633146115f05760405162461bcd60e51b8152600401610dd290614279565b60006016546015546116029190613ccf565b9050600060646116128347614227565b61161d90600a613d11565b6116279190613cfd565b6019549091506000906001600160a01b0316611644836003613d11565b604051600081818185875af1925050503d8060008114611680576040519150601f19603f3d011682016040523d82523d6000602084013e611685565b606091505b50509050806116ea5760405162461bcd60e51b815260206004820152603f602482015260008051602061465683398151915260448201527f736665722066756e647320746f20636f6d6d756e6974792077616c6c657421006064820152608401610dd2565b601a546040516000916001600160a01b03169084908381818185875af1925050503d8060008114611737576040519150601f19603f3d011682016040523d82523d6000602084013e61173c565b606091505b50509050806117a15760405162461bcd60e51b815260206004820152603e602482015260008051602061465683398151915260448201527f736665722066756e647320746f20646f6e6174696f6e2077616c6c65742100006064820152608401610dd2565b60006117b56007546001600160a01b031690565b6001600160a01b0316601054866117cc9190613ccf565b6117d69047614227565b604051600081818185875af1925050503d8060008114611812576040519150601f19603f3d011682016040523d82523d6000602084013e611817565b606091505b505090508061187c5760405162461bcd60e51b815260206004820152603f602482015260008051602061465683398151915260448201527f736665722066756e647320746f20746865206f776e65722077616c6c657421006064820152608401610dd2565b5050505050565b600260065414156118a65760405162461bcd60e51b8152600401610dd2906142ff565b600260065560006118b633610d19565b9050600081116118d85760405162461bcd60e51b8152600401610dd2906143cb565b60006118e333611bc4565b905060005b8151811015611936576000828281518110611905576119056141f6565b602090810291909101810151601454600091825260189092526040902055508061192e8161420c565b9150506118e8565b5081601660008282546119499190614227565b9091555050604051600090339084908381818185875af1925050503d8060008114611990576040519150601f19603f3d011682016040523d82523d6000602084013e611995565b606091505b50509050806119b65760405162461bcd60e51b8152600401610dd290614393565b6002335b6001600160a01b03167fd5803ea2a72e3d43ba8dfbcbde26efe91ba6901d868467b86ef6163baa185ba9856040516119f491815260200190565b60405180910390a35050600160065550565b61107a83838360405180602001604052806000815250612bd0565b60026006541415611a445760405162461bcd60e51b8152600401610dd2906142ff565b60026006556000611a5482611dbc565b9050336001600160a01b03821614611a7e5760405162461bcd60e51b8152600401610dd290614402565b6000611a8983610d7c565b905060008111611aab5760405162461bcd60e51b8152600401610dd2906143cb565b8060166000828254611abd9190614227565b90915550506014546000848152601860205260408082209290925590516001600160a01b0384169083908381818185875af1925050503d8060008114611b1f576040519150601f19603f3d011682016040523d82523d6000602084013e611b24565b606091505b5050905080611b455760405162461bcd60e51b8152600401610dd290614393565b6002836001600160a01b03167fd5803ea2a72e3d43ba8dfbcbde26efe91ba6901d868467b86ef6163baa185ba984604051611b8291815260200190565b60405180910390a3505060016006555050565b6007546001600160a01b03163314611bbf5760405162461bcd60e51b8152600401610dd290614279565b601055565b60606000611bd183611e62565b905060008167ffffffffffffffff811115611bee57611bee613eea565b604051908082528060200260200182016040528015611c17578160200160208202803683370190505b509050600160005b8381108015611c305750600c548211155b15611c9b576000611c4083611dbc565b9050866001600160a01b0316816001600160a01b03161415611c885782848381518110611c6f57611c6f6141f6565b602090810291909101015281611c848161420c565b9250505b82611c928161420c565b93505050611c1f565b5090949350505050565b6007546001600160a01b03163314611ccf5760405162461bcd60e51b8152600401610dd290614279565b600b55565b6007546001600160a01b03163314611cfe5760405162461bcd60e51b8152600401610dd290614279565b601355565b6007546001600160a01b03163314611d2d5760405162461bcd60e51b8152600401610dd290614279565b6007805460ff60a81b1916600160a81b179055611d4981611d4c565b50565b6007546001600160a01b03163314611d765760405162461bcd60e51b8152600401610dd290614279565b8051611d89906009906020840190613c20565b5050565b6007546001600160a01b03163314611db75760405162461bcd60e51b8152600401610dd290614279565b601255565b6000818152600260205260408120546001600160a01b031680610d135760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610dd2565b6007546001600160a01b03163314611e5d5760405162461bcd60e51b8152600401610dd290614279565b600c55565b60006001600160a01b038216611ecd5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610dd2565b506001600160a01b031660009081526003602052604090205490565b6007546001600160a01b03163314611f135760405162461bcd60e51b8152600401610dd290614279565b601980546001600160a01b039384166001600160a01b031991821617909155601a8054929093169116179055565b600081611f4d601c5490565b1015611f9b5760405162461bcd60e51b815260206004820152601b60248201527f517565727920666f72206e6f6e6578697374656e7420746f6b656e00000000006044820152606401610dd2565b600082815260176020526040902054601354610d139190614227565b611feb6040518060800160405280600081526020016000815260200160006001600160a01b03168152602001600081525090565b600080611ff784612270565b91509150816120185760405162461bcd60e51b8152600401610dd290614336565b601b818154811061202b5761202b6141f6565b60009182526020918290206040805160808101825260049093029091018054835260018101549383019390935260028301546001600160a01b0316908201526003909101546060820152949350505050565b600260065414156120a05760405162461bcd60e51b8152600401610dd2906142ff565b600260065560006120b033612aba565b9050600081116120d25760405162461bcd60e51b8152600401610dd2906143cb565b60006120dd33611bc4565b905060005b81518110156121305760008282815181106120ff576120ff6141f6565b60209081029190910181015160135460009182526017909252604090205550806121288161420c565b9150506120e2565b5081601560008282546121439190614227565b9091555050604051600090339084908381818185875af1925050503d806000811461218a576040519150601f19603f3d011682016040523d82523d6000602084013e61218f565b606091505b50509050806121b05760405162461bcd60e51b8152600401610dd290614393565b6001336119ba565b6007546001600160a01b031633146121e25760405162461bcd60e51b8152600401610dd290614279565b601455565b6007546001600160a01b031633146122115760405162461bcd60e51b8152600401610dd290614279565b600e55565b6007546001600160a01b031633146122405760405162461bcd60e51b8152600401610dd290614279565b6007805460ff60a01b198116600160a01b9182900460ff1615909102179055565b606060018054610e069061423e565b60008060005b601b548110156122ce5783601b8281548110612294576122946141f6565b906000526020600020906004020160000154146122b0576122bc565b600192508091506122ce565b806122c68161420c565b915050612276565b50915091565b600260065414156122f75760405162461bcd60e51b8152600401610dd2906142ff565b6002600655801580159061230d5750600e548111155b61234f5760405162461bcd60e51b8152602060048201526013602482015272125b9d985b1a59081b5a5b9d08185b5bdd5b9d606a1b6044820152606401610dd2565b60008161235b601c5490565b6123659190613ccf565b9050600c548111156123b55760405162461bcd60e51b815260206004820152601960248201527813585e081d1bdad95b881cdd5c1c1b1e48195e18d959591959603a1b6044820152606401610dd2565b600d54600c546123c59190614227565b8111156124145760405162461bcd60e51b815260206004820152601d60248201527f52656d61696e696e6720746f6b656e73206172652072657365727665640000006044820152606401610dd2565b600754600160a01b900460ff16156124625760405162461bcd60e51b8152602060048201526011602482015270135a5b9d1a5b99c81a5cc81c185d5cd959607a1b6044820152606401610dd2565b81600b546124709190613d11565b3410156124b45760405162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e742066756e647360701b6044820152606401610dd2565b6000806124c0601c5490565b90506124cc338561369d565b60005b848110156125735781156125415760008286612710601154346124f29190613d11565b6124fc9190613cfd565b6125069190613cfd565b6125109190613cfd565b905061251c8382613d11565b6125269085613ccf565b9350806013600082825461253a9190613ccf565b9091555050505b8161254b8161420c565b601354600082815260176020526040902055925081905061256b8161420c565b9150506124cf565b5081601560008282546125869190613ccf565b9091555050600160065550505050565b6007546001600160a01b031633146125c05760405162461bcd60e51b8152600401610dd290614279565b6007805460ff60b01b198116600160b01b9182900460ff1615909102179055565b611d893383836136da565b6002600654141561260f5760405162461bcd60e51b8152600401610dd2906142ff565b6002600655600754600160b01b900460ff166126895760405162461bcd60e51b815260206004820152603360248201527f455243373231204d61726b6574706c6163653a204c697374696e6773206172656044820152720818dd5c9c995b9d1b1e48191a5cd8589b1959606a1b6064820152608401610dd2565b600081116126eb5760405162461bcd60e51b815260206004820152602960248201527f455243373231204d61726b6574706c6163653a20496e76616c6964206c697374604482015268696e6720707269636560b81b6064820152608401610dd2565b336126f583611dbc565b6001600160a01b03161461271b5760405162461bcd60e51b8152600401610dd29061444d565b600061272683612270565b509050801561278b5760405162461bcd60e51b815260206004820152602b60248201527f455243373231204d61726b6574706c6163653a20546f6b656e20697320616c7260448201526a1958591e481b1a5cdd195960aa1b6064820152608401610dd2565b600060405180608001604052808581526020018481526020016127ab3390565b6001600160a01b03908116825242602092830152601b805460018101825560009190915283517f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1600490920291820155918301517f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc283015560408301517f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc3830180546001600160a01b0319169190921617905560608201517f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc4909101559050336001600160a01b0316847fda5118e11956b6ccec7a349074d6efada2b70b987d2eabba029de60d8f67b1aa85604051611b8291815260200190565b600260065414156128e95760405162461bcd60e51b8152600401610dd2906142ff565b60026006556000806128fa83612270565b915091508161291b5760405162461bcd60e51b8152600401610dd290614336565b336001600160a01b0316601b8281548110612938576129386141f6565b60009182526020909120600260049092020101546001600160a01b0316146129725760405162461bcd60e51b8152600401610dd29061444d565b601b805461298290600190614227565b81548110612992576129926141f6565b9060005260206000209060040201601b82815481106129b3576129b36141f6565b6000918252602090912082546004909202019081556001808301549082015560028083015490820180546001600160a01b0319166001600160a01b03909216919091179055600391820154910155601b805480612a1257612a1261437d565b600082815260208120600460001990930192830201818155600181018290556002810180546001600160a01b0319169055600301819055915560405184917fd61f1a8b7be6805af2e554cc25e9395d458bbd556fa7c01c166ffbd9197347de91a25050600160065550565b6007546001600160a01b03163314612aa75760405162461bcd60e51b8152600401610dd290614279565b8051611d8990600a906020840190613c20565b600080612ac683611bc4565b90506000805b8251811015610d7457612af7838281518110612aea57612aea6141f6565b6020026020010151611f41565b612b019083613ccf565b915080612b0d8161420c565b915050612acc565b6007546001600160a01b03163314612b3f5760405162461bcd60e51b8152600401610dd290614279565b6000612b4a601c5490565b90506000612b588234613cfd565b90506000612b668383613d11565b90508160136000828254612b7a9190613ccf565b925050819055508060156000828254612b939190613ccf565b90915550506040513481527ff47d3b5520326a887c3a79604ff206e16718a200fe11d7f3b555b2a4ddd93faa9060200160405180910390a1505050565b612bda33836133ec565b612bf65760405162461bcd60e51b8152600401610dd2906142ae565b612c028484848461366a565b50505050565b6000818152600260205260409020546060906001600160a01b0316612c875760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610dd2565b600754600160a81b900460ff16612d2a5760088054612ca59061423e565b80601f0160208091040260200160405190810160405280929190818152602001828054612cd19061423e565b8015612d1e5780601f10612cf357610100808354040283529160200191612d1e565b820191906000526020600020905b815481529060010190602001808311612d0157829003601f168201915b50505050509050919050565b6000612d346137a9565b90506000815111612d545760405180602001604052806000815250612d82565b80612d5e846137b8565b600a604051602001612d7293929190614498565b6040516020818303038152906040525b9392505050565b6007546001600160a01b03163314612db35760405162461bcd60e51b8152600401610dd290614279565b601155565b6007546001600160a01b03163314612de25760405162461bcd60e51b8152600401610dd290614279565b6000612df66007546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114612e40576040519150601f19603f3d011682016040523d82523d6000602084013e612e45565b606091505b5050905080611d495760405162461bcd60e51b8152600401610dd290614393565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60026006541415612eb75760405162461bcd60e51b8152600401610dd2906142ff565b60026006556000612ec782611dbc565b9050336001600160a01b03821614612ef15760405162461bcd60e51b8152600401610dd290614402565b6000612efc83611f41565b905060008111612f1e5760405162461bcd60e51b8152600401610dd2906143cb565b8060156000828254612f309190614227565b90915550506013546000848152601760205260408082209290925590516001600160a01b0384169083908381818185875af1925050503d8060008114612f92576040519150601f19603f3d011682016040523d82523d6000602084013e612f97565b606091505b5050905080612fb85760405162461bcd60e51b8152600401610dd290614393565b6001836001600160a01b03167fd5803ea2a72e3d43ba8dfbcbde26efe91ba6901d868467b86ef6163baa185ba984604051611b8291815260200190565b6060601b805480602002602001604051908101604052809291908181526020016000905b828210156130765760008481526020908190206040805160808101825260048602909201805483526001808201548486015260028201546001600160a01b0316928401929092526003015460608301529083529092019101613019565b50505050905090565b6007546001600160a01b031633146130a95760405162461bcd60e51b8152600401610dd290614279565b6001600160a01b03811661310e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610dd2565b611d49816138b6565b6007546001600160a01b031633146131415760405162461bcd60e51b8152600401610dd290614279565b8281146131505761315061455c565b821580159061315e57508015155b61316a5761316a61455c565b6000805b828110156131be57838382818110613188576131886141f6565b905060200201602081019061319d9190614572565b6131aa9060ff1683613ccf565b9150806131b68161420c565b91505061316e565b50600c54816131cc601c5490565b6131d69190613ccf565b11156132205760405162461bcd60e51b815260206004820152601960248201527813585e081d1bdad95b881cdd5c1c1b1e48195e18d959591959603a1b6044820152606401610dd2565b60005b848110156132e957600084848381811061323f5761323f6141f6565b90506020020160208101906132549190614572565b905060005b8160ff168110156132d457613272601c80546001019055565b600061327d601c5490565b90506132af898986818110613294576132946141f6565b90506020020160208101906132a99190613d7f565b82613908565b60135460009182526017602052604090912055806132cc8161420c565b915050613259565b505080806132e19061420c565b915050613223565b505050505050565b6007546001600160a01b0316331461331b5760405162461bcd60e51b8152600401610dd290614279565b8051611d89906008906020840190613c20565b60006001600160e01b031982166380ac58cd60e01b148061335f57506001600160e01b03198216635b5e139f60e01b145b80610d1357506301ffc9a760e01b6001600160e01b0319831614610d13565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906133b382611dbc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03166134655760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610dd2565b600061347083611dbc565b9050806001600160a01b0316846001600160a01b031614806134ab5750836001600160a01b03166134a084610ed4565b6001600160a01b0316145b806134bb57506134bb8185612e66565b949350505050565b826001600160a01b03166134d682611dbc565b6001600160a01b03161461353a5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610dd2565b6001600160a01b03821661359c5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610dd2565b6135a7838383613922565b6135b260008261337e565b6001600160a01b03831660009081526003602052604081208054600192906135db908490614227565b90915550506001600160a01b0382166000908152600360205260408120805460019290613609908490613ccf565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6136758484846134c3565b613681848484846139a1565b612c025760405162461bcd60e51b8152600401610dd290614595565b60005b8181101561107a576136b6601c80546001019055565b6136c8836136c3601c5490565b613908565b806136d28161420c565b9150506136a0565b816001600160a01b0316836001600160a01b0316141561373c5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610dd2565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b606060098054610e069061423e565b6060816137dc5750506040805180820190915260018152600360fc1b602082015290565b8160005b811561380657806137f08161420c565b91506137ff9050600a83613cfd565b91506137e0565b60008167ffffffffffffffff81111561382157613821613eea565b6040519080825280601f01601f19166020018201604052801561384b576020820181803683370190505b5090505b84156134bb57613860600183614227565b915061386d600a866145e7565b613878906030613ccf565b60f81b81838151811061388d5761388d6141f6565b60200101906001600160f81b031916908160001a9053506138af600a86613cfd565b945061384f565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611d89828260405180602001604052806000815250613a9f565b600061392d82612270565b509050801561399c5760405162461bcd60e51b815260206004820152603560248201527f455243373231204d61726b6574706c6163653a20556e61626c6520746f20747260448201527430b739b332b91030903634b9ba32b2103a37b5b2b760591b6064820152608401610dd2565b612c02565b60006001600160a01b0384163b15613a9457604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906139e59033908990889088906004016145fb565b6020604051808303816000875af1925050508015613a20575060408051601f3d908101601f19168201909252613a1d91810190614638565b60015b613a7a573d808015613a4e576040519150601f19603f3d011682016040523d82523d6000602084013e613a53565b606091505b508051613a725760405162461bcd60e51b8152600401610dd290614595565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506134bb565b506001949350505050565b613aa98383613ad2565b613ab660008484846139a1565b61107a5760405162461bcd60e51b8152600401610dd290614595565b6001600160a01b038216613b285760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610dd2565b6000818152600260205260409020546001600160a01b031615613b8d5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610dd2565b613b9960008383613922565b6001600160a01b0382166000908152600360205260408120805460019290613bc2908490613ccf565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054613c2c9061423e565b90600052602060002090601f016020900481019282613c4e5760008555613c94565b82601f10613c6757805160ff1916838001178555613c94565b82800160010185558215613c94579182015b82811115613c94578251825591602001919060010190613c79565b50613ca0929150613ca4565b5090565b5b80821115613ca05760008155600101613ca5565b634e487b7160e01b600052601160045260246000fd5b60008219821115613ce257613ce2613cb9565b500190565b634e487b7160e01b600052601260045260246000fd5b600082613d0c57613d0c613ce7565b500490565b6000816000190483118215151615613d2b57613d2b613cb9565b500290565b6001600160e01b031981168114611d4957600080fd5b600060208284031215613d5857600080fd5b8135612d8281613d30565b80356001600160a01b0381168114613d7a57600080fd5b919050565b600060208284031215613d9157600080fd5b612d8282613d63565b600060208284031215613dac57600080fd5b5035919050565b60005b83811015613dce578181015183820152602001613db6565b83811115612c025750506000910152565b60008151808452613df7816020860160208601613db3565b601f01601f19169290920160200192915050565b602081526000612d826020830184613ddf565b60008060408385031215613e3157600080fd5b613e3a83613d63565b946020939093013593505050565b600080600060608486031215613e5d57600080fd5b613e6684613d63565b9250613e7460208501613d63565b9150604084013590509250925092565b60008060408385031215613e9757600080fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b81811015613ede57835183529284019291840191600101613ec2565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115613f1b57613f1b613eea565b604051601f8501601f19908116603f01168101908282118183101715613f4357613f43613eea565b81604052809350858152868686011115613f5c57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215613f8857600080fd5b813567ffffffffffffffff811115613f9f57600080fd5b8201601f81018413613fb057600080fd5b6134bb84823560208401613f00565b60008060408385031215613fd257600080fd5b613fdb83613d63565b915061111b60208401613d63565b81518152602080830151908201526040808301516001600160a01b0316908201526060808301519082015260808101610d13565b6000806040838503121561403057600080fd5b61403983613d63565b91506020830135801515811461404e57600080fd5b809150509250929050565b6000806000806080858703121561406f57600080fd5b61407885613d63565b935061408660208601613d63565b925060408501359150606085013567ffffffffffffffff8111156140a957600080fd5b8501601f810187136140ba57600080fd5b6140c987823560208401613f00565b91505092959194509250565b6020808252825182820181905260009190848201906040850190845b81811015613ede5761412b83855180518252602080820151908301526040808201516001600160a01b031690830152606090810151910152565b92840192608092909201916001016140f1565b60008083601f84011261415057600080fd5b50813567ffffffffffffffff81111561416857600080fd5b6020830191508360208260051b850101111561418357600080fd5b9250929050565b600080600080604085870312156141a057600080fd5b843567ffffffffffffffff808211156141b857600080fd5b6141c48883890161413e565b909650945060208701359150808211156141dd57600080fd5b506141ea8782880161413e565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561422057614220613cb9565b5060010190565b60008282101561423957614239613cb9565b500390565b600181811c9082168061425257607f821691505b6020821081141561427357634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60208082526027908201527f455243373231204d61726b6574706c6163653a20546f6b656e206973206e6f74604082015266081b1a5cdd195960ca1b606082015260800190565b634e487b7160e01b600052603160045260246000fd5b6020808252602a90820152600080516020614656833981519152604082015269736665722066756e647360b01b606082015260800190565b6020808252601a908201527f596f7520646f6e2774206861766520616e792072657761726473000000000000604082015260600190565b6020808252602b908201527f4f6e6c7920746865206f776e6572206f66206120746f6b656e2063616e20636c60408201526a61696d207265776172647360a81b606082015260800190565b6020808252602b908201527f455243373231204d61726b6574706c6163653a2043616c6c6572206973206e6f60408201526a3a103a34329037bbb732b960a91b606082015260800190565b6000845160206144ab8285838a01613db3565b8551918401916144be8184848a01613db3565b8554920191600090600181811c90808316806144db57607f831692505b8583108114156144f957634e487b7160e01b85526022600452602485fd5b80801561450d576001811461451e5761454b565b60ff1985168852838801955061454b565b60008b81526020902060005b858110156145435781548a82015290840190880161452a565b505083880195505b50939b9a5050505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60006020828403121561458457600080fd5b813560ff81168114612d8257600080fd5b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000826145f6576145f6613ce7565b500690565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061462e90830184613ddf565b9695505050505050565b60006020828403121561464a57600080fd5b8151612d8281613d3056fe41564158205472616e73616374696f6e3a204661696c656420746f207472616ea2646970667358221220231cfdd045f4645ddf8d5ffcdc4d6bf17dfb7d7add3fff60b2a9098ae989e60464736f6c634300080b00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657200000000000000000000000000000000000000000000000000000000000000600000000000000000000000004057f6d0c49358b88a318dcb230f7d3140fa78de0000000000000000000000001070aa92aa80d0bdf14692352726bc22cd8d9130000000000000000000000000000000000000000000000000000000000000002e516d5731337876337974445175697a647251425241586836546b51764d5558797131633941375167633378333239000000000000000000000000000000000000
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000600000000000000000000000004057f6d0c49358b88a318dcb230f7d3140fa78de0000000000000000000000001070aa92aa80d0bdf14692352726bc22cd8d9130000000000000000000000000000000000000000000000000000000000000002e516d5731337876337974445175697a647251425241586836546b51764d5558797131633941375167633378333239000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _initUnrevealedURI (string): QmW13xv3ytDQuizdrQBRAXh6TkQvMUXyq1c9A7Qgc3x329
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] : 516d5731337876337974445175697a647251425241586836546b51764d555879
Arg [5] : 7131633941375167633378333239000000000000000000000000000000000000
Deployed ByteCode Sourcemap
12214:16168:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27962:21;27986:16;:6;1612:14;;1527:104;27986:16;28013:33;;27962:40;;-1:-1:-1;;;;28013:33:0;;;;:41;;28050:4;28013:41;:62;;;;;28074:1;28058:13;:17;28013:62;28009:366;;;28083:34;28176:13;28161:12;;28148:9;;28133:12;;:24;;;;:::i;:::-;28120:38;;:9;:38;:::i;:::-;:53;;;;:::i;:::-;:69;;;;:::i;:::-;28083:106;-1:-1:-1;28195:24:0;28222:42;28251:13;28083:106;28222:42;:::i;:::-;28195:69;;28293:26;28272:17;;:47;;;;;;;:::i;:::-;;;;;;;;28353:16;28327:22;;:42;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;28009:366:0;27957:422;12214:16168;;;;;14448:189;;;;;;;;;;-1:-1:-1;14448:189:0;;;;;:::i;:::-;;:::i;:::-;;;1260:14:1;;1253:22;1235:41;;1223:2;1208:18;14448:189:0;;;;;;;;25126:285;;;;;;;;;;-1:-1:-1;25126:285:0;;;;;:::i;:::-;;:::i;:::-;;;1802:25:1;;;1790:2;1775:18;25126:285:0;1656:177:1;25645:227:0;;;;;;;;;;-1:-1:-1;25645:227:0;;;;;:::i;:::-;;:::i;6513:90::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;16546:146::-;;;;;;;;;;;;;:::i;:::-;;7467:205;;;;;;;;;;-1:-1:-1;7467:205:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;2938:32:1;;;2920:51;;2908:2;2893:18;7467:205:0;2774:203:1;7115:347:0;;;;;;;;;;-1:-1:-1;7115:347:0;;;;;:::i;:::-;;:::i;12568:19::-;;;;;;;;;;;;;;;;24192:85;;;;;;;;;;;;;:::i;26293:99::-;;;;;;;;;;-1:-1:-1;26293:99:0;;;;;:::i;:::-;;:::i;12746:26::-;;;;;;;;;;;;;;;;7987:284;;;;;;;;;;-1:-1:-1;7987:284:0;;;;;:::i;:::-;;:::i;12807:31::-;;;;;;;;;;;;;;;;20612:223;;;;;;;;;;-1:-1:-1;20612:223:0;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;4019:32:1;;;4001:51;;4083:2;4068:18;;4061:34;;;;3974:18;20612:223:0;3827:274:1;26783:87:0;;;;;;;;;;-1:-1:-1;26783:87:0;;;;;:::i;:::-;;:::i;12654:33::-;;;;;;;;;;;;;;;;21877:1315;;;;;;:::i;:::-;;:::i;19275:753::-;;;;;;;;;;;;;:::i;18042:627::-;;;:::i;8276:142::-;;;;;;;;;;-1:-1:-1;8276:142:0;;;;;:::i;:::-;;:::i;18674:596::-;;;;;;:::i;:::-;;:::i;26875:77::-;;;;;;;;;;-1:-1:-1;26875:77:0;;;;;:::i;:::-;;:::i;24282:551::-;;;;;;;;;;-1:-1:-1;24282:551:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;26509:75::-;;;;;;;;;;-1:-1:-1;26509:75:0;;;;;:::i;:::-;;:::i;12619:29::-;;;;;;;;;;;;;;;;26957:103;;;;;;;;;;-1:-1:-1;26957:103:0;;;;;:::i;:::-;;:::i;16697:117::-;;;;;;;;;;-1:-1:-1;16697:117:0;;;;;:::i;:::-;;:::i;12429:45::-;;;;;;;;;;-1:-1:-1;12429:45:0;;;;-1:-1:-1;;;12429:45:0;;;;;;12376:20;;;;;;;;;;-1:-1:-1;12376:20:0;;;;-1:-1:-1;;;12376:20:0;;;;;;25879:93;;;;;;;;;;-1:-1:-1;25879:93:0;;;;;:::i;:::-;;:::i;26685:::-;;;;;;;;;;-1:-1:-1;26685:93:0;;;;;:::i;:::-;;:::i;12354:18::-;;;;;;;;;;-1:-1:-1;12354:18:0;;;;-1:-1:-1;;;12354:18:0;;;;;;6287:221;;;;;;;;;;-1:-1:-1;6287:221:0;;;;;:::i;:::-;;:::i;26199:89::-;;;;;;;;;;-1:-1:-1;26199:89:0;;;;;:::i;:::-;;:::i;6088:194::-;;;;;;;;;;-1:-1:-1;6088:194:0;;;;;:::i;:::-;;:::i;27175:193::-;;;;;;;;;;-1:-1:-1;27175:193:0;;;;;:::i;:::-;;:::i;25416:224::-;;;;;;;;;;-1:-1:-1;25416:224:0;;;;;:::i;:::-;;:::i;23545:255::-;;;;;;;;;;-1:-1:-1;23545:255:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;16819:622::-;;;:::i;27065:105::-;;;;;;;;;;-1:-1:-1;27065:105:0;;;;;:::i;:::-;;:::i;4169:77::-;;;;;;;;;;-1:-1:-1;4235:6:0;;-1:-1:-1;;;;;4235:6:0;4169:77;;26397:107;;;;;;;;;;-1:-1:-1;26397:107:0;;;;;:::i;:::-;;:::i;16375:70::-;;;;;;;;;;;;;:::i;6608:94::-;;;;;;;;;;;;;:::i;23197:252::-;;;;;;;;;;-1:-1:-1;23197:252:0;;;;;:::i;:::-;;:::i;:::-;;;;6969:14:1;;6962:22;6944:41;;7016:2;7001:18;;6994:34;;;;6917:18;23197:252:0;6776:258:1;14644:1014:0;;;;;;:::i;:::-;;:::i;12400:25::-;;;;;;;;;;-1:-1:-1;12400:25:0;;;;-1:-1:-1;;;12400:25:0;;;;;;16450:91;;;;;;;;;;;;;:::i;7677:146::-;;;;;;;;;;-1:-1:-1;7677:146:0;;;;;:::i;:::-;;:::i;20840:603::-;;;;;;;;;;-1:-1:-1;20840:603:0;;;;;:::i;:::-;;:::i;21448:424::-;;;;;;;;;;-1:-1:-1;21448:424:0;;;;;:::i;:::-;;:::i;26099:95::-;;;;;;;;;;-1:-1:-1;26099:95:0;;;;;:::i;:::-;;:::i;24838:283::-;;;;;;;;;;-1:-1:-1;24838:283:0;;;;;:::i;:::-;;:::i;20247:358::-;;;:::i;8423:272::-;;;;;;;;;;-1:-1:-1;8423:272:0;;;;;:::i;:::-;;:::i;12842:32::-;;;;;;;;;;;;;;;;23805:382;;;;;;;;;;-1:-1:-1;23805:382:0;;;;;:::i;:::-;;:::i;12591:24::-;;;;;;;;;;;;;;;;26589:91;;;;;;;;;;-1:-1:-1;26589:91:0;;;;;:::i;:::-;;:::i;20033:209::-;;;:::i;12878:36::-;;;;;;;;;;;;;;;;12918:37;;;;;;;;;;;;;;;;12776:27;;;;;;;;;;;;;;;;7828:154;;;;;;;;;;-1:-1:-1;7828:154:0;;;;;:::i;:::-;;:::i;12693:24::-;;;;;;;;;;;;;;;;17446:591;;;;;;:::i;:::-;;:::i;23454:86::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4363:188::-;;;;;;;;;;-1:-1:-1;4363:188:0;;;;;:::i;:::-;;:::i;15663:705::-;;;;;;;;;;-1:-1:-1;15663:705:0;;;;;:::i;:::-;;:::i;12721:19::-;;;;;;;;;;;;;;;;25977:117;;;;;;;;;;-1:-1:-1;25977:117:0;;;;;:::i;:::-;;:::i;14448:189::-;14524:4;-1:-1:-1;;;;;;14542:50:0;;-1:-1:-1;;;14542:50:0;;:90;;;14596:36;14620:11;14596:23;:36::i;:::-;14535:97;14448:189;-1:-1:-1;;14448:189:0:o;25126:285::-;25198:7;25212:23;25238;25252:8;25238:13;:23::i;:::-;25212:49;;25266:13;25295:9;25290:98;25314:6;:13;25310:1;:17;25290:98;;;25349:33;25372:6;25379:1;25372:9;;;;;;;;:::i;:::-;;;;;;;25349:22;:33::i;:::-;25340:42;;;;:::i;:::-;;-1:-1:-1;25329:3:0;;;;:::i;:::-;;;;25290:98;;;-1:-1:-1;25401:5:0;25126:285;-1:-1:-1;;;25126:285:0:o;25645:227::-;25714:7;25756;25736:16;:6;1612:14;;1527:104;25736:16;:27;;25728:67;;;;-1:-1:-1;;;25728:67:0;;10393:2:1;25728:67:0;;;10375:21:1;10432:2;10412:18;;;10405:30;10471:29;10451:18;;;10444:57;10518:18;;25728:67:0;;;;;;;;;25829:38;;;;:29;:38;;;;;;25809:17;;:58;;25829:38;25809:58;:::i;6513:90::-;6566:13;6593:5;6586:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6513:90;:::o;16546:146::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;16654:33:::1;::::0;;-1:-1:-1;;;;16617:70:0;::::1;-1:-1:-1::0;;;16654:33:0;;;::::1;;;16653:34;16617:70:::0;;::::1;;::::0;;16546:146::o;7467:205::-;7542:7;9046:16;;;:7;:16;;;;;;-1:-1:-1;;;;;9046:16:0;7556:73;;;;-1:-1:-1;;;7556:73:0;;11625:2:1;7556:73:0;;;11607:21:1;11664:2;11644:18;;;11637:30;11703:34;11683:18;;;11676:62;-1:-1:-1;;;11754:18:1;;;11747:42;11806:19;;7556:73:0;11423:408:1;7556:73:0;-1:-1:-1;7643:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;7643:24:0;;7467:205::o;7115:347::-;7190:13;7206:23;7221:7;7206:14;:23::i;:::-;7190:39;;7248:5;-1:-1:-1;;;;;7242:11:0;:2;-1:-1:-1;;;;;7242:11:0;;;7234:57;;;;-1:-1:-1;;;7234:57:0;;12038:2:1;7234:57:0;;;12020:21:1;12077:2;12057:18;;;12050:30;12116:34;12096:18;;;12089:62;-1:-1:-1;;;12167:18:1;;;12160:31;12208:19;;7234:57:0;11836:397:1;7234:57:0;3828:10;-1:-1:-1;;;;;7306:21:0;;;;:62;;-1:-1:-1;7331:37:0;7348:5;3828:10;7828:154;:::i;7331:37::-;7298:131;;;;-1:-1:-1;;;7298:131:0;;12440:2:1;7298:131:0;;;12422:21:1;12479:2;12459:18;;;12452:30;12518:34;12498:18;;;12491:62;12589:26;12569:18;;;12562:54;12633:19;;7298:131:0;12238:420:1;7298:131:0;7436:21;7445:2;7449:7;7436:8;:21::i;:::-;7185:277;7115:347;;:::o;24192:85::-;24235:7;24256:16;:6;1612:14;;1527:104;24256:16;24249:23;;24192:85;:::o;26293:99::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26361:14:::1;:26:::0;26293:99::o;7987:284::-;8136:41;3828:10;8169:7;8136:18;:41::i;:::-;8128:103;;;;-1:-1:-1;;;8128:103:0;;;;;;;:::i;:::-;8238:28;8248:4;8254:2;8258:7;8238:9;:28::i;20612:223::-;20793:12;;20781:9;;20744:4;;20679:16;;13401:5;;20781:24;;;:::i;:::-;20772:34;;:5;:34;:::i;:::-;:58;;;;:::i;:::-;20756:74;;20612:223;;;;;:::o;26783:87::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26845:9:::1;:20:::0;26783:87::o;21877:1315::-;4856:1;4982:7;;:19;;4974:63;;;;-1:-1:-1;;;4974:63:0;;;;;;;:::i;:::-;4856:1;5044:7;:18;21952:13:::1;::::0;21991:22:::1;22005:7:::0;21991:13:::1;:22::i;:::-;21951:62;;;;22026:8;22018:60;;;;-1:-1:-1::0;;;22018:60:0::1;;;;;;;:::i;:::-;22085:22;22110:8;22119:12;22110:22;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;22085:47:::1;::::0;;::::1;::::0;::::1;::::0;;22110:22:::1;::::0;;::::1;::::0;;::::1;22085:47:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;-1:-1:-1;;;;;22085:47:0::1;::::0;;;;::::1;::::0;;::::1;::::0;;;;;;-1:-1:-1;22165:12:0::1;3828:10:::0;;3755:88;22165:12:::1;-1:-1:-1::0;;;;;22147:30:0::1;:7;:14;;;-1:-1:-1::0;;;;;22147:30:0::1;;;22139:110;;;::::0;-1:-1:-1;;;22139:110:0;;14051:2:1;22139:110:0::1;::::0;::::1;14033:21:1::0;14090:2;14070:18;;;14063:30;14129:34;14109:18;;;14102:62;14200:34;14180:18;;;14173:62;-1:-1:-1;;;14251:19:1;;;14244:34;14295:19;;22139:110:0::1;13849:471:1::0;22139:110:0::1;22275:7;:13;;;22262:9;:26;;22254:77;;;::::0;-1:-1:-1;;;22254:77:0;;14527:2:1;22254:77:0::1;::::0;::::1;14509:21:1::0;14566:2;14546:18;;;14539:30;14605:34;14585:18;;;14578:62;-1:-1:-1;;;14656:18:1;;;14649:36;14702:19;;22254:77:0::1;14325:402:1::0;22254:77:0::1;22338:22;13401:5;22375:9;;22363;:21;;;;:::i;:::-;:45;;;;:::i;:::-;22338:70;;22413:34;22521:1;22502:16;:6;1612:14:::0;;1527:104;22502:16:::1;:20;;;;:::i;:::-;13401:5;22462:12;;22450:9;:24;;;;:::i;:::-;:48;;;;:::i;:::-;:73;;;;:::i;:::-;22413:110;;22528:24;22604:1;22585:16;:6;1612:14:::0;;1527:104;22585:16:::1;:20;;;;:::i;:::-;22555:51;::::0;:26;:51:::1;:::i;:::-;22640:8;22649:15:::0;;22528:78;;-1:-1:-1;22640:8:0;22649:19:::1;::::0;22667:1:::1;::::0;22649:19:::1;:::i;:::-;22640:29;;;;;;;;:::i;:::-;;;;;;;;;;;22615:8;22624:12;22615: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;;;;;;22615:54:0::1;-1:-1:-1::0;;;;;22615:54:0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;::::1;::::0;22674:8:::1;:14:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;-1:-1:-1::0;;22674:14:0;;;;;::::1;;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;;22674:14:0::1;::::0;;::::1;;::::0;;;;;22697:17:::1;:47:::0;;22718:26;;22674:14;22697:47:::1;::::0;22718:26;;22697:47:::1;:::i;:::-;::::0;;;-1:-1:-1;;22749:38:0::1;::::0;;;:29:::1;:38;::::0;;;;:68;;22791:26;;22749:38;:68:::1;::::0;22791:26;;22749:68:::1;:::i;:::-;;;;;;;;22850:16;22824:22;;:42;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;3828:10:0;;-1:-1:-1;;;;;;22880:59:0::1;22899:7;:14;;;-1:-1:-1::0;;;;;22880:59:0::1;22890:7;22880:59;22929:9;22880:59;;;;1802:25:1::0;;1790:2;1775:18;;1656:177;22880:59:0::1;;;;;;;;22948:56;22962:7;:14;;;22978:12;3828:10:::0;;3755:88;22978:12:::1;22992:7;22948:56;;;;;;;;;;;::::0;:13:::1;:56::i;:::-;23038:14;::::0;::::1;::::0;23012:12:::1;::::0;-1:-1:-1;;;;;23030:28:0::1;23080:33;23097:16:::0;23080:14;:33:::1;:::i;:::-;23067:47;::::0;:9:::1;:47;:::i;:::-;23030:90;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23011:109;;;23133:7;23125:62;;;;-1:-1:-1::0;;;23125:62:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;4815:1:0;5077:7;:22;-1:-1:-1;;;;;;21877:1315:0:o;19275:753::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;19317:20:::1;19364:22;;19340:21;;:46;;;;:::i;:::-;19317:69:::0;-1:-1:-1;19391:25:0::1;19465:3;19420:36;19317:69:::0;19420:21:::1;:36;:::i;:::-;19419:43;::::0;19460:2:::1;19419:43;:::i;:::-;:49;;;;:::i;:::-;19503:16;::::0;19391:77;;-1:-1:-1;19476:13:0::1;::::0;-1:-1:-1;;;;;19503:16:0::1;19534:21;19391:77:::0;19554:1:::1;19534:21;:::i;:::-;19495:66;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19475:86;;;19574:8;19566:84;;;::::0;-1:-1:-1;;;19566:84:0;;15687:2:1;19566:84:0::1;::::0;::::1;15669:21:1::0;15726:2;15706:18;;;15699:30;-1:-1:-1;;;;;;;;;;;15745:18:1;;;15738:62;15836:33;15816:18;;;15809:61;15887:19;;19566:84:0::1;15485:427:1::0;19566:84:0::1;19685:15;::::0;19677:61:::1;::::0;19658:13:::1;::::0;-1:-1:-1;;;;;19685:15:0::1;::::0;19715:17;;19658:13;19677:61;19658:13;19677:61;19715:17;19685:15;19677:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19657:81;;;19751:8;19743:83;;;::::0;-1:-1:-1;;;19743:83:0;;16119:2:1;19743:83:0::1;::::0;::::1;16101:21:1::0;16158:2;16138:18;;;16131:30;-1:-1:-1;;;;;;;;;;;16177:18:1;;;16170:62;16268:32;16248:18;;;16241:60;16318:19;;19743:83:0::1;15917:426:1::0;19743:83:0::1;19834:13;19861:7;4235:6:::0;;-1:-1:-1;;;;;4235:6:0;;4169:77;19861:7:::1;-1:-1:-1::0;;;;;19853:21:0::1;19923:4;;19908:12;:19;;;;:::i;:::-;19883:45;::::0;:21:::1;:45;:::i;:::-;19853:81;::::0;::::1;::::0;;;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19833:101;;;19947:8;19939:84;;;::::0;-1:-1:-1;;;19939:84:0;;16550:2:1;19939:84:0::1;::::0;::::1;16532:21:1::0;16589:2;16569:18;;;16562:30;-1:-1:-1;;;;;;;;;;;16608:18:1;;;16601:62;16699:33;16679:18;;;16672:61;16750:19;;19939:84:0::1;16348:427:1::0;19939:84:0::1;19312:716;;;;;19275:753::o:0;18042:627::-;4856:1;4982:7;;:19;;4974:63;;;;-1:-1:-1;;;4974:63:0;;;;;;;:::i;:::-;4856:1;5044:7;:18;18104:14:::1;18121:38;3828:10:::0;25126:285;:::i;18121:38::-:1;18104:55;;18181:1;18172:6;:10;18164:49;;;;-1:-1:-1::0;;;18164:49:0::1;;;;;;;:::i;:::-;18222:23;18248:27;3828:10:::0;24282:551;:::i;18248:27::-:1;18222:53;;18287:9;18282:149;18306:6;:13;18302:1;:17;18282:149;;;18332:15;18350:6;18357:1;18350:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;18408:17:::1;::::0;18367:38:::1;::::0;;;:29:::1;:38:::0;;;;;;:58;-1:-1:-1;18321:3:0;::::1;::::0;::::1;:::i;:::-;;;;18282:149;;;;18463:6;18437:22;;:32;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;18497:47:0::1;::::0;18479:12:::1;::::0;3828:10;;18532:6;;18479:12;18497:47;18479:12;18497:47;18532:6;3828:10;18497:47:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18478:66;;;18557:7;18549:62;;;;-1:-1:-1::0;;;18549:62:0::1;;;;;;;:::i;:::-;18662:1;3828:10:::0;18640:12:::1;-1:-1:-1::0;;;;;18625:39:0::1;;18654:6;18625:39;;;;1802:25:1::0;;1790:2;1775:18;;1656:177;18625:39:0::1;;;;;;;;-1:-1:-1::0;;4815:1:0;5077:7;:22;-1:-1:-1;18042:627:0:o;8276:142::-;8374:39;8391:4;8397:2;8401:7;8374:39;;;;;;;;;;;;:16;:39::i;18674:596::-;4856:1;4982:7;;:19;;4974:63;;;;-1:-1:-1;;;4974:63:0;;;;;;;:::i;:::-;4856:1;5044:7;:18;18757:13:::1;18773:16;18781:7:::0;18773::::1;:16::i;:::-;18757:32:::0;-1:-1:-1;3828:10:0;-1:-1:-1;;;;;18802:21:0;::::1;;18794:77;;;;-1:-1:-1::0;;;18794:77:0::1;;;;;;;:::i;:::-;18878:14;18895:31;18918:7;18895:22;:31::i;:::-;18878:48;;18948:1;18939:6;:10;18931:49;;;;-1:-1:-1::0;;;18931:49:0::1;;;;;;;:::i;:::-;19015:6;18989:22;;:32;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;19067:17:0::1;::::0;19026:38:::1;::::0;;;:29:::1;:38;::::0;;;;;:58;;;;19112:40;;-1:-1:-1;;;;;19112:19:0;::::1;::::0;19140:6;;19026:38;19112:40;19026:38;19112:40;19140:6;19112:19;:40:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19093:59;;;19165:7;19157:62;;;;-1:-1:-1::0;;;19157:62:0::1;;;;;;;:::i;:::-;19263:1;19248:5;-1:-1:-1::0;;;;;19233:32:0::1;;19255:6;19233:32;;;;1802:25:1::0;;1790:2;1775:18;;1656:177;19233:32:0::1;;;;;;;;-1:-1:-1::0;;4815:1:0;5077:7;:22;-1:-1:-1;;18674:596:0:o;26875:77::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26932:4:::1;:15:::0;26875:77::o;24282:551::-;24343:16;24366:23;24392:19;24402:8;24392:9;:19::i;:::-;24366:45;;24418:30;24465:15;24451:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24451:30:0;-1:-1:-1;24418:63:0;-1:-1:-1;24511:1:0;24490:18;24551:249;24576:15;24558;:33;:60;;;;;24609:9;;24595:10;:23;;24558:60;24551:249;;;24626:13;24642:19;24650:10;24642:7;:19::i;:::-;24626:35;;24682:8;-1:-1:-1;;;;;24673:17:0;:5;-1:-1:-1;;;;;24673:17:0;;24669:106;;;24732:10;24699:13;24713:15;24699:30;;;;;;;;:::i;:::-;;;;;;;;;;:43;24751:17;;;;:::i;:::-;;;;24669:106;24782:12;;;;:::i;:::-;;;;24620:180;24551:249;;;-1:-1:-1;24815:13:0;;24282:551;-1:-1:-1;;;;24282:551:0:o;26509:75::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26565:4:::1;:14:::0;26509:75::o;26957:103::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;27027:16:::1;:28:::0;26957:103::o;16697:117::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;16763:8:::1;:15:::0;;-1:-1:-1;;;;16763:15:0::1;-1:-1:-1::0;;;16763:15:0::1;::::0;;16785:24:::1;16796:12:::0;16785:10:::1;:24::i;:::-;16697:117:::0;:::o;25879:93::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;25947:20;;::::1;::::0;:7:::1;::::0;:20:::1;::::0;::::1;::::0;::::1;:::i;:::-;;25879:93:::0;:::o;26685:::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26750:12:::1;:23:::0;26685:93::o;6287:221::-;6358:7;6388:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6388:16:0;6419:19;6411:73;;;;-1:-1:-1;;;6411:73:0;;17749:2:1;6411:73:0;;;17731:21:1;17788:2;17768:18;;;17761:30;17827:34;17807:18;;;17800:62;-1:-1:-1;;;17878:18:1;;;17871:39;17927:19;;6411:73:0;17547:405:1;26199:89:0;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26262:9:::1;:21:::0;26199:89::o;6088:194::-;6159:7;-1:-1:-1;;;;;6181:19:0;;6173:74;;;;-1:-1:-1;;;6173:74:0;;18159:2:1;6173:74:0;;;18141:21:1;18198:2;18178:18;;;18171:30;18237:34;18217:18;;;18210:62;-1:-1:-1;;;18288:18:1;;;18281:40;18338:19;;6173:74:0;17957:406:1;6173:74:0;-1:-1:-1;;;;;;6261:16:0;;;;;:9;:16;;;;;;;6088:194::o;27175:193::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;27284:16:::1;:38:::0;;-1:-1:-1;;;;;27284:38:0;;::::1;-1:-1:-1::0;;;;;;27284:38:0;;::::1;;::::0;;;27327:15:::1;:36:::0;;;;;::::1;::::0;::::1;;::::0;;27175:193::o;25416:224::-;25484:7;25526;25506:16;:6;1612:14;;1527:104;25506:16;:27;;25498:67;;;;-1:-1:-1;;;25498:67:0;;10393:2:1;25498:67:0;;;10375:21:1;10432:2;10412:18;;;10405:30;10471:29;10451:18;;;10444:57;10518:18;;25498:67:0;10191:351:1;25498:67:0;25598:37;;;;:28;:37;;;;;;25579:16;;:56;;25598:37;25579:56;:::i;23545:255::-;23611:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23611:14:0;23633:13;23648:20;23672:22;23686:7;23672:13;:22::i;:::-;23632:62;;;;23707:8;23699:60;;;;-1:-1:-1;;;23699:60:0;;;;;;;:::i;:::-;23773:8;23782:12;23773:22;;;;;;;;:::i;:::-;;;;;;;;;;23766:29;;;;;;;;23773:22;;;;;;;23766:29;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23766:29:0;;;;;;;;;;;;;;;23545:255;-1:-1:-1;;;;23545:255:0:o;16819:622::-;4856:1;4982:7;;:19;;4974:63;;;;-1:-1:-1;;;4974:63:0;;;;;;;:::i;:::-;4856:1;5044:7;:18;16880:14:::1;16897:37;3828:10:::0;24838:283;:::i;16897:37::-:1;16880:54;;16956:1;16947:6;:10;16939:49;;;;-1:-1:-1::0;;;16939:49:0::1;;;;;;;:::i;:::-;16997:23;17023:27;3828:10:::0;24282:551;:::i;17023:27::-:1;16997:53;;17062:9;17057:147;17081:6;:13;17077:1;:17;17057:147;;;17107:15;17125:6;17132:1;17125:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;17182:16:::1;::::0;17142:37:::1;::::0;;;:28:::1;:37:::0;;;;;;:56;-1:-1:-1;17096:3:0;::::1;::::0;::::1;:::i;:::-;;;;17057:147;;;;17235:6;17210:21;;:31;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;17269:47:0::1;::::0;17251:12:::1;::::0;3828:10;;17304:6;;17251:12;17269:47;17251:12;17269:47;17304:6;3828:10;17269:47:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17250:66;;;17329:7;17321:62;;;;-1:-1:-1::0;;;17321:62:0::1;;;;;;;:::i;:::-;17434:1;3828:10:::0;17412:12:::1;3755:88:::0;27065:105;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;27136:17:::1;:29:::0;27065:105::o;26397:107::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26469:18:::1;:30:::0;26397:107::o;16375:70::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;16434:6:::1;::::0;;-1:-1:-1;;;;16424:16:0;::::1;-1:-1:-1::0;;;16434:6:0;;;::::1;;;16433:7;16424:16:::0;;::::1;;::::0;;16375:70::o;6608:94::-;6663:13;6690:7;6683:14;;;;;:::i;23197:252::-;23257:13;23272;23297:9;23292:153;23316:8;:15;23312:19;;23292:153;;;23371:7;23348:8;23357:1;23348:11;;;;;;;;:::i;:::-;;;;;;;;;;;:19;;;:30;23344:44;;23380:8;;23344:44;23407:4;23396:15;;23425:1;23417:9;;23434:5;;23292:153;23333:3;;;;:::i;:::-;;;;23292:153;;;;23197:252;;;:::o;14644:1014::-;4856:1;4982:7;;:19;;4974:63;;;;-1:-1:-1;;;4974:63:0;;;;;;;:::i;:::-;4856:1;5044:7;:18;14715:10;;;;;:42:::1;;;14739:18;;14729:6;:28;;14715:42;14707:74;;;::::0;-1:-1:-1;;;14707:74:0;;18570:2:1;14707:74:0::1;::::0;::::1;18552:21:1::0;18609:2;18589:18;;;18582:30;-1:-1:-1;;;18628:18:1;;;18621:49;18687:18;;14707:74:0::1;18368:343:1::0;14707:74:0::1;14788:17;14827:6;14808:16;:6;1612:14:::0;;1527:104;14808:16:::1;:25;;;;:::i;:::-;14788:45;;14861:9;;14848;:22;;14840:60;;;::::0;-1:-1:-1;;;14840:60:0;;18918:2:1;14840:60:0::1;::::0;::::1;18900:21:1::0;18957:2;18937:18;;;18930:30;-1:-1:-1;;;18976:18:1;;;18969:55;19041:18;;14840:60:0::1;18716:349:1::0;14840:60:0::1;14938:14;;14926:9;;:26;;;;:::i;:::-;14913:9;:39;;14905:81;;;::::0;-1:-1:-1;;;14905:81:0;;19272:2:1;14905:81:0::1;::::0;::::1;19254:21:1::0;19311:2;19291:18;;;19284:30;19350:31;19330:18;;;19323:59;19399:18;;14905:81:0::1;19070:353:1::0;14905:81:0::1;15002:6;::::0;-1:-1:-1;;;15002:6:0;::::1;;;15001:7;14993:37;;;::::0;-1:-1:-1;;;14993:37:0;;19630:2:1;14993:37:0::1;::::0;::::1;19612:21:1::0;19669:2;19649:18;;;19642:30;-1:-1:-1;;;19688:18:1;;;19681:47;19745:18;;14993:37:0::1;19428:341:1::0;14993:37:0::1;15063:6;15056:4;;:13;;;;:::i;:::-;15043:9;:26;;15035:57;;;::::0;-1:-1:-1;;;15035:57:0;;19976:2:1;15035:57:0::1;::::0;::::1;19958:21:1::0;20015:2;19995:18;;;19988:30;-1:-1:-1;;;20034:18:1;;;20027:48;20092:18;;15035:57:0::1;19774:342:1::0;15035:57:0::1;15101:23;15133:18:::0;15154:16:::1;:6;1612:14:::0;;1527:104;15154:16:::1;15133:37:::0;-1:-1:-1;15177:31:0::1;3828:10:::0;15201:6:::1;15177:9;:31::i;:::-;15222:9;15217:390;15241:6;15237:1;:10;15217:390;;;15264:14:::0;;15260:257:::1;;15287:33;15382:10;15373:6;13401:5;15335:11;;15323:9;:23;;;;:::i;:::-;:47;;;;:::i;:::-;:56;;;;:::i;:::-;:69;;;;:::i;:::-;15287:105:::0;-1:-1:-1;15420:38:0::1;15448:10:::0;15287:105;15420:38:::1;:::i;:::-;15401:57;::::0;;::::1;:::i;:::-;;;15485:25;15465:16;;:45;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;15260:257:0::1;15524:12:::0;::::1;::::0;::::1;:::i;:::-;15585:16;::::0;15542:40:::1;::::0;;;:28:::1;:40;::::0;;;;:59;15524:12;-1:-1:-1;15249:3:0;;-1:-1:-1;15249:3:0::1;::::0;::::1;:::i;:::-;;;;15217:390;;;;15638:15;15613:21;;:40;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;4815:1:0;5077:7;:22;-1:-1:-1;;;;14644:1014:0:o;16450:91::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;16523:13:::1;::::0;;-1:-1:-1;;;;16506:30:0;::::1;-1:-1:-1::0;;;16523:13:0;;;::::1;;;16522:14;16506:30:::0;;::::1;;::::0;;16450:91::o;7677:146::-;7766:52;3828:10;7799:8;7809;7766:18;:52::i;20840:603::-;4856:1;4982:7;;:19;;4974:63;;;;-1:-1:-1;;;4974:63:0;;;;;;;:::i;:::-;4856:1;5044:7;:18;20928:13:::1;::::0;-1:-1:-1;;;20928:13:0;::::1;;;20920:77;;;::::0;-1:-1:-1;;;20920:77:0;;20323:2:1;20920:77:0::1;::::0;::::1;20305:21:1::0;20362:2;20342:18;;;20335:30;20401:34;20381:18;;;20374:62;-1:-1:-1;;;20452:18:1;;;20445:49;20511:19;;20920:77:0::1;20121:415:1::0;20920:77:0::1;21018:1;21010:5;:9;21002:63;;;::::0;-1:-1:-1;;;21002:63:0;;20743:2:1;21002:63:0::1;::::0;::::1;20725:21:1::0;20782:2;20762:18;;;20755:30;20821:34;20801:18;;;20794:62;-1:-1:-1;;;20872:18:1;;;20865:39;20921:19;;21002:63:0::1;20541:405:1::0;21002:63:0::1;3828:10:::0;21078:16:::1;21086:7:::0;21078::::1;:16::i;:::-;-1:-1:-1::0;;;;;21078:32:0::1;;21070:88;;;;-1:-1:-1::0;;;21070:88:0::1;;;;;;;:::i;:::-;21166:13;21185:22;21199:7;21185:13;:22::i;:::-;21165:42;;;21221:8;21220:9;21212:65;;;::::0;-1:-1:-1;;;21212:65:0;;21565:2:1;21212:65:0::1;::::0;::::1;21547:21:1::0;21604:2;21584:18;;;21577:30;21643:34;21623:18;;;21616:62;-1:-1:-1;;;21694:18:1;;;21687:41;21745:19;;21212:65:0::1;21363:407:1::0;21212:65:0::1;21284:19;21306:54;;;;;;;;21314:7;21306:54;;;;21323:5;21306:54;;;;21330:12;3828:10:::0;;3755:88;21330:12:::1;-1:-1:-1::0;;;;;21306:54:0;;::::1;::::0;;21344:15:::1;21306:54;::::0;;::::1;::::0;21367:8:::1;:19:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;21367:19:0;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;;;;;;21367:19:0::1;::::0;;;::::1;;::::0;;::::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;3828:10:0;-1:-1:-1;;;;;21398:40:0::1;21409:7;21398:40;21432:5;21398:40;;;;1802:25:1::0;;1790:2;1775:18;;1656:177;21448:424:0;4856:1;4982:7;;:19;;4974:63;;;;-1:-1:-1;;;4974:63:0;;;;;;;:::i;:::-;4856:1;5044:7;:18;21516:13:::1;::::0;21555:22:::1;21569:7:::0;21555:13:::1;:22::i;:::-;21515:62;;;;21592:8;21584:60;;;;-1:-1:-1::0;;;21584:60:0::1;;;;;;;:::i;:::-;3828:10:::0;-1:-1:-1;;;;;21657:45:0::1;:8;21666:12;21657:22;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;:29:::1;:22;::::0;;::::1;;:29;::::0;-1:-1:-1;;;;;21657:29:0::1;:45;21649:101;;;;-1:-1:-1::0;;;21649:101:0::1;;;;;;;:::i;:::-;21782:8;21791:15:::0;;:19:::1;::::0;21809:1:::1;::::0;21791:19:::1;:::i;:::-;21782:29;;;;;;;;:::i;:::-;;;;;;;;;;;21757:8;21766:12;21757: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;;;;;;21757:54:0::1;-1:-1:-1::0;;;;;21757:54:0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;::::1;::::0;21816:8:::1;:14:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;-1:-1:-1::0;;21816:14:0;;;;;::::1;;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;;21816:14:0::1;::::0;;::::1;;::::0;;;;;21842:25:::1;::::0;21859:7;;21842:25:::1;::::0;::::1;-1:-1:-1::0;;4815:1:0;5077:7;:22;-1:-1:-1;21448:424:0:o;26099:95::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26168:21;;::::1;::::0;:9:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;24838:283::-:0;24909:7;24923:23;24949;24963:8;24949:13;:23::i;:::-;24923:49;;24977:13;25006:9;25001:97;25025:6;:13;25021:1;:17;25001:97;;;25060:32;25082:6;25089:1;25082:9;;;;;;;;:::i;:::-;;;;;;;25060:21;:32::i;:::-;25051:41;;;;:::i;:::-;;-1:-1:-1;25040:3:0;;;;:::i;:::-;;;;25001:97;;20247:358;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;20304:21:::1;20328:16;:6;1612:14:::0;;1527:104;20328:16:::1;20304:40:::0;-1:-1:-1;20351:29:0::1;20383:25;20304:40:::0;20383:9:::1;:25;:::i;:::-;20351:57:::0;-1:-1:-1;20413:19:0::1;20435:37;20459:13:::0;20351:57;20435:37:::1;:::i;:::-;20413:59;;20499:21;20479:16;;:41;;;;;;;:::i;:::-;;;;;;;;20550:11;20525:21;;:36;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;20573:27:0::1;::::0;20590:9:::1;1802:25:1::0;;20573:27:0::1;::::0;1790:2:1;1775:18;20573:27:0::1;;;;;;;20299:306;;;20247:358::o:0;8423:272::-;8549:41;3828:10;8582:7;8549:18;:41::i;:::-;8541:103;;;;-1:-1:-1;;;8541:103:0;;;;;;;:::i;:::-;8651:39;8665:4;8671:2;8675:7;8684:5;8651:13;:39::i;:::-;8423:272;;;;:::o;23805:382::-;9028:4;9046:16;;;:7;:16;;;;;;23869:13;;-1:-1:-1;;;;;9046:16:0;23889:76;;;;-1:-1:-1;;;23889:76:0;;21977:2:1;23889:76:0;;;21959:21:1;22016:2;21996:18;;;21989:30;22055:34;22035:18;;;22028:62;-1:-1:-1;;;22106:18:1;;;22099:45;22161:19;;23889:76:0;21775:411:1;23889:76:0;23977:8;;-1:-1:-1;;;23977:8:0;;;;23972:35;;23994:13;23987:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23805:382;;;:::o;23972:35::-;24014:28;24045:10;:8;:10::i;:::-;24014:41;;24100:1;24075:14;24069:28;:32;:113;;;;;;;;;;;;;;;;;24129:14;24145:18;:7;:16;:18::i;:::-;24165:9;24112:63;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;24069:113;24062:120;23805:382;-1:-1:-1;;;23805:382:0:o;26589:91::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26653:11:::1;:22:::0;26589:91::o;20033:209::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;20093:12:::1;20119:7;4235:6:::0;;-1:-1:-1;;;;;4235:6:0;;4169:77;20119:7:::1;-1:-1:-1::0;;;;;20111:21:0::1;20141;20111:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20092:76;;;20183:7;20175:62;;;;-1:-1:-1::0;;;20175:62:0::1;;;;;;;:::i;7828:154::-:0;-1:-1:-1;;;;;7942:25:0;;;7924:4;7942:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;7828:154::o;17446:591::-;4856:1;4982:7;;:19;;4974:63;;;;-1:-1:-1;;;4974:63:0;;;;;;;:::i;:::-;4856:1;5044:7;:18;17528:13:::1;17544:16;17552:7:::0;17544::::1;:16::i;:::-;17528:32:::0;-1:-1:-1;3828:10:0;-1:-1:-1;;;;;17573:21:0;::::1;;17565:77;;;;-1:-1:-1::0;;;17565:77:0::1;;;;;;;:::i;:::-;17649:14;17666:30;17688:7;17666:21;:30::i;:::-;17649:47;;17718:1;17709:6;:10;17701:49;;;;-1:-1:-1::0;;;17701:49:0::1;;;;;;;:::i;:::-;17784:6;17759:21;;:31;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;17835:16:0::1;::::0;17795:37:::1;::::0;;;:28:::1;:37;::::0;;;;;:56;;;;17879:40;;-1:-1:-1;;;;;17879:19:0;::::1;::::0;17907:6;;17795:37;17879:40;17795:37;17879:40;17907:6;17879:19;:40:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17860:59;;;17932:7;17924:62;;;;-1:-1:-1::0;;;17924:62:0::1;;;;;;;:::i;:::-;18030:1;18015:5;-1:-1:-1::0;;;;;18000:32:0::1;;18022:6;18000:32;;;;1802:25:1::0;;1790:2;1775:18;;1656:177;23454:86:0;23497:16;23527:8;23520:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23520:15:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23454:86;:::o;4363:188::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4446:22:0;::::1;4438:73;;;::::0;-1:-1:-1;;;4438:73:0;;24051:2:1;4438:73:0::1;::::0;::::1;24033:21:1::0;24090:2;24070:18;;;24063:30;24129:34;24109:18;;;24102:62;-1:-1:-1;;;24180:18:1;;;24173:36;24226:19;;4438:73:0::1;23849:402:1::0;4438:73:0::1;4518:28;4537:8;4518:18;:28::i;15663:705::-:0;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;15765:34;;::::1;15758:42;;;;:::i;:::-;15812:20:::0;;;;;:42:::1;;-1:-1:-1::0;15836:18:0;;;15812:42:::1;15805:50;;;;:::i;:::-;15864:19;::::0;15888:70:::1;15908:18:::0;;::::1;15888:70;;;15948:7;;15956:1;15948:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15933:25;::::0;::::1;;::::0;::::1;:::i;:::-;::::0;-1:-1:-1;15928:3:0;::::1;::::0;::::1;:::i;:::-;;;;15888:70;;;;16007:9;;15992:11;15973:16;:6;1612:14:::0;;1527:104;15973:16:::1;:30;;;;:::i;:::-;:43;;15965:81;;;::::0;-1:-1:-1;;;15965:81:0;;18918:2:1;15965:81:0::1;::::0;::::1;18900:21:1::0;18957:2;18937:18;;;18930:30;-1:-1:-1;;;18976:18:1;;;18969:55;19041:18;;15965:81:0::1;18716:349:1::0;15965:81:0::1;16060:9;16055:309;16075:20:::0;;::::1;16055:309;;;16108:12;16123:7;;16131:1;16123:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;16108:25;;16146:9;16141:218;16165:6;16161:10;;:1;:10;16141:218;;;16185:18;:6;1710:19:::0;;1728:1;1710:19;;;1636:103;16185:18:::1;16212:15;16230:16;:6;1612:14:::0;;1527:104;16230:16:::1;16212:34;;16255:32;16265:9;;16275:1;16265:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;16279:7;16255:9;:32::i;:::-;16336:16;::::0;16296:37:::1;::::0;;;:28:::1;:37;::::0;;;;;:56;16173:3;::::1;::::0;::::1;:::i;:::-;;;;16141:218;;;;16102:262;16097:3;;;;;:::i;:::-;;;;16055:309;;;;15753:615;15663:705:::0;;;;:::o;25977:117::-;4235:6;;-1:-1:-1;;;;;4235:6:0;3828:10;4285:23;4277:68;;;;-1:-1:-1;;;4277:68:0;;;;;;;:::i;:::-;26057:32;;::::1;::::0;:13:::1;::::0;:32:::1;::::0;::::1;::::0;::::1;:::i;5827:256::-:0;5928:4;-1:-1:-1;;;;;;5946:40:0;;-1:-1:-1;;;5946:40:0;;:92;;-1:-1:-1;;;;;;;5990:48:0;;-1:-1:-1;;;5990:48:0;5946:92;:132;;;-1:-1:-1;;;;;;;;;;5255:40:0;;;6042:36;5153:147;11003:161;11072:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11072:29:0;-1:-1:-1;;;;;11072:29:0;;;;;;;;:24;;11122:23;11072:24;11122:14;:23::i;:::-;-1:-1:-1;;;;;11113:46:0;;;;;;;;;;;11003:161;;:::o;9086:330::-;9178:4;9046:16;;;:7;:16;;;;;;-1:-1:-1;;;;;9046:16:0;9189:73;;;;-1:-1:-1;;;9189:73:0;;24864:2:1;9189:73:0;;;24846:21:1;24903:2;24883:18;;;24876:30;24942:34;24922:18;;;24915:62;-1:-1:-1;;;24993:18:1;;;24986:42;25045:19;;9189:73:0;24662:408:1;9189:73:0;9269:13;9285:23;9300:7;9285:14;:23::i;:::-;9269:39;;9334:5;-1:-1:-1;;;;;9323:16:0;:7;-1:-1:-1;;;;;9323:16:0;;:51;;;;9367:7;-1:-1:-1;;;;;9343:31:0;:20;9355:7;9343:11;:20::i;:::-;-1:-1:-1;;;;;9343:31:0;;9323:51;:87;;;;9378:32;9395:5;9402:7;9378:16;:32::i;:::-;9315:96;9086:330;-1:-1:-1;;;;9086:330:0:o;10518:480::-;10637:4;-1:-1:-1;;;;;10610:31:0;:23;10625:7;10610:14;:23::i;:::-;-1:-1:-1;;;;;10610:31:0;;10602:81;;;;-1:-1:-1;;;10602:81:0;;25277:2:1;10602:81:0;;;25259:21:1;25316:2;25296:18;;;25289:30;25355:34;25335:18;;;25328:62;-1:-1:-1;;;25406:18:1;;;25399:35;25451:19;;10602:81:0;25075:401:1;10602:81:0;-1:-1:-1;;;;;10696:16:0;;10688:65;;;;-1:-1:-1;;;10688:65:0;;25683:2:1;10688:65:0;;;25665:21:1;25722:2;25702:18;;;25695:30;25761:34;25741:18;;;25734:62;-1:-1:-1;;;25812:18:1;;;25805:34;25856:19;;10688:65:0;25481:400:1;10688:65:0;10760:39;10781:4;10787:2;10791:7;10760:20;:39::i;:::-;10804:29;10821:1;10825:7;10804:8;:29::i;:::-;-1:-1:-1;;;;;10840:15:0;;;;;;:9;:15;;;;;:20;;10859:1;;10840:15;:20;;10859:1;;10840:20;:::i;:::-;;;;-1:-1:-1;;;;;;;10865:13:0;;;;;;:9;:13;;;;;:18;;10882:1;;10865:13;:18;;10882:1;;10865:18;:::i;:::-;;;;-1:-1:-1;;10888:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;10888:21:0;-1:-1:-1;;;;;10888:21:0;;;;;;;;;10921:27;;10888:16;;10921:27;;;;;;;7185:277;7115:347;;:::o;8700:259::-;8808:28;8818:4;8824:2;8828:7;8808:9;:28::i;:::-;8851:48;8874:4;8880:2;8884:7;8893:5;8851:22;:48::i;:::-;8843:111;;;;-1:-1:-1;;;8843:111:0;;;;;;;:::i;27752:171::-;27818:9;27813:106;27837:6;27833:1;:10;27813:106;;;27856:18;:6;1710:19;;1728:1;1710:19;;;1636:103;27856:18;27882:31;27892:2;27896:16;:6;1612:14;;1527:104;27896:16;27882:9;:31::i;:::-;27845:3;;;;:::i;:::-;;;;27813:106;;11169:264;11284:8;-1:-1:-1;;;;;11275:17:0;:5;-1:-1:-1;;;;;11275:17:0;;;11267:55;;;;-1:-1:-1;;;11267:55:0;;26507:2:1;11267:55:0;;;26489:21:1;26546:2;26526:18;;;26519:30;26585:27;26565:18;;;26558:55;26630:18;;11267:55:0;26305:349:1;11267:55:0;-1:-1:-1;;;;;11329:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11329:46:0;;;;;;;;;;11387:41;;1235::1;;;11387::0;;1208:18:1;11387:41:0;;;;;;;11169:264;;;:::o;27375:90::-;27426:13;27453:7;27446:14;;;;;:::i;908:413::-;963:13;987:10;983:26;;-1:-1:-1;;999:10:0;;;;;;;;;;;;-1:-1:-1;;;999:10:0;;;;;908:413::o;983:26::-;1031:5;1016:12;1062:54;1069:9;;1062:54;;1086:8;;;;:::i;:::-;;-1:-1:-1;1100:10:0;;-1:-1:-1;1108:2:0;1100:10;;:::i;:::-;;;1062:54;;;1122:19;1154:6;1144:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1144:17:0;;1122:39;;1168:121;1175:10;;1168:121;;1193:11;1203:1;1193:11;;:::i;:::-;;-1:-1:-1;1253:10:0;1261:2;1253:5;:10;:::i;:::-;1240:24;;:2;:24;:::i;:::-;1227:39;;1210:6;1217;1210:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;1210:56:0;;;;;;;;-1:-1:-1;1272:11:0;1281:2;1272:11;;:::i;:::-;;;1168:121;;4556:174;4643:6;;;-1:-1:-1;;;;;4656:17:0;;;-1:-1:-1;;;;;;4656:17:0;;;;;;;4685:40;;4643:6;;;4656:17;4643:6;;4685:40;;4624:16;;4685:40;4619:111;4556:174;:::o;9421:101::-;9491:26;9501:2;9505:7;9491:26;;;;;;;;;;;;:9;:26::i;27470:277::-;27567:13;27586:22;27600:7;27586:13;:22::i;:::-;27566:42;;;27622:8;27621:9;27613:75;;;;-1:-1:-1;;;27613:75:0;;26978:2:1;27613:75:0;;;26960:21:1;27017:2;26997:18;;;26990:30;27056:34;27036:18;;;27029:62;-1:-1:-1;;;27107:18:1;;;27100:51;27168:19;;27613:75:0;26776:417:1;27613:75:0;27697:45;7115:347;11438:572;11549:4;-1:-1:-1;;;;;11564:13:0;;1425:19;:23;11560:445;;11591:72;;-1:-1:-1;;;11591:72:0;;-1:-1:-1;;;;;11591:36:0;;;;;:72;;3828:10;;11642:4;;11648:7;;11657:5;;11591:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11591:72:0;;;;;;;;-1:-1:-1;;11591:72:0;;;;;;;;;;;;:::i;:::-;;;11587:391;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11799:13:0;;11795:177;;11819:60;;-1:-1:-1;;;11819:60:0;;;;;;;:::i;11795:177::-;11949:6;11943:13;11934:6;11930:2;11926:15;11919:38;11587:391;-1:-1:-1;;;;;;11701:51:0;-1:-1:-1;;;11701:51:0;;-1:-1:-1;11694:58:0;;11560:445;-1:-1:-1;12001:4:0;11438:572;;;;;;:::o;9527:237::-;9617:18;9623:2;9627:7;9617:5;:18::i;:::-;9650:54;9681:1;9685:2;9689:7;9698:5;9650:22;:54::i;:::-;9642:117;;;;-1:-1:-1;;;9642:117:0;;;;;;;:::i;9769:394::-;-1:-1:-1;;;;;9843:16:0;;9835:61;;;;-1:-1:-1;;;9835:61:0;;28148:2:1;9835:61:0;;;28130:21:1;;;28167:18;;;28160:30;28226:34;28206:18;;;28199:62;28278:18;;9835:61:0;27946:356:1;9835:61:0;9028:4;9046:16;;;:7;:16;;;;;;-1:-1:-1;;;;;9046:16:0;:30;9901:58;;;;-1:-1:-1;;;9901:58:0;;28509:2:1;9901:58:0;;;28491:21:1;28548:2;28528:18;;;28521:30;28587;28567:18;;;28560:58;28635:18;;9901:58:0;28307:352:1;9901:58:0;9966:45;9995:1;9999:2;10003:7;9966:20;:45::i;:::-;-1:-1:-1;;;;;10018:13:0;;;;;;:9;:13;;;;;:18;;10035:1;;10018:13;:18;;10035:1;;10018:18;:::i;:::-;;;;-1:-1:-1;;10041:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;10041:21:0;-1:-1:-1;;;;;10041:21:0;;;;;;;;10074:33;;10041:16;;;10074:33;;10041:16;;10074:33;25947:20:::1;25879:93:::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:173::-;1355:20;;-1:-1:-1;;;;;1404:31:1;;1394:42;;1384:70;;1450:1;1447;1440:12;1384:70;1287:173;;;:::o;1465:186::-;1524:6;1577:2;1565:9;1556:7;1552:23;1548:32;1545:52;;;1593:1;1590;1583:12;1545:52;1616:29;1635:9;1616:29;:::i;1838:180::-;1897:6;1950:2;1938:9;1929:7;1925:23;1921:32;1918:52;;;1966:1;1963;1956:12;1918:52;-1:-1:-1;1989:23:1;;1838:180;-1:-1:-1;1838:180:1:o;2023:258::-;2095:1;2105:113;2119:6;2116:1;2113:13;2105:113;;;2195:11;;;2189:18;2176:11;;;2169:39;2141:2;2134:10;2105:113;;;2236:6;2233:1;2230:13;2227:48;;;-1:-1:-1;;2271:1:1;2253:16;;2246:27;2023:258::o;2286:::-;2328:3;2366:5;2360:12;2393:6;2388:3;2381:19;2409:63;2465:6;2458:4;2453:3;2449:14;2442:4;2435:5;2431:16;2409:63;:::i;:::-;2526:2;2505:15;-1:-1:-1;;2501:29:1;2492:39;;;;2533:4;2488:50;;2286:258;-1:-1:-1;;2286:258:1:o;2549:220::-;2698:2;2687:9;2680:21;2661:4;2718:45;2759:2;2748:9;2744:18;2736:6;2718:45;:::i;2982:254::-;3050:6;3058;3111:2;3099:9;3090:7;3086:23;3082:32;3079:52;;;3127:1;3124;3117:12;3079:52;3150:29;3169:9;3150:29;:::i;:::-;3140:39;3226:2;3211:18;;;;3198:32;;-1:-1:-1;;;2982:254:1:o;3241:328::-;3318:6;3326;3334;3387:2;3375:9;3366:7;3362:23;3358:32;3355:52;;;3403:1;3400;3393:12;3355:52;3426:29;3445:9;3426:29;:::i;:::-;3416:39;;3474:38;3508:2;3497:9;3493:18;3474:38;:::i;:::-;3464:48;;3559:2;3548:9;3544:18;3531:32;3521:42;;3241:328;;;;;:::o;3574:248::-;3642:6;3650;3703:2;3691:9;3682:7;3678:23;3674:32;3671:52;;;3719:1;3716;3709:12;3671:52;-1:-1:-1;;3742:23:1;;;3812:2;3797:18;;;3784:32;;-1:-1:-1;3574:248:1:o;4106:632::-;4277:2;4329:21;;;4399:13;;4302:18;;;4421:22;;;4248:4;;4277:2;4500:15;;;;4474:2;4459:18;;;4248:4;4543:169;4557:6;4554:1;4551:13;4543:169;;;4618:13;;4606:26;;4687:15;;;;4652:12;;;;4579:1;4572:9;4543:169;;;-1:-1:-1;4729:3:1;;4106:632;-1:-1:-1;;;;;;4106:632:1:o;4743:127::-;4804:10;4799:3;4795:20;4792:1;4785:31;4835:4;4832:1;4825:15;4859:4;4856:1;4849:15;4875:632;4940:5;4970:18;5011:2;5003:6;5000:14;4997:40;;;5017:18;;:::i;:::-;5092:2;5086:9;5060:2;5146:15;;-1:-1:-1;;5142:24:1;;;5168:2;5138:33;5134:42;5122:55;;;5192:18;;;5212:22;;;5189:46;5186:72;;;5238:18;;:::i;:::-;5278:10;5274:2;5267:22;5307:6;5298:15;;5337:6;5329;5322:22;5377:3;5368:6;5363:3;5359:16;5356:25;5353:45;;;5394:1;5391;5384:12;5353:45;5444:6;5439:3;5432:4;5424:6;5420:17;5407:44;5499:1;5492:4;5483:6;5475;5471:19;5467:30;5460:41;;;;4875:632;;;;;:::o;5512:451::-;5581:6;5634:2;5622:9;5613:7;5609:23;5605:32;5602:52;;;5650:1;5647;5640:12;5602:52;5690:9;5677:23;5723:18;5715:6;5712:30;5709:50;;;5755:1;5752;5745:12;5709:50;5778:22;;5831:4;5823:13;;5819:27;-1:-1:-1;5809:55:1;;5860:1;5857;5850:12;5809:55;5883:74;5949:7;5944:2;5931:16;5926:2;5922;5918:11;5883:74;:::i;5968:260::-;6036:6;6044;6097:2;6085:9;6076:7;6072:23;6068:32;6065:52;;;6113:1;6110;6103:12;6065:52;6136:29;6155:9;6136:29;:::i;:::-;6126:39;;6184:38;6218:2;6207:9;6203:18;6184:38;:::i;6524:247::-;6306:12;;6294:25;;6368:4;6357:16;;;6351:23;6335:14;;;6328:47;6428:4;6417:16;;;6411:23;-1:-1:-1;;;;;6407:49:1;6391:14;;;6384:73;6506:4;6495:16;;;6489:23;6473:14;;;6466:47;6708:3;6693:19;;6721:44;6233:286;7039:347;7104:6;7112;7165:2;7153:9;7144:7;7140:23;7136:32;7133:52;;;7181:1;7178;7171:12;7133:52;7204:29;7223:9;7204:29;:::i;:::-;7194:39;;7283:2;7272:9;7268:18;7255:32;7330:5;7323:13;7316:21;7309:5;7306:32;7296:60;;7352:1;7349;7342:12;7296:60;7375:5;7365:15;;;7039:347;;;;;:::o;7391:667::-;7486:6;7494;7502;7510;7563:3;7551:9;7542:7;7538:23;7534:33;7531:53;;;7580:1;7577;7570:12;7531:53;7603:29;7622:9;7603:29;:::i;:::-;7593:39;;7651:38;7685:2;7674:9;7670:18;7651:38;:::i;:::-;7641:48;;7736:2;7725:9;7721:18;7708:32;7698:42;;7791:2;7780:9;7776:18;7763:32;7818:18;7810:6;7807:30;7804:50;;;7850:1;7847;7840:12;7804:50;7873:22;;7926:4;7918:13;;7914:27;-1:-1:-1;7904:55:1;;7955:1;7952;7945:12;7904:55;7978:74;8044:7;8039:2;8026:16;8021:2;8017;8013:11;7978:74;:::i;:::-;7968:84;;;7391:667;;;;;;;:::o;8063:703::-;8284:2;8336:21;;;8406:13;;8309:18;;;8428:22;;;8255:4;;8284:2;8507:15;;;;8481:2;8466:18;;;8255:4;8550:190;8564:6;8561:1;8558:13;8550:190;;;8613:45;8654:3;8645:6;8639:13;6306:12;;6294:25;;6368:4;6357:16;;;6351:23;6335:14;;;6328:47;6428:4;6417:16;;;6411:23;-1:-1:-1;;;;;6407:49:1;6391:14;;;6384:73;6506:4;6495:16;;;6489:23;6473:14;;6466:47;6233:286;8613:45;8715:15;;;;8687:4;8678:14;;;;;8586:1;8579:9;8550:190;;8771:367;8834:8;8844:6;8898:3;8891:4;8883:6;8879:17;8875:27;8865:55;;8916:1;8913;8906:12;8865:55;-1:-1:-1;8939:20:1;;8982:18;8971:30;;8968:50;;;9014:1;9011;9004:12;8968:50;9051:4;9043:6;9039:17;9027:29;;9111:3;9104:4;9094:6;9091:1;9087:14;9079:6;9075:27;9071:38;9068:47;9065:67;;;9128:1;9125;9118:12;9065:67;8771:367;;;;;:::o;9143:771::-;9263:6;9271;9279;9287;9340:2;9328:9;9319:7;9315:23;9311:32;9308:52;;;9356:1;9353;9346:12;9308:52;9396:9;9383:23;9425:18;9466:2;9458:6;9455:14;9452:34;;;9482:1;9479;9472:12;9452:34;9521:70;9583:7;9574:6;9563:9;9559:22;9521:70;:::i;:::-;9610:8;;-1:-1:-1;9495:96:1;-1:-1:-1;9698:2:1;9683:18;;9670:32;;-1:-1:-1;9714:16:1;;;9711:36;;;9743:1;9740;9733:12;9711:36;;9782:72;9846:7;9835:8;9824:9;9820:24;9782:72;:::i;:::-;9143:771;;;;-1:-1:-1;9873:8:1;-1:-1:-1;;;;9143:771:1:o;9919:127::-;9980:10;9975:3;9971:20;9968:1;9961:31;10011:4;10008:1;10001:15;10035:4;10032:1;10025:15;10051:135;10090:3;-1:-1:-1;;10111:17:1;;10108:43;;;10131:18;;:::i;:::-;-1:-1:-1;10178:1:1;10167:13;;10051:135::o;10547:125::-;10587:4;10615:1;10612;10609:8;10606:34;;;10620:18;;:::i;:::-;-1:-1:-1;10657:9:1;;10547:125::o;10677:380::-;10756:1;10752:12;;;;10799;;;10820:61;;10874:4;10866:6;10862:17;10852:27;;10820:61;10927:2;10919:6;10916:14;10896:18;10893:38;10890:161;;;10973:10;10968:3;10964:20;10961:1;10954:31;11008:4;11005:1;10998:15;11036:4;11033:1;11026:15;10890:161;;10677:380;;;:::o;11062:356::-;11264:2;11246:21;;;11283:18;;;11276:30;11342:34;11337:2;11322:18;;11315:62;11409:2;11394:18;;11062:356::o;12663:413::-;12865:2;12847:21;;;12904:2;12884:18;;;12877:30;12943:34;12938:2;12923:18;;12916:62;-1:-1:-1;;;13009:2:1;12994:18;;12987:47;13066:3;13051:19;;12663:413::o;13081:355::-;13283:2;13265:21;;;13322:2;13302:18;;;13295:30;13361:33;13356:2;13341:18;;13334:61;13427:2;13412:18;;13081:355::o;13441:403::-;13643:2;13625:21;;;13682:2;13662:18;;;13655:30;13721:34;13716:2;13701:18;;13694:62;-1:-1:-1;;;13787:2:1;13772:18;;13765:37;13834:3;13819:19;;13441:403::o;14732:127::-;14793:10;14788:3;14784:20;14781:1;14774:31;14824:4;14821:1;14814:15;14848:4;14845:1;14838:15;15074:406;15276:2;15258:21;;;15315:2;15295:18;;;15288:30;-1:-1:-1;;;;;;;;;;;15349:2:1;15334:18;;15327:62;-1:-1:-1;;;15420:2:1;15405:18;;15398:40;15470:3;15455:19;;15074:406::o;16780:350::-;16982:2;16964:21;;;17021:2;17001:18;;;16994:30;17060:28;17055:2;17040:18;;17033:56;17121:2;17106:18;;16780:350::o;17135:407::-;17337:2;17319:21;;;17376:2;17356:18;;;17349:30;17415:34;17410:2;17395:18;;17388:62;-1:-1:-1;;;17481:2:1;17466:18;;17459:41;17532:3;17517:19;;17135:407::o;20951:::-;21153:2;21135:21;;;21192:2;21172:18;;;21165:30;21231:34;21226:2;21211:18;;21204:62;-1:-1:-1;;;21297:2:1;21282:18;;21275:41;21348:3;21333:19;;20951:407::o;22317:1527::-;22541:3;22579:6;22573:13;22605:4;22618:51;22662:6;22657:3;22652:2;22644:6;22640:15;22618:51;:::i;:::-;22732:13;;22691:16;;;;22754:55;22732:13;22691:16;22776:15;;;22754:55;:::i;:::-;22898:13;;22831:20;;;22871:1;;22958;22980:18;;;;23033;;;;23060:93;;23138:4;23128:8;23124:19;23112:31;;23060:93;23201:2;23191:8;23188:16;23168:18;23165:40;23162:167;;;-1:-1:-1;;;23228:33:1;;23284:4;23281:1;23274:15;23314:4;23235:3;23302:17;23162:167;23345:18;23372:110;;;;23496:1;23491:328;;;;23338:481;;23372:110;-1:-1:-1;;23407:24:1;;23393:39;;23452:20;;;;-1:-1:-1;23372:110:1;;23491:328;22264:1;22257:14;;;22301:4;22288:18;;23586:1;23600:169;23614:8;23611:1;23608:15;23600:169;;;23696:14;;23681:13;;;23674:37;23739:16;;;;23631:10;;23600:169;;;23604:3;;23800:8;23793:5;23789:20;23782:27;;23338:481;-1:-1:-1;23835:3:1;;22317:1527;-1:-1:-1;;;;;;;;;;;22317:1527:1:o;24256:127::-;24317:10;24312:3;24308:20;24305:1;24298:31;24348:4;24345:1;24338:15;24372:4;24369:1;24362:15;24388:269;24445:6;24498:2;24486:9;24477:7;24473:23;24469:32;24466:52;;;24514:1;24511;24504:12;24466:52;24553:9;24540:23;24603:4;24596:5;24592:16;24585:5;24582:27;24572:55;;24623:1;24620;24613:12;25886:414;26088:2;26070:21;;;26127:2;26107:18;;;26100:30;26166:34;26161:2;26146:18;;26139:62;-1:-1:-1;;;26232:2:1;26217:18;;26210:48;26290:3;26275:19;;25886:414::o;26659:112::-;26691:1;26717;26707:35;;26722:18;;:::i;:::-;-1:-1:-1;26756:9:1;;26659:112::o;27198:489::-;-1:-1:-1;;;;;27467:15:1;;;27449:34;;27519:15;;27514:2;27499:18;;27492:43;27566:2;27551:18;;27544:34;;;27614:3;27609:2;27594:18;;27587:31;;;27392:4;;27635:46;;27661:19;;27653:6;27635:46;:::i;:::-;27627:54;27198:489;-1:-1:-1;;;;;;27198:489:1:o;27692:249::-;27761:6;27814:2;27802:9;27793:7;27789:23;27785:32;27782:52;;;27830:1;27827;27820:12;27782:52;27862:9;27856:16;27881:30;27905:5;27881:30;:::i
Swarm Source
ipfs://231cfdd045f4645ddf8d5ffcdc4d6bf17dfb7d7add3fff60b2a9098ae989e604
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.