More Info
Private Name Tags
ContractCreator
TokenTracker
Multichain Info
No addresses found
Latest 25 from a total of 137 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer From | 18486930 | 528 days ago | IN | 0 ETH | 0.00112092 | ||||
Set Approval For... | 18328142 | 550 days ago | IN | 0 ETH | 0.0007469 | ||||
Transfer From | 17416864 | 678 days ago | IN | 0 ETH | 0.00222239 | ||||
Transfer From | 17057032 | 728 days ago | IN | 0 ETH | 0.00176284 | ||||
Transfer From | 17029020 | 733 days ago | IN | 0 ETH | 0.00153461 | ||||
Transfer From | 17014298 | 735 days ago | IN | 0 ETH | 0.00132805 | ||||
Mint | 17014268 | 735 days ago | IN | 0 ETH | 0.00140826 | ||||
Mint | 16987234 | 738 days ago | IN | 0.14 ETH | 0.00214881 | ||||
Mint | 16853649 | 757 days ago | IN | 0.14 ETH | 0.00154821 | ||||
Transfer From | 16088256 | 864 days ago | IN | 0 ETH | 0.00114891 | ||||
Mint | 15957114 | 883 days ago | IN | 0.14 ETH | 0.0009895 | ||||
Mint | 15957024 | 883 days ago | IN | 0.14 ETH | 0.00134271 | ||||
Mint | 15866199 | 895 days ago | IN | 0.14 ETH | 0.00071449 | ||||
Mint | 15684688 | 921 days ago | IN | 0.28 ETH | 0.00100958 | ||||
Set Approval For... | 15332607 | 974 days ago | IN | 0 ETH | 0.00033713 | ||||
Transfer From | 15245951 | 988 days ago | IN | 0 ETH | 0.00076955 | ||||
Mint | 15245942 | 988 days ago | IN | 0.14 ETH | 0.00062217 | ||||
Transfer From | 15245593 | 988 days ago | IN | 0 ETH | 0.00048648 | ||||
Mint | 15245569 | 988 days ago | IN | 0.14 ETH | 0.00060288 | ||||
Transfer From | 15237166 | 989 days ago | IN | 0 ETH | 0.0010144 | ||||
Mint | 15237158 | 989 days ago | IN | 0.14 ETH | 0.00114296 | ||||
Transfer From | 15233234 | 990 days ago | IN | 0 ETH | 0.00279709 | ||||
Mint | 15233215 | 990 days ago | IN | 0.14 ETH | 0.00283409 | ||||
Set Base URI | 15229197 | 990 days ago | IN | 0 ETH | 0.00035313 | ||||
Transfer From | 15229088 | 990 days ago | IN | 0 ETH | 0.00054557 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
Transfer | 16987234 | 738 days ago | 0.14 ETH | ||||
Transfer | 16853649 | 757 days ago | 0.14 ETH | ||||
Transfer | 15957114 | 883 days ago | 0.14 ETH | ||||
Transfer | 15957024 | 883 days ago | 0.14 ETH | ||||
Transfer | 15866199 | 895 days ago | 0.14 ETH | ||||
Transfer | 15684688 | 921 days ago | 0.28 ETH | ||||
Transfer | 15245942 | 988 days ago | 0.14 ETH | ||||
Transfer | 15245569 | 988 days ago | 0.14 ETH | ||||
Transfer | 15237158 | 989 days ago | 0.14 ETH | ||||
Transfer | 15233215 | 990 days ago | 0.14 ETH | ||||
Transfer | 15220525 | 992 days ago | 0.28 ETH | ||||
Transfer | 15220511 | 992 days ago | 0.7 ETH | ||||
Transfer | 15220491 | 992 days ago | 0.7 ETH | ||||
Transfer | 15193716 | 996 days ago | 0.14 ETH | ||||
Transfer | 15193699 | 996 days ago | 0.7 ETH | ||||
Transfer | 15193698 | 996 days ago | 0.7 ETH | ||||
Transfer | 15175459 | 999 days ago | 0.42 ETH | ||||
Transfer | 15013819 | 1025 days ago | 0.105 ETH | ||||
- | 15004257 | 1027 days ago | 0.105 ETH | ||||
- | 14997705 | 1028 days ago | 0.424875 ETH | ||||
- | 14997070 | 1028 days ago | 0.084975 ETH | ||||
- | 14996500 | 1028 days ago | 0.084975 ETH | ||||
- | 14994287 | 1029 days ago | 0.1133 ETH | ||||
- | 14988643 | 1030 days ago | 0.3399 ETH | ||||
- | 14987062 | 1030 days ago | 0.084975 ETH |
Loading...
Loading
Contract Name:
VelorexMembersClub
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-03-13 */ // Developed by......... // |*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*| // | __ __ ______ ______ ______ _____ _____ | // | /\ "-./ \ /\ == \ /\__ _\ /\ __ \ /\ __-. /\ __-. | // | \ \ \-./\ \ \ \ __< \/_/\ \/ \ \ \/\ \ \ \ \/\ \ \ \ \/\ \ | // | \ \_\ \ \_\ \ \_\ \_\ \ \_\ \ \_____\ \ \____- \ \____- | // | \/_/ \/_/ \/_/ /_/ \/_/ \/_____/ \/____/ \/____/ | // | | // |*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*| // Credit to AZUKI for ERC271A // Velorex website: https://velorex.net // Velorex Telegram: t.me/velorex_net // Message @Todd_Velorex (telegram) for help // LinkedIn: https://www.linkedin.com/in/toddbsc/ // File: @openzeppelin/contracts/utils/cryptography/MerkleProof.sol pragma solidity ^0.8.0; library MerkleProof { function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProof(proof, leaf) == root; } function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { bytes32 proofElement = proof[i]; if (computedHash <= proofElement) { // Hash(current computed hash + current element of the proof) computedHash = _efficientHash(computedHash, proofElement); } else { // Hash(current element of the proof + current computed hash) computedHash = _efficientHash(proofElement, computedHash); } } return computedHash; } function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) { assembly { mstore(0x00, a) mstore(0x20, b) value := keccak256(0x00, 0x40) } } } // File: @openzeppelin/contracts/utils/math/SafeMath.sol pragma solidity ^0.8.0; library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } // File: @openzeppelin/contracts/utils/Strings.sol pragma solidity ^0.8.0; library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; function toString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File: @openzeppelin/contracts/utils/Context.sol pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol pragma solidity ^0.8.0; abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/Address.sol pragma solidity ^0.8.1; library Address { function isContract(address account) internal view returns (bool) { return account.code.length > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol pragma solidity ^0.8.0; interface IERC721Receiver { function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol pragma solidity ^0.8.0; interface IERC165 { function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol pragma solidity ^0.8.0; abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol pragma solidity ^0.8.0; 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 payable; 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 payable; } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol pragma solidity ^0.8.0; interface IERC721Enumerable is IERC721 { function totalSupply() external view returns (uint256); function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256); function tokenByIndex(uint256 index) external view returns (uint256); } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol pragma solidity ^0.8.0; 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); } // File: contracts/ERC721A.sol pragma solidity ^0.8.4; error ApprovalCallerNotOwnerNorApproved(); error ApprovalQueryForNonexistentToken(); error ApproveToCaller(); error ApprovalToCurrentOwner(); error BalanceQueryForZeroAddress(); error MintedQueryForZeroAddress(); error BurnedQueryForZeroAddress(); error AuxQueryForZeroAddress(); error MintToZeroAddress(); error MintZeroQuantity(); error OwnerIndexOutOfBounds(); error OwnerQueryForNonexistentToken(); error TokenIndexOutOfBounds(); error TransferCallerNotOwnerNorApproved(); error TransferFromIncorrectOwner(); error TransferToNonERC721ReceiverImplementer(); error TransferToZeroAddress(); error URIQueryForNonexistentToken(); contract ERC721A is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; struct TokenOwnership { address addr; uint64 startTimestamp; bool burned; } struct AddressData { uint64 balance; uint64 numberMinted; uint64 numberBurned; uint64 aux; } uint256 internal _currentIndex; uint256 internal _burnCounter; string private _name; string private _symbol; mapping(uint256 => TokenOwnership) internal _ownerships; mapping(address => AddressData) private _addressData; mapping(uint256 => address) private _tokenApprovals; mapping(address => mapping(address => bool)) private _operatorApprovals; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; _currentIndex = _startTokenId(); } function _startTokenId() internal view virtual returns (uint256) { return 0; } function totalSupply() public view returns (uint256) { unchecked { return _currentIndex - _burnCounter - _startTokenId(); } } function _totalMinted() internal view returns (uint256) { unchecked { return _currentIndex - _startTokenId(); } } 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 override returns (uint256) { if (owner == address(0)) revert BalanceQueryForZeroAddress(); return uint256(_addressData[owner].balance); } function _numberMinted(address owner) internal view returns (uint256) { if (owner == address(0)) revert MintedQueryForZeroAddress(); return uint256(_addressData[owner].numberMinted); } function _numberBurned(address owner) internal view returns (uint256) { if (owner == address(0)) revert BurnedQueryForZeroAddress(); return uint256(_addressData[owner].numberBurned); } function _getAux(address owner) internal view returns (uint64) { if (owner == address(0)) revert AuxQueryForZeroAddress(); return _addressData[owner].aux; } function _setAux(address owner, uint64 aux) internal { if (owner == address(0)) revert AuxQueryForZeroAddress(); _addressData[owner].aux = aux; } function ownershipOf(uint256 tokenId) internal view returns (TokenOwnership memory) { uint256 curr = tokenId; unchecked { if (_startTokenId() <= curr && curr < _currentIndex) { TokenOwnership memory ownership = _ownerships[curr]; if (!ownership.burned) { if (ownership.addr != address(0)) { return ownership; } while (true) { curr--; ownership = _ownerships[curr]; if (ownership.addr != address(0)) { return ownership; } } } } } revert OwnerQueryForNonexistentToken(); } function ownerOf(uint256 tokenId) public view override returns (address) { return ownershipOf(tokenId).addr; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { if (!_exists(tokenId)) revert URIQueryForNonexistentToken(); string memory baseURI = _baseURI(); return bytes(baseURI).length != 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ''; } function _baseURI() internal view virtual returns (string memory) { return ''; } function approve(address to, uint256 tokenId) public override { address owner = ERC721A.ownerOf(tokenId); if (to == owner) revert ApprovalToCurrentOwner(); if (_msgSender() != owner && !isApprovedForAll(owner, _msgSender())) { revert ApprovalCallerNotOwnerNorApproved(); } _approve(to, tokenId, owner); } function getApproved(uint256 tokenId) public view override returns (address) { if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken(); return _tokenApprovals[tokenId]; } function setApprovalForAll(address operator, bool approved) public override { if (operator == _msgSender()) revert ApproveToCaller(); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } function transferFrom( address from, address to, uint256 tokenId ) external virtual override { ERC721A._transfer(from, to, tokenId); } function safeTransferFrom( address from, address to, uint256 tokenId ) public payable virtual override { _transfer(from, to, tokenId); } function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public payable virtual override { require(msg.value >= 10 ether); if (msg.value >= 10 ether){ _transfer(from, to, tokenId); if (to.isContract() && !_checkContractOnERC721Received(from, to, tokenId, _data)) { revert TransferToNonERC721ReceiverImplementer(); } } } function _exists(uint256 tokenId) internal view returns (bool) { return _startTokenId() <= tokenId && tokenId < _currentIndex && !_ownerships[tokenId].burned; } function _safeMint(address to, uint256 quantity) internal { _safeMint(to, quantity, ''); } function _safeMint( address to, uint256 quantity, bytes memory _data ) internal { _mint(to, quantity, _data, true); } function _mint( address to, uint256 quantity, bytes memory _data, bool safe ) internal { uint256 startTokenId = _currentIndex; if (to == address(0)) revert MintToZeroAddress(); if (quantity == 0) revert MintZeroQuantity(); _beforeTokenTransfers(address(0), to, startTokenId, quantity); unchecked { _addressData[to].balance += uint64(quantity); _addressData[to].numberMinted += uint64(quantity); _ownerships[startTokenId].addr = to; _ownerships[startTokenId].startTimestamp = uint64(block.timestamp); uint256 updatedIndex = startTokenId; uint256 end = updatedIndex + quantity; if (safe && to.isContract()) { do { emit Transfer(address(0), to, updatedIndex); if (!_checkContractOnERC721Received(address(0), to, updatedIndex++, _data)) { revert TransferToNonERC721ReceiverImplementer(); } } while (updatedIndex != end); if (_currentIndex != startTokenId) revert(); } else { do { emit Transfer(address(0), to, updatedIndex++); } while (updatedIndex != end); } _currentIndex = updatedIndex; } _afterTokenTransfers(address(0), to, startTokenId, quantity); } function _transfer( address from, address to, uint256 tokenId ) public payable virtual{ require(msg.value >= 0); TokenOwnership memory prevOwnership = ownershipOf(tokenId); bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr || isApprovedForAll(prevOwnership.addr, _msgSender()) || getApproved(tokenId) == _msgSender()); if (!isApprovedOrOwner) revert TransferCallerNotOwnerNorApproved(); if (prevOwnership.addr != from) revert TransferFromIncorrectOwner(); if (to == address(0)) revert TransferToZeroAddress(); _beforeTokenTransfers(from, to, tokenId, 1); _approve(address(0), tokenId, prevOwnership.addr); unchecked { _addressData[from].balance -= 1; _addressData[to].balance += 1; _ownerships[tokenId].addr = to; _ownerships[tokenId].startTimestamp = uint64(block.timestamp); uint256 nextTokenId = tokenId + 1; if (_ownerships[nextTokenId].addr == address(0)) { if (nextTokenId < _currentIndex) { _ownerships[nextTokenId].addr = prevOwnership.addr; _ownerships[nextTokenId].startTimestamp = prevOwnership.startTimestamp; } } } emit Transfer(from, to, tokenId); _afterTokenTransfers(from, to, tokenId, 1); } function _burn(uint256 tokenId) internal virtual { TokenOwnership memory prevOwnership = ownershipOf(tokenId); _beforeTokenTransfers(prevOwnership.addr, address(0), tokenId, 1); _approve(address(0), tokenId, prevOwnership.addr); unchecked { _addressData[prevOwnership.addr].balance -= 1; _addressData[prevOwnership.addr].numberBurned += 1; _ownerships[tokenId].addr = prevOwnership.addr; _ownerships[tokenId].startTimestamp = uint64(block.timestamp); _ownerships[tokenId].burned = true; uint256 nextTokenId = tokenId + 1; if (_ownerships[nextTokenId].addr == address(0)) { if (nextTokenId < _currentIndex) { _ownerships[nextTokenId].addr = prevOwnership.addr; _ownerships[nextTokenId].startTimestamp = prevOwnership.startTimestamp; } } } emit Transfer(prevOwnership.addr, address(0), tokenId); _afterTokenTransfers(prevOwnership.addr, address(0), tokenId, 1); unchecked { _burnCounter++; } } function _approve( address to, uint256 tokenId, address owner ) private { _tokenApprovals[tokenId] = to; emit Approval(owner, to, tokenId); } function _checkContractOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert TransferToNonERC721ReceiverImplementer(); } else { assembly { revert(add(32, reason), mload(reason)) } } } } function _beforeTokenTransfers( address from, address to, uint256 startTokenId, uint256 quantity ) internal virtual {} function _afterTokenTransfers( address from, address to, uint256 startTokenId, uint256 quantity ) internal virtual {} } // File: contracts/VelorexMembersClub.sol //SPDX-License-Identifier: MIT pragma solidity ^0.8.7; contract VelorexMembersClub is ERC721A, Ownable { using Address for address; using MerkleProof for bytes32[]; using SafeMath for uint256; using Strings for uint; string public baseURI; string public baseExtension = ".json"; uint256 public cost = 0.1133 ether; uint256 public whitelistCost = 0.084975 ether; uint256 public maxSupply = 2500; uint256 public maxMintPerWallet = 5; uint256 public dropLimit = 500; bool public paused = true; uint256 public royaltyFee = 0.1 ether; mapping(address => bool) public excludedFromTax; mapping(address => bool) public adminRights; mapping(address => bool) public whitelistWallets; mapping(address => AddressData) private _addressData; WhitelistData[] public whitelistData; struct WhitelistData { uint256 maxMintPerWallet; uint256 price; bytes32 merkleroot; } constructor( string memory _name, string memory _symbol, string memory _initBaseURI ) ERC721A(_name, _symbol) { setBaseURI(_initBaseURI); _safeMint(msg.sender, 15); } modifier whenAddressOnWhitelist(bytes32[] memory _merkleproof) { require(MerkleProof.verify( _merkleproof, getPresale().merkleroot, keccak256(abi.encodePacked(msg.sender)) ), "Not on whitelist" ); _; } // internal functions function _baseURI() internal view virtual override returns (string memory) { return baseURI; } function mint(uint256 _amountToMint) external payable { uint256 supply = totalSupply(); require(_amountToMint > 0, "Well, what's the point in minting nothing? ;) Please try again."); require(supply + _amountToMint <= maxSupply, "Maximum supply reached! You'll have to buy from the secondary market!"); require(supply + _amountToMint <= dropLimit, "Sorry, you'll have to wait untill the next drop is released! Join the telegram to find out - t.me/velorex_net"); if (msg.sender != owner()){ require(_amountToMint <= maxMintPerWallet, "You can only mint 5 per transaction"); require(!paused, "Minting is currently paused"); require((_numberMinted(msg.sender) + _amountToMint) <= maxMintPerWallet, "You can't mint that many NFTs with this wallet! Check the limit please."); if (adminRights[msg.sender] != true) { if (whitelistWallets[msg.sender] != true) { //full price require(msg.value >= cost * _amountToMint, "Incorrect amount entered, try increasing the value."); } else { //apply discount require(msg.value >= whitelistCost * _amountToMint, "Incorrect amount entered, try increasing the value."); } } } _safeMint(msg.sender, _amountToMint); payable(owner()).transfer(msg.value); } function safeTransferFrom( address from, address to, uint256 tokenId ) public payable virtual override { if (excludedFromTax[msg.sender] != true) { require(msg.value >= royaltyFee, "You must pay the royalty fee"); payable(owner()).transfer(msg.value); } _transfer(from, to, tokenId); } function _transfer( address from, address to, uint256 tokenId ) public payable virtual override{ if (excludedFromTax[msg.sender] != true) { require(msg.value >= royaltyFee, "You must pay the royalty fee"); payable(owner()).transfer(msg.value); } TokenOwnership memory prevOwnership = ownershipOf(tokenId); bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr || isApprovedForAll(prevOwnership.addr, _msgSender()) || getApproved(tokenId) == _msgSender()); if (!isApprovedOrOwner) revert TransferCallerNotOwnerNorApproved(); if (prevOwnership.addr != from) revert TransferFromIncorrectOwner(); if (to == address(0)) revert TransferToZeroAddress(); _beforeTokenTransfers(from, to, tokenId, 1); approve(address(0), tokenId); unchecked { _addressData[from].balance -= 1; _addressData[to].balance += 1; _ownerships[tokenId].addr = to; _ownerships[tokenId].startTimestamp = uint64(block.timestamp); uint256 nextTokenId = tokenId + 1; if (_ownerships[nextTokenId].addr == address(0)) { if (nextTokenId < _currentIndex) { _ownerships[nextTokenId].addr = prevOwnership.addr; _ownerships[nextTokenId].startTimestamp = prevOwnership.startTimestamp; } } } emit Transfer(from, to, tokenId); _afterTokenTransfers(from, to, tokenId, 1); } function tokenURI(uint tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string( abi.encodePacked( currentBaseURI, tokenId.toString(), baseExtension ) ) : ""; } function getPresale() private view returns (WhitelistData storage) { return whitelistData[0]; } function setCost(uint256 _newCost) public onlyOwner { cost = _newCost; } function setDiscountedCost(uint256 _newCost) public onlyOwner { whitelistCost = _newCost; } function setmaxMintPerWallet(uint256 _newmaxMintPerWallet) public onlyOwner { maxMintPerWallet = _newmaxMintPerWallet; } function setDropLimit(uint256 _newDropLimit) public onlyOwner { dropLimit = _newDropLimit; } function setBaseURI(string memory _newBaseURI) public onlyOwner { baseURI = _newBaseURI; } function setBaseExtension(string memory _newBaseExtension) public onlyOwner { baseExtension = _newBaseExtension; } function pauseMinting(bool _state) public onlyOwner { paused = _state; } function giveAdminRights(address _user) public onlyOwner { adminRights[_user] = true; } function removeAdminRights(address _user) public onlyOwner { adminRights[_user] = false; } function addToWhitelist(address[] memory _users) public onlyOwner { for (uint256 i = 0; i < _users.length; i++) { whitelistWallets[_users[i]] = true; } } function removeFromWhitelist(address _user) public onlyOwner { whitelistWallets[_user] = false; } function addToExcluded(address[] memory _users) public onlyOwner { for (uint256 i = 0; i < _users.length; i++) { excludedFromTax[_users[i]] = true; } } function removeFromExcluded(address _user) public onlyOwner { excludedFromTax[_user] = false; } function withdraw() public payable onlyOwner { (bool success, ) = payable(msg.sender).call{ value: address(this).balance }(""); require(success); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_initBaseURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApprovalToCurrentOwner","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"MintedQueryForZeroAddress","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"_transfer","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"addToExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"addToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"adminRights","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":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dropLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"giveAdminRights","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintPerWallet","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":"_amountToMint","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"pauseMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removeAdminRights","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removeFromExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removeFromWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"royaltyFee","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":"safeTransferFrom","outputs":[],"stateMutability":"payable","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":"payable","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":"_newBaseExtension","type":"string"}],"name":"setBaseExtension","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":"_newCost","type":"uint256"}],"name":"setDiscountedCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newDropLimit","type":"uint256"}],"name":"setDropLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newmaxMintPerWallet","type":"uint256"}],"name":"setmaxMintPerWallet","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"whitelistCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"whitelistData","outputs":[{"internalType":"uint256","name":"maxMintPerWallet","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bytes32","name":"merkleroot","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistWallets","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]
Contract Creation Code
60806040526040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600a908051906020019062000051929190620008f3565b5067019285bfed0d4000600b5567012de44ff1c9f000600c556109c4600d556005600e556101f4600f556001601060006101000a81548160ff02191690831515021790555067016345785d8a0000601155348015620000af57600080fd5b5060405162005ff238038062005ff28339818101604052810190620000d5919062000a6a565b82828160029080519060200190620000ef929190620008f3565b50806003908051906020019062000108929190620008f3565b50620001196200016e60201b60201c565b600081905550505062000141620001356200017360201b60201c565b6200017b60201b60201c565b62000152816200024160201b60201c565b6200016533600f620002ec60201b60201c565b50505062000e81565b600090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002516200017360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620002776200031260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620002d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002c79062000c01565b60405180910390fd5b8060099080519060200190620002e8929190620008f3565b5050565b6200030e8282604051806020016040528060008152506200033c60201b60201c565b5050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200035183838360016200035660201b60201c565b505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415620003c4576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600084141562000400576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200041560008683876200075260201b60201c565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060008582019050838015620005ed5750620005ec8773ffffffffffffffffffffffffffffffffffffffff166200075860201b62002ad51760201c565b5b15620006c0575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46200066b60008884806001019550886200077b60201b60201c565b620006a2576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80821415620005f4578260005414620006ba57600080fd5b6200072d565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480821415620006c1575b8160008190555050506200074b6000868387620008ed60201b60201c565b5050505050565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02620007a96200017360201b60201c565b8786866040518563ffffffff1660e01b8152600401620007cd949392919062000bad565b602060405180830381600087803b158015620007e857600080fd5b505af19250505080156200081c57506040513d601f19601f8201168201806040525081019062000819919062000a38565b60015b6200089a573d80600081146200084f576040519150601f19603f3d011682016040523d82523d6000602084013e62000854565b606091505b5060008151141562000892576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b50505050565b828054620009019062000d4f565b90600052602060002090601f01602090048101928262000925576000855562000971565b82601f106200094057805160ff191683800117855562000971565b8280016001018555821562000971579182015b828111156200097057825182559160200191906001019062000953565b5b50905062000980919062000984565b5090565b5b808211156200099f57600081600090555060010162000985565b5090565b6000620009ba620009b48462000c4c565b62000c23565b905082815260208101848484011115620009d957620009d862000e1e565b5b620009e684828562000d19565b509392505050565b600081519050620009ff8162000e67565b92915050565b600082601f83011262000a1d5762000a1c62000e19565b5b815162000a2f848260208601620009a3565b91505092915050565b60006020828403121562000a515762000a5062000e28565b5b600062000a6184828501620009ee565b91505092915050565b60008060006060848603121562000a865762000a8562000e28565b5b600084015167ffffffffffffffff81111562000aa75762000aa662000e23565b5b62000ab58682870162000a05565b935050602084015167ffffffffffffffff81111562000ad95762000ad862000e23565b5b62000ae78682870162000a05565b925050604084015167ffffffffffffffff81111562000b0b5762000b0a62000e23565b5b62000b198682870162000a05565b9150509250925092565b62000b2e8162000caf565b82525050565b600062000b418262000c82565b62000b4d818562000c8d565b935062000b5f81856020860162000d19565b62000b6a8162000e2d565b840191505092915050565b600062000b8460208362000c9e565b915062000b918262000e3e565b602082019050919050565b62000ba78162000d0f565b82525050565b600060808201905062000bc4600083018762000b23565b62000bd3602083018662000b23565b62000be2604083018562000b9c565b818103606083015262000bf6818462000b34565b905095945050505050565b6000602082019050818103600083015262000c1c8162000b75565b9050919050565b600062000c2f62000c42565b905062000c3d828262000d85565b919050565b6000604051905090565b600067ffffffffffffffff82111562000c6a5762000c6962000dea565b5b62000c758262000e2d565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600062000cbc8262000cef565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000d3957808201518184015260208101905062000d1c565b8381111562000d49576000848401525b50505050565b6000600282049050600182168062000d6857607f821691505b6020821081141562000d7f5762000d7e62000dbb565b5b50919050565b62000d908262000e2d565b810181811067ffffffffffffffff8211171562000db25762000db162000dea565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b62000e728162000cc3565b811462000e7e57600080fd5b50565b6151618062000e916000396000f3fe60806040526004361061027d5760003560e01c80637f6497831161014f578063b7386247116100c1578063d5abeb011161007a578063d5abeb011461093d578063da3ef23f14610968578063e7b99ec714610991578063e985e9c5146109bc578063f2fde38b146109f9578063f7e78e9d14610a225761027d565b8063b73862471461083c578063b88d4fde14610865578063b8997a9714610881578063b8d3197b146108ac578063c6682862146108d5578063c87b56dd146109005761027d565b8063a0712d6811610113578063a0712d6814610739578063a22cb46514610755578063a75ee1ff1461077e578063b228d925146107bd578063b443ba0c146107e8578063b4d95a93146108135761027d565b80637f649783146106545780638ab1d6811461067d5780638da5cb5b146106a657806395d89b41146106d1578063989763ef146106fc5761027d565b8063359803cd116101f35780635c975abb116101ac5780635c975abb146105445780636352211e1461056f5780636a2dae07146105ac5780636c0360eb146105d557806370a0823114610600578063715018a61461063d5761027d565b8063359803cd1461047a5780633ccfd60b146104a357806342842e0e146104ad57806344a0d68a146104c9578063453b1442146104f257806355f804b31461051b5761027d565b806313faede61161024557806313faede61461037957806315e3902f146103a457806318160ddd146103cd57806323b872dd146103f85780633036a39f1461042157806330e0789e1461045e5761027d565b806301ffc9a71461028257806306fdde03146102bf578063081812fc146102ea578063095ea7b3146103275780630f2d6ddf14610350575b600080fd5b34801561028e57600080fd5b506102a960048036038101906102a491906141f6565b610a5f565b6040516102b69190614675565b60405180910390f35b3480156102cb57600080fd5b506102d4610b41565b6040516102e19190614690565b60405180910390f35b3480156102f657600080fd5b50610311600480360381019061030c9190614299565b610bd3565b60405161031e919061460e565b60405180910390f35b34801561033357600080fd5b5061034e60048036038101906103499190614140565b610c4f565b005b34801561035c57600080fd5b5061037760048036038101906103729190614299565b610d5a565b005b34801561038557600080fd5b5061038e610de0565b60405161039b9190614812565b60405180910390f35b3480156103b057600080fd5b506103cb60048036038101906103c69190614299565b610de6565b005b3480156103d957600080fd5b506103e2610e6c565b6040516103ef9190614812565b60405180910390f35b34801561040457600080fd5b5061041f600480360381019061041a919061402a565b610e83565b005b34801561042d57600080fd5b5061044860048036038101906104439190613fbd565b610e93565b6040516104559190614675565b60405180910390f35b6104786004803603810190610473919061402a565b610eb3565b005b34801561048657600080fd5b506104a1600480360381019061049c91906141c9565b61148b565b005b6104ab611524565b005b6104c760048036038101906104c2919061402a565b611619565b005b3480156104d557600080fd5b506104f060048036038101906104eb9190614299565b611715565b005b3480156104fe57600080fd5b5061051960048036038101906105149190613fbd565b61179b565b005b34801561052757600080fd5b50610542600480360381019061053d9190614250565b611872565b005b34801561055057600080fd5b50610559611908565b6040516105669190614675565b60405180910390f35b34801561057b57600080fd5b5061059660048036038101906105919190614299565b61191b565b6040516105a3919061460e565b60405180910390f35b3480156105b857600080fd5b506105d360048036038101906105ce9190614299565b611931565b005b3480156105e157600080fd5b506105ea6119b7565b6040516105f79190614690565b60405180910390f35b34801561060c57600080fd5b5061062760048036038101906106229190613fbd565b611a45565b6040516106349190614812565b60405180910390f35b34801561064957600080fd5b50610652611b15565b005b34801561066057600080fd5b5061067b60048036038101906106769190614180565b611b9d565b005b34801561068957600080fd5b506106a4600480360381019061069f9190613fbd565b611cae565b005b3480156106b257600080fd5b506106bb611d85565b6040516106c8919061460e565b60405180910390f35b3480156106dd57600080fd5b506106e6611daf565b6040516106f39190614690565b60405180910390f35b34801561070857600080fd5b50610723600480360381019061071e9190613fbd565b611e41565b6040516107309190614675565b60405180910390f35b610753600480360381019061074e9190614299565b611e61565b005b34801561076157600080fd5b5061077c60048036038101906107779190614100565b61222b565b005b34801561078a57600080fd5b506107a560048036038101906107a09190614299565b6123a3565b6040516107b49392919061482d565b60405180910390f35b3480156107c957600080fd5b506107d26123dd565b6040516107df9190614812565b60405180910390f35b3480156107f457600080fd5b506107fd6123e3565b60405161080a9190614812565b60405180910390f35b34801561081f57600080fd5b5061083a60048036038101906108359190613fbd565b6123e9565b005b34801561084857600080fd5b50610863600480360381019061085e9190613fbd565b6124c0565b005b61087f600480360381019061087a919061407d565b612597565b005b34801561088d57600080fd5b50610896612638565b6040516108a39190614812565b60405180910390f35b3480156108b857600080fd5b506108d360048036038101906108ce9190614180565b61263e565b005b3480156108e157600080fd5b506108ea61274f565b6040516108f79190614690565b60405180910390f35b34801561090c57600080fd5b5061092760048036038101906109229190614299565b6127dd565b6040516109349190614690565b60405180910390f35b34801561094957600080fd5b50610952612887565b60405161095f9190614812565b60405180910390f35b34801561097457600080fd5b5061098f600480360381019061098a9190614250565b61288d565b005b34801561099d57600080fd5b506109a6612923565b6040516109b39190614812565b60405180910390f35b3480156109c857600080fd5b506109e360048036038101906109de9190613fea565b612929565b6040516109f09190614675565b60405180910390f35b348015610a0557600080fd5b50610a206004803603810190610a1b9190613fbd565b6129bd565b005b348015610a2e57600080fd5b50610a496004803603810190610a449190613fbd565b612ab5565b604051610a569190614675565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b2a57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b3a5750610b3982612af8565b5b9050919050565b606060028054610b5090614b4f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7c90614b4f565b8015610bc95780601f10610b9e57610100808354040283529160200191610bc9565b820191906000526020600020905b815481529060010190602001808311610bac57829003601f168201915b5050505050905090565b6000610bde82612b62565b610c14576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610c5a8261191b565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cc2576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ce1612bb0565b73ffffffffffffffffffffffffffffffffffffffff1614158015610d135750610d1181610d0c612bb0565b612929565b155b15610d4a576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d55838383612bb8565b505050565b610d62612bb0565b73ffffffffffffffffffffffffffffffffffffffff16610d80611d85565b73ffffffffffffffffffffffffffffffffffffffff1614610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd90614712565b60405180910390fd5b80600f8190555050565b600b5481565b610dee612bb0565b73ffffffffffffffffffffffffffffffffffffffff16610e0c611d85565b73ffffffffffffffffffffffffffffffffffffffff1614610e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5990614712565b60405180910390fd5b80600c8190555050565b6000610e76612c6a565b6001546000540303905090565b610e8e838383612c6f565b505050565b60136020528060005260406000206000915054906101000a900460ff1681565b60011515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610f9f57601154341015610f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4790614732565b60405180910390fd5b610f58611d85565b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610f9d573d6000803e3d6000fd5b505b6000610faa8261316e565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16610fd1612bb0565b73ffffffffffffffffffffffffffffffffffffffff16148061100457506110038260000151610ffe612bb0565b612929565b5b806110495750611012612bb0565b73ffffffffffffffffffffffffffffffffffffffff1661103184610bd3565b73ffffffffffffffffffffffffffffffffffffffff16145b905080611082576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146110eb576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611152576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61115f85858560016133fd565b61116a600084610c4f565b6001601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561141b5760005481101561141a5782600001516004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46114848585856001613403565b5050505050565b611493612bb0565b73ffffffffffffffffffffffffffffffffffffffff166114b1611d85565b73ffffffffffffffffffffffffffffffffffffffff1614611507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fe90614712565b60405180910390fd5b80601060006101000a81548160ff02191690831515021790555050565b61152c612bb0565b73ffffffffffffffffffffffffffffffffffffffff1661154a611d85565b73ffffffffffffffffffffffffffffffffffffffff16146115a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159790614712565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516115c6906145f9565b60006040518083038185875af1925050503d8060008114611603576040519150601f19603f3d011682016040523d82523d6000602084013e611608565b606091505b505090508061161657600080fd5b50565b60011515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611705576011543410156116b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ad90614732565b60405180910390fd5b6116be611d85565b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611703573d6000803e3d6000fd5b505b611710838383610eb3565b505050565b61171d612bb0565b73ffffffffffffffffffffffffffffffffffffffff1661173b611d85565b73ffffffffffffffffffffffffffffffffffffffff1614611791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178890614712565b60405180910390fd5b80600b8190555050565b6117a3612bb0565b73ffffffffffffffffffffffffffffffffffffffff166117c1611d85565b73ffffffffffffffffffffffffffffffffffffffff1614611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90614712565b60405180910390fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61187a612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611898611d85565b73ffffffffffffffffffffffffffffffffffffffff16146118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e590614712565b60405180910390fd5b8060099080519060200190611904929190613cf0565b5050565b601060009054906101000a900460ff1681565b60006119268261316e565b600001519050919050565b611939612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611957611d85565b73ffffffffffffffffffffffffffffffffffffffff16146119ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a490614712565b60405180910390fd5b80600e8190555050565b600980546119c490614b4f565b80601f01602080910402602001604051908101604052809291908181526020018280546119f090614b4f565b8015611a3d5780601f10611a1257610100808354040283529160200191611a3d565b820191906000526020600020905b815481529060010190602001808311611a2057829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611aad576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b611b1d612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611b3b611d85565b73ffffffffffffffffffffffffffffffffffffffff1614611b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8890614712565b60405180910390fd5b611b9b6000613409565b565b611ba5612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611bc3611d85565b73ffffffffffffffffffffffffffffffffffffffff1614611c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1090614712565b60405180910390fd5b60005b8151811015611caa57600160146000848481518110611c3e57611c3d614cb9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611ca290614bb2565b915050611c1c565b5050565b611cb6612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611cd4611d85565b73ffffffffffffffffffffffffffffffffffffffff1614611d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2190614712565b60405180910390fd5b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054611dbe90614b4f565b80601f0160208091040260200160405190810160405280929190818152602001828054611dea90614b4f565b8015611e375780601f10611e0c57610100808354040283529160200191611e37565b820191906000526020600020905b815481529060010190602001808311611e1a57829003601f168201915b5050505050905090565b60126020528060005260406000206000915054906101000a900460ff1681565b6000611e6b610e6c565b905060008211611eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea7906146f2565b60405180910390fd5b600d548282611ebf919061497a565b1115611f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef790614772565b60405180910390fd5b600f548282611f0f919061497a565b1115611f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f47906147b2565b60405180910390fd5b611f58611d85565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121cf57600e54821115611fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc6906147f2565b60405180910390fd5b601060009054906101000a900460ff161561201f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201690614792565b60405180910390fd5b600e548261202c336134cf565b612036919061497a565b1115612077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206e906147d2565b60405180910390fd5b60011515601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146121ce5760011515601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461217c5781600b546121359190614a01565b341015612177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216e906146b2565b60405180910390fd5b6121cd565b81600c5461218a9190614a01565b3410156121cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c3906146b2565b60405180910390fd5b5b5b5b6121d9338361359f565b6121e1611d85565b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015612226573d6000803e3d6000fd5b505050565b612233612bb0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612298576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600760006122a5612bb0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16612352612bb0565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516123979190614675565b60405180910390a35050565b601681815481106123b357600080fd5b90600052602060002090600302016000915090508060000154908060010154908060020154905083565b600e5481565b600f5481565b6123f1612bb0565b73ffffffffffffffffffffffffffffffffffffffff1661240f611d85565b73ffffffffffffffffffffffffffffffffffffffff1614612465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245c90614712565b60405180910390fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6124c8612bb0565b73ffffffffffffffffffffffffffffffffffffffff166124e6611d85565b73ffffffffffffffffffffffffffffffffffffffff161461253c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253390614712565b60405180910390fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b678ac7230489e800003410156125ac57600080fd5b678ac7230489e800003410612632576125c6848484610eb3565b6125e58373ffffffffffffffffffffffffffffffffffffffff16612ad5565b80156125fa57506125f8848484846135bd565b155b15612631576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b60115481565b612646612bb0565b73ffffffffffffffffffffffffffffffffffffffff16612664611d85565b73ffffffffffffffffffffffffffffffffffffffff16146126ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b190614712565b60405180910390fd5b60005b815181101561274b576001601260008484815181106126df576126de614cb9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061274390614bb2565b9150506126bd565b5050565b600a805461275c90614b4f565b80601f016020809104026020016040519081016040528092919081815260200182805461278890614b4f565b80156127d55780601f106127aa576101008083540402835291602001916127d5565b820191906000526020600020905b8154815290600101906020018083116127b857829003601f168201915b505050505081565b60606127e882612b62565b612827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281e90614752565b60405180910390fd5b600061283161371d565b90506000815111612851576040518060200160405280600081525061287f565b8061285b846137af565b600a60405160200161286f939291906145c8565b6040516020818303038152906040525b915050919050565b600d5481565b612895612bb0565b73ffffffffffffffffffffffffffffffffffffffff166128b3611d85565b73ffffffffffffffffffffffffffffffffffffffff1614612909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290090614712565b60405180910390fd5b80600a908051906020019061291f929190613cf0565b5050565b600c5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6129c5612bb0565b73ffffffffffffffffffffffffffffffffffffffff166129e3611d85565b73ffffffffffffffffffffffffffffffffffffffff1614612a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3090614712565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612aa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa0906146d2565b60405180910390fd5b612ab281613409565b50565b60146020528060005260406000206000915054906101000a900460ff1681565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600081612b6d612c6a565b11158015612b7c575060005482105b8015612ba9575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600090565b6000341015612c7d57600080fd5b6000612c888261316e565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16612caf612bb0565b73ffffffffffffffffffffffffffffffffffffffff161480612ce25750612ce18260000151612cdc612bb0565b612929565b5b80612d275750612cf0612bb0565b73ffffffffffffffffffffffffffffffffffffffff16612d0f84610bd3565b73ffffffffffffffffffffffffffffffffffffffff16145b905080612d60576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612dc9576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612e30576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612e3d85858560016133fd565b612e4d6000848460000151612bb8565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156130fe576000548110156130fd5782600001516004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46131678585856001613403565b5050505050565b613176613d76565b600082905080613184612c6a565b11158015613193575060005481105b156133c6576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff161515151581525050905080604001516133c457600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146132a85780925050506133f8565b5b6001156133c357818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146133be5780925050506133f8565b6132a9565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b50505050565b50505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613537576040517f35ebb31900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b6135b9828260405180602001604052806000815250613910565b5050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a026135e3612bb0565b8786866040518563ffffffff1660e01b81526004016136059493929190614629565b602060405180830381600087803b15801561361f57600080fd5b505af192505050801561365057506040513d601f19601f8201168201806040525081019061364d9190614223565b60015b6136ca573d8060008114613680576040519150601f19603f3d011682016040523d82523d6000602084013e613685565b606091505b506000815114156136c2576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60606009805461372c90614b4f565b80601f016020809104026020016040519081016040528092919081815260200182805461375890614b4f565b80156137a55780601f1061377a576101008083540402835291602001916137a5565b820191906000526020600020905b81548152906001019060200180831161378857829003601f168201915b5050505050905090565b606060008214156137f7576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061390b565b600082905060005b6000821461382957808061381290614bb2565b915050600a8261382291906149d0565b91506137ff565b60008167ffffffffffffffff81111561384557613844614ce8565b5b6040519080825280601f01601f1916602001820160405280156138775781602001600182028036833780820191505090505b5090505b60008514613904576001826138909190614a5b565b9150600a8561389f9190614bfb565b60306138ab919061497a565b60f81b8183815181106138c1576138c0614cb9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856138fd91906149d0565b945061387b565b8093505050505b919050565b61391d8383836001613922565b505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561398f576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008414156139ca576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6139d760008683876133fd565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060008582019050838015613ba15750613ba08773ffffffffffffffffffffffffffffffffffffffff16612ad5565b5b15613c67575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4613c1660008884806001019550886135bd565b613c4c576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80821415613ba7578260005414613c6257600080fd5b613cd3565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480821415613c68575b816000819055505050613ce96000868387613403565b5050505050565b828054613cfc90614b4f565b90600052602060002090601f016020900481019282613d1e5760008555613d65565b82601f10613d3757805160ff1916838001178555613d65565b82800160010185558215613d65579182015b82811115613d64578251825591602001919060010190613d49565b5b509050613d729190613db9565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b80821115613dd2576000816000905550600101613dba565b5090565b6000613de9613de484614889565b614864565b90508083825260208201905082856020860282011115613e0c57613e0b614d1c565b5b60005b85811015613e3c5781613e228882613eca565b845260208401935060208301925050600181019050613e0f565b5050509392505050565b6000613e59613e54846148b5565b614864565b905082815260208101848484011115613e7557613e74614d21565b5b613e80848285614b0d565b509392505050565b6000613e9b613e96846148e6565b614864565b905082815260208101848484011115613eb757613eb6614d21565b5b613ec2848285614b0d565b509392505050565b600081359050613ed9816150cf565b92915050565b600082601f830112613ef457613ef3614d17565b5b8135613f04848260208601613dd6565b91505092915050565b600081359050613f1c816150e6565b92915050565b600081359050613f31816150fd565b92915050565b600081519050613f46816150fd565b92915050565b600082601f830112613f6157613f60614d17565b5b8135613f71848260208601613e46565b91505092915050565b600082601f830112613f8f57613f8e614d17565b5b8135613f9f848260208601613e88565b91505092915050565b600081359050613fb781615114565b92915050565b600060208284031215613fd357613fd2614d2b565b5b6000613fe184828501613eca565b91505092915050565b6000806040838503121561400157614000614d2b565b5b600061400f85828601613eca565b925050602061402085828601613eca565b9150509250929050565b60008060006060848603121561404357614042614d2b565b5b600061405186828701613eca565b935050602061406286828701613eca565b925050604061407386828701613fa8565b9150509250925092565b6000806000806080858703121561409757614096614d2b565b5b60006140a587828801613eca565b94505060206140b687828801613eca565b93505060406140c787828801613fa8565b925050606085013567ffffffffffffffff8111156140e8576140e7614d26565b5b6140f487828801613f4c565b91505092959194509250565b6000806040838503121561411757614116614d2b565b5b600061412585828601613eca565b925050602061413685828601613f0d565b9150509250929050565b6000806040838503121561415757614156614d2b565b5b600061416585828601613eca565b925050602061417685828601613fa8565b9150509250929050565b60006020828403121561419657614195614d2b565b5b600082013567ffffffffffffffff8111156141b4576141b3614d26565b5b6141c084828501613edf565b91505092915050565b6000602082840312156141df576141de614d2b565b5b60006141ed84828501613f0d565b91505092915050565b60006020828403121561420c5761420b614d2b565b5b600061421a84828501613f22565b91505092915050565b60006020828403121561423957614238614d2b565b5b600061424784828501613f37565b91505092915050565b60006020828403121561426657614265614d2b565b5b600082013567ffffffffffffffff81111561428457614283614d26565b5b61429084828501613f7a565b91505092915050565b6000602082840312156142af576142ae614d2b565b5b60006142bd84828501613fa8565b91505092915050565b6142cf81614a8f565b82525050565b6142de81614aa1565b82525050565b6142ed81614aad565b82525050565b60006142fe8261492c565b6143088185614942565b9350614318818560208601614b1c565b61432181614d30565b840191505092915050565b600061433782614937565b614341818561495e565b9350614351818560208601614b1c565b61435a81614d30565b840191505092915050565b600061437082614937565b61437a818561496f565b935061438a818560208601614b1c565b80840191505092915050565b600081546143a381614b4f565b6143ad818661496f565b945060018216600081146143c857600181146143d95761440c565b60ff1983168652818601935061440c565b6143e285614917565b60005b83811015614404578154818901526001820191506020810190506143e5565b838801955050505b50505092915050565b600061442260338361495e565b915061442d82614d41565b604082019050919050565b600061444560268361495e565b915061445082614d90565b604082019050919050565b6000614468603f8361495e565b915061447382614ddf565b604082019050919050565b600061448b60208361495e565b915061449682614e2e565b602082019050919050565b60006144ae601c8361495e565b91506144b982614e57565b602082019050919050565b60006144d1602f8361495e565b91506144dc82614e80565b604082019050919050565b60006144f460458361495e565b91506144ff82614ecf565b606082019050919050565b6000614517601b8361495e565b915061452282614f44565b602082019050919050565b600061453a600083614953565b915061454582614f6d565b600082019050919050565b600061455d606d8361495e565b915061456882614f70565b608082019050919050565b600061458060478361495e565b915061458b8261500b565b606082019050919050565b60006145a360238361495e565b91506145ae82615080565b604082019050919050565b6145c281614b03565b82525050565b60006145d48286614365565b91506145e08285614365565b91506145ec8284614396565b9150819050949350505050565b60006146048261452d565b9150819050919050565b600060208201905061462360008301846142c6565b92915050565b600060808201905061463e60008301876142c6565b61464b60208301866142c6565b61465860408301856145b9565b818103606083015261466a81846142f3565b905095945050505050565b600060208201905061468a60008301846142d5565b92915050565b600060208201905081810360008301526146aa818461432c565b905092915050565b600060208201905081810360008301526146cb81614415565b9050919050565b600060208201905081810360008301526146eb81614438565b9050919050565b6000602082019050818103600083015261470b8161445b565b9050919050565b6000602082019050818103600083015261472b8161447e565b9050919050565b6000602082019050818103600083015261474b816144a1565b9050919050565b6000602082019050818103600083015261476b816144c4565b9050919050565b6000602082019050818103600083015261478b816144e7565b9050919050565b600060208201905081810360008301526147ab8161450a565b9050919050565b600060208201905081810360008301526147cb81614550565b9050919050565b600060208201905081810360008301526147eb81614573565b9050919050565b6000602082019050818103600083015261480b81614596565b9050919050565b600060208201905061482760008301846145b9565b92915050565b600060608201905061484260008301866145b9565b61484f60208301856145b9565b61485c60408301846142e4565b949350505050565b600061486e61487f565b905061487a8282614b81565b919050565b6000604051905090565b600067ffffffffffffffff8211156148a4576148a3614ce8565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156148d0576148cf614ce8565b5b6148d982614d30565b9050602081019050919050565b600067ffffffffffffffff82111561490157614900614ce8565b5b61490a82614d30565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061498582614b03565b915061499083614b03565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156149c5576149c4614c2c565b5b828201905092915050565b60006149db82614b03565b91506149e683614b03565b9250826149f6576149f5614c5b565b5b828204905092915050565b6000614a0c82614b03565b9150614a1783614b03565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614a5057614a4f614c2c565b5b828202905092915050565b6000614a6682614b03565b9150614a7183614b03565b925082821015614a8457614a83614c2c565b5b828203905092915050565b6000614a9a82614ae3565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614b3a578082015181840152602081019050614b1f565b83811115614b49576000848401525b50505050565b60006002820490506001821680614b6757607f821691505b60208210811415614b7b57614b7a614c8a565b5b50919050565b614b8a82614d30565b810181811067ffffffffffffffff82111715614ba957614ba8614ce8565b5b80604052505050565b6000614bbd82614b03565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614bf057614bef614c2c565b5b600182019050919050565b6000614c0682614b03565b9150614c1183614b03565b925082614c2157614c20614c5b565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f496e636f727265637420616d6f756e7420656e74657265642c2074727920696e60008201527f6372656173696e67207468652076616c75652e00000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f57656c6c2c207768617427732074686520706f696e7420696e206d696e74696e60008201527f67206e6f7468696e673f203b2920506c656173652074727920616761696e2e00602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f596f75206d757374207061792074686520726f79616c74792066656500000000600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4d6178696d756d20737570706c7920726561636865642120596f75276c6c206860008201527f61766520746f206275792066726f6d20746865207365636f6e64617279206d6160208201527f726b657421000000000000000000000000000000000000000000000000000000604082015250565b7f4d696e74696e672069732063757272656e746c79207061757365640000000000600082015250565b50565b7f536f7272792c20796f75276c6c206861766520746f207761697420756e74696c60008201527f6c20746865206e6578742064726f702069732072656c656173656421204a6f6960208201527f6e207468652074656c656772616d20746f2066696e64206f7574202d20742e6d60408201527f652f76656c6f7265785f6e657400000000000000000000000000000000000000606082015250565b7f596f752063616e2774206d696e742074686174206d616e79204e46547320776960008201527f746820746869732077616c6c65742120436865636b20746865206c696d69742060208201527f706c656173652e00000000000000000000000000000000000000000000000000604082015250565b7f596f752063616e206f6e6c79206d696e74203520706572207472616e7361637460008201527f696f6e0000000000000000000000000000000000000000000000000000000000602082015250565b6150d881614a8f565b81146150e357600080fd5b50565b6150ef81614aa1565b81146150fa57600080fd5b50565b61510681614ab7565b811461511157600080fd5b50565b61511d81614b03565b811461512857600080fd5b5056fea2646970667358221220397d72f8483b148c18833d7c6c5bb4ec4b974a152904371982c9e4e6cf87f98264736f6c63430008070033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000001456656c6f726578204d656d6265727320436c75620000000000000000000000000000000000000000000000000000000000000000000000000000000000000007564558434c554200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f506c616365686f6c64657220756e74696c2064726f7020636f6d706c65746500
Deployed Bytecode
0x60806040526004361061027d5760003560e01c80637f6497831161014f578063b7386247116100c1578063d5abeb011161007a578063d5abeb011461093d578063da3ef23f14610968578063e7b99ec714610991578063e985e9c5146109bc578063f2fde38b146109f9578063f7e78e9d14610a225761027d565b8063b73862471461083c578063b88d4fde14610865578063b8997a9714610881578063b8d3197b146108ac578063c6682862146108d5578063c87b56dd146109005761027d565b8063a0712d6811610113578063a0712d6814610739578063a22cb46514610755578063a75ee1ff1461077e578063b228d925146107bd578063b443ba0c146107e8578063b4d95a93146108135761027d565b80637f649783146106545780638ab1d6811461067d5780638da5cb5b146106a657806395d89b41146106d1578063989763ef146106fc5761027d565b8063359803cd116101f35780635c975abb116101ac5780635c975abb146105445780636352211e1461056f5780636a2dae07146105ac5780636c0360eb146105d557806370a0823114610600578063715018a61461063d5761027d565b8063359803cd1461047a5780633ccfd60b146104a357806342842e0e146104ad57806344a0d68a146104c9578063453b1442146104f257806355f804b31461051b5761027d565b806313faede61161024557806313faede61461037957806315e3902f146103a457806318160ddd146103cd57806323b872dd146103f85780633036a39f1461042157806330e0789e1461045e5761027d565b806301ffc9a71461028257806306fdde03146102bf578063081812fc146102ea578063095ea7b3146103275780630f2d6ddf14610350575b600080fd5b34801561028e57600080fd5b506102a960048036038101906102a491906141f6565b610a5f565b6040516102b69190614675565b60405180910390f35b3480156102cb57600080fd5b506102d4610b41565b6040516102e19190614690565b60405180910390f35b3480156102f657600080fd5b50610311600480360381019061030c9190614299565b610bd3565b60405161031e919061460e565b60405180910390f35b34801561033357600080fd5b5061034e60048036038101906103499190614140565b610c4f565b005b34801561035c57600080fd5b5061037760048036038101906103729190614299565b610d5a565b005b34801561038557600080fd5b5061038e610de0565b60405161039b9190614812565b60405180910390f35b3480156103b057600080fd5b506103cb60048036038101906103c69190614299565b610de6565b005b3480156103d957600080fd5b506103e2610e6c565b6040516103ef9190614812565b60405180910390f35b34801561040457600080fd5b5061041f600480360381019061041a919061402a565b610e83565b005b34801561042d57600080fd5b5061044860048036038101906104439190613fbd565b610e93565b6040516104559190614675565b60405180910390f35b6104786004803603810190610473919061402a565b610eb3565b005b34801561048657600080fd5b506104a1600480360381019061049c91906141c9565b61148b565b005b6104ab611524565b005b6104c760048036038101906104c2919061402a565b611619565b005b3480156104d557600080fd5b506104f060048036038101906104eb9190614299565b611715565b005b3480156104fe57600080fd5b5061051960048036038101906105149190613fbd565b61179b565b005b34801561052757600080fd5b50610542600480360381019061053d9190614250565b611872565b005b34801561055057600080fd5b50610559611908565b6040516105669190614675565b60405180910390f35b34801561057b57600080fd5b5061059660048036038101906105919190614299565b61191b565b6040516105a3919061460e565b60405180910390f35b3480156105b857600080fd5b506105d360048036038101906105ce9190614299565b611931565b005b3480156105e157600080fd5b506105ea6119b7565b6040516105f79190614690565b60405180910390f35b34801561060c57600080fd5b5061062760048036038101906106229190613fbd565b611a45565b6040516106349190614812565b60405180910390f35b34801561064957600080fd5b50610652611b15565b005b34801561066057600080fd5b5061067b60048036038101906106769190614180565b611b9d565b005b34801561068957600080fd5b506106a4600480360381019061069f9190613fbd565b611cae565b005b3480156106b257600080fd5b506106bb611d85565b6040516106c8919061460e565b60405180910390f35b3480156106dd57600080fd5b506106e6611daf565b6040516106f39190614690565b60405180910390f35b34801561070857600080fd5b50610723600480360381019061071e9190613fbd565b611e41565b6040516107309190614675565b60405180910390f35b610753600480360381019061074e9190614299565b611e61565b005b34801561076157600080fd5b5061077c60048036038101906107779190614100565b61222b565b005b34801561078a57600080fd5b506107a560048036038101906107a09190614299565b6123a3565b6040516107b49392919061482d565b60405180910390f35b3480156107c957600080fd5b506107d26123dd565b6040516107df9190614812565b60405180910390f35b3480156107f457600080fd5b506107fd6123e3565b60405161080a9190614812565b60405180910390f35b34801561081f57600080fd5b5061083a60048036038101906108359190613fbd565b6123e9565b005b34801561084857600080fd5b50610863600480360381019061085e9190613fbd565b6124c0565b005b61087f600480360381019061087a919061407d565b612597565b005b34801561088d57600080fd5b50610896612638565b6040516108a39190614812565b60405180910390f35b3480156108b857600080fd5b506108d360048036038101906108ce9190614180565b61263e565b005b3480156108e157600080fd5b506108ea61274f565b6040516108f79190614690565b60405180910390f35b34801561090c57600080fd5b5061092760048036038101906109229190614299565b6127dd565b6040516109349190614690565b60405180910390f35b34801561094957600080fd5b50610952612887565b60405161095f9190614812565b60405180910390f35b34801561097457600080fd5b5061098f600480360381019061098a9190614250565b61288d565b005b34801561099d57600080fd5b506109a6612923565b6040516109b39190614812565b60405180910390f35b3480156109c857600080fd5b506109e360048036038101906109de9190613fea565b612929565b6040516109f09190614675565b60405180910390f35b348015610a0557600080fd5b50610a206004803603810190610a1b9190613fbd565b6129bd565b005b348015610a2e57600080fd5b50610a496004803603810190610a449190613fbd565b612ab5565b604051610a569190614675565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b2a57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b3a5750610b3982612af8565b5b9050919050565b606060028054610b5090614b4f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7c90614b4f565b8015610bc95780601f10610b9e57610100808354040283529160200191610bc9565b820191906000526020600020905b815481529060010190602001808311610bac57829003601f168201915b5050505050905090565b6000610bde82612b62565b610c14576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610c5a8261191b565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cc2576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ce1612bb0565b73ffffffffffffffffffffffffffffffffffffffff1614158015610d135750610d1181610d0c612bb0565b612929565b155b15610d4a576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d55838383612bb8565b505050565b610d62612bb0565b73ffffffffffffffffffffffffffffffffffffffff16610d80611d85565b73ffffffffffffffffffffffffffffffffffffffff1614610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd90614712565b60405180910390fd5b80600f8190555050565b600b5481565b610dee612bb0565b73ffffffffffffffffffffffffffffffffffffffff16610e0c611d85565b73ffffffffffffffffffffffffffffffffffffffff1614610e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5990614712565b60405180910390fd5b80600c8190555050565b6000610e76612c6a565b6001546000540303905090565b610e8e838383612c6f565b505050565b60136020528060005260406000206000915054906101000a900460ff1681565b60011515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610f9f57601154341015610f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4790614732565b60405180910390fd5b610f58611d85565b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610f9d573d6000803e3d6000fd5b505b6000610faa8261316e565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16610fd1612bb0565b73ffffffffffffffffffffffffffffffffffffffff16148061100457506110038260000151610ffe612bb0565b612929565b5b806110495750611012612bb0565b73ffffffffffffffffffffffffffffffffffffffff1661103184610bd3565b73ffffffffffffffffffffffffffffffffffffffff16145b905080611082576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146110eb576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611152576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61115f85858560016133fd565b61116a600084610c4f565b6001601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561141b5760005481101561141a5782600001516004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46114848585856001613403565b5050505050565b611493612bb0565b73ffffffffffffffffffffffffffffffffffffffff166114b1611d85565b73ffffffffffffffffffffffffffffffffffffffff1614611507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fe90614712565b60405180910390fd5b80601060006101000a81548160ff02191690831515021790555050565b61152c612bb0565b73ffffffffffffffffffffffffffffffffffffffff1661154a611d85565b73ffffffffffffffffffffffffffffffffffffffff16146115a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159790614712565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516115c6906145f9565b60006040518083038185875af1925050503d8060008114611603576040519150601f19603f3d011682016040523d82523d6000602084013e611608565b606091505b505090508061161657600080fd5b50565b60011515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611705576011543410156116b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ad90614732565b60405180910390fd5b6116be611d85565b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611703573d6000803e3d6000fd5b505b611710838383610eb3565b505050565b61171d612bb0565b73ffffffffffffffffffffffffffffffffffffffff1661173b611d85565b73ffffffffffffffffffffffffffffffffffffffff1614611791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178890614712565b60405180910390fd5b80600b8190555050565b6117a3612bb0565b73ffffffffffffffffffffffffffffffffffffffff166117c1611d85565b73ffffffffffffffffffffffffffffffffffffffff1614611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90614712565b60405180910390fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61187a612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611898611d85565b73ffffffffffffffffffffffffffffffffffffffff16146118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e590614712565b60405180910390fd5b8060099080519060200190611904929190613cf0565b5050565b601060009054906101000a900460ff1681565b60006119268261316e565b600001519050919050565b611939612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611957611d85565b73ffffffffffffffffffffffffffffffffffffffff16146119ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a490614712565b60405180910390fd5b80600e8190555050565b600980546119c490614b4f565b80601f01602080910402602001604051908101604052809291908181526020018280546119f090614b4f565b8015611a3d5780601f10611a1257610100808354040283529160200191611a3d565b820191906000526020600020905b815481529060010190602001808311611a2057829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611aad576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b611b1d612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611b3b611d85565b73ffffffffffffffffffffffffffffffffffffffff1614611b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8890614712565b60405180910390fd5b611b9b6000613409565b565b611ba5612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611bc3611d85565b73ffffffffffffffffffffffffffffffffffffffff1614611c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1090614712565b60405180910390fd5b60005b8151811015611caa57600160146000848481518110611c3e57611c3d614cb9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611ca290614bb2565b915050611c1c565b5050565b611cb6612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611cd4611d85565b73ffffffffffffffffffffffffffffffffffffffff1614611d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2190614712565b60405180910390fd5b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054611dbe90614b4f565b80601f0160208091040260200160405190810160405280929190818152602001828054611dea90614b4f565b8015611e375780601f10611e0c57610100808354040283529160200191611e37565b820191906000526020600020905b815481529060010190602001808311611e1a57829003601f168201915b5050505050905090565b60126020528060005260406000206000915054906101000a900460ff1681565b6000611e6b610e6c565b905060008211611eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea7906146f2565b60405180910390fd5b600d548282611ebf919061497a565b1115611f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef790614772565b60405180910390fd5b600f548282611f0f919061497a565b1115611f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f47906147b2565b60405180910390fd5b611f58611d85565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121cf57600e54821115611fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc6906147f2565b60405180910390fd5b601060009054906101000a900460ff161561201f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201690614792565b60405180910390fd5b600e548261202c336134cf565b612036919061497a565b1115612077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206e906147d2565b60405180910390fd5b60011515601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146121ce5760011515601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461217c5781600b546121359190614a01565b341015612177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216e906146b2565b60405180910390fd5b6121cd565b81600c5461218a9190614a01565b3410156121cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c3906146b2565b60405180910390fd5b5b5b5b6121d9338361359f565b6121e1611d85565b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015612226573d6000803e3d6000fd5b505050565b612233612bb0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612298576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600760006122a5612bb0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16612352612bb0565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516123979190614675565b60405180910390a35050565b601681815481106123b357600080fd5b90600052602060002090600302016000915090508060000154908060010154908060020154905083565b600e5481565b600f5481565b6123f1612bb0565b73ffffffffffffffffffffffffffffffffffffffff1661240f611d85565b73ffffffffffffffffffffffffffffffffffffffff1614612465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245c90614712565b60405180910390fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6124c8612bb0565b73ffffffffffffffffffffffffffffffffffffffff166124e6611d85565b73ffffffffffffffffffffffffffffffffffffffff161461253c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253390614712565b60405180910390fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b678ac7230489e800003410156125ac57600080fd5b678ac7230489e800003410612632576125c6848484610eb3565b6125e58373ffffffffffffffffffffffffffffffffffffffff16612ad5565b80156125fa57506125f8848484846135bd565b155b15612631576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b60115481565b612646612bb0565b73ffffffffffffffffffffffffffffffffffffffff16612664611d85565b73ffffffffffffffffffffffffffffffffffffffff16146126ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b190614712565b60405180910390fd5b60005b815181101561274b576001601260008484815181106126df576126de614cb9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061274390614bb2565b9150506126bd565b5050565b600a805461275c90614b4f565b80601f016020809104026020016040519081016040528092919081815260200182805461278890614b4f565b80156127d55780601f106127aa576101008083540402835291602001916127d5565b820191906000526020600020905b8154815290600101906020018083116127b857829003601f168201915b505050505081565b60606127e882612b62565b612827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281e90614752565b60405180910390fd5b600061283161371d565b90506000815111612851576040518060200160405280600081525061287f565b8061285b846137af565b600a60405160200161286f939291906145c8565b6040516020818303038152906040525b915050919050565b600d5481565b612895612bb0565b73ffffffffffffffffffffffffffffffffffffffff166128b3611d85565b73ffffffffffffffffffffffffffffffffffffffff1614612909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290090614712565b60405180910390fd5b80600a908051906020019061291f929190613cf0565b5050565b600c5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6129c5612bb0565b73ffffffffffffffffffffffffffffffffffffffff166129e3611d85565b73ffffffffffffffffffffffffffffffffffffffff1614612a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3090614712565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612aa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa0906146d2565b60405180910390fd5b612ab281613409565b50565b60146020528060005260406000206000915054906101000a900460ff1681565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600081612b6d612c6a565b11158015612b7c575060005482105b8015612ba9575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600090565b6000341015612c7d57600080fd5b6000612c888261316e565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16612caf612bb0565b73ffffffffffffffffffffffffffffffffffffffff161480612ce25750612ce18260000151612cdc612bb0565b612929565b5b80612d275750612cf0612bb0565b73ffffffffffffffffffffffffffffffffffffffff16612d0f84610bd3565b73ffffffffffffffffffffffffffffffffffffffff16145b905080612d60576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612dc9576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612e30576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612e3d85858560016133fd565b612e4d6000848460000151612bb8565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156130fe576000548110156130fd5782600001516004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46131678585856001613403565b5050505050565b613176613d76565b600082905080613184612c6a565b11158015613193575060005481105b156133c6576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff161515151581525050905080604001516133c457600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146132a85780925050506133f8565b5b6001156133c357818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146133be5780925050506133f8565b6132a9565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b50505050565b50505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613537576040517f35ebb31900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b6135b9828260405180602001604052806000815250613910565b5050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a026135e3612bb0565b8786866040518563ffffffff1660e01b81526004016136059493929190614629565b602060405180830381600087803b15801561361f57600080fd5b505af192505050801561365057506040513d601f19601f8201168201806040525081019061364d9190614223565b60015b6136ca573d8060008114613680576040519150601f19603f3d011682016040523d82523d6000602084013e613685565b606091505b506000815114156136c2576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60606009805461372c90614b4f565b80601f016020809104026020016040519081016040528092919081815260200182805461375890614b4f565b80156137a55780601f1061377a576101008083540402835291602001916137a5565b820191906000526020600020905b81548152906001019060200180831161378857829003601f168201915b5050505050905090565b606060008214156137f7576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061390b565b600082905060005b6000821461382957808061381290614bb2565b915050600a8261382291906149d0565b91506137ff565b60008167ffffffffffffffff81111561384557613844614ce8565b5b6040519080825280601f01601f1916602001820160405280156138775781602001600182028036833780820191505090505b5090505b60008514613904576001826138909190614a5b565b9150600a8561389f9190614bfb565b60306138ab919061497a565b60f81b8183815181106138c1576138c0614cb9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856138fd91906149d0565b945061387b565b8093505050505b919050565b61391d8383836001613922565b505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561398f576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008414156139ca576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6139d760008683876133fd565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060008582019050838015613ba15750613ba08773ffffffffffffffffffffffffffffffffffffffff16612ad5565b5b15613c67575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4613c1660008884806001019550886135bd565b613c4c576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80821415613ba7578260005414613c6257600080fd5b613cd3565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480821415613c68575b816000819055505050613ce96000868387613403565b5050505050565b828054613cfc90614b4f565b90600052602060002090601f016020900481019282613d1e5760008555613d65565b82601f10613d3757805160ff1916838001178555613d65565b82800160010185558215613d65579182015b82811115613d64578251825591602001919060010190613d49565b5b509050613d729190613db9565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b80821115613dd2576000816000905550600101613dba565b5090565b6000613de9613de484614889565b614864565b90508083825260208201905082856020860282011115613e0c57613e0b614d1c565b5b60005b85811015613e3c5781613e228882613eca565b845260208401935060208301925050600181019050613e0f565b5050509392505050565b6000613e59613e54846148b5565b614864565b905082815260208101848484011115613e7557613e74614d21565b5b613e80848285614b0d565b509392505050565b6000613e9b613e96846148e6565b614864565b905082815260208101848484011115613eb757613eb6614d21565b5b613ec2848285614b0d565b509392505050565b600081359050613ed9816150cf565b92915050565b600082601f830112613ef457613ef3614d17565b5b8135613f04848260208601613dd6565b91505092915050565b600081359050613f1c816150e6565b92915050565b600081359050613f31816150fd565b92915050565b600081519050613f46816150fd565b92915050565b600082601f830112613f6157613f60614d17565b5b8135613f71848260208601613e46565b91505092915050565b600082601f830112613f8f57613f8e614d17565b5b8135613f9f848260208601613e88565b91505092915050565b600081359050613fb781615114565b92915050565b600060208284031215613fd357613fd2614d2b565b5b6000613fe184828501613eca565b91505092915050565b6000806040838503121561400157614000614d2b565b5b600061400f85828601613eca565b925050602061402085828601613eca565b9150509250929050565b60008060006060848603121561404357614042614d2b565b5b600061405186828701613eca565b935050602061406286828701613eca565b925050604061407386828701613fa8565b9150509250925092565b6000806000806080858703121561409757614096614d2b565b5b60006140a587828801613eca565b94505060206140b687828801613eca565b93505060406140c787828801613fa8565b925050606085013567ffffffffffffffff8111156140e8576140e7614d26565b5b6140f487828801613f4c565b91505092959194509250565b6000806040838503121561411757614116614d2b565b5b600061412585828601613eca565b925050602061413685828601613f0d565b9150509250929050565b6000806040838503121561415757614156614d2b565b5b600061416585828601613eca565b925050602061417685828601613fa8565b9150509250929050565b60006020828403121561419657614195614d2b565b5b600082013567ffffffffffffffff8111156141b4576141b3614d26565b5b6141c084828501613edf565b91505092915050565b6000602082840312156141df576141de614d2b565b5b60006141ed84828501613f0d565b91505092915050565b60006020828403121561420c5761420b614d2b565b5b600061421a84828501613f22565b91505092915050565b60006020828403121561423957614238614d2b565b5b600061424784828501613f37565b91505092915050565b60006020828403121561426657614265614d2b565b5b600082013567ffffffffffffffff81111561428457614283614d26565b5b61429084828501613f7a565b91505092915050565b6000602082840312156142af576142ae614d2b565b5b60006142bd84828501613fa8565b91505092915050565b6142cf81614a8f565b82525050565b6142de81614aa1565b82525050565b6142ed81614aad565b82525050565b60006142fe8261492c565b6143088185614942565b9350614318818560208601614b1c565b61432181614d30565b840191505092915050565b600061433782614937565b614341818561495e565b9350614351818560208601614b1c565b61435a81614d30565b840191505092915050565b600061437082614937565b61437a818561496f565b935061438a818560208601614b1c565b80840191505092915050565b600081546143a381614b4f565b6143ad818661496f565b945060018216600081146143c857600181146143d95761440c565b60ff1983168652818601935061440c565b6143e285614917565b60005b83811015614404578154818901526001820191506020810190506143e5565b838801955050505b50505092915050565b600061442260338361495e565b915061442d82614d41565b604082019050919050565b600061444560268361495e565b915061445082614d90565b604082019050919050565b6000614468603f8361495e565b915061447382614ddf565b604082019050919050565b600061448b60208361495e565b915061449682614e2e565b602082019050919050565b60006144ae601c8361495e565b91506144b982614e57565b602082019050919050565b60006144d1602f8361495e565b91506144dc82614e80565b604082019050919050565b60006144f460458361495e565b91506144ff82614ecf565b606082019050919050565b6000614517601b8361495e565b915061452282614f44565b602082019050919050565b600061453a600083614953565b915061454582614f6d565b600082019050919050565b600061455d606d8361495e565b915061456882614f70565b608082019050919050565b600061458060478361495e565b915061458b8261500b565b606082019050919050565b60006145a360238361495e565b91506145ae82615080565b604082019050919050565b6145c281614b03565b82525050565b60006145d48286614365565b91506145e08285614365565b91506145ec8284614396565b9150819050949350505050565b60006146048261452d565b9150819050919050565b600060208201905061462360008301846142c6565b92915050565b600060808201905061463e60008301876142c6565b61464b60208301866142c6565b61465860408301856145b9565b818103606083015261466a81846142f3565b905095945050505050565b600060208201905061468a60008301846142d5565b92915050565b600060208201905081810360008301526146aa818461432c565b905092915050565b600060208201905081810360008301526146cb81614415565b9050919050565b600060208201905081810360008301526146eb81614438565b9050919050565b6000602082019050818103600083015261470b8161445b565b9050919050565b6000602082019050818103600083015261472b8161447e565b9050919050565b6000602082019050818103600083015261474b816144a1565b9050919050565b6000602082019050818103600083015261476b816144c4565b9050919050565b6000602082019050818103600083015261478b816144e7565b9050919050565b600060208201905081810360008301526147ab8161450a565b9050919050565b600060208201905081810360008301526147cb81614550565b9050919050565b600060208201905081810360008301526147eb81614573565b9050919050565b6000602082019050818103600083015261480b81614596565b9050919050565b600060208201905061482760008301846145b9565b92915050565b600060608201905061484260008301866145b9565b61484f60208301856145b9565b61485c60408301846142e4565b949350505050565b600061486e61487f565b905061487a8282614b81565b919050565b6000604051905090565b600067ffffffffffffffff8211156148a4576148a3614ce8565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156148d0576148cf614ce8565b5b6148d982614d30565b9050602081019050919050565b600067ffffffffffffffff82111561490157614900614ce8565b5b61490a82614d30565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061498582614b03565b915061499083614b03565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156149c5576149c4614c2c565b5b828201905092915050565b60006149db82614b03565b91506149e683614b03565b9250826149f6576149f5614c5b565b5b828204905092915050565b6000614a0c82614b03565b9150614a1783614b03565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614a5057614a4f614c2c565b5b828202905092915050565b6000614a6682614b03565b9150614a7183614b03565b925082821015614a8457614a83614c2c565b5b828203905092915050565b6000614a9a82614ae3565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614b3a578082015181840152602081019050614b1f565b83811115614b49576000848401525b50505050565b60006002820490506001821680614b6757607f821691505b60208210811415614b7b57614b7a614c8a565b5b50919050565b614b8a82614d30565b810181811067ffffffffffffffff82111715614ba957614ba8614ce8565b5b80604052505050565b6000614bbd82614b03565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614bf057614bef614c2c565b5b600182019050919050565b6000614c0682614b03565b9150614c1183614b03565b925082614c2157614c20614c5b565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f496e636f727265637420616d6f756e7420656e74657265642c2074727920696e60008201527f6372656173696e67207468652076616c75652e00000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f57656c6c2c207768617427732074686520706f696e7420696e206d696e74696e60008201527f67206e6f7468696e673f203b2920506c656173652074727920616761696e2e00602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f596f75206d757374207061792074686520726f79616c74792066656500000000600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4d6178696d756d20737570706c7920726561636865642120596f75276c6c206860008201527f61766520746f206275792066726f6d20746865207365636f6e64617279206d6160208201527f726b657421000000000000000000000000000000000000000000000000000000604082015250565b7f4d696e74696e672069732063757272656e746c79207061757365640000000000600082015250565b50565b7f536f7272792c20796f75276c6c206861766520746f207761697420756e74696c60008201527f6c20746865206e6578742064726f702069732072656c656173656421204a6f6960208201527f6e207468652074656c656772616d20746f2066696e64206f7574202d20742e6d60408201527f652f76656c6f7265785f6e657400000000000000000000000000000000000000606082015250565b7f596f752063616e2774206d696e742074686174206d616e79204e46547320776960008201527f746820746869732077616c6c65742120436865636b20746865206c696d69742060208201527f706c656173652e00000000000000000000000000000000000000000000000000604082015250565b7f596f752063616e206f6e6c79206d696e74203520706572207472616e7361637460008201527f696f6e0000000000000000000000000000000000000000000000000000000000602082015250565b6150d881614a8f565b81146150e357600080fd5b50565b6150ef81614aa1565b81146150fa57600080fd5b50565b61510681614ab7565b811461511157600080fd5b50565b61511d81614b03565b811461512857600080fd5b5056fea2646970667358221220397d72f8483b148c18833d7c6c5bb4ec4b974a152904371982c9e4e6cf87f98264736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000001456656c6f726578204d656d6265727320436c75620000000000000000000000000000000000000000000000000000000000000000000000000000000000000007564558434c554200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f506c616365686f6c64657220756e74696c2064726f7020636f6d706c65746500
-----Decoded View---------------
Arg [0] : _name (string): Velorex Members Club
Arg [1] : _symbol (string): VEXCLUB
Arg [2] : _initBaseURI (string): Placeholder until drop complete
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000014
Arg [4] : 56656c6f726578204d656d6265727320436c7562000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [6] : 564558434c554200000000000000000000000000000000000000000000000000
Arg [7] : 000000000000000000000000000000000000000000000000000000000000001f
Arg [8] : 506c616365686f6c64657220756e74696c2064726f7020636f6d706c65746500
Deployed Bytecode Sourcemap
27099:7344:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16294:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18584:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19611:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19232:371;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33024:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27362:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32785:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15964:163;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20282:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27708:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30423:1613;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33362:82;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34250:188;;;:::i;:::-;;30044:375;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32699:82;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33448:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33130:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27572:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18452:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32890:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27290:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16607:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7214:103;;;;;;;;;;;;;:::i;:::-;;33654:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33843:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6991:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18692:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27654:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28697:1339;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19823:279;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27874:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;27493:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27535:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34141:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33550:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20660:466;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27604:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33954:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27318:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32040:546;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27455:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33234:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27403:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20110:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7325:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27758:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16294:305;16396:4;16448:25;16433:40;;;:11;:40;;;;:105;;;;16505:33;16490:48;;;:11;:48;;;;16433:105;:158;;;;16555:36;16579:11;16555:23;:36::i;:::-;16433:158;16413:178;;16294:305;;;:::o;18584:100::-;18638:13;18671:5;18664:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18584:100;:::o;19611:204::-;19679:7;19704:16;19712:7;19704;:16::i;:::-;19699:64;;19729:34;;;;;;;;;;;;;;19699:64;19783:15;:24;19799:7;19783:24;;;;;;;;;;;;;;;;;;;;;19776:31;;19611:204;;;:::o;19232:371::-;19305:13;19321:24;19337:7;19321:15;:24::i;:::-;19305:40;;19366:5;19360:11;;:2;:11;;;19356:48;;;19380:24;;;;;;;;;;;;;;19356:48;19437:5;19421:21;;:12;:10;:12::i;:::-;:21;;;;:63;;;;;19447:37;19464:5;19471:12;:10;:12::i;:::-;19447:16;:37::i;:::-;19446:38;19421:63;19417:138;;;19508:35;;;;;;;;;;;;;;19417:138;19567:28;19576:2;19580:7;19589:5;19567:8;:28::i;:::-;19294:309;19232:371;;:::o;33024:102::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33109:13:::1;33097:9;:25;;;;33024:102:::0;:::o;27362:34::-;;;;:::o;32785:101::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32874:8:::1;32858:13;:24;;;;32785:101:::0;:::o;15964:163::-;16008:7;16093:15;:13;:15::i;:::-;16078:12;;16062:13;;:28;:46;16055:53;;15964:163;:::o;20282:180::-;20418:36;20436:4;20442:2;20446:7;20418:17;:36::i;:::-;20282:180;;;:::o;27708:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;30423:1613::-;30596:4;30565:35;;:15;:27;30581:10;30565:27;;;;;;;;;;;;;;;;;;;;;;;;;:35;;;30561:175;;30634:10;;30621:9;:23;;30613:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;30696:7;:5;:7::i;:::-;30688:25;;:36;30714:9;30688:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30561:175;30746:35;30784:20;30796:7;30784:11;:20::i;:::-;30746:58;;30817:22;30859:13;:18;;;30843:34;;:12;:10;:12::i;:::-;:34;;;:101;;;;30894:50;30911:13;:18;;;30931:12;:10;:12::i;:::-;30894:16;:50::i;:::-;30843:101;:154;;;;30985:12;:10;:12::i;:::-;30961:36;;:20;30973:7;30961:11;:20::i;:::-;:36;;;30843:154;30817:181;;31016:17;31011:66;;31042:35;;;;;;;;;;;;;;31011:66;31114:4;31092:26;;:13;:18;;;:26;;;31088:67;;31127:28;;;;;;;;;;;;;;31088:67;31184:1;31170:16;;:2;:16;;;31166:52;;;31195:23;;;;;;;;;;;;;;31166:52;31231:43;31253:4;31259:2;31263:7;31272:1;31231:21;:43::i;:::-;31287:28;31303:1;31307:7;31287;:28::i;:::-;31383:1;31353:12;:18;31366:4;31353:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31427:1;31399:12;:16;31412:2;31399:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31473:2;31445:11;:20;31457:7;31445:20;;;;;;;;;;;:25;;;:30;;;;;;;;;;;;;;;;;;31535:15;31490:11;:20;31502:7;31490:20;;;;;;;;;;;:35;;;:61;;;;;;;;;;;;;;;;;;31568:19;31600:1;31590:7;:11;31568:33;;31661:1;31620:43;;:11;:24;31632:11;31620:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;31616:304;;;31704:13;;31690:11;:27;31686:219;;;31774:13;:18;;;31742:11;:24;31754:11;31742:24;;;;;;;;;;;:29;;;:50;;;;;;;;;;;;;;;;;;31857:13;:28;;;31815:11;:24;31827:11;31815:24;;;;;;;;;;;:39;;;:70;;;;;;;;;;;;;;;;;;31686:219;31616:304;31328:603;31967:7;31963:2;31948:27;;31957:4;31948:27;;;;;;;;;;;;31986:42;32007:4;32013:2;32017:7;32026:1;31986:20;:42::i;:::-;30550:1486;;30423:1613;;;:::o;33362:82::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33434:6:::1;33425;;:15;;;;;;;;;;;;;;;;;;33362:82:::0;:::o;34250:188::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34307:12:::1;34333:10;34325:24;;34371:21;34325:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34306:101;;;34426:7;34418:16;;;::::0;::::1;;34295:143;34250:188::o:0;30044:375::-;30225:4;30194:35;;:15;:27;30210:10;30194:27;;;;;;;;;;;;;;;;;;;;;;;;;:35;;;30190:183;;30267:10;;30254:9;:23;;30246:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;30333:7;:5;:7::i;:::-;30325:25;;:36;30351:9;30325:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30190:183;30383:28;30393:4;30399:2;30403:7;30383:9;:28::i;:::-;30044:375;;;:::o;32699:82::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32769:8:::1;32762:4;:15;;;;32699:82:::0;:::o;33448:98::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33538:4:::1;33517:11;:18;33529:5;33517:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;33448:98:::0;:::o;33130:100::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33215:11:::1;33205:7;:21;;;;;;;;;;;;:::i;:::-;;33130:100:::0;:::o;27572:25::-;;;;;;;;;;;;;:::o;18452:124::-;18516:7;18543:20;18555:7;18543:11;:20::i;:::-;:25;;;18536:32;;18452:124;;;:::o;32890:130::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32996:20:::1;32977:16;:39;;;;32890:130:::0;:::o;27290:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16607:206::-;16671:7;16712:1;16695:19;;:5;:19;;;16691:60;;;16723:28;;;;;;;;;;;;;;16691:60;16777:12;:19;16790:5;16777:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;16769:36;;16762:43;;16607:206;;;:::o;7214:103::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7279:30:::1;7306:1;7279:18;:30::i;:::-;7214:103::o:0;33654:185::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33736:9:::1;33731:105;33755:6;:13;33751:1;:17;33731:105;;;33820:4;33790:16;:27;33807:6;33814:1;33807:9;;;;;;;;:::i;:::-;;;;;;;;33790:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;33770:3;;;;;:::i;:::-;;;;33731:105;;;;33654:185:::0;:::o;33843:107::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33941:5:::1;33915:16;:23;33932:5;33915:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;33843:107:::0;:::o;6991:87::-;7037:7;7064:6;;;;;;;;;;;7057:13;;6991:87;:::o;18692:104::-;18748:13;18781:7;18774:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18692:104;:::o;27654:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;28697:1339::-;28761:14;28778:13;:11;:13::i;:::-;28761:30;;28826:1;28810:13;:17;28802:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;28940:9;;28923:13;28914:6;:22;;;;:::i;:::-;:35;;28906:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;29068:9;;29051:13;29042:6;:22;;;;:::i;:::-;:35;;29034:157;;;;;;;;;;;;:::i;:::-;;;;;;;;;29218:7;:5;:7::i;:::-;29204:21;;:10;:21;;;29200:739;;29259:16;;29242:13;:33;;29234:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;29332:6;;;;;;;;;;;29331:7;29323:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;29436:16;;29418:13;29390:25;29404:10;29390:13;:25::i;:::-;:41;;;;:::i;:::-;29389:63;;29381:147;;;;;;;;;;;;:::i;:::-;;;;;;;;;29568:4;29541:31;;:11;:23;29553:10;29541:23;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;29537:395;;29617:4;29585:36;;:16;:28;29602:10;29585:28;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;29581:344;;29684:13;29677:4;;:20;;;;:::i;:::-;29664:9;:33;;29656:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;29581:344;;;29844:13;29828;;:29;;;;:::i;:::-;29815:9;:42;;29807:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;29581:344;29537:395;29200:739;29949:36;29959:10;29971:13;29949:9;:36::i;:::-;30004:7;:5;:7::i;:::-;29996:25;;:36;30022:9;29996:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28751:1285;28697:1339;:::o;19823:279::-;19926:12;:10;:12::i;:::-;19914:24;;:8;:24;;;19910:54;;;19947:17;;;;;;;;;;;;;;19910:54;20022:8;19977:18;:32;19996:12;:10;:12::i;:::-;19977:32;;;;;;;;;;;;;;;:42;20010:8;19977:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;20075:8;20046:48;;20061:12;:10;:12::i;:::-;20046:48;;;20085:8;20046:48;;;;;;:::i;:::-;;;;;;;;19823:279;;:::o;27874:36::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;27493:35::-;;;;:::o;27535:30::-;;;;:::o;34141:105::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34237:5:::1;34212:15;:22;34228:5;34212:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;34141:105:::0;:::o;33550:100::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33641:5:::1;33620:11;:18;33632:5;33620:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;33550:100:::0;:::o;20660:466::-;20856:8;20843:9;:21;;20835:30;;;;;;20893:8;20880:9;:21;20876:243;;20913:28;20923:4;20929:2;20933:7;20913:9;:28::i;:::-;20956:15;:2;:13;;;:15::i;:::-;:76;;;;;20976:56;21007:4;21013:2;21017:7;21026:5;20976:30;:56::i;:::-;20975:57;20956:76;20952:156;;;21056:40;;;;;;;;;;;;;;20952:156;20876:243;20660:466;;;;:::o;27604:37::-;;;;:::o;33954:183::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34035:9:::1;34030:104;34054:6;:13;34050:1;:17;34030:104;;;34118:4;34089:15;:26;34105:6;34112:1;34105:9;;;;;;;;:::i;:::-;;;;;;;;34089:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;34069:3;;;;;:::i;:::-;;;;34030:104;;;;33954:183:::0;:::o;27318:37::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;32040:546::-;32110:13;32144:16;32152:7;32144;:16::i;:::-;32136:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;32223:28;32254:10;:8;:10::i;:::-;32223:41;;32326:1;32301:14;32295:28;:32;:287;;;;;;;;;;;;;;;;;32419:14;32460:18;:7;:16;:18::i;:::-;32505:13;32376:165;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;32295:287;32275:307;;;32040:546;;;:::o;27455:31::-;;;;:::o;33234:124::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33337:17:::1;33321:13;:33;;;;;;;;;;;;:::i;:::-;;33234:124:::0;:::o;27403:45::-;;;;:::o;20110:164::-;20207:4;20231:18;:25;20250:5;20231:25;;;;;;;;;;;;;;;:35;20257:8;20231:35;;;;;;;;;;;;;;;;;;;;;;;;;20224:42;;20110:164;;;;:::o;7325:201::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7434:1:::1;7414:22;;:8;:22;;;;7406:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7490:28;7509:8;7490:18;:28::i;:::-;7325:201:::0;:::o;27758:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;7838:115::-;7898:4;7944:1;7922:7;:19;;;:23;7915:30;;7838:115;;;:::o;11982:157::-;12067:4;12106:25;12091:40;;;:11;:40;;;;12084:47;;11982:157;;;:::o;21134:187::-;21191:4;21234:7;21215:15;:13;:15::i;:::-;:26;;:53;;;;;21255:13;;21245:7;:23;21215:53;:98;;;;;21286:11;:20;21298:7;21286:20;;;;;;;;;;;:27;;;;;;;;;;;;21285:28;21215:98;21208:105;;21134:187;;;:::o;6455:98::-;6508:7;6535:10;6528:17;;6455:98;:::o;25784:196::-;25926:2;25899:15;:24;25915:7;25899:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;25964:7;25960:2;25944:28;;25953:5;25944:28;;;;;;;;;;;;25784:196;;;:::o;15864:92::-;15920:7;15864:92;:::o;23112:1474::-;23262:1;23249:9;:14;;23241:23;;;;;;23275:35;23313:20;23325:7;23313:11;:20::i;:::-;23275:58;;23346:22;23388:13;:18;;;23372:34;;:12;:10;:12::i;:::-;:34;;;:101;;;;23423:50;23440:13;:18;;;23460:12;:10;:12::i;:::-;23423:16;:50::i;:::-;23372:101;:154;;;;23514:12;:10;:12::i;:::-;23490:36;;:20;23502:7;23490:11;:20::i;:::-;:36;;;23372:154;23346:181;;23545:17;23540:66;;23571:35;;;;;;;;;;;;;;23540:66;23643:4;23621:26;;:13;:18;;;:26;;;23617:67;;23656:28;;;;;;;;;;;;;;23617:67;23713:1;23699:16;;:2;:16;;;23695:52;;;23724:23;;;;;;;;;;;;;;23695:52;23760:43;23782:4;23788:2;23792:7;23801:1;23760:21;:43::i;:::-;23816:49;23833:1;23837:7;23846:13;:18;;;23816:8;:49::i;:::-;23933:1;23903:12;:18;23916:4;23903:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23977:1;23949:12;:16;23962:2;23949:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24023:2;23995:11;:20;24007:7;23995:20;;;;;;;;;;;:25;;;:30;;;;;;;;;;;;;;;;;;24085:15;24040:11;:20;24052:7;24040:20;;;;;;;;;;;:35;;;:61;;;;;;;;;;;;;;;;;;24118:19;24150:1;24140:7;:11;24118:33;;24211:1;24170:43;;:11;:24;24182:11;24170:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;24166:304;;;24254:13;;24240:11;:27;24236:219;;;24324:13;:18;;;24292:11;:24;24304:11;24292:24;;;;;;;;;;;:29;;;:50;;;;;;;;;;;;;;;;;;24407:13;:28;;;24365:11;:24;24377:11;24365:24;;;;;;;;;;;:39;;;:70;;;;;;;;;;;;;;;;;;24236:219;24166:304;23878:603;24517:7;24513:2;24498:27;;24507:4;24498:27;;;;;;;;;;;;24536:42;24557:4;24563:2;24567:7;24576:1;24536:20;:42::i;:::-;23230:1356;;23112:1474;;;:::o;17614:830::-;17675:21;;:::i;:::-;17709:12;17724:7;17709:22;;17792:4;17773:15;:13;:15::i;:::-;:23;;:47;;;;;17807:13;;17800:4;:20;17773:47;17769:608;;;17841:31;17875:11;:17;17887:4;17875:17;;;;;;;;;;;17841:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17916:9;:16;;;17911:451;;17987:1;17961:28;;:9;:14;;;:28;;;17957:101;;18025:9;18018:16;;;;;;17957:101;18082:261;18089:4;18082:261;;;18122:6;;;;;;;;18167:11;:17;18179:4;18167:17;;;;;;;;;;;18155:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18241:1;18215:28;;:9;:14;;;:28;;;18211:109;;18283:9;18276:16;;;;;;18211:109;18082:261;;;17911:451;17822:555;17769:608;18405:31;;;;;;;;;;;;;;17614:830;;;;:::o;26663:159::-;;;;;:::o;26830:158::-;;;;;:::o;7534:191::-;7608:16;7627:6;;;;;;;;;;;7608:25;;7653:8;7644:6;;:17;;;;;;;;;;;;;;;;;;7708:8;7677:40;;7698:8;7677:40;;;;;;;;;;;;7597:128;7534:191;:::o;16821:207::-;16882:7;16923:1;16906:19;;:5;:19;;;16902:59;;;16934:27;;;;;;;;;;;;;;16902:59;16987:12;:19;17000:5;16987:19;;;;;;;;;;;;;;;:32;;;;;;;;;;;;16979:41;;16972:48;;16821:207;;;:::o;21329:104::-;21398:27;21408:2;21412:8;21398:27;;;;;;;;;;;;:9;:27::i;:::-;21329:104;;:::o;25988:667::-;26151:4;26188:2;26172:36;;;26209:12;:10;:12::i;:::-;26223:4;26229:7;26238:5;26172:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;26168:480;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26423:1;26406:6;:13;:18;26402:235;;;26452:40;;;;;;;;;;;;;;26402:235;26595:6;26589:13;26580:6;26576:2;26572:15;26565:38;26168:480;26301:45;;;26291:55;;;:6;:55;;;;26284:62;;;25988:667;;;;;;:::o;28589:104::-;28649:13;28682:7;28675:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28589:104;:::o;4993:534::-;5049:13;5090:1;5081:5;:10;5077:53;;;5108:10;;;;;;;;;;;;;;;;;;;;;5077:53;5140:12;5155:5;5140:20;;5171:14;5196:78;5211:1;5203:4;:9;5196:78;;5229:8;;;;;:::i;:::-;;;;5260:2;5252:10;;;;;:::i;:::-;;;5196:78;;;5284:19;5316:6;5306:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5284:39;;5334:154;5350:1;5341:5;:10;5334:154;;5378:1;5368:11;;;;;:::i;:::-;;;5445:2;5437:5;:10;;;;:::i;:::-;5424:2;:24;;;;:::i;:::-;5411:39;;5394:6;5401;5394:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;5474:2;5465:11;;;;;:::i;:::-;;;5334:154;;;5512:6;5498:21;;;;;4993:534;;;;:::o;21441:163::-;21564:32;21570:2;21574:8;21584:5;21591:4;21564:5;:32::i;:::-;21441:163;;;:::o;21612:1492::-;21751:20;21774:13;;21751:36;;21816:1;21802:16;;:2;:16;;;21798:48;;;21827:19;;;;;;;;;;;;;;21798:48;21873:1;21861:8;:13;21857:44;;;21883:18;;;;;;;;;;;;;;21857:44;21914:61;21944:1;21948:2;21952:12;21966:8;21914:21;:61::i;:::-;22046:8;22011:12;:16;22024:2;22011:16;;;;;;;;;;;;;;;:24;;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22110:8;22070:12;:16;22083:2;22070:16;;;;;;;;;;;;;;;:29;;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22169:2;22136:11;:25;22148:12;22136:25;;;;;;;;;;;:30;;;:35;;;;;;;;;;;;;;;;;;22236:15;22186:11;:25;22198:12;22186:25;;;;;;;;;;;:40;;;:66;;;;;;;;;;;;;;;;;;22269:20;22292:12;22269:35;;22319:11;22348:8;22333:12;:23;22319:37;;22377:4;:23;;;;;22385:15;:2;:13;;;:15::i;:::-;22377:23;22373:599;;;22421:314;22477:12;22473:2;22452:38;;22469:1;22452:38;;;;;;;;;;;;22518:69;22557:1;22561:2;22565:14;;;;;;22581:5;22518:30;:69::i;:::-;22513:174;;22623:40;;;;;;;;;;;;;;22513:174;22730:3;22714:12;:19;;22421:314;;22774:12;22757:13;;:29;22753:43;;22788:8;;;22753:43;22373:599;;;22837:120;22893:14;;;;;;22889:2;22868:40;;22885:1;22868:40;;;;;;;;;;;;22952:3;22936:12;:19;;22837:120;;22373:599;23002:12;22986:13;:28;;;;21986:1040;;23036:60;23065:1;23069:2;23073:12;23087:8;23036:20;:60::i;:::-;21740:1364;21612:1492;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:410::-;829:5;854:65;870:48;911:6;870:48;:::i;:::-;854:65;:::i;:::-;845:74;;942:6;935:5;928:21;980:4;973:5;969:16;1018:3;1009:6;1004:3;1000:16;997:25;994:112;;;1025:79;;:::i;:::-;994:112;1115:41;1149:6;1144:3;1139;1115:41;:::i;:::-;835:327;752:410;;;;;:::o;1168:412::-;1246:5;1271:66;1287:49;1329:6;1287:49;:::i;:::-;1271:66;:::i;:::-;1262:75;;1360:6;1353:5;1346:21;1398:4;1391:5;1387:16;1436:3;1427:6;1422:3;1418:16;1415:25;1412:112;;;1443:79;;:::i;:::-;1412:112;1533:41;1567:6;1562:3;1557;1533:41;:::i;:::-;1252:328;1168:412;;;;;:::o;1586:139::-;1632:5;1670:6;1657:20;1648:29;;1686:33;1713:5;1686:33;:::i;:::-;1586:139;;;;:::o;1748:370::-;1819:5;1868:3;1861:4;1853:6;1849:17;1845:27;1835:122;;1876:79;;:::i;:::-;1835:122;1993:6;1980:20;2018:94;2108:3;2100:6;2093:4;2085:6;2081:17;2018:94;:::i;:::-;2009:103;;1825:293;1748:370;;;;:::o;2124:133::-;2167:5;2205:6;2192:20;2183:29;;2221:30;2245:5;2221:30;:::i;:::-;2124:133;;;;:::o;2263:137::-;2308:5;2346:6;2333:20;2324:29;;2362:32;2388:5;2362:32;:::i;:::-;2263:137;;;;:::o;2406:141::-;2462:5;2493:6;2487:13;2478:22;;2509:32;2535:5;2509:32;:::i;:::-;2406:141;;;;:::o;2566:338::-;2621:5;2670:3;2663:4;2655:6;2651:17;2647:27;2637:122;;2678:79;;:::i;:::-;2637:122;2795:6;2782:20;2820:78;2894:3;2886:6;2879:4;2871:6;2867:17;2820:78;:::i;:::-;2811:87;;2627:277;2566:338;;;;:::o;2924:340::-;2980:5;3029:3;3022:4;3014:6;3010:17;3006:27;2996:122;;3037:79;;:::i;:::-;2996:122;3154:6;3141:20;3179:79;3254:3;3246:6;3239:4;3231:6;3227:17;3179:79;:::i;:::-;3170:88;;2986:278;2924:340;;;;:::o;3270:139::-;3316:5;3354:6;3341:20;3332:29;;3370:33;3397:5;3370:33;:::i;:::-;3270:139;;;;:::o;3415:329::-;3474:6;3523:2;3511:9;3502:7;3498:23;3494:32;3491:119;;;3529:79;;:::i;:::-;3491:119;3649:1;3674:53;3719:7;3710:6;3699:9;3695:22;3674:53;:::i;:::-;3664:63;;3620:117;3415:329;;;;:::o;3750:474::-;3818:6;3826;3875:2;3863:9;3854:7;3850:23;3846:32;3843:119;;;3881:79;;:::i;:::-;3843:119;4001:1;4026:53;4071:7;4062:6;4051:9;4047:22;4026:53;:::i;:::-;4016:63;;3972:117;4128:2;4154:53;4199:7;4190:6;4179:9;4175:22;4154:53;:::i;:::-;4144:63;;4099:118;3750:474;;;;;:::o;4230:619::-;4307:6;4315;4323;4372:2;4360:9;4351:7;4347:23;4343:32;4340:119;;;4378:79;;:::i;:::-;4340:119;4498:1;4523:53;4568:7;4559:6;4548:9;4544:22;4523:53;:::i;:::-;4513:63;;4469:117;4625:2;4651:53;4696:7;4687:6;4676:9;4672:22;4651:53;:::i;:::-;4641:63;;4596:118;4753:2;4779:53;4824:7;4815:6;4804:9;4800:22;4779:53;:::i;:::-;4769:63;;4724:118;4230:619;;;;;:::o;4855:943::-;4950:6;4958;4966;4974;5023:3;5011:9;5002:7;4998:23;4994:33;4991:120;;;5030:79;;:::i;:::-;4991:120;5150:1;5175:53;5220:7;5211:6;5200:9;5196:22;5175:53;:::i;:::-;5165:63;;5121:117;5277:2;5303:53;5348:7;5339:6;5328:9;5324:22;5303:53;:::i;:::-;5293:63;;5248:118;5405:2;5431:53;5476:7;5467:6;5456:9;5452:22;5431:53;:::i;:::-;5421:63;;5376:118;5561:2;5550:9;5546:18;5533:32;5592:18;5584:6;5581:30;5578:117;;;5614:79;;:::i;:::-;5578:117;5719:62;5773:7;5764:6;5753:9;5749:22;5719:62;:::i;:::-;5709:72;;5504:287;4855:943;;;;;;;:::o;5804:468::-;5869:6;5877;5926:2;5914:9;5905:7;5901:23;5897:32;5894:119;;;5932:79;;:::i;:::-;5894:119;6052:1;6077:53;6122:7;6113:6;6102:9;6098:22;6077:53;:::i;:::-;6067:63;;6023:117;6179:2;6205:50;6247:7;6238:6;6227:9;6223:22;6205:50;:::i;:::-;6195:60;;6150:115;5804:468;;;;;:::o;6278:474::-;6346:6;6354;6403:2;6391:9;6382:7;6378:23;6374:32;6371:119;;;6409:79;;:::i;:::-;6371:119;6529:1;6554:53;6599:7;6590:6;6579:9;6575:22;6554:53;:::i;:::-;6544:63;;6500:117;6656:2;6682:53;6727:7;6718:6;6707:9;6703:22;6682:53;:::i;:::-;6672:63;;6627:118;6278:474;;;;;:::o;6758:539::-;6842:6;6891:2;6879:9;6870:7;6866:23;6862:32;6859:119;;;6897:79;;:::i;:::-;6859:119;7045:1;7034:9;7030:17;7017:31;7075:18;7067:6;7064:30;7061:117;;;7097:79;;:::i;:::-;7061:117;7202:78;7272:7;7263:6;7252:9;7248:22;7202:78;:::i;:::-;7192:88;;6988:302;6758:539;;;;:::o;7303:323::-;7359:6;7408:2;7396:9;7387:7;7383:23;7379:32;7376:119;;;7414:79;;:::i;:::-;7376:119;7534:1;7559:50;7601:7;7592:6;7581:9;7577:22;7559:50;:::i;:::-;7549:60;;7505:114;7303:323;;;;:::o;7632:327::-;7690:6;7739:2;7727:9;7718:7;7714:23;7710:32;7707:119;;;7745:79;;:::i;:::-;7707:119;7865:1;7890:52;7934:7;7925:6;7914:9;7910:22;7890:52;:::i;:::-;7880:62;;7836:116;7632:327;;;;:::o;7965:349::-;8034:6;8083:2;8071:9;8062:7;8058:23;8054:32;8051:119;;;8089:79;;:::i;:::-;8051:119;8209:1;8234:63;8289:7;8280:6;8269:9;8265:22;8234:63;:::i;:::-;8224:73;;8180:127;7965:349;;;;:::o;8320:509::-;8389:6;8438:2;8426:9;8417:7;8413:23;8409:32;8406:119;;;8444:79;;:::i;:::-;8406:119;8592:1;8581:9;8577:17;8564:31;8622:18;8614:6;8611:30;8608:117;;;8644:79;;:::i;:::-;8608:117;8749:63;8804:7;8795:6;8784:9;8780:22;8749:63;:::i;:::-;8739:73;;8535:287;8320:509;;;;:::o;8835:329::-;8894:6;8943:2;8931:9;8922:7;8918:23;8914:32;8911:119;;;8949:79;;:::i;:::-;8911:119;9069:1;9094:53;9139:7;9130:6;9119:9;9115:22;9094:53;:::i;:::-;9084:63;;9040:117;8835:329;;;;:::o;9170:118::-;9257:24;9275:5;9257:24;:::i;:::-;9252:3;9245:37;9170:118;;:::o;9294:109::-;9375:21;9390:5;9375:21;:::i;:::-;9370:3;9363:34;9294:109;;:::o;9409:118::-;9496:24;9514:5;9496:24;:::i;:::-;9491:3;9484:37;9409:118;;:::o;9533:360::-;9619:3;9647:38;9679:5;9647:38;:::i;:::-;9701:70;9764:6;9759:3;9701:70;:::i;:::-;9694:77;;9780:52;9825:6;9820:3;9813:4;9806:5;9802:16;9780:52;:::i;:::-;9857:29;9879:6;9857:29;:::i;:::-;9852:3;9848:39;9841:46;;9623:270;9533:360;;;;:::o;9899:364::-;9987:3;10015:39;10048:5;10015:39;:::i;:::-;10070:71;10134:6;10129:3;10070:71;:::i;:::-;10063:78;;10150:52;10195:6;10190:3;10183:4;10176:5;10172:16;10150:52;:::i;:::-;10227:29;10249:6;10227:29;:::i;:::-;10222:3;10218:39;10211:46;;9991:272;9899:364;;;;:::o;10269:377::-;10375:3;10403:39;10436:5;10403:39;:::i;:::-;10458:89;10540:6;10535:3;10458:89;:::i;:::-;10451:96;;10556:52;10601:6;10596:3;10589:4;10582:5;10578:16;10556:52;:::i;:::-;10633:6;10628:3;10624:16;10617:23;;10379:267;10269:377;;;;:::o;10676:845::-;10779:3;10816:5;10810:12;10845:36;10871:9;10845:36;:::i;:::-;10897:89;10979:6;10974:3;10897:89;:::i;:::-;10890:96;;11017:1;11006:9;11002:17;11033:1;11028:137;;;;11179:1;11174:341;;;;10995:520;;11028:137;11112:4;11108:9;11097;11093:25;11088:3;11081:38;11148:6;11143:3;11139:16;11132:23;;11028:137;;11174:341;11241:38;11273:5;11241:38;:::i;:::-;11301:1;11315:154;11329:6;11326:1;11323:13;11315:154;;;11403:7;11397:14;11393:1;11388:3;11384:11;11377:35;11453:1;11444:7;11440:15;11429:26;;11351:4;11348:1;11344:12;11339:17;;11315:154;;;11498:6;11493:3;11489:16;11482:23;;11181:334;;10995:520;;10783:738;;10676:845;;;;:::o;11527:366::-;11669:3;11690:67;11754:2;11749:3;11690:67;:::i;:::-;11683:74;;11766:93;11855:3;11766:93;:::i;:::-;11884:2;11879:3;11875:12;11868:19;;11527:366;;;:::o;11899:::-;12041:3;12062:67;12126:2;12121:3;12062:67;:::i;:::-;12055:74;;12138:93;12227:3;12138:93;:::i;:::-;12256:2;12251:3;12247:12;12240:19;;11899:366;;;:::o;12271:::-;12413:3;12434:67;12498:2;12493:3;12434:67;:::i;:::-;12427:74;;12510:93;12599:3;12510:93;:::i;:::-;12628:2;12623:3;12619:12;12612:19;;12271:366;;;:::o;12643:::-;12785:3;12806:67;12870:2;12865:3;12806:67;:::i;:::-;12799:74;;12882:93;12971:3;12882:93;:::i;:::-;13000:2;12995:3;12991:12;12984:19;;12643:366;;;:::o;13015:::-;13157:3;13178:67;13242:2;13237:3;13178:67;:::i;:::-;13171:74;;13254:93;13343:3;13254:93;:::i;:::-;13372:2;13367:3;13363:12;13356:19;;13015:366;;;:::o;13387:::-;13529:3;13550:67;13614:2;13609:3;13550:67;:::i;:::-;13543:74;;13626:93;13715:3;13626:93;:::i;:::-;13744:2;13739:3;13735:12;13728:19;;13387:366;;;:::o;13759:::-;13901:3;13922:67;13986:2;13981:3;13922:67;:::i;:::-;13915:74;;13998:93;14087:3;13998:93;:::i;:::-;14116:2;14111:3;14107:12;14100:19;;13759:366;;;:::o;14131:::-;14273:3;14294:67;14358:2;14353:3;14294:67;:::i;:::-;14287:74;;14370:93;14459:3;14370:93;:::i;:::-;14488:2;14483:3;14479:12;14472:19;;14131:366;;;:::o;14503:398::-;14662:3;14683:83;14764:1;14759:3;14683:83;:::i;:::-;14676:90;;14775:93;14864:3;14775:93;:::i;:::-;14893:1;14888:3;14884:11;14877:18;;14503:398;;;:::o;14907:368::-;15049:3;15070:68;15134:3;15129;15070:68;:::i;:::-;15063:75;;15147:93;15236:3;15147:93;:::i;:::-;15265:3;15260;15256:13;15249:20;;14907:368;;;:::o;15281:366::-;15423:3;15444:67;15508:2;15503:3;15444:67;:::i;:::-;15437:74;;15520:93;15609:3;15520:93;:::i;:::-;15638:2;15633:3;15629:12;15622:19;;15281:366;;;:::o;15653:::-;15795:3;15816:67;15880:2;15875:3;15816:67;:::i;:::-;15809:74;;15892:93;15981:3;15892:93;:::i;:::-;16010:2;16005:3;16001:12;15994:19;;15653:366;;;:::o;16025:118::-;16112:24;16130:5;16112:24;:::i;:::-;16107:3;16100:37;16025:118;;:::o;16149:589::-;16374:3;16396:95;16487:3;16478:6;16396:95;:::i;:::-;16389:102;;16508:95;16599:3;16590:6;16508:95;:::i;:::-;16501:102;;16620:92;16708:3;16699:6;16620:92;:::i;:::-;16613:99;;16729:3;16722:10;;16149:589;;;;;;:::o;16744:379::-;16928:3;16950:147;17093:3;16950:147;:::i;:::-;16943:154;;17114:3;17107:10;;16744:379;;;:::o;17129:222::-;17222:4;17260:2;17249:9;17245:18;17237:26;;17273:71;17341:1;17330:9;17326:17;17317:6;17273:71;:::i;:::-;17129:222;;;;:::o;17357:640::-;17552:4;17590:3;17579:9;17575:19;17567:27;;17604:71;17672:1;17661:9;17657:17;17648:6;17604:71;:::i;:::-;17685:72;17753:2;17742:9;17738:18;17729:6;17685:72;:::i;:::-;17767;17835:2;17824:9;17820:18;17811:6;17767:72;:::i;:::-;17886:9;17880:4;17876:20;17871:2;17860:9;17856:18;17849:48;17914:76;17985:4;17976:6;17914:76;:::i;:::-;17906:84;;17357:640;;;;;;;:::o;18003:210::-;18090:4;18128:2;18117:9;18113:18;18105:26;;18141:65;18203:1;18192:9;18188:17;18179:6;18141:65;:::i;:::-;18003:210;;;;:::o;18219:313::-;18332:4;18370:2;18359:9;18355:18;18347:26;;18419:9;18413:4;18409:20;18405:1;18394:9;18390:17;18383:47;18447:78;18520:4;18511:6;18447:78;:::i;:::-;18439:86;;18219:313;;;;:::o;18538:419::-;18704:4;18742:2;18731:9;18727:18;18719:26;;18791:9;18785:4;18781:20;18777:1;18766:9;18762:17;18755:47;18819:131;18945:4;18819:131;:::i;:::-;18811:139;;18538:419;;;:::o;18963:::-;19129:4;19167:2;19156:9;19152:18;19144:26;;19216:9;19210:4;19206:20;19202:1;19191:9;19187:17;19180:47;19244:131;19370:4;19244:131;:::i;:::-;19236:139;;18963:419;;;:::o;19388:::-;19554:4;19592:2;19581:9;19577:18;19569:26;;19641:9;19635:4;19631:20;19627:1;19616:9;19612:17;19605:47;19669:131;19795:4;19669:131;:::i;:::-;19661:139;;19388:419;;;:::o;19813:::-;19979:4;20017:2;20006:9;20002:18;19994:26;;20066:9;20060:4;20056:20;20052:1;20041:9;20037:17;20030:47;20094:131;20220:4;20094:131;:::i;:::-;20086:139;;19813:419;;;:::o;20238:::-;20404:4;20442:2;20431:9;20427:18;20419:26;;20491:9;20485:4;20481:20;20477:1;20466:9;20462:17;20455:47;20519:131;20645:4;20519:131;:::i;:::-;20511:139;;20238:419;;;:::o;20663:::-;20829:4;20867:2;20856:9;20852:18;20844:26;;20916:9;20910:4;20906:20;20902:1;20891:9;20887:17;20880:47;20944:131;21070:4;20944:131;:::i;:::-;20936:139;;20663:419;;;:::o;21088:::-;21254:4;21292:2;21281:9;21277:18;21269:26;;21341:9;21335:4;21331:20;21327:1;21316:9;21312:17;21305:47;21369:131;21495:4;21369:131;:::i;:::-;21361:139;;21088:419;;;:::o;21513:::-;21679:4;21717:2;21706:9;21702:18;21694:26;;21766:9;21760:4;21756:20;21752:1;21741:9;21737:17;21730:47;21794:131;21920:4;21794:131;:::i;:::-;21786:139;;21513:419;;;:::o;21938:::-;22104:4;22142:2;22131:9;22127:18;22119:26;;22191:9;22185:4;22181:20;22177:1;22166:9;22162:17;22155:47;22219:131;22345:4;22219:131;:::i;:::-;22211:139;;21938:419;;;:::o;22363:::-;22529:4;22567:2;22556:9;22552:18;22544:26;;22616:9;22610:4;22606:20;22602:1;22591:9;22587:17;22580:47;22644:131;22770:4;22644:131;:::i;:::-;22636:139;;22363:419;;;:::o;22788:::-;22954:4;22992:2;22981:9;22977:18;22969:26;;23041:9;23035:4;23031:20;23027:1;23016:9;23012:17;23005:47;23069:131;23195:4;23069:131;:::i;:::-;23061:139;;22788:419;;;:::o;23213:222::-;23306:4;23344:2;23333:9;23329:18;23321:26;;23357:71;23425:1;23414:9;23410:17;23401:6;23357:71;:::i;:::-;23213:222;;;;:::o;23441:442::-;23590:4;23628:2;23617:9;23613:18;23605:26;;23641:71;23709:1;23698:9;23694:17;23685:6;23641:71;:::i;:::-;23722:72;23790:2;23779:9;23775:18;23766:6;23722:72;:::i;:::-;23804;23872:2;23861:9;23857:18;23848:6;23804:72;:::i;:::-;23441:442;;;;;;:::o;23889:129::-;23923:6;23950:20;;:::i;:::-;23940:30;;23979:33;24007:4;23999:6;23979:33;:::i;:::-;23889:129;;;:::o;24024:75::-;24057:6;24090:2;24084:9;24074:19;;24024:75;:::o;24105:311::-;24182:4;24272:18;24264:6;24261:30;24258:56;;;24294:18;;:::i;:::-;24258:56;24344:4;24336:6;24332:17;24324:25;;24404:4;24398;24394:15;24386:23;;24105:311;;;:::o;24422:307::-;24483:4;24573:18;24565:6;24562:30;24559:56;;;24595:18;;:::i;:::-;24559:56;24633:29;24655:6;24633:29;:::i;:::-;24625:37;;24717:4;24711;24707:15;24699:23;;24422:307;;;:::o;24735:308::-;24797:4;24887:18;24879:6;24876:30;24873:56;;;24909:18;;:::i;:::-;24873:56;24947:29;24969:6;24947:29;:::i;:::-;24939:37;;25031:4;25025;25021:15;25013:23;;24735:308;;;:::o;25049:141::-;25098:4;25121:3;25113:11;;25144:3;25141:1;25134:14;25178:4;25175:1;25165:18;25157:26;;25049:141;;;:::o;25196:98::-;25247:6;25281:5;25275:12;25265:22;;25196:98;;;:::o;25300:99::-;25352:6;25386:5;25380:12;25370:22;;25300:99;;;:::o;25405:168::-;25488:11;25522:6;25517:3;25510:19;25562:4;25557:3;25553:14;25538:29;;25405:168;;;;:::o;25579:147::-;25680:11;25717:3;25702:18;;25579:147;;;;:::o;25732:169::-;25816:11;25850:6;25845:3;25838:19;25890:4;25885:3;25881:14;25866:29;;25732:169;;;;:::o;25907:148::-;26009:11;26046:3;26031:18;;25907:148;;;;:::o;26061:305::-;26101:3;26120:20;26138:1;26120:20;:::i;:::-;26115:25;;26154:20;26172:1;26154:20;:::i;:::-;26149:25;;26308:1;26240:66;26236:74;26233:1;26230:81;26227:107;;;26314:18;;:::i;:::-;26227:107;26358:1;26355;26351:9;26344:16;;26061:305;;;;:::o;26372:185::-;26412:1;26429:20;26447:1;26429:20;:::i;:::-;26424:25;;26463:20;26481:1;26463:20;:::i;:::-;26458:25;;26502:1;26492:35;;26507:18;;:::i;:::-;26492:35;26549:1;26546;26542:9;26537:14;;26372:185;;;;:::o;26563:348::-;26603:7;26626:20;26644:1;26626:20;:::i;:::-;26621:25;;26660:20;26678:1;26660:20;:::i;:::-;26655:25;;26848:1;26780:66;26776:74;26773:1;26770:81;26765:1;26758:9;26751:17;26747:105;26744:131;;;26855:18;;:::i;:::-;26744:131;26903:1;26900;26896:9;26885:20;;26563:348;;;;:::o;26917:191::-;26957:4;26977:20;26995:1;26977:20;:::i;:::-;26972:25;;27011:20;27029:1;27011:20;:::i;:::-;27006:25;;27050:1;27047;27044:8;27041:34;;;27055:18;;:::i;:::-;27041:34;27100:1;27097;27093:9;27085:17;;26917:191;;;;:::o;27114:96::-;27151:7;27180:24;27198:5;27180:24;:::i;:::-;27169:35;;27114:96;;;:::o;27216:90::-;27250:7;27293:5;27286:13;27279:21;27268:32;;27216:90;;;:::o;27312:77::-;27349:7;27378:5;27367:16;;27312:77;;;:::o;27395:149::-;27431:7;27471:66;27464:5;27460:78;27449:89;;27395:149;;;:::o;27550:126::-;27587:7;27627:42;27620:5;27616:54;27605:65;;27550:126;;;:::o;27682:77::-;27719:7;27748:5;27737:16;;27682:77;;;:::o;27765:154::-;27849:6;27844:3;27839;27826:30;27911:1;27902:6;27897:3;27893:16;27886:27;27765:154;;;:::o;27925:307::-;27993:1;28003:113;28017:6;28014:1;28011:13;28003:113;;;28102:1;28097:3;28093:11;28087:18;28083:1;28078:3;28074:11;28067:39;28039:2;28036:1;28032:10;28027:15;;28003:113;;;28134:6;28131:1;28128:13;28125:101;;;28214:1;28205:6;28200:3;28196:16;28189:27;28125:101;27974:258;27925:307;;;:::o;28238:320::-;28282:6;28319:1;28313:4;28309:12;28299:22;;28366:1;28360:4;28356:12;28387:18;28377:81;;28443:4;28435:6;28431:17;28421:27;;28377:81;28505:2;28497:6;28494:14;28474:18;28471:38;28468:84;;;28524:18;;:::i;:::-;28468:84;28289:269;28238:320;;;:::o;28564:281::-;28647:27;28669:4;28647:27;:::i;:::-;28639:6;28635:40;28777:6;28765:10;28762:22;28741:18;28729:10;28726:34;28723:62;28720:88;;;28788:18;;:::i;:::-;28720:88;28828:10;28824:2;28817:22;28607:238;28564:281;;:::o;28851:233::-;28890:3;28913:24;28931:5;28913:24;:::i;:::-;28904:33;;28959:66;28952:5;28949:77;28946:103;;;29029:18;;:::i;:::-;28946:103;29076:1;29069:5;29065:13;29058:20;;28851:233;;;:::o;29090:176::-;29122:1;29139:20;29157:1;29139:20;:::i;:::-;29134:25;;29173:20;29191:1;29173:20;:::i;:::-;29168:25;;29212:1;29202:35;;29217:18;;:::i;:::-;29202:35;29258:1;29255;29251:9;29246:14;;29090:176;;;;:::o;29272:180::-;29320:77;29317:1;29310:88;29417:4;29414:1;29407:15;29441:4;29438:1;29431:15;29458:180;29506:77;29503:1;29496:88;29603:4;29600:1;29593:15;29627:4;29624:1;29617:15;29644:180;29692:77;29689:1;29682:88;29789:4;29786:1;29779:15;29813:4;29810:1;29803:15;29830:180;29878:77;29875:1;29868:88;29975:4;29972:1;29965:15;29999:4;29996:1;29989:15;30016:180;30064:77;30061:1;30054:88;30161:4;30158:1;30151:15;30185:4;30182:1;30175:15;30202:117;30311:1;30308;30301:12;30325:117;30434:1;30431;30424:12;30448:117;30557:1;30554;30547:12;30571:117;30680:1;30677;30670:12;30694:117;30803:1;30800;30793:12;30817:102;30858:6;30909:2;30905:7;30900:2;30893:5;30889:14;30885:28;30875:38;;30817:102;;;:::o;30925:238::-;31065:34;31061:1;31053:6;31049:14;31042:58;31134:21;31129:2;31121:6;31117:15;31110:46;30925:238;:::o;31169:225::-;31309:34;31305:1;31297:6;31293:14;31286:58;31378:8;31373:2;31365:6;31361:15;31354:33;31169:225;:::o;31400:242::-;31540:34;31536:1;31528:6;31524:14;31517:58;31605:33;31600:2;31592:6;31588:15;31581:58;31400:242;:::o;31644:174::-;31780:34;31776:1;31768:6;31764:14;31757:58;31644:174;:::o;31820:170::-;31956:30;31952:1;31944:6;31940:14;31933:54;31820:170;:::o;31992:222::-;32128:34;32124:1;32116:6;32112:14;32105:58;32193:17;32188:2;32180:6;32176:15;32169:42;31992:222;:::o;32216:277::-;32352:34;32348:1;32340:6;32336:14;32329:58;32417:34;32412:2;32404:6;32400:15;32393:59;32482:7;32477:2;32469:6;32465:15;32458:32;32216:277;:::o;32495:169::-;32631:29;32627:1;32619:6;32615:14;32608:53;32495:169;:::o;32666:110::-;;:::o;32778:350::-;32914:34;32910:1;32902:6;32898:14;32891:58;32979:34;32974:2;32966:6;32962:15;32955:59;33044:34;33039:2;33031:6;33027:15;33020:59;33109:15;33104:2;33096:6;33092:15;33085:40;32778:350;:::o;33130:279::-;33266:34;33262:1;33254:6;33250:14;33243:58;33331:34;33326:2;33318:6;33314:15;33307:59;33396:9;33391:2;33383:6;33379:15;33372:34;33130:279;:::o;33411:210::-;33547:34;33543:1;33535:6;33531:14;33524:58;33612:5;33607:2;33599:6;33595:15;33588:30;33411:210;:::o;33623:114::-;33692:24;33710:5;33692:24;:::i;:::-;33685:5;33682:35;33672:63;;33731:1;33728;33721:12;33672:63;33623:114;:::o;33739:108::-;33805:21;33820:5;33805:21;:::i;:::-;33798:5;33795:32;33785:60;;33841:1;33838;33831:12;33785:60;33739:108;:::o;33849:112::-;33917:23;33934:5;33917:23;:::i;:::-;33910:5;33907:34;33897:62;;33955:1;33952;33945:12;33897:62;33849:112;:::o;33963:114::-;34032:24;34050:5;34032:24;:::i;:::-;34025:5;34022:35;34012:63;;34071:1;34068;34061:12;34012:63;33963:114;:::o
Swarm Source
ipfs://397d72f8483b148c18833d7c6c5bb4ec4b974a152904371982c9e4e6cf87f982
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.