Token NFT CFC
Overview CRC721
Total Supply:
5,554 CFC
Holders:
378 addresses
Contract:
Balance
11 CFC
[ Download CSV Export ]
[ Download CSV Export ]
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
NftCFC
Compiler Version
v0.8.14+commit.80d49f37
Contract Source Code (Solidity)
/** *Submitted for verification at cronoscan.com on 2022-08-14 */ // SPDX-License-Identifier: MIT //Contract by DR#2010 //Custom for Cronos FC // File: contracts/ERC721A/IERC721A.sol // ERC721A Contracts v4.1.0 // Creator: Chiru Labs pragma solidity ^0.8.4; /** * @dev Interface of an ERC721A compliant contract. */ interface IERC721A { /** * The caller must own the token or be an approved operator. */ error ApprovalCallerNotOwnerNorApproved(); /** * The token does not exist. */ error ApprovalQueryForNonexistentToken(); /** * The caller cannot approve to their own address. */ error ApproveToCaller(); /** * Cannot query the balance for the zero address. */ error BalanceQueryForZeroAddress(); /** * Cannot mint to the zero address. */ error MintToZeroAddress(); /** * The quantity of tokens minted must be more than zero. */ error MintZeroQuantity(); /** * The token does not exist. */ error OwnerQueryForNonexistentToken(); /** * The caller must own the token or be an approved operator. */ error TransferCallerNotOwnerNorApproved(); /** * The token must be owned by `from`. */ error TransferFromIncorrectOwner(); /** * Cannot safely transfer to a contract that does not implement the ERC721Receiver interface. */ error TransferToNonERC721ReceiverImplementer(); /** * Cannot transfer to the zero address. */ error TransferToZeroAddress(); /** * The token does not exist. */ error URIQueryForNonexistentToken(); /** * The `quantity` minted with ERC2309 exceeds the safety limit. */ error MintERC2309QuantityExceedsLimit(); /** * The `extraData` cannot be set on an unintialized ownership slot. */ error OwnershipNotInitializedForExtraData(); struct TokenOwnership { // The address of the owner. address addr; // Keeps track of the start time of ownership with minimal overhead for tokenomics. uint64 startTimestamp; // Whether the token has been burned. bool burned; // Arbitrary data similar to `startTimestamp` that can be set through `_extraData`. uint24 extraData; } /** * @dev Returns the total amount of tokens stored by the contract. * * Burned tokens are calculated here, use `_totalMinted()` if you want to count just minted tokens. */ function totalSupply() external view returns (uint256); // ============================== // IERC165 // ============================== /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); // ============================== // IERC721 // ============================== /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); // ============================== // IERC721Metadata // ============================== /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); // ============================== // IERC2309 // ============================== /** * @dev Emitted when tokens in `fromTokenId` to `toTokenId` (inclusive) is transferred from `from` to `to`, * as defined in the ERC2309 standard. See `_mintERC2309` for more details. */ event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to); } // File: contracts/ERC721A/ERC721A.sol // ERC721A Contracts v4.1.0 // Creator: Chiru Labs pragma solidity ^0.8.4; /** * @dev ERC721 token receiver interface. */ interface ERC721A__IERC721Receiver { function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, * including the Metadata extension. Built to optimize for lower gas during batch mints. * * Assumes serials are sequentially minted starting at `_startTokenId()` * (defaults to 0, e.g. 0, 1, 2, 3..). * * Assumes that an owner cannot have more than 2**64 - 1 (max value of uint64) of supply. * * Assumes that the maximum token id cannot exceed 2**256 - 1 (max value of uint256). */ contract ERC721A is IERC721A { // Mask of an entry in packed address data. uint256 private constant BITMASK_ADDRESS_DATA_ENTRY = (1 << 64) - 1; // The bit position of `numberMinted` in packed address data. uint256 private constant BITPOS_NUMBER_MINTED = 64; // The bit position of `numberBurned` in packed address data. uint256 private constant BITPOS_NUMBER_BURNED = 128; // The bit position of `aux` in packed address data. uint256 private constant BITPOS_AUX = 192; // Mask of all 256 bits in packed address data except the 64 bits for `aux`. uint256 private constant BITMASK_AUX_COMPLEMENT = (1 << 192) - 1; // The bit position of `startTimestamp` in packed ownership. uint256 private constant BITPOS_START_TIMESTAMP = 160; // The bit mask of the `burned` bit in packed ownership. uint256 private constant BITMASK_BURNED = 1 << 224; // The bit position of the `nextInitialized` bit in packed ownership. uint256 private constant BITPOS_NEXT_INITIALIZED = 225; // The bit mask of the `nextInitialized` bit in packed ownership. uint256 private constant BITMASK_NEXT_INITIALIZED = 1 << 225; // The bit position of `extraData` in packed ownership. uint256 private constant BITPOS_EXTRA_DATA = 232; // Mask of all 256 bits in a packed ownership except the 24 bits for `extraData`. uint256 private constant BITMASK_EXTRA_DATA_COMPLEMENT = (1 << 232) - 1; // The mask of the lower 160 bits for addresses. uint256 private constant BITMASK_ADDRESS = (1 << 160) - 1; // The maximum `quantity` that can be minted with `_mintERC2309`. // This limit is to prevent overflows on the address data entries. // For a limit of 5000, a total of 3.689e15 calls to `_mintERC2309` // is required to cause an overflow, which is unrealistic. uint256 private constant MAX_MINT_ERC2309_QUANTITY_LIMIT = 5000; // The tokenId of the next token to be minted. uint256 private _currentIndex; // The number of tokens burned. uint256 private _burnCounter; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to ownership details // An empty struct value does not necessarily mean the token is unowned. // See `_packedOwnershipOf` implementation for details. // // Bits Layout: // - [0..159] `addr` // - [160..223] `startTimestamp` // - [224] `burned` // - [225] `nextInitialized` // - [232..255] `extraData` mapping(uint256 => uint256) private _packedOwnerships; // Mapping owner address to address data. // // Bits Layout: // - [0..63] `balance` // - [64..127] `numberMinted` // - [128..191] `numberBurned` // - [192..255] `aux` mapping(address => uint256) private _packedAddressData; // Mapping from token ID to approved address. mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; _currentIndex = _startTokenId(); } /** * @dev Returns the starting token ID. * To change the starting token ID, please override this function. */ function _startTokenId() internal view virtual returns (uint256) { return 0; } /** * @dev Returns the next token ID to be minted. */ function _nextTokenId() internal view returns (uint256) { return _currentIndex; } /** * @dev Returns the total number of tokens in existence. * Burned tokens will reduce the count. * To get the total number of tokens minted, please see `_totalMinted`. */ function totalSupply() public view override returns (uint256) { // Counter underflow is impossible as _burnCounter cannot be incremented // more than `_currentIndex - _startTokenId()` times. unchecked { return _currentIndex - _burnCounter - _startTokenId(); } } /** * @dev Returns the total amount of tokens minted in the contract. */ function _totalMinted() internal view returns (uint256) { // Counter underflow is impossible as _currentIndex does not decrement, // and it is initialized to `_startTokenId()` unchecked { return _currentIndex - _startTokenId(); } } /** * @dev Returns the total number of tokens burned. */ function _totalBurned() internal view returns (uint256) { return _burnCounter; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { // The interface IDs are constants representing the first 4 bytes of the XOR of // all function selectors in the interface. See: https://eips.ethereum.org/EIPS/eip-165 // e.g. `bytes4(i.functionA.selector ^ i.functionB.selector ^ ...)` return interfaceId == 0x01ffc9a7 || // ERC165 interface ID for ERC165. interfaceId == 0x80ac58cd || // ERC165 interface ID for ERC721. interfaceId == 0x5b5e139f; // ERC165 interface ID for ERC721Metadata. } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view override returns (uint256) { if (owner == address(0)) revert BalanceQueryForZeroAddress(); return _packedAddressData[owner] & BITMASK_ADDRESS_DATA_ENTRY; } /** * Returns the number of tokens minted by `owner`. */ function _numberMinted(address owner) internal view returns (uint256) { return (_packedAddressData[owner] >> BITPOS_NUMBER_MINTED) & BITMASK_ADDRESS_DATA_ENTRY; } /** * Returns the number of tokens burned by or on behalf of `owner`. */ function _numberBurned(address owner) internal view returns (uint256) { return (_packedAddressData[owner] >> BITPOS_NUMBER_BURNED) & BITMASK_ADDRESS_DATA_ENTRY; } /** * Returns the auxiliary data for `owner`. (e.g. number of whitelist mint slots used). */ function _getAux(address owner) internal view returns (uint64) { return uint64(_packedAddressData[owner] >> BITPOS_AUX); } /** * Sets the auxiliary data for `owner`. (e.g. number of whitelist mint slots used). * If there are multiple variables, please pack them into a uint64. */ function _setAux(address owner, uint64 aux) internal { uint256 packed = _packedAddressData[owner]; uint256 auxCasted; // Cast `aux` with assembly to avoid redundant masking. assembly { auxCasted := aux } packed = (packed & BITMASK_AUX_COMPLEMENT) | (auxCasted << BITPOS_AUX); _packedAddressData[owner] = packed; } /** * Returns the packed ownership data of `tokenId`. */ function _packedOwnershipOf(uint256 tokenId) private view returns (uint256) { uint256 curr = tokenId; unchecked { if (_startTokenId() <= curr) if (curr < _currentIndex) { uint256 packed = _packedOwnerships[curr]; // If not burned. if (packed & BITMASK_BURNED == 0) { // Invariant: // There will always be an ownership that has an address and is not burned // before an ownership that does not have an address and is not burned. // Hence, curr will not underflow. // // We can directly compare the packed value. // If the address is zero, packed is zero. while (packed == 0) { packed = _packedOwnerships[--curr]; } return packed; } } } revert OwnerQueryForNonexistentToken(); } /** * Returns the unpacked `TokenOwnership` struct from `packed`. */ function _unpackedOwnership(uint256 packed) private pure returns (TokenOwnership memory ownership) { ownership.addr = address(uint160(packed)); ownership.startTimestamp = uint64(packed >> BITPOS_START_TIMESTAMP); ownership.burned = packed & BITMASK_BURNED != 0; ownership.extraData = uint24(packed >> BITPOS_EXTRA_DATA); } /** * Returns the unpacked `TokenOwnership` struct at `index`. */ function _ownershipAt(uint256 index) internal view returns (TokenOwnership memory) { return _unpackedOwnership(_packedOwnerships[index]); } /** * @dev Initializes the ownership slot minted at `index` for efficiency purposes. */ function _initializeOwnershipAt(uint256 index) internal { if (_packedOwnerships[index] == 0) { _packedOwnerships[index] = _packedOwnershipOf(index); } } /** * Gas spent here starts off proportional to the maximum mint batch size. * It gradually moves to O(1) as tokens get transferred around in the collection over time. */ function _ownershipOf(uint256 tokenId) internal view returns (TokenOwnership memory) { return _unpackedOwnership(_packedOwnershipOf(tokenId)); } /** * @dev Packs ownership data into a single uint256. */ function _packOwnershipData(address owner, uint256 flags) private view returns (uint256 result) { assembly { // Mask `owner` to the lower 160 bits, in case the upper bits somehow aren't clean. owner := and(owner, BITMASK_ADDRESS) // `owner | (block.timestamp << BITPOS_START_TIMESTAMP) | flags`. result := or(owner, or(shl(BITPOS_START_TIMESTAMP, timestamp()), flags)) } } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view override returns (address) { return address(uint160(_packedOwnershipOf(tokenId))); } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ 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, _toString(tokenId))) : ''; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, it can be overridden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ''; } /** * @dev Returns the `nextInitialized` flag set if `quantity` equals 1. */ function _nextInitializedFlag(uint256 quantity) private pure returns (uint256 result) { // For branchless setting of the `nextInitialized` flag. assembly { // `(quantity == 1) << BITPOS_NEXT_INITIALIZED`. result := shl(BITPOS_NEXT_INITIALIZED, eq(quantity, 1)) } } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public override { address owner = ownerOf(tokenId); if (_msgSenderERC721A() != owner) if (!isApprovedForAll(owner, _msgSenderERC721A())) { revert ApprovalCallerNotOwnerNorApproved(); } _tokenApprovals[tokenId] = to; emit Approval(owner, to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view override returns (address) { if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken(); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { if (operator == _msgSenderERC721A()) revert ApproveToCaller(); _operatorApprovals[_msgSenderERC721A()][operator] = approved; emit ApprovalForAll(_msgSenderERC721A(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ''); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { transferFrom(from, to, tokenId); if (to.code.length != 0) if (!_checkContractOnERC721Received(from, to, tokenId, _data)) { revert TransferToNonERC721ReceiverImplementer(); } } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), */ function _exists(uint256 tokenId) internal view returns (bool) { return _startTokenId() <= tokenId && tokenId < _currentIndex && // If within bounds, _packedOwnerships[tokenId] & BITMASK_BURNED == 0; // and not burned. } /** * @dev Equivalent to `_safeMint(to, quantity, '')`. */ function _safeMint(address to, uint256 quantity) internal { _safeMint(to, quantity, ''); } /** * @dev Safely mints `quantity` tokens and transfers them to `to`. * * Requirements: * * - If `to` refers to a smart contract, it must implement * {IERC721Receiver-onERC721Received}, which is called for each safe transfer. * - `quantity` must be greater than 0. * * See {_mint}. * * Emits a {Transfer} event for each mint. */ function _safeMint( address to, uint256 quantity, bytes memory _data ) internal { _mint(to, quantity); unchecked { if (to.code.length != 0) { uint256 end = _currentIndex; uint256 index = end - quantity; do { if (!_checkContractOnERC721Received(address(0), to, index++, _data)) { revert TransferToNonERC721ReceiverImplementer(); } } while (index < end); // Reentrancy protection. if (_currentIndex != end) revert(); } } } /** * @dev Mints `quantity` tokens and transfers them to `to`. * * Requirements: * * - `to` cannot be the zero address. * - `quantity` must be greater than 0. * * Emits a {Transfer} event for each mint. */ function _mint(address to, uint256 quantity) internal { uint256 startTokenId = _currentIndex; if (to == address(0)) revert MintToZeroAddress(); if (quantity == 0) revert MintZeroQuantity(); _beforeTokenTransfers(address(0), to, startTokenId, quantity); // Overflows are incredibly unrealistic. // `balance` and `numberMinted` have a maximum limit of 2**64. // `tokenId` has a maximum limit of 2**256. unchecked { // Updates: // - `balance += quantity`. // - `numberMinted += quantity`. // // We can directly add to the `balance` and `numberMinted`. _packedAddressData[to] += quantity * ((1 << BITPOS_NUMBER_MINTED) | 1); // Updates: // - `address` to the owner. // - `startTimestamp` to the timestamp of minting. // - `burned` to `false`. // - `nextInitialized` to `quantity == 1`. _packedOwnerships[startTokenId] = _packOwnershipData( to, _nextInitializedFlag(quantity) | _nextExtraData(address(0), to, 0) ); uint256 tokenId = startTokenId; uint256 end = startTokenId + quantity; do { emit Transfer(address(0), to, tokenId++); } while (tokenId < end); _currentIndex = end; } _afterTokenTransfers(address(0), to, startTokenId, quantity); } /** * @dev Mints `quantity` tokens and transfers them to `to`. * * This function is intended for efficient minting only during contract creation. * * It emits only one {ConsecutiveTransfer} as defined in * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309), * instead of a sequence of {Transfer} event(s). * * Calling this function outside of contract creation WILL make your contract * non-compliant with the ERC721 standard. * For full ERC721 compliance, substituting ERC721 {Transfer} event(s) with the ERC2309 * {ConsecutiveTransfer} event is only permissible during contract creation. * * Requirements: * * - `to` cannot be the zero address. * - `quantity` must be greater than 0. * * Emits a {ConsecutiveTransfer} event. */ function _mintERC2309(address to, uint256 quantity) internal { uint256 startTokenId = _currentIndex; if (to == address(0)) revert MintToZeroAddress(); if (quantity == 0) revert MintZeroQuantity(); if (quantity > MAX_MINT_ERC2309_QUANTITY_LIMIT) revert MintERC2309QuantityExceedsLimit(); _beforeTokenTransfers(address(0), to, startTokenId, quantity); // Overflows are unrealistic due to the above check for `quantity` to be below the limit. unchecked { // Updates: // - `balance += quantity`. // - `numberMinted += quantity`. // // We can directly add to the `balance` and `numberMinted`. _packedAddressData[to] += quantity * ((1 << BITPOS_NUMBER_MINTED) | 1); // Updates: // - `address` to the owner. // - `startTimestamp` to the timestamp of minting. // - `burned` to `false`. // - `nextInitialized` to `quantity == 1`. _packedOwnerships[startTokenId] = _packOwnershipData( to, _nextInitializedFlag(quantity) | _nextExtraData(address(0), to, 0) ); emit ConsecutiveTransfer(startTokenId, startTokenId + quantity - 1, address(0), to); _currentIndex = startTokenId + quantity; } _afterTokenTransfers(address(0), to, startTokenId, quantity); } /** * @dev Returns the storage slot and value for the approved address of `tokenId`. */ function _getApprovedAddress(uint256 tokenId) private view returns (uint256 approvedAddressSlot, address approvedAddress) { mapping(uint256 => address) storage tokenApprovalsPtr = _tokenApprovals; // The following is equivalent to `approvedAddress = _tokenApprovals[tokenId]`. assembly { // Compute the slot. mstore(0x00, tokenId) mstore(0x20, tokenApprovalsPtr.slot) approvedAddressSlot := keccak256(0x00, 0x40) // Load the slot's value from storage. approvedAddress := sload(approvedAddressSlot) } } /** * @dev Returns whether the `approvedAddress` is equals to `from` or `msgSender`. */ function _isOwnerOrApproved( address approvedAddress, address from, address msgSender ) private pure returns (bool result) { assembly { // Mask `from` to the lower 160 bits, in case the upper bits somehow aren't clean. from := and(from, BITMASK_ADDRESS) // Mask `msgSender` to the lower 160 bits, in case the upper bits somehow aren't clean. msgSender := and(msgSender, BITMASK_ADDRESS) // `msgSender == from || msgSender == approvedAddress`. result := or(eq(msgSender, from), eq(msgSender, approvedAddress)) } } /** * @dev Transfers `tokenId` from `from` to `to`. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId); if (address(uint160(prevOwnershipPacked)) != from) revert TransferFromIncorrectOwner(); (uint256 approvedAddressSlot, address approvedAddress) = _getApprovedAddress(tokenId); // The nested ifs save around 20+ gas over a compound boolean condition. if (!_isOwnerOrApproved(approvedAddress, from, _msgSenderERC721A())) if (!isApprovedForAll(from, _msgSenderERC721A())) revert TransferCallerNotOwnerNorApproved(); if (to == address(0)) revert TransferToZeroAddress(); _beforeTokenTransfers(from, to, tokenId, 1); // Clear approvals from the previous owner. assembly { if approvedAddress { // This is equivalent to `delete _tokenApprovals[tokenId]`. sstore(approvedAddressSlot, 0) } } // Underflow of the sender's balance is impossible because we check for // ownership above and the recipient's balance can't realistically overflow. // Counter overflow is incredibly unrealistic as tokenId would have to be 2**256. unchecked { // We can directly increment and decrement the balances. --_packedAddressData[from]; // Updates: `balance -= 1`. ++_packedAddressData[to]; // Updates: `balance += 1`. // Updates: // - `address` to the next owner. // - `startTimestamp` to the timestamp of transfering. // - `burned` to `false`. // - `nextInitialized` to `true`. _packedOwnerships[tokenId] = _packOwnershipData( to, BITMASK_NEXT_INITIALIZED | _nextExtraData(from, to, prevOwnershipPacked) ); // If the next slot may not have been initialized (i.e. `nextInitialized == false`) . if (prevOwnershipPacked & BITMASK_NEXT_INITIALIZED == 0) { uint256 nextTokenId = tokenId + 1; // If the next slot's address is zero and not burned (i.e. packed value is zero). if (_packedOwnerships[nextTokenId] == 0) { // If the next slot is within bounds. if (nextTokenId != _currentIndex) { // Initialize the next slot to maintain correctness for `ownerOf(tokenId + 1)`. _packedOwnerships[nextTokenId] = prevOwnershipPacked; } } } } emit Transfer(from, to, tokenId); _afterTokenTransfers(from, to, tokenId, 1); } /** * @dev Equivalent to `_burn(tokenId, false)`. */ function _burn(uint256 tokenId) internal virtual { _burn(tokenId, false); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId, bool approvalCheck) internal virtual { uint256 prevOwnershipPacked = _packedOwnershipOf(tokenId); address from = address(uint160(prevOwnershipPacked)); (uint256 approvedAddressSlot, address approvedAddress) = _getApprovedAddress(tokenId); if (approvalCheck) { // The nested ifs save around 20+ gas over a compound boolean condition. if (!_isOwnerOrApproved(approvedAddress, from, _msgSenderERC721A())) if (!isApprovedForAll(from, _msgSenderERC721A())) revert TransferCallerNotOwnerNorApproved(); } _beforeTokenTransfers(from, address(0), tokenId, 1); // Clear approvals from the previous owner. assembly { if approvedAddress { // This is equivalent to `delete _tokenApprovals[tokenId]`. sstore(approvedAddressSlot, 0) } } // Underflow of the sender's balance is impossible because we check for // ownership above and the recipient's balance can't realistically overflow. // Counter overflow is incredibly unrealistic as `tokenId` would have to be 2**256. unchecked { // Updates: // - `balance -= 1`. // - `numberBurned += 1`. // // We can directly decrement the balance, and increment the number burned. // This is equivalent to `packed -= 1; packed += 1 << BITPOS_NUMBER_BURNED;`. _packedAddressData[from] += (1 << BITPOS_NUMBER_BURNED) - 1; // Updates: // - `address` to the last owner. // - `startTimestamp` to the timestamp of burning. // - `burned` to `true`. // - `nextInitialized` to `true`. _packedOwnerships[tokenId] = _packOwnershipData( from, (BITMASK_BURNED | BITMASK_NEXT_INITIALIZED) | _nextExtraData(from, address(0), prevOwnershipPacked) ); // If the next slot may not have been initialized (i.e. `nextInitialized == false`) . if (prevOwnershipPacked & BITMASK_NEXT_INITIALIZED == 0) { uint256 nextTokenId = tokenId + 1; // If the next slot's address is zero and not burned (i.e. packed value is zero). if (_packedOwnerships[nextTokenId] == 0) { // If the next slot is within bounds. if (nextTokenId != _currentIndex) { // Initialize the next slot to maintain correctness for `ownerOf(tokenId + 1)`. _packedOwnerships[nextTokenId] = prevOwnershipPacked; } } } } emit Transfer(from, address(0), tokenId); _afterTokenTransfers(from, address(0), tokenId, 1); // Overflow not possible, as _burnCounter cannot be exceed _currentIndex times. unchecked { _burnCounter++; } } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkContractOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { try ERC721A__IERC721Receiver(to).onERC721Received(_msgSenderERC721A(), from, tokenId, _data) returns ( bytes4 retval ) { return retval == ERC721A__IERC721Receiver(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert TransferToNonERC721ReceiverImplementer(); } else { assembly { revert(add(32, reason), mload(reason)) } } } } /** * @dev Directly sets the extra data for the ownership data `index`. */ function _setExtraDataAt(uint256 index, uint24 extraData) internal { uint256 packed = _packedOwnerships[index]; if (packed == 0) revert OwnershipNotInitializedForExtraData(); uint256 extraDataCasted; // Cast `extraData` with assembly to avoid redundant masking. assembly { extraDataCasted := extraData } packed = (packed & BITMASK_EXTRA_DATA_COMPLEMENT) | (extraDataCasted << BITPOS_EXTRA_DATA); _packedOwnerships[index] = packed; } /** * @dev Returns the next extra data for the packed ownership data. * The returned result is shifted into position. */ function _nextExtraData( address from, address to, uint256 prevOwnershipPacked ) private view returns (uint256) { uint24 extraData = uint24(prevOwnershipPacked >> BITPOS_EXTRA_DATA); return uint256(_extraData(from, to, extraData)) << BITPOS_EXTRA_DATA; } /** * @dev Called during each token transfer to set the 24bit `extraData` field. * Intended to be overridden by the cosumer contract. * * `previousExtraData` - the value of `extraData` before transfer. * * Calling conditions: * * - When `from` and `to` are both non-zero, `from`'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, `tokenId` will be burned by `from`. * - `from` and `to` are never both zero. */ function _extraData( address from, address to, uint24 previousExtraData ) internal view virtual returns (uint24) {} /** * @dev Hook that is called before a set of serially-ordered token ids are about to be transferred. * This includes minting. * And also called before burning one token. * * startTokenId - the first token id to be transferred * quantity - the amount to be transferred * * Calling conditions: * * - When `from` and `to` are both non-zero, `from`'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, `tokenId` will be burned by `from`. * - `from` and `to` are never both zero. */ function _beforeTokenTransfers( address from, address to, uint256 startTokenId, uint256 quantity ) internal virtual {} /** * @dev Hook that is called after a set of serially-ordered token ids have been transferred. * This includes minting. * And also called after one token has been burned. * * startTokenId - the first token id to be transferred * quantity - the amount to be transferred * * Calling conditions: * * - When `from` and `to` are both non-zero, `from`'s `tokenId` has been * transferred to `to`. * - When `from` is zero, `tokenId` has been minted for `to`. * - When `to` is zero, `tokenId` has been burned by `from`. * - `from` and `to` are never both zero. */ function _afterTokenTransfers( address from, address to, uint256 startTokenId, uint256 quantity ) internal virtual {} /** * @dev Returns the message sender (defaults to `msg.sender`). * * If you are writing GSN compatible contracts, you need to override this function. */ function _msgSenderERC721A() internal view virtual returns (address) { return msg.sender; } /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function _toString(uint256 value) internal pure returns (string memory ptr) { assembly { // The maximum value of a uint256 contains 78 digits (1 byte per digit), // but we allocate 128 bytes to keep the free memory pointer 32-byte word aliged. // We will need 1 32-byte word to store the length, // and 3 32-byte words to store a maximum of 78 digits. Total: 32 + 3 * 32 = 128. ptr := add(mload(0x40), 128) // Update the free memory pointer to allocate. mstore(0x40, ptr) // Cache the end of the memory to calculate the length later. let end := ptr // We write the string from the rightmost digit to the leftmost digit. // The following is essentially a do-while loop that also handles the zero case. // Costs a bit more than early returning for the zero case, // but cheaper in terms of deployment and overall runtime costs. for { // Initialize and perform the first pass without check. let temp := value // Move the pointer 1 byte leftwards to point to an empty character slot. ptr := sub(ptr, 1) // Write the character to the pointer. 48 is the ASCII index of '0'. mstore8(ptr, add(48, mod(temp, 10))) temp := div(temp, 10) } temp { // Keep dividing `temp` until zero. temp := div(temp, 10) } { // Body of the for loop. ptr := sub(ptr, 1) mstore8(ptr, add(48, mod(temp, 10))) } let length := sub(end, ptr) // Move the pointer 32 bytes leftwards to make room for the length. ptr := sub(ptr, 32) // Store the length. mstore(ptr, length) } } } // File: contracts/ERC721A/extensions/IERC721AQueryable.sol // ERC721A Contracts v4.1.0 // Creator: Chiru Labs pragma solidity ^0.8.4; /** * @dev Interface of an ERC721AQueryable compliant contract. */ interface IERC721AQueryable is IERC721A { /** * Invalid query range (`start` >= `stop`). */ error InvalidQueryRange(); /** * @dev Returns the `TokenOwnership` struct at `tokenId` without reverting. * * If the `tokenId` is out of bounds: * - `addr` = `address(0)` * - `startTimestamp` = `0` * - `burned` = `false` * * If the `tokenId` is burned: * - `addr` = `<Address of owner before token was burned>` * - `startTimestamp` = `<Timestamp when token was burned>` * - `burned = `true` * * Otherwise: * - `addr` = `<Address of owner>` * - `startTimestamp` = `<Timestamp of start of ownership>` * - `burned = `false` */ function explicitOwnershipOf(uint256 tokenId) external view returns (TokenOwnership memory); /** * @dev Returns an array of `TokenOwnership` structs at `tokenIds` in order. * See {ERC721AQueryable-explicitOwnershipOf} */ function explicitOwnershipsOf(uint256[] memory tokenIds) external view returns (TokenOwnership[] memory); /** * @dev Returns an array of token IDs owned by `owner`, * in the range [`start`, `stop`) * (i.e. `start <= tokenId < stop`). * * This function allows for tokens to be queried if the collection * grows too big for a single call of {ERC721AQueryable-tokensOfOwner}. * * Requirements: * * - `start` < `stop` */ function tokensOfOwnerIn( address owner, uint256 start, uint256 stop ) external view returns (uint256[] memory); /** * @dev Returns an array of token IDs owned by `owner`. * * This function scans the ownership mapping and is O(totalSupply) in complexity. * It is meant to be called off-chain. * * See {ERC721AQueryable-tokensOfOwnerIn} for splitting the scan into * multiple smaller scans if the collection is large enough to cause * an out-of-gas error (10K pfp collections should be fine). */ function tokensOfOwner(address owner) external view returns (uint256[] memory); } // File: contracts/ERC721A/extensions/ERC721AQueryable.sol // ERC721A Contracts v4.1.0 // Creator: Chiru Labs pragma solidity ^0.8.14; /** * @title ERC721A Queryable * @dev ERC721A subclass with convenience query functions. */ abstract contract ERC721AQueryable is ERC721A, IERC721AQueryable { /** * @dev Returns the `TokenOwnership` struct at `toskenId` without reverting. * * If the `tokenId` is out of bounds: * - `addr` = `address(0)` * - `startTimestamp` = `0` * - `burned` = `false` * - `extraData` = `0` * * If the `tokenId` is burned: * - `addr` = `<Address of owner before token was burned>` * - `startTimestamp` = `<Timestamp when token was burned>` * - `burned = `true` * - `extraData` = `<Extra data when token was burned>` * * Otherwise: * - `addr` = `<Address of owner>` * - `startTimestamp` = `<Timestamp of start of ownership>` * - `burned = `false` * - `extraData` = `<Extra data at start of ownership>` */ function explicitOwnershipOf(uint256 tokenId) public view override returns (TokenOwnership memory) { TokenOwnership memory ownership; if (tokenId < _startTokenId() || tokenId >= _nextTokenId()) { return ownership; } ownership = _ownershipAt(tokenId); if (ownership.burned) { return ownership; } return _ownershipOf(tokenId); } /** * @dev Returns an array of `TokenOwnership` structs at `tokenIds` in order. * See {ERC721AQueryable-explicitOwnershipOf} */ function explicitOwnershipsOf(uint256[] memory tokenIds) external view override returns (TokenOwnership[] memory) { unchecked { uint256 tokenIdsLength = tokenIds.length; TokenOwnership[] memory ownerships = new TokenOwnership[](tokenIdsLength); for (uint256 i; i != tokenIdsLength; ++i) { ownerships[i] = explicitOwnershipOf(tokenIds[i]); } return ownerships; } } /** * @dev Returns an array of token IDs owned by `owner`, * in the range [`start`, `stop`) * (i.e. `start <= tokenId < stop`). * * This function allows for tokens to be queried if the collection * grows too big for a single call of {ERC721AQueryable-tokensOfOwner}. * * Requirements: * * - `start` < `stop` */ function tokensOfOwnerIn( address owner, uint256 start, uint256 stop ) external view override returns (uint256[] memory) { unchecked { if (start >= stop) revert InvalidQueryRange(); uint256 tokenIdsIdx; uint256 stopLimit = _nextTokenId(); // Set `start = max(start, _startTokenId())`. if (start < _startTokenId()) { start = _startTokenId(); } // Set `stop = min(stop, stopLimit)`. if (stop > stopLimit) { stop = stopLimit; } uint256 tokenIdsMaxLength = balanceOf(owner); // Set `tokenIdsMaxLength = min(balanceOf(owner), stop - start)`, // to cater for cases where `balanceOf(owner)` is too big. if (start < stop) { uint256 rangeLength = stop - start; if (rangeLength < tokenIdsMaxLength) { tokenIdsMaxLength = rangeLength; } } else { tokenIdsMaxLength = 0; } uint256[] memory tokenIds = new uint256[](tokenIdsMaxLength); if (tokenIdsMaxLength == 0) { return tokenIds; } // We need to call `explicitOwnershipOf(start)`, // because the slot at `start` may not be initialized. TokenOwnership memory ownership = explicitOwnershipOf(start); address currOwnershipAddr; // If the starting slot exists (i.e. not burned), initialize `currOwnershipAddr`. // `ownership.address` will not be zero, as `start` is clamped to the valid token ID range. if (!ownership.burned) { currOwnershipAddr = ownership.addr; } for (uint256 i = start; i != stop && tokenIdsIdx != tokenIdsMaxLength; ++i) { ownership = _ownershipAt(i); if (ownership.burned) { continue; } if (ownership.addr != address(0)) { currOwnershipAddr = ownership.addr; } if (currOwnershipAddr == owner) { tokenIds[tokenIdsIdx++] = i; } } // Downsize the array to fit. assembly { mstore(tokenIds, tokenIdsIdx) } return tokenIds; } } /** * @dev Returns an array of token IDs owned by `owner`. * * This function scans the ownership mapping and is O(totalSupply) in complexity. * It is meant to be called off-chain. * * See {ERC721AQueryable-tokensOfOwnerIn} for splitting the scan into * multiple smaller scans if the collection is large enough to cause * an out-of-gas error (10K pfp collections should be fine). */ function tokensOfOwner(address owner) external view override returns (uint256[] memory) { unchecked { uint256 tokenIdsIdx; address currOwnershipAddr; uint256 tokenIdsLength = balanceOf(owner); uint256[] memory tokenIds = new uint256[](tokenIdsLength); TokenOwnership memory ownership; for (uint256 i = _startTokenId(); tokenIdsIdx != tokenIdsLength; ++i) { ownership = _ownershipAt(i); if (ownership.burned) { continue; } if (ownership.addr != address(0)) { currOwnershipAddr = ownership.addr; } if (currOwnershipAddr == owner) { tokenIds[tokenIdsIdx++] = i; } } return tokenIds; } } } // File: Cronos/CFC/NewMint/NftCFC.sol pragma solidity ^0.8.14; interface INftCFC{ struct infoNft{ uint indexNft; uint indexType; uint typeNft; uint level; uint prestige; uint boost; } function getNftInfo(uint _index) external view returns(infoNft memory); function levelUpExtern(address _account, uint _indexNft, uint nbLevel) external returns(bool); } contract NftCFC is ERC721AQueryable, INftCFC { address owner; string name_; string symbol_; uint public priceMint = 2; address public adrJeton; address public adrUpgrader; address public adrMinter; address public adrBurner; string baseUri = "https://metadatas.cronosfc.club/"; mapping(uint => infoNft) listNft; uint maxLevel = 10; uint maxPrestige = 10; uint public maxSupply = 5555; uint public maxSupply_Player = 5000; uint public currentSupply_Player = 0; uint public maxSupply_Goal = 500; uint public currentSupply_Goal = 0; uint public maxSupply_GoalCpt = 55; uint public currentSupply_GoalCpt = 0; uint public maxMintPerTX = 3; mapping(uint => uint) public listIndexNft; uint nbIndexNft = 5555; bool public isPause = false; event MintEvent(); event StatePause(bool _isPause); constructor(address _adrJeton)ERC721A("NFT CFC", "CFC"){ owner = msg.sender; name_ = "NFT CFC"; symbol_ = "CFC"; //mintAdmin(0xF43D2E70faE713B12f4F47d77B135BfA24B8AAAf, 30, 1); //mintAdmin(0xF43D2E70faE713B12f4F47d77B135BfA24B8AAAf, 25, 2); //mintAdmin(0xF43D2E70faE713B12f4F47d77B135BfA24B8AAAf, 5, 3); adrJeton = _adrJeton; } //Fill Index NFT uint init = 0; function fillListIndexALL() public onlyOwner { require(init == 0, "[ERROR] : Already Init!"); fillListIndex3(3, [117,118,119,120,121,122,123,124,125,126,250,287,497,860,972,999,1087,1314,1388,1412,1744,1868,1895,1906, 1925,2059,2074,2373,2547,2678,2702,2832,2915,2969,3021,3082,3172,3231,3294,3559,3802,3880,4394,4402,4593, 4654,4806,4877,4885,4927,5007,5088,5260,5374,5378]); fillListIndex2_1(2, [51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,74,77,78,79,80,81, 82,83,84,85,86,87,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110, 111,112,113,114,115,116,127,171,177,199,207,212,219,236,254,260,264,293,302,316,320,344,348,367, 411,419,432,439,460,487,495,506,521,570,581,586,605,624,638,642]); fillListIndex2_1(2, [644,648,654,675,680,691,714,719,724,730,731,737,740,755,882,886,888,895,929,933,934,948,962,988,1000, 1001,1002,1009,1014,1036,1042,1058,1067,1075,1098,1102,1116,1156,1163,1179,1186,1207,1210,1226,1233, 1244,1259,1266,1269,1302,1316,1322,1329,1332,1338,1344,1358,1374,1379,1381,1384,1399,1403,1417,1432,1443, 5149,5156,5161,5172,5177,5202,5211,5221,5222,5238,5261,5275,5277,5298,5307,5323,5324,5325,5326,5327, 5336,5352,5369,5372,5385,5433,5436,5446,5461,5491,5498,5503,5535,5537]); fillListIndex2_2(2, [1457,1468,1482,1492,1500,1504,1508,1528,1538,1544,1555,1556,1567,1586,1587,1588,1606,1609,1622,1623, 1652,1687,1689,1694,1702,1704,1710,1714,1717,1728,1739,1741,1770,1776,1784,1803,1805,1812,1813,1822, 1829,1855,1857,1859,1875,1877,1880,1881,1891,1892,1897,1901,1908,1909,1922,1930,1953,1971,1984,1993, 1994,2026,2039,2047,2050,2068,2070,2071,2073,2091,2115,2156,2167,2210,2221,2223,2240,2245,2246,2253, 2257,2262,2265,2281,2286,2310,2333,2350,2366,2369,2379,2408,2409,2418,2426,2478,2488,2492,2509,2530]); fillListIndex2_2(2, [2533,2538,2560,2575,2648,2653,2672,2704,2711,2715,2777,2789,2797,2803,2806,2813,2827,2848,2856,2858, 2869,2875,2890,2965,2968,2973,2981,3018,3074,3079,3085,3088,3106,3110,3111,3135,3169,3194,3195,3203, 3204,3251,3257,3266,3278,3279,3304,3307,3312,3316,3347,3350,3352,3354,3356,3375,3387,3397,3400,3413, 3431,3439,3464,3466,3483,3487,3496,3503,3506,3508,3516,3536,3543,3550,3556,3581,3583,3586,3602,3603, 3627,3630,3655,3667,3716,3731,3734,3772,3782,3790,3799,3805,3850,3855,3860,3870,3881,3889,3919,3925]); fillListIndex2_2(2, [3927,3937,3944,3951,3952,3954,3963,3977,3978,3987,4010,4020,4030,4037,4047,4049,4059,4083,4085,4088, 4100,4123,4128,4133,4135,4141,4142,4157,4196,4235,4261,4262,4269,4276,4290,4316,4323,4328,4339,4345, 4349,4352,4372,4379,4382,4384,4409,4410,4420,4423,4441,4507,4523,4531,4539,4542,4547,4565,4576,4585, 4591,4594,4605,4613,4631,4668,4669,4673,4676,4765,4769,4776,4795,4797,4801,4804,4812,4818,4833,4880, 4899,4915,4916,4922,4944,4947,4953,4976,4981,4992,4995,5033,5044,5047,5050,5100,5105,5111,5141,5143]); } function fillListIndexALLLocale() public onlyOwner { if(init == 0) { fillListIndex3(3, [117,118,119,120,121,122,123,124,125,126,250,287,497,860,972,999,1087,1314,1388,1412,1744,1868,1895,1906, 1925,2059,2074,2373,2547,2678,2702,2832,2915,2969,3021,3082,3172,3231,3294,3559,3802,3880,4394,4402,4593, 4654,4806,4877,4885,4927,5007,5088,5260,5374,5378]); } else if(init == 1) { fillListIndex2_1(2, [50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,74,77,78,79,80,81, 82,83,84,85,86,87,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110, 111,112,113,114,115,127,171,177,199,207,212,219,236,254,260,264,293,302,316,320,344,348,367, 411,419,432,439,460,487,495,506,521,570,581,586,605,624,638,642]); } else if(init == 2) { fillListIndex2_1(2, [644,648,654,675,680,691,714,719,724,730,731,737,740,755,882,886,888,895,929,933,934,948,962,988,1000, 1001,1002,1009,1014,1036,1042,1058,1067,1075,1098,1102,1116,1156,1163,1179,1186,1207,1210,1226,1233, 1244,1259,1266,1269,1302,1316,1322,1329,1332,1338,1344,1358,1374,1379,1381,1384,1399,1403,1417,1432,1443, 5149,5156,5161,5172,5177,5202,5211,5221,5222,5238,5261,5275,5277,5298,5307,5323,5324,5325,5326,5327, 5336,5352,5369,5372,5385,5433,5436,5446,5461,5491,5498,5503,5535,5537]); } else if(init == 3) { fillListIndex2_2(2, [1457,1468,1482,1492,1500,1504,1508,1528,1538,1544,1555,1556,1567,1586,1587,1588,1606,1609,1622,1623, 1652,1687,1689,1694,1702,1704,1710,1714,1717,1728,1739,1741,1770,1776,1784,1803,1805,1812,1813,1822, 1829,1855,1857,1859,1875,1877,1880,1881,1891,1892,1897,1901,1908,1909,1922,1930,1953,1971,1984,1993, 1994,2026,2039,2047,2050,2068,2070,2071,2073,2091,2115,2156,2167,2210,2221,2223,2240,2245,2246,2253, 2257,2262,2265,2281,2286,2310,2333,2350,2366,2369,2379,2408,2409,2418,2426,2478,2488,2492,2509,2530]); } else if(init == 4) { fillListIndex2_2(2, [2533,2538,2560,2575,2648,2653,2672,2704,2711,2715,2777,2789,2797,2803,2806,2813,2827,2848,2856,2858, 2869,2875,2890,2965,2968,2973,2981,3018,3074,3079,3085,3088,3106,3110,3111,3135,3169,3194,3195,3203, 3204,3251,3257,3266,3278,3279,3304,3307,3312,3316,3347,3350,3352,3354,3356,3375,3387,3397,3400,3413, 3431,3439,3464,3466,3483,3487,3496,3503,3506,3508,3516,3536,3543,3550,3556,3581,3583,3586,3602,3603, 3627,3630,3655,3667,3716,3731,3734,3772,3782,3790,3799,3805,3850,3855,3860,3870,3881,3889,3919,3925]); } else if(init == 5) { fillListIndex2_2(2, [3927,3937,3944,3951,3952,3954,3963,3977,3978,3987,4010,4020,4030,4037,4047,4049,4059,4083,4085,4088, 4100,4123,4128,4133,4135,4141,4142,4157,4196,4235,4261,4262,4269,4276,4290,4316,4323,4328,4339,4345, 4349,4352,4372,4379,4382,4384,4409,4410,4420,4423,4441,4507,4523,4531,4539,4542,4547,4565,4576,4585, 4591,4594,4605,4613,4631,4668,4669,4673,4676,4765,4769,4776,4795,4797,4801,4804,4812,4818,4833,4880, 4899,4915,4916,4922,4944,4947,4953,4976,4981,4992,4995,5033,5044,5047,5050,5100,5105,5111,5141,5143]); } else { revert(); } init++; } function fillListIndex3(uint _type, uint16[55] memory _index) internal { for(uint i = 0; i < 55; i++) { listIndexNft[_index[i]] = _type; } } function fillListIndex2_1(uint _type, uint16[100] memory _index) internal { for(uint i = 0; i < 100; i++) { listIndexNft[_index[i]] = _type; } } function fillListIndex2_2(uint _type, uint16[100] memory _index) internal onlyOwner { for(uint i = 0; i < 100; i++) { listIndexNft[_index[i]] = _type; } } // //Change address function changeOwner(address _owner) public onlyOwner { owner = _owner; } function changeJeton(address _adrJeton) public onlyOwner { adrJeton = _adrJeton; } function changeMinter(address _adrMinter) public onlyOwner { adrMinter = _adrMinter; } function changeUpgrader(address _adrUpgrader) public onlyOwner { adrUpgrader = _adrUpgrader; } // //Setter function setPriceMint(uint _priceMint) public onlyOwner { priceMint = _priceMint; } function setLevelMax(uint _levelMax) public onlyOwner { maxLevel = _levelMax; } function setPrestigeMax(uint _PrestigeMax) public onlyOwner { maxPrestige = _PrestigeMax; } function setBaseUri(string memory _baseUri) public onlyOwner { baseUri = _baseUri; } function setMaxMint(uint _maxMintPerTX) public onlyOwner { maxMintPerTX = _maxMintPerTX; } function setPause(bool _isPause) public onlyOwner { isPause = _isPause; emit StatePause(isPause); } // //Getter //Override ERC721A function _startTokenId() internal view override returns (uint256) { return 1; } function tokenURI(uint256 tokenId) public view virtual override(ERC721A, IERC721A) returns (string memory) { if (!_exists(tokenId)) revert URIQueryForNonexistentToken(); string memory baseURI = _baseURI(); infoNft memory _infoNft = getInfoNft(tokenId); return bytes(baseURI).length != 0 ? string(abi.encodePacked(baseURI, _toString(_infoNft.typeNft), "/", _toString(_infoNft.indexType), "/", _toString(_infoNft.level), "/", _toString(_infoNft.prestige) )) : ''; } function _baseURI() internal view override returns (string memory) { return baseUri; } // function getNbTypeNFT(address _account) public view returns(uint nbPlayer, uint nbGoal, uint nbGoalCPT) // ONLY VIEW { uint[] memory listIndex = ERC721AQueryable(address(this)).tokensOfOwner(_account); uint _typeNft; for(uint i = 0; i < listIndex.length; i++) { _typeNft = listNft[listIndex[i]].typeNft; if(_typeNft == 1) { nbPlayer++; } else if(_typeNft == 2) { nbGoal++; } else if(_typeNft == 3) { nbGoalCPT++; } } } function getNftInfo(uint _index) external view returns(infoNft memory) { return getInfoNft(_index); } function getInfoNft(uint _index) public view returns(infoNft memory) { require(_exists(_index), "[ERROR] : Index Not found"); return listNft[_index]; } // //Check function checkSupplyTypeNft(uint _typeNft) internal view returns(bool) { if(_typeNft == 0) { require(currentSupply_Player < maxSupply_Player, "[ERROR] : Supply Player already Reach!"); return true; } else if(_typeNft == 2) { require(currentSupply_Goal < maxSupply_Goal, "[ERROR] : Supply Goal already Reach!"); return true; } else if(_typeNft == 3) { require(currentSupply_GoalCpt < maxSupply_GoalCpt, "[ERROR] : Supply Goal Captain already Reach!"); return true; } return false; } // //Function //Level Up function levelUpExtern(address _account, uint _indexNft, uint nbLevel) external onlyUpgrader returns(bool) { levelUp(_account, _indexNft, nbLevel); return true; } function levelUp(address _account, uint _indexNft, uint nbLevel) public onlyUpgrader returns(bool) { require(ownerOf(_indexNft) == _account, "[ERROR] : You are not the owner of this NFT CFC!"); require(listNft[_indexNft].prestige != maxPrestige, "[ERROR] : You are already Prestige Max!"); if(listNft[_indexNft].prestige+1 == maxPrestige) { require(listNft[_indexNft].level + nbLevel <= maxLevel+1, "[ERROR] : You are need more level than you can!"); } uint level = listNft[_indexNft].level; uint prestige = listNft[_indexNft].prestige; uint boost = listNft[_indexNft].boost; for(uint i = 0; i < nbLevel; i++) { if(level < maxLevel) { level += 1; } else { level = 1; prestige += 1; boost += 2; } } listNft[_indexNft].level = level; listNft[_indexNft].prestige = prestige; listNft[_indexNft].boost = boost; return true; } // //Burn function burnNft(uint _indexNft) public returns(bool) { require(ERC721AQueryable(address(this)).ownerOf(_indexNft) == msg.sender, "[ERROR] : This is account dont have this NFT!"); _burn(_indexNft); if(_indexNft == 1) { currentSupply_Player-=1; maxSupply_Player-=1; } else if(_indexNft == 2) { currentSupply_Goal-=1; maxSupply_Goal-=1; } else if(_indexNft == 3) { currentSupply_GoalCpt-=1; maxSupply_GoalCpt-=1; } return true; } function burnMass(uint[] memory _listIndex) public returns(bool) { require(ERC721AQueryable(address(this)).balanceOf(msg.sender) >= _listIndex.length, "[ERROR] : You dont have enough Nft in Param!"); for(uint i = 0; i < _listIndex.length; i++) { require(ERC721AQueryable(address(this)).ownerOf(_listIndex[i]) == msg.sender, "[ERROR] : This is account dont have One index NFT! (burn)"); } for(uint i = 0; i < _listIndex.length; i++) { if(_listIndex[i] == 1) { currentSupply_Player-=1; maxSupply_Player-=1; } else if(_listIndex[i] == 2) { currentSupply_Goal-=1; maxSupply_Goal-=1; } else if(_listIndex[i] == 3) { currentSupply_GoalCpt-=1; maxSupply_GoalCpt-=1; } _burn(_listIndex[i]); } return true; } // //Mint function mintAdmin(uint _amount) public onlyOwner returns(bool) { uint index = _nextTokenId(); for(uint i = 0; i < _amount; i++) { require(checkSupplyTypeNft(listIndexNft[index+i]), "[ERROR] : Your type of nft desired is sold out!"); } _mint(msg.sender, _amount); for(uint i = 0; i < _amount; i++) { if(listIndexNft[index+i] == 2) { currentSupply_Goal++; listNft[index+i].indexType = currentSupply_Goal; listNft[index+i].typeNft = 2; } else if(listIndexNft[index+i] == 3) { currentSupply_GoalCpt++; listNft[index+i].indexType = currentSupply_GoalCpt; listNft[index+i].typeNft = 3; } else { currentSupply_Player++; listNft[index+i].indexType = currentSupply_Player; listNft[index+i].typeNft = 1; } listNft[index+i].indexNft = index+i; listNft[index+i].level = 1; listNft[index+i].prestige = 0; listNft[index+i].boost = 1; } return true; } function mintMass(uint _amount, uint[] memory _listIndexJeton) public returns(bool) { require(!isPause,"[ERROR] : Mint is Paused!"); require(_amount <= maxMintPerTX, "[ERROR] : You need more mint than max mint per TX!"); uint price = priceMint * _amount; require(price >= _listIndexJeton.length, "[ERROR] : You dont have enough Jeton in Param!"); require(ERC721AQueryable(adrJeton).balanceOf(msg.sender) >= price, "[ERROR] : You dont have enough Jeton!"); uint index = _nextTokenId(); //Check for(uint i = 0; i < _amount; i++) { require(checkSupplyTypeNft(listIndexNft[index+i]), "[ERROR] : Your type of nft desired is sold out!"); } for(uint i = 0; i < price; i++) { require(ERC721AQueryable(adrJeton).ownerOf(_listIndexJeton[i]) == msg.sender, "[ERROR] : This is account dont have One index NFT! (burn)"); } //Burn & Mint for(uint i = 0; i < price; i++) { ERC721AQueryable(adrJeton).transferFrom(msg.sender, 0x000000000000000000000000000000000000dEaD, _listIndexJeton[i]); } _mint(msg.sender, _amount); //SetData for(uint i = 0; i < _amount; i++) { if(listIndexNft[index+i] == 2) { currentSupply_Goal++; listNft[index+i].indexType = currentSupply_Goal; listNft[index+i].typeNft = 2; } else if(listIndexNft[index+i] == 3){ currentSupply_GoalCpt++; listNft[index+i].indexType = currentSupply_GoalCpt; listNft[index+i].typeNft = 3; } else{ currentSupply_Player++; listNft[index+i].indexType = currentSupply_Player; listNft[index+i].typeNft = 1; } listNft[index+i].indexNft = index+i; listNft[index+i].level = 1; listNft[index+i].prestige = 0; listNft[index+i].boost = 1; } return true; } // // //Modifier modifier onlyOwner { require(msg.sender == owner); _; } modifier onlyUpgrader { require(msg.sender == adrUpgrader, "[ERROR] (NFT CFC) : Address not approve for Upgrade"); _; } // }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_adrJeton","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"InvalidQueryRange","type":"error"},{"inputs":[],"name":"MintERC2309QuantityExceedsLimit","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"OwnershipNotInitializedForExtraData","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","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":"uint256","name":"fromTokenId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toTokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"ConsecutiveTransfer","type":"event"},{"anonymous":false,"inputs":[],"name":"MintEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"_isPause","type":"bool"}],"name":"StatePause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"adrBurner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"adrJeton","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"adrMinter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"adrUpgrader","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_listIndex","type":"uint256[]"}],"name":"burnMass","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_indexNft","type":"uint256"}],"name":"burnNft","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adrJeton","type":"address"}],"name":"changeJeton","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adrMinter","type":"address"}],"name":"changeMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adrUpgrader","type":"address"}],"name":"changeUpgrader","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentSupply_Goal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentSupply_GoalCpt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentSupply_Player","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"explicitOwnershipOf","outputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"bool","name":"burned","type":"bool"},{"internalType":"uint24","name":"extraData","type":"uint24"}],"internalType":"struct IERC721A.TokenOwnership","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"explicitOwnershipsOf","outputs":[{"components":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint64","name":"startTimestamp","type":"uint64"},{"internalType":"bool","name":"burned","type":"bool"},{"internalType":"uint24","name":"extraData","type":"uint24"}],"internalType":"struct IERC721A.TokenOwnership[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fillListIndexALL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fillListIndexALLLocale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"getInfoNft","outputs":[{"components":[{"internalType":"uint256","name":"indexNft","type":"uint256"},{"internalType":"uint256","name":"indexType","type":"uint256"},{"internalType":"uint256","name":"typeNft","type":"uint256"},{"internalType":"uint256","name":"level","type":"uint256"},{"internalType":"uint256","name":"prestige","type":"uint256"},{"internalType":"uint256","name":"boost","type":"uint256"}],"internalType":"struct INftCFC.infoNft","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"getNbTypeNFT","outputs":[{"internalType":"uint256","name":"nbPlayer","type":"uint256"},{"internalType":"uint256","name":"nbGoal","type":"uint256"},{"internalType":"uint256","name":"nbGoalCPT","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"getNftInfo","outputs":[{"components":[{"internalType":"uint256","name":"indexNft","type":"uint256"},{"internalType":"uint256","name":"indexType","type":"uint256"},{"internalType":"uint256","name":"typeNft","type":"uint256"},{"internalType":"uint256","name":"level","type":"uint256"},{"internalType":"uint256","name":"prestige","type":"uint256"},{"internalType":"uint256","name":"boost","type":"uint256"}],"internalType":"struct INftCFC.infoNft","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPause","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_indexNft","type":"uint256"},{"internalType":"uint256","name":"nbLevel","type":"uint256"}],"name":"levelUp","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_indexNft","type":"uint256"},{"internalType":"uint256","name":"nbLevel","type":"uint256"}],"name":"levelUpExtern","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"listIndexNft","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintPerTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply_Goal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply_GoalCpt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply_Player","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256[]","name":"_listIndexJeton","type":"uint256[]"}],"name":"mintMass","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceMint","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":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_baseUri","type":"string"}],"name":"setBaseUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_levelMax","type":"uint256"}],"name":"setLevelMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxMintPerTX","type":"uint256"}],"name":"setMaxMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isPause","type":"bool"}],"name":"setPause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_PrestigeMax","type":"uint256"}],"name":"setPrestigeMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_priceMint","type":"uint256"}],"name":"setPriceMint","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":[{"internalType":"address","name":"owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"stop","type":"uint256"}],"name":"tokensOfOwnerIn","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6002600b5560c0604052602060808190527f68747470733a2f2f6d65746164617461732e63726f6e6f7366632e636c75622f60a0908152620000459160109190620001c0565b50600a60128190556013556115b36014819055611388601555600060168190556101f460175560188190556037601955601a8190556003601b55601d91909155601e805460ff19169055601f553480156200009f57600080fd5b506040516200610838038062006108833981016040819052620000c29162000266565b60408051808201825260078152664e46542043464360c81b60208083019182528351808501909452600384526243464360e81b9084015281519192916200010c91600291620001c0565b50805162000122906003906020840190620001c0565b5060016000555050600880546001600160a01b03191633179055604080518082019091526007808252664e46542043464360c81b60209092019182526200016c91600991620001c0565b506040805180820190915260038082526243464360e81b60209092019182526200019991600a91620001c0565b50600c80546001600160a01b0319166001600160a01b0392909216919091179055620002d4565b828054620001ce9062000298565b90600052602060002090601f016020900481019282620001f257600085556200023d565b82601f106200020d57805160ff19168380011785556200023d565b828001600101855582156200023d579182015b828111156200023d57825182559160200191906001019062000220565b506200024b9291506200024f565b5090565b5b808211156200024b576000815560010162000250565b6000602082840312156200027957600080fd5b81516001600160a01b03811681146200029157600080fd5b9392505050565b600181811c90821680620002ad57607f821691505b602082108103620002ce57634e487b7160e01b600052602260045260246000fd5b50919050565b615e2480620002e46000396000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c806370a08231116101b8578063b88d4fde11610104578063d53635df116100a2578063e6f1c7521161007c578063e6f1c75214610755578063e985e9c514610768578063f8bc4f3a146107a4578063ff0938a7146107b757600080fd5b8063d53635df14610726578063d5abeb0114610739578063d5ec2d831461074257600080fd5b8063bedb86fb116100de578063bedb86fb146106cd578063c23dc68f146106e0578063c87b56dd14610700578063ce9f11a41461071357600080fd5b8063b88d4fde14610694578063ba875b3c146106a7578063bb1609a6146106ba57600080fd5b80639c10d60c11610171578063a5b590431161014b578063a5b5904314610611578063a6bdd4e71461061a578063a6f9dae114610679578063ad2070d31461068c57600080fd5b80639c10d60c146105e3578063a0bcfc7f146105eb578063a22cb465146105fe57600080fd5b806370a08231146105475780638462151c1461055a578063918cdd7d1461057a57806394b83035146105a857806395d89b41146105c857806399a2557a146105d057600080fd5b806335a42fa7116102925780635a2cdfce116102305780636352211e1161020a5780636352211e1461050557806364f22a4f14610518578063677ab70b146105215780636b78fc571461053457600080fd5b80635a2cdfce146104c95780635bbb2177146104d25780635eb25a94146104f257600080fd5b80633e82329e1161026c5780633e82329e1461048757806342842e0e1461049a578063547520fe146104ad578063553f241e146104c057600080fd5b806335a42fa71461044e5780633bba35e1146104615780633d5efefe1461047457600080fd5b806318160ddd116102ff57806323b872dd116102d957806323b872dd1461041657806323c86759146104295780632c4d4d18146104325780632eaeb0ac1461044557600080fd5b806318160ddd146103ea5780631a6ef66b146104045780631bda11d41461040d57600080fd5b806301ffc9a71461034757806306fdde031461036f578063081812fc14610384578063095ea7b3146103af5780630dee18e4146103c457806313a9831a146103d7575b600080fd5b61035a610355366004615537565b6107c4565b60405190151581526020015b60405180910390f35b610377610816565b60405161036691906155ac565b6103976103923660046155bf565b6108a8565b6040516001600160a01b039091168152602001610366565b6103c26103bd3660046155ed565b6108ec565b005b6103c26103d23660046155bf565b61098c565b600d54610397906001600160a01b031681565b60015460005403600019015b604051908152602001610366565b6103f660195481565b6103f660165481565b6103c2610424366004615619565b6109a8565b6103f660175481565b6103c261044036600461565a565b610b4a565b6103f660185481565b61035a61045c366004615677565b610b83565b600e54610397906001600160a01b031681565b61035a6104823660046155bf565b610e08565b61035a610495366004615780565b610f9a565b6103c26104a8366004615619565b61127d565b6103c26104bb3660046155bf565b61129d565b6103f6601b5481565b6103f6601a5481565b6104e56104e0366004615780565b6112b9565b60405161036691906157f0565b6103c261050036600461565a565b611386565b6103976105133660046155bf565b6113bf565b6103f660155481565b61035a61052f3660046155bf565b6113ca565b61035a610542366004615832565b611677565b6103f661055536600461565a565b611c8f565b61056d61056836600461565a565b611cdd565b6040516103669190615878565b61058d61058836600461565a565b611de5565b60408051938452602084019290925290820152606001610366565b6103f66105b63660046155bf565b601c6020526000908152604090205481565b610377611f01565b61056d6105de366004615677565b611f10565b6103c2612095565b6103c26105f9366004615907565b61348b565b6103c261060c36600461595f565b6134b9565b6103f6600b5481565b61062d6106283660046155bf565b61354e565b6040516103669190600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b6103c261068736600461565a565b613635565b6103c261366e565b6103c26106a2366004615994565b614a6a565b6103c26106b53660046155bf565b614ab4565b61035a6106c8366004615677565b614ad0565b6103c26106db366004615a13565b614b13565b6106f36106ee3660046155bf565b614b77565b6040516103669190615a2e565b61037761070e3660046155bf565b614bff565b6103c26107213660046155bf565b614cbf565b6103c261073436600461565a565b614cdb565b6103f660145481565b61062d6107503660046155bf565b614d14565b600c54610397906001600160a01b031681565b61035a610776366004615a3c565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b600f54610397906001600160a01b031681565b601e5461035a9060ff1681565b60006301ffc9a760e01b6001600160e01b0319831614806107f557506380ac58cd60e01b6001600160e01b03198316145b806108105750635b5e139f60e01b6001600160e01b03198316145b92915050565b60606002805461082590615a75565b80601f016020809104026020016040519081016040528092919081815260200182805461085190615a75565b801561089e5780601f106108735761010080835404028352916020019161089e565b820191906000526020600020905b81548152906001019060200180831161088157829003601f168201915b5050505050905090565b60006108b382614d56565b6108d0576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60006108f7826113bf565b9050336001600160a01b03821614610930576109138133610776565b610930576040516367d9dca160e11b815260040160405180910390fd5b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6008546001600160a01b031633146109a357600080fd5b600b55565b60006109b382614d8b565b9050836001600160a01b0316816001600160a01b0316146109e65760405162a1148160e81b815260040160405180910390fd5b60008281526006602052604090208054610a128187335b6001600160a01b039081169116811491141790565b610a3d57610a208633610776565b610a3d57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b038516610a6457604051633a954ecd60e21b815260040160405180910390fd5b8015610a6f57600082555b6001600160a01b038681166000908152600560205260408082208054600019019055918716808252919020805460010190554260a01b17600160e11b17600085815260046020526040812091909155600160e11b84169003610b0157600184016000818152600460205260408120549003610aff576000548114610aff5760008181526004602052604090208490555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050505050565b6008546001600160a01b03163314610b6157600080fd5b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546000906001600160a01b03163314610bb95760405162461bcd60e51b8152600401610bb090615aaf565b60405180910390fd5b836001600160a01b0316610bcc846113bf565b6001600160a01b031614610c3b5760405162461bcd60e51b815260206004820152603060248201527f5b4552524f525d203a20596f7520617265206e6f7420746865206f776e65722060448201526f6f662074686973204e4654204346432160801b6064820152608401610bb0565b60135460008481526011602052604090206004015403610cad5760405162461bcd60e51b815260206004820152602760248201527f5b4552524f525d203a20596f752061726520616c7265616479205072657374696044820152666765204d61782160c81b6064820152608401610bb0565b601354600084815260116020526040902060040154610ccd906001615b18565b03610d6357601254610ce0906001615b18565b600084815260116020526040902060030154610cfd908490615b18565b1115610d635760405162461bcd60e51b815260206004820152602f60248201527f5b4552524f525d203a20596f7520617265206e656564206d6f7265206c65766560448201526e6c207468616e20796f752063616e2160881b6064820152608401610bb0565b60008381526011602052604081206003810154600482015460059092015490925b85811015610dd857601254841015610da857610da1600185615b18565b9350610dc6565b60019350610db68484615b18565b9250610dc3600283615b18565b91505b80610dd081615b30565b915050610d84565b506000868152601160205260409020600381019390935560048301919091556005909101555060015b9392505050565b6040516331a9108f60e11b81526004810182905260009033903090636352211e90602401602060405180830381865afa158015610e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6d9190615b49565b6001600160a01b031614610ed95760405162461bcd60e51b815260206004820152602d60248201527f5b4552524f525d203a2054686973206973206163636f756e7420646f6e74206860448201526c6176652074686973204e46542160981b6064820152608401610bb0565b610ee282614dfa565b81600103610f2257600160166000828254610efd9190615b66565b92505081905550600160156000828254610f179190615b66565b90915550610f929050565b81600203610f5757600160186000828254610f3d9190615b66565b92505081905550600160176000828254610f179190615b66565b81600303610f92576001601a6000828254610f729190615b66565b92505081905550600160196000828254610f8c9190615b66565b90915550505b506001919050565b80516040516370a0823160e01b81523360048201526000919030906370a0823190602401602060405180830381865afa158015610fdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fff9190615b7d565b10156110625760405162461bcd60e51b815260206004820152602c60248201527f5b4552524f525d203a20596f7520646f6e74206861766520656e6f756768204e60448201526b667420696e20506172616d2160a01b6064820152608401610bb0565b60005b825181101561113857336001600160a01b0316306001600160a01b0316636352211e85848151811061109957611099615b96565b60200260200101516040518263ffffffff1660e01b81526004016110bf91815260200190565b602060405180830381865afa1580156110dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111009190615b49565b6001600160a01b0316146111265760405162461bcd60e51b8152600401610bb090615bac565b8061113081615b30565b915050611065565b5060005b82518110156112745782818151811061115757611157615b96565b602002602001015160010361119e576001601660008282546111799190615b66565b925050819055506001601560008282546111939190615b66565b909155506112409050565b8281815181106111b0576111b0615b96565b60200260200101516002036111ec576001601860008282546111d29190615b66565b925050819055506001601760008282546111939190615b66565b8281815181106111fe576111fe615b96565b6020026020010151600303611240576001601a60008282546112209190615b66565b9250508190555060016019600082825461123a9190615b66565b90915550505b61126283828151811061125557611255615b96565b6020026020010151614dfa565b8061126c81615b30565b91505061113c565b50600192915050565b61129883838360405180602001604052806000815250614a6a565b505050565b6008546001600160a01b031633146112b457600080fd5b601b55565b80516060906000816001600160401b038111156112d8576112d86156ac565b60405190808252806020026020018201604052801561132a57816020015b6040805160808101825260008082526020808301829052928201819052606082015282526000199092019101816112f65790505b50905060005b82811461137e5761135985828151811061134c5761134c615b96565b6020026020010151614b77565b82828151811061136b5761136b615b96565b6020908102919091010152600101611330565b509392505050565b6008546001600160a01b0316331461139d57600080fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600061081082614d8b565b6008546000906001600160a01b031633146113e457600080fd5b60008054905b8381101561144557611417601c60006114038486615b18565b815260200190815260200160002054614e08565b6114335760405162461bcd60e51b8152600401610bb090615c09565b8061143d81615b30565b9150506113ea565b506114503384614f53565b60005b8381101561166b57601c60006114698385615b18565b8152602001908152602001600020546002036114e5576018805490600061148f83615b30565b9091555050601854601160006114a58486615b18565b81526020019081526020016000206001018190555060026011600083856114cc9190615b18565b81526020810191909152604001600020600201556115b8565b601c60006114f38385615b18565b81526020019081526020016000205460030361155657601a805490600061151983615b30565b9091555050601a546011600061152f8486615b18565b81526020019081526020016000206001018190555060036011600083856114cc9190615b18565b6016805490600061156683615b30565b90915550506016546011600061157c8486615b18565b81526020019081526020016000206001018190555060016011600083856115a39190615b18565b81526020810191909152604001600020600201555b6115c28183615b18565b601160006115d08486615b18565b81526020019081526020016000206000018190555060016011600083856115f79190615b18565b815260200190815260200160002060030181905550600060116000838561161e9190615b18565b81526020019081526020016000206004018190555060016011600083856116459190615b18565b81526020810191909152604001600020600501558061166381615b30565b915050611453565b5060019150505b919050565b601e5460009060ff16156116cd5760405162461bcd60e51b815260206004820152601960248201527f5b4552524f525d203a204d696e742069732050617573656421000000000000006044820152606401610bb0565b601b5483111561173a5760405162461bcd60e51b815260206004820152603260248201527f5b4552524f525d203a20596f75206e656564206d6f7265206d696e74207468616044820152716e206d6178206d696e74207065722054582160701b6064820152608401610bb0565b600083600b5461174a9190615c58565b905082518110156117b45760405162461bcd60e51b815260206004820152602e60248201527f5b4552524f525d203a20596f7520646f6e74206861766520656e6f756768204a60448201526d65746f6e20696e20506172616d2160901b6064820152608401610bb0565b600c546040516370a0823160e01b815233600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa1580156117fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118209190615b7d565b101561187c5760405162461bcd60e51b815260206004820152602560248201527f5b4552524f525d203a20596f7520646f6e74206861766520656e6f756768204a60448201526465746f6e2160d81b6064820152608401610bb0565b60008054905b858110156118c95761189b601c60006114038486615b18565b6118b75760405162461bcd60e51b8152600401610bb090615c09565b806118c181615b30565b915050611882565b5060005b8281101561199d57600c54855133916001600160a01b031690636352211e908890859081106118fe576118fe615b96565b60200260200101516040518263ffffffff1660e01b815260040161192491815260200190565b602060405180830381865afa158015611941573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119659190615b49565b6001600160a01b03161461198b5760405162461bcd60e51b8152600401610bb090615bac565b8061199581615b30565b9150506118cd565b5060005b82811015611a5d57600c5485516001600160a01b03909116906323b872dd90339061dead908990869081106119d8576119d8615b96565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015611a3257600080fd5b505af1158015611a46573d6000803e3d6000fd5b505050508080611a5590615b30565b9150506119a1565b50611a683386614f53565b60005b85811015611c8357601c6000611a818385615b18565b815260200190815260200160002054600203611afd5760188054906000611aa783615b30565b909155505060185460116000611abd8486615b18565b8152602001908152602001600020600101819055506002601160008385611ae49190615b18565b8152602081019190915260400160002060020155611bd0565b601c6000611b0b8385615b18565b815260200190815260200160002054600303611b6e57601a8054906000611b3183615b30565b9091555050601a5460116000611b478486615b18565b8152602001908152602001600020600101819055506003601160008385611ae49190615b18565b60168054906000611b7e83615b30565b909155505060165460116000611b948486615b18565b8152602001908152602001600020600101819055506001601160008385611bbb9190615b18565b81526020810191909152604001600020600201555b611bda8183615b18565b60116000611be88486615b18565b8152602001908152602001600020600001819055506001601160008385611c0f9190615b18565b8152602001908152602001600020600301819055506000601160008385611c369190615b18565b8152602001908152602001600020600401819055506001601160008385611c5d9190615b18565b815260208101919091526040016000206005015580611c7b81615b30565b915050611a6b565b50600195945050505050565b60006001600160a01b038216611cb8576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600560205260409020546001600160401b031690565b60606000806000611ced85611c8f565b90506000816001600160401b03811115611d0957611d096156ac565b604051908082528060200260200182016040528015611d32578160200160208202803683370190505b509050611d5f60408051608081018252600080825260208201819052918101829052606081019190915290565b60015b838614611dd957611d7281615033565b91508160400151611dd15781516001600160a01b031615611d9257815194505b876001600160a01b0316856001600160a01b031603611dd15780838780600101985081518110611dc457611dc4615b96565b6020026020010181815250505b600101611d62565b50909695505050505050565b604051632118854760e21b81526001600160a01b03821660048201526000908190819081903090638462151c90602401600060405180830381865afa158015611e32573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e5a9190810190615c77565b90506000805b8251811015611ef75760116000848381518110611e7f57611e7f615b96565b6020026020010151815260200190815260200160002060020154915081600103611eb55785611ead81615b30565b965050611ee5565b81600203611ecf5784611ec781615b30565b955050611ee5565b81600303611ee55783611ee181615b30565b9450505b80611eef81615b30565b915050611e60565b5050509193909250565b60606003805461082590615a75565b6060818310611f3257604051631960ccad60e11b815260040160405180910390fd5b600080611f3e60005490565b90506001851015611f4e57600194505b80841115611f5a578093505b6000611f6587611c8f565b905084861015611f845785850381811015611f7e578091505b50611f88565b5060005b6000816001600160401b03811115611fa257611fa26156ac565b604051908082528060200260200182016040528015611fcb578160200160208202803683370190505b50905081600003611fe1579350610e0192505050565b6000611fec88614b77565b905060008160400151611ffd575080515b885b88811415801561200f5750848714155b156120845761201d81615033565b9250826040015161207c5782516001600160a01b03161561203d57825191505b8a6001600160a01b0316826001600160a01b03160361207c578084888060010199508151811061206f5761206f615b96565b6020026020010181815250505b600101611fff565b505050928352509095945050505050565b6008546001600160a01b031633146120ac57600080fd5b601f54156120fc5760405162461bcd60e51b815260206004820152601760248201527f5b4552524f525d203a20416c726561647920496e6974210000000000000000006044820152606401610bb0565b604080516106e08101825260758152607660208201526077918101919091526078606082015260796080820152607a60a0820152607b60c0820152607c60e0820152607d610100820152607e61012082015260fa61014082015261011f6101608201526101f161018082015261035c6101a08201526103cc6101c08201526103e76101e082015261043f61020082015261052261022082015261056c6102408201526105846102608201526106d061028082015261074c6102a08201526107676102c08201526107726102e082015261078561030082015261080b61032082015261081a6103408201526109456103608201526109f3610380820152610a766103a0820152610a8e6103c0820152610b106103e0820152610b63610400820152610b99610420820152610bcd610440820152610c0a610460820152610c64610480820152610c9f6104a0820152610cde6104c0820152610de76104e0820152610eda610500820152610f2861052082015261112a6105408201526111326105608201526111f161058082015261122e6105a08201526112c66105c082015261130d6105e082015261131561060082015261133f61062082015261138f6106408201526113e061066082015261148c6106808201526114fe6106a08201526115026106c08201526122ee9060039061506f565b60408051610c80810182526033815260346020820152603581830152603660608083019190915260376080830152603860a0830152603960c0830152603a60e0830152603b610100830152603c610120830152603d61014080840191909152603e610160840152603f6101808401526101a083019390935260416101c083015260426101e08301526043610200830152604461022083015260456102408301526046610260830152604761028083015260486102a083015260496102c0830152604a6102e08301819052604b610300840152604c610320840152610340830152604d610360830152604e610380830152604f6103a083015260506103c083015260516103e08301526052610400830152605361042083015260546104408301526055610460830152605661048083015260576104a083015260596104c0830152605a6104e0830152605b610500830152605c610520830152605d610540830152605e610560830152605f6105808301526105a082015260616105c082015260626105e08201526063610600820152606461062082015260656106408201526066610660820152606761068082015260686106a082015260696106c0820152606a6106e0820152606b610700820152606c610720820152606d610740820152606e610760820152606f61078082015260706107a082015260716107c082015260726107e082015260736108008201526074610820820152607f61084082015260ab61086082015260b161088082015260c76108a082015260cf6108c082015260d46108e082015260db61090082015260ec61092082015260fe6109408201526101046109608201526101086109808201526101256109a082015261012e6109c082015261013c6109e0820152610a00810191909152610158610a2082015261015c610a4082015261016f610a6082015261019b610a808201526101a3610aa08201526101b0610ac08201526101b7610ae08201526101cc610b008201526101e7610b208201526101ef610b408201526101fa610b60820152610209610b8082015261023a610ba0820152610245610bc082015261024a610be082015261025d610c00820152610270610c2082015261027e610c40820152610282610c60820152612639906002906150c0565b60408051610c80810182526102848152610288602082015261028e918101919091526102a360608201526102a860808201526102b360a08201526102ca60c08201526102cf60e08201526102d46101008201526102da6101208201526102db6101408201526102e16101608201526102e46101808201526102f36101a08201526103726101c08201526103766101e082015261037861020082015261037f6102208201526103a16102408201526103a56102608201526103a66102808201526103b46102a08201526103c26102c08201526103dc6102e08201526103e86103008201526103e96103208201526103ea6103408201526103f16103608201526103f661038082015261040c6103a08201526104126103c08201526104226103e082015261042b61040082015261043361042082015261044a61044082015261044e61046082015261045c6104808201526104846104a082015261048b6104c082015261049b6104e08201526104a26105008201526104b76105208201526104ba610540808301919091526104ca6105608301526104d16105808301526104dc6105a08301526104eb6105c08301526104f26105e08301526104f561060083015261051661062083015261052461064083015261052a6106608301526105316106808301526105346106a083015261053a6106c08301526106e082015261054e61070082015261055e6107208201526105636107408201526105656107608201526105686107808201526105776107a082015261057b6107c08201526105896107e08201526105986108008201526105a361082082015261141d6108408201526114246108608201526114296108808201526114346108a08201526114396108c08201526114526108e082015261145b61090082015261146561092082015261146661094082015261147661096082015261148d61098082015261149b6109a082015261149d6109c08201526114b26109e08201526114bb610a008201526114cb610a208201526114cc610a408201526114cd610a608201526114ce610a808201526114cf610aa08201526114d8610ac08201526114e8610ae08201526114f9610b008201526114fc610b20820152611509610b40820152611539610b6082015261153c610b80820152611546610ba0820152611555610bc0820152611573610be082015261157a610c0082015261157f610c2082015261159f610c408201526115a1610c608201526129cc906002906150c0565b60408051610c80810182526105b181526105bc60208201526105ca918101919091526105d460608201526105dc60808201526105e060a082018190526105e460c08301526105f860e083015261060261010083015261060861012083015261061361014083015261061461016083015261061f6101808301526106326101a08301526106336101c08301526106346101e08301526106466102008301526106496102208301526106566102408301526106576102608301526106746102808301526106976102a08301526106996102c083015261069e6102e08301526106a66103008301526106a86103208301526106ae6103408301526106b26103608301526106b56103808301526106c06103a083018190526106cb6103c08401526106cd6103e08401526106ea6104008401526106f06104208401526106f861044084015261070b61046084015261070d6104808401526107146104a08401526107156104c084015261071e6104e084015261072561050084015261073f6105208401526107416105408401526107436105608401526107536105808401526107556105a08401526107586105c08401526107599183019190915261076361060083015261076461062083015261076961064083015261076d6106608301526107746106808301526107756106a08301526107829082015261078a6106e08201526107a16107008201526107b36107208201526107c061074082018190526107c96107608301526107ca6107808301526107ea6107a08301526107f7908201526107ff6107e082015261080261080082015261081461082082015261081661084082015261081761086082015261081961088082015261082b6108a08201526108436108c08083019190915261086c6108e08301526108776109008301526108a26109208301526108ad6109408301526108af6109608301526109808201526108c56109a08201526108c66109c08201526108cd6109e08201526108d1610a008201526108d6610a208201526108d9610a408201526108e9610a608201526108ee610a80820152610906610aa082015261091d610ac082015261092e610ae082015261093e610b00820152610941610b2082015261094b610b40820152610968610b60820152610969610b80820152610972610ba082015261097a610bc08201526109ae610be08201526109b8610c008201526109bc610c208201526109cd610c408201526109e2610c60820152612d6290600290615111565b60408051610c80810182526109e581526109ea6020820152610a00918101829052610a0f6060820152610a586080820152610a5d60a0820152610a7060c0820152610a9060e0820152610a97610100820152610a9b610120820152610ad9610140820152610ae5610160820152610aed610180820152610af36101a0820152610af66101c0820152610afd6101e0820152610b0b610200820152610b206102208201819052610b28610240830152610b2a610260830152610b35610280830152610b3b6102a0830152610b4a6102c0830152610b956102e0830152610b98610300830152610b9d610320830152610ba5610340830152610bca610360830152610c02610380830152610c076103a0830152610c0d6103c0830152610c106103e0830152610c22610400830152610c26610420830152610c27610440830152610c3f610460830152610c61610480830152610c7a6104a0830152610c7b6104c0830152610c836104e0830152610c84610500830152610cb3610520830152610cb9610540830152610cc2610560830152610cce610580830152610ccf6105a0830152610ce86105c0830152610ceb6105e0830152610cf0610600830152610cf4610620830152610d13610640830152610d16610660830152610d18610680830152610d1a6106a0830152610d1c6106c0830152610d2f6106e0830152610d3b610700830152610d45610720830152610d48610740830152610d55610760830152610d67610780830152610d6f6107a0830152610d886107c0830152610d8a6107e0830152610d9b610800830152610d9f610820830152610da8610840830152610daf610860830152610db2610880830152610db46108a0830152610dbc6108c0830152610dd06108e0830152610dd7610900830152610dde610920830152610de4610940830152610dfd610960830152610dff610980830152610e026109a0830152610e126109c0830152610e136109e0830152610e2b92820192909252610e2e610a20820152610e47610a40820152610e53610a60820152610e84610a80820152610e93610aa0820152610e96610ac0820152610ebc610ae0820152610ec6610b00820152610ece91810191909152610ed7610b40820152610edd610b60820152610f0a610b80820152610f0f610ba0820152610f14610bc0820152610f1e610be0820152610f29610c00820152610f31610c20820152610f4f610c40820152610f55610c608201526130f790600290615111565b60408051610c8081018252610f578152610f616020820152610f6891810191909152610f6f6060820152610f706080820152610f7260a0820152610f7b60c0820152610f8960e0820152610f8a610100820152610f93610120820152610faa610140820152610fb4610160820152610fbe610180820152610fc56101a0820152610fcf6101c0820152610fd16101e0820152610fdb610200820152610ff3610220820152610ff5610240820152610ff861026082015261100461028082015261101b6102a08201526110206102c08201526110256102e082015261102761030082015261102d61032082015261102e61034082015261103d61036082015261106461038082015261108b6103a08201526110a56103c08201526110a66103e08201526110ad6104008201526110b46104208201526110c26104408201526110dc6104608201526110e36104808201526110e86104a08201526110f36104c08201526110f96104e08201526110fd61050082015261110061052082015261111461054082015261111b61056082015261111e6105808201526111206105a08201526111396105c082015261113a6105e082015261114461060082015261114761062082015261115961064082015261119b6106608201526111ab6106808201526111b36106a08201526111bb6106c08201526111be6106e08201526111c36107008201526111d56107208201526111e06107408201526111e96107608201526111ef6107808201526111f26107a08201526111fd6107c08201526112056107e082015261121761080082015261123c61082082015261123d61084082015261124161086082015261124461088082015261129d6108a08201526112a16108c08201526112a86108e08201526112bb6109008201526112bd6109208201526112c16109408201526112c46109608201526112cc6109808201526112d26109a08201526112e16109c08201526113106109e0820152611323610a00820152611333610a20820152611334610a4082015261133a610a60820152611350610a80820152611353610aa0820152611359610ac0820152611370610ae0820152611375610b00820152611380610b20820152611383610b408201526113a9610b608201526113b4610b808201526113b7610ba08201526113ba610bc08201526113ec610be08201526113f1610c008201526113f7610c20820152611415610c40820152611417610c6082015261348990600290615111565b565b6008546001600160a01b031633146134a257600080fd5b80516134b5906010906020840190615488565b5050565b336001600160a01b038316036134e25760405163b06307db60e01b815260040160405180910390fd5b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6135876040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61359082614d56565b6135dc5760405162461bcd60e51b815260206004820152601960248201527f5b4552524f525d203a20496e646578204e6f7420666f756e64000000000000006044820152606401610bb0565b50600090815260116020908152604091829020825160c08101845281548152600182015492810192909252600281015492820192909252600382015460608201526004820154608082015260059091015460a082015290565b6008546001600160a01b0316331461364c57600080fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6008546001600160a01b0316331461368557600080fd5b601f5460000361388657604080516106e08101825260758152607660208201526077918101919091526078606082015260796080820152607a60a0820152607b60c0820152607c60e0820152607d610100820152607e61012082015260fa61014082015261011f6101608201526101f161018082015261035c6101a08201526103cc6101c08201526103e76101e082015261043f61020082015261052261022082015261056c6102408201526105846102608201526106d061028082015261074c6102a08201526107676102c08201526107726102e082015261078561030082015261080b61032082015261081a6103408201526109456103608201526109f3610380820152610a766103a0820152610a8e6103c0820152610b106103e0820152610b63610400820152610b99610420820152610bcd610440820152610c0a610460820152610c64610480820152610c9f6104a0820152610cde6104c0820152610de76104e0820152610eda610500820152610f2861052082015261112a6105408201526111326105608201526111f161058082015261122e6105a08201526112c66105c082015261130d6105e082015261131561060082015261133f61062082015261138f6106408201526113e061066082015261148c6106808201526114fe6106a08201526115026106c08201526138819060039061506f565b614a53565b601f54600103613bdb5760408051610c80810182526032815260336020820152603481830152603560608083019190915260366080830152603760a0830152603860c0830152603960e0830152603a610100830152603b610120830152603c61014080840191909152603d610160840152603e610180840152603f6101a08401526101c083019390935260416101e08301526042610200830152604361022083015260446102408301526045610260830152604661028083015260476102a083015260486102c083015260496102e0830152604a6103008301819052604b610320840152604c610340840152610360830152604d610380830152604e6103a0830152604f6103c083015260506103e08301526051610400830152605261042083015260536104408301526054610460830152605561048083015260566104a083015260576104c083015260596104e0830152605a610500830152605b610520830152605c610540830152605d610560830152605e610580830152605f6105a08301526105c082015260616105e08201526062610600820152606361062082015260646106408201526065610660820152606661068082015260676106a082015260686106c082015260696106e0820152606a610700820152606b610720820152606c610740820152606d610760820152606e610780820152606f6107a082015260706107c082015260716107e082015260726108008201526073610820820152607f61084082015260ab61086082015260b161088082015260c76108a082015260cf6108c082015260d46108e082015260db61090082015260ec61092082015260fe6109408201526101046109608201526101086109808201526101256109a082015261012e6109c082015261013c6109e0820152610a00810191909152610158610a2082015261015c610a4082015261016f610a6082015261019b610a808201526101a3610aa08201526101b0610ac08201526101b7610ae08201526101cc610b008201526101e7610b208201526101ef610b408201526101fa610b60820152610209610b8082015261023a610ba0820152610245610bc082015261024a610be082015261025d610c00820152610270610c2082015261027e610c40820152610282610c60820152613881906002906150c0565b601f54600203613f785760408051610c80810182526102848152610288602082015261028e918101919091526102a360608201526102a860808201526102b360a08201526102ca60c08201526102cf60e08201526102d46101008201526102da6101208201526102db6101408201526102e16101608201526102e46101808201526102f36101a08201526103726101c08201526103766101e082015261037861020082015261037f6102208201526103a16102408201526103a56102608201526103a66102808201526103b46102a08201526103c26102c08201526103dc6102e08201526103e86103008201526103e96103208201526103ea6103408201526103f16103608201526103f661038082015261040c6103a08201526104126103c08201526104226103e082015261042b61040082015261043361042082015261044a61044082015261044e61046082015261045c6104808201526104846104a082015261048b6104c082015261049b6104e08201526104a26105008201526104b76105208201526104ba610540808301919091526104ca6105608301526104d16105808301526104dc6105a08301526104eb6105c08301526104f26105e08301526104f561060083015261051661062083015261052461064083015261052a6106608301526105316106808301526105346106a083015261053a6106c08301526106e082015261054e61070082015261055e6107208201526105636107408201526105656107608201526105686107808201526105776107a082015261057b6107c08201526105896107e08201526105986108008201526105a361082082015261141d6108408201526114246108608201526114296108808201526114346108a08201526114396108c08201526114526108e082015261145b61090082015261146561092082015261146661094082015261147661096082015261148d61098082015261149b6109a082015261149d6109c08201526114b26109e08201526114bb610a008201526114cb610a208201526114cc610a408201526114cd610a608201526114ce610a808201526114cf610aa08201526114d8610ac08201526114e8610ae08201526114f9610b008201526114fc610b20820152611509610b40820152611539610b6082015261153c610b80820152611546610ba0820152611555610bc0820152611573610be082015261157a610c0082015261157f610c2082015261159f610c408201526115a1610c60820152613881906002906150c0565b601f546003036143185760408051610c80810182526105b181526105bc60208201526105ca918101919091526105d460608201526105dc60808201526105e060a082018190526105e460c08301526105f860e083015261060261010083015261060861012083015261061361014083015261061461016083015261061f6101808301526106326101a08301526106336101c08301526106346101e08301526106466102008301526106496102208301526106566102408301526106576102608301526106746102808301526106976102a08301526106996102c083015261069e6102e08301526106a66103008301526106a86103208301526106ae6103408301526106b26103608301526106b56103808301526106c06103a083018190526106cb6103c08401526106cd6103e08401526106ea6104008401526106f06104208401526106f861044084015261070b61046084015261070d6104808401526107146104a08401526107156104c084015261071e6104e084015261072561050084015261073f6105208401526107416105408401526107436105608401526107536105808401526107556105a08401526107586105c08401526107599183019190915261076361060083015261076461062083015261076961064083015261076d6106608301526107746106808301526107756106a08301526107829082015261078a6106e08201526107a16107008201526107b36107208201526107c061074082018190526107c96107608301526107ca6107808301526107ea6107a08301526107f7908201526107ff6107e082015261080261080082015261081461082082015261081661084082015261081761086082015261081961088082015261082b6108a08201526108436108c08083019190915261086c6108e08301526108776109008301526108a26109208301526108ad6109408301526108af6109608301526109808201526108c56109a08201526108c66109c08201526108cd6109e08201526108d1610a008201526108d6610a208201526108d9610a408201526108e9610a608201526108ee610a80820152610906610aa082015261091d610ac082015261092e610ae082015261093e610b00820152610941610b2082015261094b610b40820152610968610b60820152610969610b80820152610972610ba082015261097a610bc08201526109ae610be08201526109b8610c008201526109bc610c208201526109cd610c408201526109e2610c6082015261388190600290615111565b601f546004036146b75760408051610c80810182526109e581526109ea6020820152610a00918101829052610a0f6060820152610a586080820152610a5d60a0820152610a7060c0820152610a9060e0820152610a97610100820152610a9b610120820152610ad9610140820152610ae5610160820152610aed610180820152610af36101a0820152610af66101c0820152610afd6101e0820152610b0b610200820152610b206102208201819052610b28610240830152610b2a610260830152610b35610280830152610b3b6102a0830152610b4a6102c0830152610b956102e0830152610b98610300830152610b9d610320830152610ba5610340830152610bca610360830152610c02610380830152610c076103a0830152610c0d6103c0830152610c106103e0830152610c22610400830152610c26610420830152610c27610440830152610c3f610460830152610c61610480830152610c7a6104a0830152610c7b6104c0830152610c836104e0830152610c84610500830152610cb3610520830152610cb9610540830152610cc2610560830152610cce610580830152610ccf6105a0830152610ce86105c0830152610ceb6105e0830152610cf0610600830152610cf4610620830152610d13610640830152610d16610660830152610d18610680830152610d1a6106a0830152610d1c6106c0830152610d2f6106e0830152610d3b610700830152610d45610720830152610d48610740830152610d55610760830152610d67610780830152610d6f6107a0830152610d886107c0830152610d8a6107e0830152610d9b610800830152610d9f610820830152610da8610840830152610daf610860830152610db2610880830152610db46108a0830152610dbc6108c0830152610dd06108e0830152610dd7610900830152610dde610920830152610de4610940830152610dfd610960830152610dff610980830152610e026109a0830152610e126109c0830152610e136109e0830152610e2b92820192909252610e2e610a20820152610e47610a40820152610e53610a60820152610e84610a80820152610e93610aa0820152610e96610ac0820152610ebc610ae0820152610ec6610b00820152610ece91810191909152610ed7610b40820152610edd610b60820152610f0a610b80820152610f0f610ba0820152610f14610bc0820152610f1e610be0820152610f29610c00820152610f31610c20820152610f4f610c40820152610f55610c6082015261388190600290615111565b601f546005036103425760408051610c8081018252610f578152610f616020820152610f6891810191909152610f6f6060820152610f706080820152610f7260a0820152610f7b60c0820152610f8960e0820152610f8a610100820152610f93610120820152610faa610140820152610fb4610160820152610fbe610180820152610fc56101a0820152610fcf6101c0820152610fd16101e0820152610fdb610200820152610ff3610220820152610ff5610240820152610ff861026082015261100461028082015261101b6102a08201526110206102c08201526110256102e082015261102761030082015261102d61032082015261102e61034082015261103d61036082015261106461038082015261108b6103a08201526110a56103c08201526110a66103e08201526110ad6104008201526110b46104208201526110c26104408201526110dc6104608201526110e36104808201526110e86104a08201526110f36104c08201526110f96104e08201526110fd61050082015261110061052082015261111461054082015261111b61056082015261111e6105808201526111206105a08201526111396105c082015261113a6105e082015261114461060082015261114761062082015261115961064082015261119b6106608201526111ab6106808201526111b36106a08201526111bb6106c08201526111be6106e08201526111c36107008201526111d56107208201526111e06107408201526111e96107608201526111ef6107808201526111f26107a08201526111fd6107c08201526112056107e082015261121761080082015261123c61082082015261123d61084082015261124161086082015261124461088082015261129d6108a08201526112a16108c08201526112a86108e08201526112bb6109008201526112bd6109208201526112c16109408201526112c46109608201526112cc6109808201526112d26109a08201526112e16109c08201526113106109e0820152611323610a00820152611333610a20820152611334610a4082015261133a610a60820152611350610a80820152611353610aa0820152611359610ac0820152611370610ae0820152611375610b00820152611380610b20820152611383610b408201526113a9610b608201526113b4610b808201526113b7610ba08201526113ba610bc08201526113ec610be08201526113f1610c008201526113f7610c20820152611415610c40820152611417610c6082015261388190600290615111565b601f8054906000614a6383615b30565b9190505550565b614a758484846109a8565b6001600160a01b0383163b15614aae57614a9184848484615179565b614aae576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b6008546001600160a01b03163314614acb57600080fd5b601255565b600d546000906001600160a01b03163314614afd5760405162461bcd60e51b8152600401610bb090615aaf565b614b08848484610b83565b506001949350505050565b6008546001600160a01b03163314614b2a57600080fd5b601e805460ff191682151590811790915560405160ff909116151581527f499bc16c623215e401b3844a28bb5803585b6dd4137cb2571fdb858590852bbc9060200160405180910390a150565b6040805160808101825260008082526020820181905291810182905260608101919091526040805160808101825260008082526020820181905291810182905260608101919091526001831080614bd057506000548310155b15614bdb5792915050565b614be483615033565b9050806040015115614bf65792915050565b610e0183615264565b6060614c0a82614d56565b614c2757604051630a14c4b560e41b815260040160405180910390fd5b6000614c31615299565b90506000614c3e8461354e565b90508151600003614c5e5760405180602001604052806000815250614cb7565b81614c6c82604001516152a8565b614c7983602001516152a8565b614c8684606001516152a8565b614c9385608001516152a8565b604051602001614ca7959493929190615d07565b6040516020818303038152906040525b949350505050565b6008546001600160a01b03163314614cd657600080fd5b601355565b6008546001600160a01b03163314614cf257600080fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b614d4d6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6108108261354e565b600081600111158015614d6a575060005482105b8015610810575050600090815260046020526040902054600160e01b161590565b60008180600111614de157600054811015614de15760008181526004602052604081205490600160e01b82169003614ddf575b80600003610e01575060001901600081815260046020526040902054614dbe565b505b604051636f96cda160e11b815260040160405180910390fd5b614e058160006152f7565b50565b600081600003614e745760155460165410610f925760405162461bcd60e51b815260206004820152602660248201527f5b4552524f525d203a20537570706c7920506c6179657220616c72656164792060448201526552656163682160d01b6064820152608401610bb0565b81600203614edb5760175460185410610f925760405162461bcd60e51b8152602060048201526024808201527f5b4552524f525d203a20537570706c7920476f616c20616c72656164792052656044820152636163682160e01b6064820152608401610bb0565b81600303614f4b57601954601a5410610f925760405162461bcd60e51b815260206004820152602c60248201527f5b4552524f525d203a20537570706c7920476f616c204361707461696e20616c60448201526b72656164792052656163682160a01b6064820152608401610bb0565b506000919050565b6000546001600160a01b038316614f7c57604051622e076360e81b815260040160405180910390fd5b81600003614f9d5760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b038316600081815260056020526040902080546801000000000000000185020190554260a01b6001841460e11b1717600082815260046020526040902055808281015b6040516001830192906001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4808210614fe75760005550505050565b60408051608081018252600080825260208201819052918101829052606081019190915260008281526004602052604090205461081090615441565b60005b60378110156112985782601c600084846037811061509257615092615b96565b602002015161ffff1681526020019081526020016000208190555080806150b890615b30565b915050615072565b60005b60648110156112985782601c60008484606481106150e3576150e3615b96565b602002015161ffff16815260200190815260200160002081905550808061510990615b30565b9150506150c3565b6008546001600160a01b0316331461512857600080fd5b60005b60648110156112985782601c600084846064811061514b5761514b615b96565b602002015161ffff16815260200190815260200160002081905550808061517190615b30565b91505061512b565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a02906151ae903390899088908890600401615d94565b6020604051808303816000875af19250505080156151e9575060408051601f3d908101601f191682019092526151e691810190615dd1565b60015b615247573d808015615217576040519150601f19603f3d011682016040523d82523d6000602084013e61521c565b606091505b50805160000361523f576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b60408051608081018252600080825260208201819052918101829052606081019190915261081061529483614d8b565b615441565b60606010805461082590615a75565b604080516080810191829052607f0190826030600a8206018353600a90045b80156152e557600183039250600a81066030018353600a90046152c7565b50819003601f19909101908152919050565b600061530283614d8b565b90508060008061532086600090815260066020526040902080549091565b915091508415615360576153358184336109fd565b615360576153438333610776565b61536057604051632ce44b5f60e11b815260040160405180910390fd5b801561536b57600082555b6001600160a01b038316600081815260056020526040902080546fffffffffffffffffffffffffffffffff0190554260a01b17600360e01b17600087815260046020526040812091909155600160e11b851690036153f9576001860160008181526004602052604081205490036153f75760005481146153f75760008181526004602052604090208590555b505b60405186906000906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050600180548101905550505050565b604080516080810182526001600160a01b038316815260a083901c6001600160401b03166020820152600160e01b831615159181019190915260e89190911c606082015290565b82805461549490615a75565b90600052602060002090601f0160209004810192826154b657600085556154fc565b82601f106154cf57805160ff19168380011785556154fc565b828001600101855582156154fc579182015b828111156154fc5782518255916020019190600101906154e1565b5061550892915061550c565b5090565b5b80821115615508576000815560010161550d565b6001600160e01b031981168114614e0557600080fd5b60006020828403121561554957600080fd5b8135610e0181615521565b60005b8381101561556f578181015183820152602001615557565b83811115614aae5750506000910152565b60008151808452615598816020860160208601615554565b601f01601f19169290920160200192915050565b602081526000610e016020830184615580565b6000602082840312156155d157600080fd5b5035919050565b6001600160a01b0381168114614e0557600080fd5b6000806040838503121561560057600080fd5b823561560b816155d8565b946020939093013593505050565b60008060006060848603121561562e57600080fd5b8335615639816155d8565b92506020840135615649816155d8565b929592945050506040919091013590565b60006020828403121561566c57600080fd5b8135610e01816155d8565b60008060006060848603121561568c57600080fd5b8335615697816155d8565b95602085013595506040909401359392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156156ea576156ea6156ac565b604052919050565b60006001600160401b0382111561570b5761570b6156ac565b5060051b60200190565b600082601f83011261572657600080fd5b8135602061573b615736836156f2565b6156c2565b82815260059290921b8401810191818101908684111561575a57600080fd5b8286015b84811015615775578035835291830191830161575e565b509695505050505050565b60006020828403121561579257600080fd5b81356001600160401b038111156157a857600080fd5b614cb784828501615715565b80516001600160a01b031682526020808201516001600160401b03169083015260408082015115159083015260609081015162ffffff16910152565b6020808252825182820181905260009190848201906040850190845b81811015611dd95761581f8385516157b4565b928401926080929092019160010161580c565b6000806040838503121561584557600080fd5b8235915060208301356001600160401b0381111561586257600080fd5b61586e85828601615715565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b81811015611dd957835183529284019291840191600101615894565b60006001600160401b038311156158c9576158c96156ac565b6158dc601f8401601f19166020016156c2565b90508281528383830111156158f057600080fd5b828260208301376000602084830101529392505050565b60006020828403121561591957600080fd5b81356001600160401b0381111561592f57600080fd5b8201601f8101841361594057600080fd5b614cb7848235602084016158b0565b8035801515811461167257600080fd5b6000806040838503121561597257600080fd5b823561597d816155d8565b915061598b6020840161594f565b90509250929050565b600080600080608085870312156159aa57600080fd5b84356159b5816155d8565b935060208501356159c5816155d8565b92506040850135915060608501356001600160401b038111156159e757600080fd5b8501601f810187136159f857600080fd5b615a07878235602084016158b0565b91505092959194509250565b600060208284031215615a2557600080fd5b610e018261594f565b6080810161081082846157b4565b60008060408385031215615a4f57600080fd5b8235615a5a816155d8565b91506020830135615a6a816155d8565b809150509250929050565b600181811c90821680615a8957607f821691505b602082108103615aa957634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526033908201527f5b4552524f525d20284e46542043464329203a2041646472657373206e6f7420604082015272617070726f766520666f72205570677261646560681b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115615b2b57615b2b615b02565b500190565b600060018201615b4257615b42615b02565b5060010190565b600060208284031215615b5b57600080fd5b8151610e01816155d8565b600082821015615b7857615b78615b02565b500390565b600060208284031215615b8f57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60208082526039908201527f5b4552524f525d203a2054686973206973206163636f756e7420646f6e74206860408201527f617665204f6e6520696e646578204e46542120286275726e2900000000000000606082015260800190565b6020808252602f908201527f5b4552524f525d203a20596f75722074797065206f66206e667420646573697260408201526e656420697320736f6c64206f75742160881b606082015260800190565b6000816000190483118215151615615c7257615c72615b02565b500290565b60006020808385031215615c8a57600080fd5b82516001600160401b03811115615ca057600080fd5b8301601f81018513615cb157600080fd5b8051615cbf615736826156f2565b81815260059190911b82018301908381019087831115615cde57600080fd5b928401925b82841015615cfc57835182529284019290840190615ce3565b979650505050505050565b60008651615d19818460208b01615554565b865190830190615d2d818360208b01615554565b602f60f81b91018181528651909190615d4d816001850160208b01615554565b600192019182018190528551615d6a816002850160208a01615554565b60029201918201528351615d85816003840160208801615554565b01600301979650505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090615dc790830184615580565b9695505050505050565b600060208284031215615de357600080fd5b8151610e018161552156fea2646970667358221220e306d9e7e99d781cfe5525cc182407c882383720443696b10a0a29eba361767964736f6c634300080e00330000000000000000000000003909da30e2b12a9fac09c0a4db963d7f707c98ff
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106103425760003560e01c806370a08231116101b8578063b88d4fde11610104578063d53635df116100a2578063e6f1c7521161007c578063e6f1c75214610755578063e985e9c514610768578063f8bc4f3a146107a4578063ff0938a7146107b757600080fd5b8063d53635df14610726578063d5abeb0114610739578063d5ec2d831461074257600080fd5b8063bedb86fb116100de578063bedb86fb146106cd578063c23dc68f146106e0578063c87b56dd14610700578063ce9f11a41461071357600080fd5b8063b88d4fde14610694578063ba875b3c146106a7578063bb1609a6146106ba57600080fd5b80639c10d60c11610171578063a5b590431161014b578063a5b5904314610611578063a6bdd4e71461061a578063a6f9dae114610679578063ad2070d31461068c57600080fd5b80639c10d60c146105e3578063a0bcfc7f146105eb578063a22cb465146105fe57600080fd5b806370a08231146105475780638462151c1461055a578063918cdd7d1461057a57806394b83035146105a857806395d89b41146105c857806399a2557a146105d057600080fd5b806335a42fa7116102925780635a2cdfce116102305780636352211e1161020a5780636352211e1461050557806364f22a4f14610518578063677ab70b146105215780636b78fc571461053457600080fd5b80635a2cdfce146104c95780635bbb2177146104d25780635eb25a94146104f257600080fd5b80633e82329e1161026c5780633e82329e1461048757806342842e0e1461049a578063547520fe146104ad578063553f241e146104c057600080fd5b806335a42fa71461044e5780633bba35e1146104615780633d5efefe1461047457600080fd5b806318160ddd116102ff57806323b872dd116102d957806323b872dd1461041657806323c86759146104295780632c4d4d18146104325780632eaeb0ac1461044557600080fd5b806318160ddd146103ea5780631a6ef66b146104045780631bda11d41461040d57600080fd5b806301ffc9a71461034757806306fdde031461036f578063081812fc14610384578063095ea7b3146103af5780630dee18e4146103c457806313a9831a146103d7575b600080fd5b61035a610355366004615537565b6107c4565b60405190151581526020015b60405180910390f35b610377610816565b60405161036691906155ac565b6103976103923660046155bf565b6108a8565b6040516001600160a01b039091168152602001610366565b6103c26103bd3660046155ed565b6108ec565b005b6103c26103d23660046155bf565b61098c565b600d54610397906001600160a01b031681565b60015460005403600019015b604051908152602001610366565b6103f660195481565b6103f660165481565b6103c2610424366004615619565b6109a8565b6103f660175481565b6103c261044036600461565a565b610b4a565b6103f660185481565b61035a61045c366004615677565b610b83565b600e54610397906001600160a01b031681565b61035a6104823660046155bf565b610e08565b61035a610495366004615780565b610f9a565b6103c26104a8366004615619565b61127d565b6103c26104bb3660046155bf565b61129d565b6103f6601b5481565b6103f6601a5481565b6104e56104e0366004615780565b6112b9565b60405161036691906157f0565b6103c261050036600461565a565b611386565b6103976105133660046155bf565b6113bf565b6103f660155481565b61035a61052f3660046155bf565b6113ca565b61035a610542366004615832565b611677565b6103f661055536600461565a565b611c8f565b61056d61056836600461565a565b611cdd565b6040516103669190615878565b61058d61058836600461565a565b611de5565b60408051938452602084019290925290820152606001610366565b6103f66105b63660046155bf565b601c6020526000908152604090205481565b610377611f01565b61056d6105de366004615677565b611f10565b6103c2612095565b6103c26105f9366004615907565b61348b565b6103c261060c36600461595f565b6134b9565b6103f6600b5481565b61062d6106283660046155bf565b61354e565b6040516103669190600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b6103c261068736600461565a565b613635565b6103c261366e565b6103c26106a2366004615994565b614a6a565b6103c26106b53660046155bf565b614ab4565b61035a6106c8366004615677565b614ad0565b6103c26106db366004615a13565b614b13565b6106f36106ee3660046155bf565b614b77565b6040516103669190615a2e565b61037761070e3660046155bf565b614bff565b6103c26107213660046155bf565b614cbf565b6103c261073436600461565a565b614cdb565b6103f660145481565b61062d6107503660046155bf565b614d14565b600c54610397906001600160a01b031681565b61035a610776366004615a3c565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b600f54610397906001600160a01b031681565b601e5461035a9060ff1681565b60006301ffc9a760e01b6001600160e01b0319831614806107f557506380ac58cd60e01b6001600160e01b03198316145b806108105750635b5e139f60e01b6001600160e01b03198316145b92915050565b60606002805461082590615a75565b80601f016020809104026020016040519081016040528092919081815260200182805461085190615a75565b801561089e5780601f106108735761010080835404028352916020019161089e565b820191906000526020600020905b81548152906001019060200180831161088157829003601f168201915b5050505050905090565b60006108b382614d56565b6108d0576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60006108f7826113bf565b9050336001600160a01b03821614610930576109138133610776565b610930576040516367d9dca160e11b815260040160405180910390fd5b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6008546001600160a01b031633146109a357600080fd5b600b55565b60006109b382614d8b565b9050836001600160a01b0316816001600160a01b0316146109e65760405162a1148160e81b815260040160405180910390fd5b60008281526006602052604090208054610a128187335b6001600160a01b039081169116811491141790565b610a3d57610a208633610776565b610a3d57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b038516610a6457604051633a954ecd60e21b815260040160405180910390fd5b8015610a6f57600082555b6001600160a01b038681166000908152600560205260408082208054600019019055918716808252919020805460010190554260a01b17600160e11b17600085815260046020526040812091909155600160e11b84169003610b0157600184016000818152600460205260408120549003610aff576000548114610aff5760008181526004602052604090208490555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050505050565b6008546001600160a01b03163314610b6157600080fd5b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546000906001600160a01b03163314610bb95760405162461bcd60e51b8152600401610bb090615aaf565b60405180910390fd5b836001600160a01b0316610bcc846113bf565b6001600160a01b031614610c3b5760405162461bcd60e51b815260206004820152603060248201527f5b4552524f525d203a20596f7520617265206e6f7420746865206f776e65722060448201526f6f662074686973204e4654204346432160801b6064820152608401610bb0565b60135460008481526011602052604090206004015403610cad5760405162461bcd60e51b815260206004820152602760248201527f5b4552524f525d203a20596f752061726520616c7265616479205072657374696044820152666765204d61782160c81b6064820152608401610bb0565b601354600084815260116020526040902060040154610ccd906001615b18565b03610d6357601254610ce0906001615b18565b600084815260116020526040902060030154610cfd908490615b18565b1115610d635760405162461bcd60e51b815260206004820152602f60248201527f5b4552524f525d203a20596f7520617265206e656564206d6f7265206c65766560448201526e6c207468616e20796f752063616e2160881b6064820152608401610bb0565b60008381526011602052604081206003810154600482015460059092015490925b85811015610dd857601254841015610da857610da1600185615b18565b9350610dc6565b60019350610db68484615b18565b9250610dc3600283615b18565b91505b80610dd081615b30565b915050610d84565b506000868152601160205260409020600381019390935560048301919091556005909101555060015b9392505050565b6040516331a9108f60e11b81526004810182905260009033903090636352211e90602401602060405180830381865afa158015610e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6d9190615b49565b6001600160a01b031614610ed95760405162461bcd60e51b815260206004820152602d60248201527f5b4552524f525d203a2054686973206973206163636f756e7420646f6e74206860448201526c6176652074686973204e46542160981b6064820152608401610bb0565b610ee282614dfa565b81600103610f2257600160166000828254610efd9190615b66565b92505081905550600160156000828254610f179190615b66565b90915550610f929050565b81600203610f5757600160186000828254610f3d9190615b66565b92505081905550600160176000828254610f179190615b66565b81600303610f92576001601a6000828254610f729190615b66565b92505081905550600160196000828254610f8c9190615b66565b90915550505b506001919050565b80516040516370a0823160e01b81523360048201526000919030906370a0823190602401602060405180830381865afa158015610fdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fff9190615b7d565b10156110625760405162461bcd60e51b815260206004820152602c60248201527f5b4552524f525d203a20596f7520646f6e74206861766520656e6f756768204e60448201526b667420696e20506172616d2160a01b6064820152608401610bb0565b60005b825181101561113857336001600160a01b0316306001600160a01b0316636352211e85848151811061109957611099615b96565b60200260200101516040518263ffffffff1660e01b81526004016110bf91815260200190565b602060405180830381865afa1580156110dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111009190615b49565b6001600160a01b0316146111265760405162461bcd60e51b8152600401610bb090615bac565b8061113081615b30565b915050611065565b5060005b82518110156112745782818151811061115757611157615b96565b602002602001015160010361119e576001601660008282546111799190615b66565b925050819055506001601560008282546111939190615b66565b909155506112409050565b8281815181106111b0576111b0615b96565b60200260200101516002036111ec576001601860008282546111d29190615b66565b925050819055506001601760008282546111939190615b66565b8281815181106111fe576111fe615b96565b6020026020010151600303611240576001601a60008282546112209190615b66565b9250508190555060016019600082825461123a9190615b66565b90915550505b61126283828151811061125557611255615b96565b6020026020010151614dfa565b8061126c81615b30565b91505061113c565b50600192915050565b61129883838360405180602001604052806000815250614a6a565b505050565b6008546001600160a01b031633146112b457600080fd5b601b55565b80516060906000816001600160401b038111156112d8576112d86156ac565b60405190808252806020026020018201604052801561132a57816020015b6040805160808101825260008082526020808301829052928201819052606082015282526000199092019101816112f65790505b50905060005b82811461137e5761135985828151811061134c5761134c615b96565b6020026020010151614b77565b82828151811061136b5761136b615b96565b6020908102919091010152600101611330565b509392505050565b6008546001600160a01b0316331461139d57600080fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600061081082614d8b565b6008546000906001600160a01b031633146113e457600080fd5b60008054905b8381101561144557611417601c60006114038486615b18565b815260200190815260200160002054614e08565b6114335760405162461bcd60e51b8152600401610bb090615c09565b8061143d81615b30565b9150506113ea565b506114503384614f53565b60005b8381101561166b57601c60006114698385615b18565b8152602001908152602001600020546002036114e5576018805490600061148f83615b30565b9091555050601854601160006114a58486615b18565b81526020019081526020016000206001018190555060026011600083856114cc9190615b18565b81526020810191909152604001600020600201556115b8565b601c60006114f38385615b18565b81526020019081526020016000205460030361155657601a805490600061151983615b30565b9091555050601a546011600061152f8486615b18565b81526020019081526020016000206001018190555060036011600083856114cc9190615b18565b6016805490600061156683615b30565b90915550506016546011600061157c8486615b18565b81526020019081526020016000206001018190555060016011600083856115a39190615b18565b81526020810191909152604001600020600201555b6115c28183615b18565b601160006115d08486615b18565b81526020019081526020016000206000018190555060016011600083856115f79190615b18565b815260200190815260200160002060030181905550600060116000838561161e9190615b18565b81526020019081526020016000206004018190555060016011600083856116459190615b18565b81526020810191909152604001600020600501558061166381615b30565b915050611453565b5060019150505b919050565b601e5460009060ff16156116cd5760405162461bcd60e51b815260206004820152601960248201527f5b4552524f525d203a204d696e742069732050617573656421000000000000006044820152606401610bb0565b601b5483111561173a5760405162461bcd60e51b815260206004820152603260248201527f5b4552524f525d203a20596f75206e656564206d6f7265206d696e74207468616044820152716e206d6178206d696e74207065722054582160701b6064820152608401610bb0565b600083600b5461174a9190615c58565b905082518110156117b45760405162461bcd60e51b815260206004820152602e60248201527f5b4552524f525d203a20596f7520646f6e74206861766520656e6f756768204a60448201526d65746f6e20696e20506172616d2160901b6064820152608401610bb0565b600c546040516370a0823160e01b815233600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa1580156117fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118209190615b7d565b101561187c5760405162461bcd60e51b815260206004820152602560248201527f5b4552524f525d203a20596f7520646f6e74206861766520656e6f756768204a60448201526465746f6e2160d81b6064820152608401610bb0565b60008054905b858110156118c95761189b601c60006114038486615b18565b6118b75760405162461bcd60e51b8152600401610bb090615c09565b806118c181615b30565b915050611882565b5060005b8281101561199d57600c54855133916001600160a01b031690636352211e908890859081106118fe576118fe615b96565b60200260200101516040518263ffffffff1660e01b815260040161192491815260200190565b602060405180830381865afa158015611941573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119659190615b49565b6001600160a01b03161461198b5760405162461bcd60e51b8152600401610bb090615bac565b8061199581615b30565b9150506118cd565b5060005b82811015611a5d57600c5485516001600160a01b03909116906323b872dd90339061dead908990869081106119d8576119d8615b96565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015611a3257600080fd5b505af1158015611a46573d6000803e3d6000fd5b505050508080611a5590615b30565b9150506119a1565b50611a683386614f53565b60005b85811015611c8357601c6000611a818385615b18565b815260200190815260200160002054600203611afd5760188054906000611aa783615b30565b909155505060185460116000611abd8486615b18565b8152602001908152602001600020600101819055506002601160008385611ae49190615b18565b8152602081019190915260400160002060020155611bd0565b601c6000611b0b8385615b18565b815260200190815260200160002054600303611b6e57601a8054906000611b3183615b30565b9091555050601a5460116000611b478486615b18565b8152602001908152602001600020600101819055506003601160008385611ae49190615b18565b60168054906000611b7e83615b30565b909155505060165460116000611b948486615b18565b8152602001908152602001600020600101819055506001601160008385611bbb9190615b18565b81526020810191909152604001600020600201555b611bda8183615b18565b60116000611be88486615b18565b8152602001908152602001600020600001819055506001601160008385611c0f9190615b18565b8152602001908152602001600020600301819055506000601160008385611c369190615b18565b8152602001908152602001600020600401819055506001601160008385611c5d9190615b18565b815260208101919091526040016000206005015580611c7b81615b30565b915050611a6b565b50600195945050505050565b60006001600160a01b038216611cb8576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600560205260409020546001600160401b031690565b60606000806000611ced85611c8f565b90506000816001600160401b03811115611d0957611d096156ac565b604051908082528060200260200182016040528015611d32578160200160208202803683370190505b509050611d5f60408051608081018252600080825260208201819052918101829052606081019190915290565b60015b838614611dd957611d7281615033565b91508160400151611dd15781516001600160a01b031615611d9257815194505b876001600160a01b0316856001600160a01b031603611dd15780838780600101985081518110611dc457611dc4615b96565b6020026020010181815250505b600101611d62565b50909695505050505050565b604051632118854760e21b81526001600160a01b03821660048201526000908190819081903090638462151c90602401600060405180830381865afa158015611e32573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e5a9190810190615c77565b90506000805b8251811015611ef75760116000848381518110611e7f57611e7f615b96565b6020026020010151815260200190815260200160002060020154915081600103611eb55785611ead81615b30565b965050611ee5565b81600203611ecf5784611ec781615b30565b955050611ee5565b81600303611ee55783611ee181615b30565b9450505b80611eef81615b30565b915050611e60565b5050509193909250565b60606003805461082590615a75565b6060818310611f3257604051631960ccad60e11b815260040160405180910390fd5b600080611f3e60005490565b90506001851015611f4e57600194505b80841115611f5a578093505b6000611f6587611c8f565b905084861015611f845785850381811015611f7e578091505b50611f88565b5060005b6000816001600160401b03811115611fa257611fa26156ac565b604051908082528060200260200182016040528015611fcb578160200160208202803683370190505b50905081600003611fe1579350610e0192505050565b6000611fec88614b77565b905060008160400151611ffd575080515b885b88811415801561200f5750848714155b156120845761201d81615033565b9250826040015161207c5782516001600160a01b03161561203d57825191505b8a6001600160a01b0316826001600160a01b03160361207c578084888060010199508151811061206f5761206f615b96565b6020026020010181815250505b600101611fff565b505050928352509095945050505050565b6008546001600160a01b031633146120ac57600080fd5b601f54156120fc5760405162461bcd60e51b815260206004820152601760248201527f5b4552524f525d203a20416c726561647920496e6974210000000000000000006044820152606401610bb0565b604080516106e08101825260758152607660208201526077918101919091526078606082015260796080820152607a60a0820152607b60c0820152607c60e0820152607d610100820152607e61012082015260fa61014082015261011f6101608201526101f161018082015261035c6101a08201526103cc6101c08201526103e76101e082015261043f61020082015261052261022082015261056c6102408201526105846102608201526106d061028082015261074c6102a08201526107676102c08201526107726102e082015261078561030082015261080b61032082015261081a6103408201526109456103608201526109f3610380820152610a766103a0820152610a8e6103c0820152610b106103e0820152610b63610400820152610b99610420820152610bcd610440820152610c0a610460820152610c64610480820152610c9f6104a0820152610cde6104c0820152610de76104e0820152610eda610500820152610f2861052082015261112a6105408201526111326105608201526111f161058082015261122e6105a08201526112c66105c082015261130d6105e082015261131561060082015261133f61062082015261138f6106408201526113e061066082015261148c6106808201526114fe6106a08201526115026106c08201526122ee9060039061506f565b60408051610c80810182526033815260346020820152603581830152603660608083019190915260376080830152603860a0830152603960c0830152603a60e0830152603b610100830152603c610120830152603d61014080840191909152603e610160840152603f6101808401526101a083019390935260416101c083015260426101e08301526043610200830152604461022083015260456102408301526046610260830152604761028083015260486102a083015260496102c0830152604a6102e08301819052604b610300840152604c610320840152610340830152604d610360830152604e610380830152604f6103a083015260506103c083015260516103e08301526052610400830152605361042083015260546104408301526055610460830152605661048083015260576104a083015260596104c0830152605a6104e0830152605b610500830152605c610520830152605d610540830152605e610560830152605f6105808301526105a082015260616105c082015260626105e08201526063610600820152606461062082015260656106408201526066610660820152606761068082015260686106a082015260696106c0820152606a6106e0820152606b610700820152606c610720820152606d610740820152606e610760820152606f61078082015260706107a082015260716107c082015260726107e082015260736108008201526074610820820152607f61084082015260ab61086082015260b161088082015260c76108a082015260cf6108c082015260d46108e082015260db61090082015260ec61092082015260fe6109408201526101046109608201526101086109808201526101256109a082015261012e6109c082015261013c6109e0820152610a00810191909152610158610a2082015261015c610a4082015261016f610a6082015261019b610a808201526101a3610aa08201526101b0610ac08201526101b7610ae08201526101cc610b008201526101e7610b208201526101ef610b408201526101fa610b60820152610209610b8082015261023a610ba0820152610245610bc082015261024a610be082015261025d610c00820152610270610c2082015261027e610c40820152610282610c60820152612639906002906150c0565b60408051610c80810182526102848152610288602082015261028e918101919091526102a360608201526102a860808201526102b360a08201526102ca60c08201526102cf60e08201526102d46101008201526102da6101208201526102db6101408201526102e16101608201526102e46101808201526102f36101a08201526103726101c08201526103766101e082015261037861020082015261037f6102208201526103a16102408201526103a56102608201526103a66102808201526103b46102a08201526103c26102c08201526103dc6102e08201526103e86103008201526103e96103208201526103ea6103408201526103f16103608201526103f661038082015261040c6103a08201526104126103c08201526104226103e082015261042b61040082015261043361042082015261044a61044082015261044e61046082015261045c6104808201526104846104a082015261048b6104c082015261049b6104e08201526104a26105008201526104b76105208201526104ba610540808301919091526104ca6105608301526104d16105808301526104dc6105a08301526104eb6105c08301526104f26105e08301526104f561060083015261051661062083015261052461064083015261052a6106608301526105316106808301526105346106a083015261053a6106c08301526106e082015261054e61070082015261055e6107208201526105636107408201526105656107608201526105686107808201526105776107a082015261057b6107c08201526105896107e08201526105986108008201526105a361082082015261141d6108408201526114246108608201526114296108808201526114346108a08201526114396108c08201526114526108e082015261145b61090082015261146561092082015261146661094082015261147661096082015261148d61098082015261149b6109a082015261149d6109c08201526114b26109e08201526114bb610a008201526114cb610a208201526114cc610a408201526114cd610a608201526114ce610a808201526114cf610aa08201526114d8610ac08201526114e8610ae08201526114f9610b008201526114fc610b20820152611509610b40820152611539610b6082015261153c610b80820152611546610ba0820152611555610bc0820152611573610be082015261157a610c0082015261157f610c2082015261159f610c408201526115a1610c608201526129cc906002906150c0565b60408051610c80810182526105b181526105bc60208201526105ca918101919091526105d460608201526105dc60808201526105e060a082018190526105e460c08301526105f860e083015261060261010083015261060861012083015261061361014083015261061461016083015261061f6101808301526106326101a08301526106336101c08301526106346101e08301526106466102008301526106496102208301526106566102408301526106576102608301526106746102808301526106976102a08301526106996102c083015261069e6102e08301526106a66103008301526106a86103208301526106ae6103408301526106b26103608301526106b56103808301526106c06103a083018190526106cb6103c08401526106cd6103e08401526106ea6104008401526106f06104208401526106f861044084015261070b61046084015261070d6104808401526107146104a08401526107156104c084015261071e6104e084015261072561050084015261073f6105208401526107416105408401526107436105608401526107536105808401526107556105a08401526107586105c08401526107599183019190915261076361060083015261076461062083015261076961064083015261076d6106608301526107746106808301526107756106a08301526107829082015261078a6106e08201526107a16107008201526107b36107208201526107c061074082018190526107c96107608301526107ca6107808301526107ea6107a08301526107f7908201526107ff6107e082015261080261080082015261081461082082015261081661084082015261081761086082015261081961088082015261082b6108a08201526108436108c08083019190915261086c6108e08301526108776109008301526108a26109208301526108ad6109408301526108af6109608301526109808201526108c56109a08201526108c66109c08201526108cd6109e08201526108d1610a008201526108d6610a208201526108d9610a408201526108e9610a608201526108ee610a80820152610906610aa082015261091d610ac082015261092e610ae082015261093e610b00820152610941610b2082015261094b610b40820152610968610b60820152610969610b80820152610972610ba082015261097a610bc08201526109ae610be08201526109b8610c008201526109bc610c208201526109cd610c408201526109e2610c60820152612d6290600290615111565b60408051610c80810182526109e581526109ea6020820152610a00918101829052610a0f6060820152610a586080820152610a5d60a0820152610a7060c0820152610a9060e0820152610a97610100820152610a9b610120820152610ad9610140820152610ae5610160820152610aed610180820152610af36101a0820152610af66101c0820152610afd6101e0820152610b0b610200820152610b206102208201819052610b28610240830152610b2a610260830152610b35610280830152610b3b6102a0830152610b4a6102c0830152610b956102e0830152610b98610300830152610b9d610320830152610ba5610340830152610bca610360830152610c02610380830152610c076103a0830152610c0d6103c0830152610c106103e0830152610c22610400830152610c26610420830152610c27610440830152610c3f610460830152610c61610480830152610c7a6104a0830152610c7b6104c0830152610c836104e0830152610c84610500830152610cb3610520830152610cb9610540830152610cc2610560830152610cce610580830152610ccf6105a0830152610ce86105c0830152610ceb6105e0830152610cf0610600830152610cf4610620830152610d13610640830152610d16610660830152610d18610680830152610d1a6106a0830152610d1c6106c0830152610d2f6106e0830152610d3b610700830152610d45610720830152610d48610740830152610d55610760830152610d67610780830152610d6f6107a0830152610d886107c0830152610d8a6107e0830152610d9b610800830152610d9f610820830152610da8610840830152610daf610860830152610db2610880830152610db46108a0830152610dbc6108c0830152610dd06108e0830152610dd7610900830152610dde610920830152610de4610940830152610dfd610960830152610dff610980830152610e026109a0830152610e126109c0830152610e136109e0830152610e2b92820192909252610e2e610a20820152610e47610a40820152610e53610a60820152610e84610a80820152610e93610aa0820152610e96610ac0820152610ebc610ae0820152610ec6610b00820152610ece91810191909152610ed7610b40820152610edd610b60820152610f0a610b80820152610f0f610ba0820152610f14610bc0820152610f1e610be0820152610f29610c00820152610f31610c20820152610f4f610c40820152610f55610c608201526130f790600290615111565b60408051610c8081018252610f578152610f616020820152610f6891810191909152610f6f6060820152610f706080820152610f7260a0820152610f7b60c0820152610f8960e0820152610f8a610100820152610f93610120820152610faa610140820152610fb4610160820152610fbe610180820152610fc56101a0820152610fcf6101c0820152610fd16101e0820152610fdb610200820152610ff3610220820152610ff5610240820152610ff861026082015261100461028082015261101b6102a08201526110206102c08201526110256102e082015261102761030082015261102d61032082015261102e61034082015261103d61036082015261106461038082015261108b6103a08201526110a56103c08201526110a66103e08201526110ad6104008201526110b46104208201526110c26104408201526110dc6104608201526110e36104808201526110e86104a08201526110f36104c08201526110f96104e08201526110fd61050082015261110061052082015261111461054082015261111b61056082015261111e6105808201526111206105a08201526111396105c082015261113a6105e082015261114461060082015261114761062082015261115961064082015261119b6106608201526111ab6106808201526111b36106a08201526111bb6106c08201526111be6106e08201526111c36107008201526111d56107208201526111e06107408201526111e96107608201526111ef6107808201526111f26107a08201526111fd6107c08201526112056107e082015261121761080082015261123c61082082015261123d61084082015261124161086082015261124461088082015261129d6108a08201526112a16108c08201526112a86108e08201526112bb6109008201526112bd6109208201526112c16109408201526112c46109608201526112cc6109808201526112d26109a08201526112e16109c08201526113106109e0820152611323610a00820152611333610a20820152611334610a4082015261133a610a60820152611350610a80820152611353610aa0820152611359610ac0820152611370610ae0820152611375610b00820152611380610b20820152611383610b408201526113a9610b608201526113b4610b808201526113b7610ba08201526113ba610bc08201526113ec610be08201526113f1610c008201526113f7610c20820152611415610c40820152611417610c6082015261348990600290615111565b565b6008546001600160a01b031633146134a257600080fd5b80516134b5906010906020840190615488565b5050565b336001600160a01b038316036134e25760405163b06307db60e01b815260040160405180910390fd5b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6135876040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b61359082614d56565b6135dc5760405162461bcd60e51b815260206004820152601960248201527f5b4552524f525d203a20496e646578204e6f7420666f756e64000000000000006044820152606401610bb0565b50600090815260116020908152604091829020825160c08101845281548152600182015492810192909252600281015492820192909252600382015460608201526004820154608082015260059091015460a082015290565b6008546001600160a01b0316331461364c57600080fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6008546001600160a01b0316331461368557600080fd5b601f5460000361388657604080516106e08101825260758152607660208201526077918101919091526078606082015260796080820152607a60a0820152607b60c0820152607c60e0820152607d610100820152607e61012082015260fa61014082015261011f6101608201526101f161018082015261035c6101a08201526103cc6101c08201526103e76101e082015261043f61020082015261052261022082015261056c6102408201526105846102608201526106d061028082015261074c6102a08201526107676102c08201526107726102e082015261078561030082015261080b61032082015261081a6103408201526109456103608201526109f3610380820152610a766103a0820152610a8e6103c0820152610b106103e0820152610b63610400820152610b99610420820152610bcd610440820152610c0a610460820152610c64610480820152610c9f6104a0820152610cde6104c0820152610de76104e0820152610eda610500820152610f2861052082015261112a6105408201526111326105608201526111f161058082015261122e6105a08201526112c66105c082015261130d6105e082015261131561060082015261133f61062082015261138f6106408201526113e061066082015261148c6106808201526114fe6106a08201526115026106c08201526138819060039061506f565b614a53565b601f54600103613bdb5760408051610c80810182526032815260336020820152603481830152603560608083019190915260366080830152603760a0830152603860c0830152603960e0830152603a610100830152603b610120830152603c61014080840191909152603d610160840152603e610180840152603f6101a08401526101c083019390935260416101e08301526042610200830152604361022083015260446102408301526045610260830152604661028083015260476102a083015260486102c083015260496102e0830152604a6103008301819052604b610320840152604c610340840152610360830152604d610380830152604e6103a0830152604f6103c083015260506103e08301526051610400830152605261042083015260536104408301526054610460830152605561048083015260566104a083015260576104c083015260596104e0830152605a610500830152605b610520830152605c610540830152605d610560830152605e610580830152605f6105a08301526105c082015260616105e08201526062610600820152606361062082015260646106408201526065610660820152606661068082015260676106a082015260686106c082015260696106e0820152606a610700820152606b610720820152606c610740820152606d610760820152606e610780820152606f6107a082015260706107c082015260716107e082015260726108008201526073610820820152607f61084082015260ab61086082015260b161088082015260c76108a082015260cf6108c082015260d46108e082015260db61090082015260ec61092082015260fe6109408201526101046109608201526101086109808201526101256109a082015261012e6109c082015261013c6109e0820152610a00810191909152610158610a2082015261015c610a4082015261016f610a6082015261019b610a808201526101a3610aa08201526101b0610ac08201526101b7610ae08201526101cc610b008201526101e7610b208201526101ef610b408201526101fa610b60820152610209610b8082015261023a610ba0820152610245610bc082015261024a610be082015261025d610c00820152610270610c2082015261027e610c40820152610282610c60820152613881906002906150c0565b601f54600203613f785760408051610c80810182526102848152610288602082015261028e918101919091526102a360608201526102a860808201526102b360a08201526102ca60c08201526102cf60e08201526102d46101008201526102da6101208201526102db6101408201526102e16101608201526102e46101808201526102f36101a08201526103726101c08201526103766101e082015261037861020082015261037f6102208201526103a16102408201526103a56102608201526103a66102808201526103b46102a08201526103c26102c08201526103dc6102e08201526103e86103008201526103e96103208201526103ea6103408201526103f16103608201526103f661038082015261040c6103a08201526104126103c08201526104226103e082015261042b61040082015261043361042082015261044a61044082015261044e61046082015261045c6104808201526104846104a082015261048b6104c082015261049b6104e08201526104a26105008201526104b76105208201526104ba610540808301919091526104ca6105608301526104d16105808301526104dc6105a08301526104eb6105c08301526104f26105e08301526104f561060083015261051661062083015261052461064083015261052a6106608301526105316106808301526105346106a083015261053a6106c08301526106e082015261054e61070082015261055e6107208201526105636107408201526105656107608201526105686107808201526105776107a082015261057b6107c08201526105896107e08201526105986108008201526105a361082082015261141d6108408201526114246108608201526114296108808201526114346108a08201526114396108c08201526114526108e082015261145b61090082015261146561092082015261146661094082015261147661096082015261148d61098082015261149b6109a082015261149d6109c08201526114b26109e08201526114bb610a008201526114cb610a208201526114cc610a408201526114cd610a608201526114ce610a808201526114cf610aa08201526114d8610ac08201526114e8610ae08201526114f9610b008201526114fc610b20820152611509610b40820152611539610b6082015261153c610b80820152611546610ba0820152611555610bc0820152611573610be082015261157a610c0082015261157f610c2082015261159f610c408201526115a1610c60820152613881906002906150c0565b601f546003036143185760408051610c80810182526105b181526105bc60208201526105ca918101919091526105d460608201526105dc60808201526105e060a082018190526105e460c08301526105f860e083015261060261010083015261060861012083015261061361014083015261061461016083015261061f6101808301526106326101a08301526106336101c08301526106346101e08301526106466102008301526106496102208301526106566102408301526106576102608301526106746102808301526106976102a08301526106996102c083015261069e6102e08301526106a66103008301526106a86103208301526106ae6103408301526106b26103608301526106b56103808301526106c06103a083018190526106cb6103c08401526106cd6103e08401526106ea6104008401526106f06104208401526106f861044084015261070b61046084015261070d6104808401526107146104a08401526107156104c084015261071e6104e084015261072561050084015261073f6105208401526107416105408401526107436105608401526107536105808401526107556105a08401526107586105c08401526107599183019190915261076361060083015261076461062083015261076961064083015261076d6106608301526107746106808301526107756106a08301526107829082015261078a6106e08201526107a16107008201526107b36107208201526107c061074082018190526107c96107608301526107ca6107808301526107ea6107a08301526107f7908201526107ff6107e082015261080261080082015261081461082082015261081661084082015261081761086082015261081961088082015261082b6108a08201526108436108c08083019190915261086c6108e08301526108776109008301526108a26109208301526108ad6109408301526108af6109608301526109808201526108c56109a08201526108c66109c08201526108cd6109e08201526108d1610a008201526108d6610a208201526108d9610a408201526108e9610a608201526108ee610a80820152610906610aa082015261091d610ac082015261092e610ae082015261093e610b00820152610941610b2082015261094b610b40820152610968610b60820152610969610b80820152610972610ba082015261097a610bc08201526109ae610be08201526109b8610c008201526109bc610c208201526109cd610c408201526109e2610c6082015261388190600290615111565b601f546004036146b75760408051610c80810182526109e581526109ea6020820152610a00918101829052610a0f6060820152610a586080820152610a5d60a0820152610a7060c0820152610a9060e0820152610a97610100820152610a9b610120820152610ad9610140820152610ae5610160820152610aed610180820152610af36101a0820152610af66101c0820152610afd6101e0820152610b0b610200820152610b206102208201819052610b28610240830152610b2a610260830152610b35610280830152610b3b6102a0830152610b4a6102c0830152610b956102e0830152610b98610300830152610b9d610320830152610ba5610340830152610bca610360830152610c02610380830152610c076103a0830152610c0d6103c0830152610c106103e0830152610c22610400830152610c26610420830152610c27610440830152610c3f610460830152610c61610480830152610c7a6104a0830152610c7b6104c0830152610c836104e0830152610c84610500830152610cb3610520830152610cb9610540830152610cc2610560830152610cce610580830152610ccf6105a0830152610ce86105c0830152610ceb6105e0830152610cf0610600830152610cf4610620830152610d13610640830152610d16610660830152610d18610680830152610d1a6106a0830152610d1c6106c0830152610d2f6106e0830152610d3b610700830152610d45610720830152610d48610740830152610d55610760830152610d67610780830152610d6f6107a0830152610d886107c0830152610d8a6107e0830152610d9b610800830152610d9f610820830152610da8610840830152610daf610860830152610db2610880830152610db46108a0830152610dbc6108c0830152610dd06108e0830152610dd7610900830152610dde610920830152610de4610940830152610dfd610960830152610dff610980830152610e026109a0830152610e126109c0830152610e136109e0830152610e2b92820192909252610e2e610a20820152610e47610a40820152610e53610a60820152610e84610a80820152610e93610aa0820152610e96610ac0820152610ebc610ae0820152610ec6610b00820152610ece91810191909152610ed7610b40820152610edd610b60820152610f0a610b80820152610f0f610ba0820152610f14610bc0820152610f1e610be0820152610f29610c00820152610f31610c20820152610f4f610c40820152610f55610c6082015261388190600290615111565b601f546005036103425760408051610c8081018252610f578152610f616020820152610f6891810191909152610f6f6060820152610f706080820152610f7260a0820152610f7b60c0820152610f8960e0820152610f8a610100820152610f93610120820152610faa610140820152610fb4610160820152610fbe610180820152610fc56101a0820152610fcf6101c0820152610fd16101e0820152610fdb610200820152610ff3610220820152610ff5610240820152610ff861026082015261100461028082015261101b6102a08201526110206102c08201526110256102e082015261102761030082015261102d61032082015261102e61034082015261103d61036082015261106461038082015261108b6103a08201526110a56103c08201526110a66103e08201526110ad6104008201526110b46104208201526110c26104408201526110dc6104608201526110e36104808201526110e86104a08201526110f36104c08201526110f96104e08201526110fd61050082015261110061052082015261111461054082015261111b61056082015261111e6105808201526111206105a08201526111396105c082015261113a6105e082015261114461060082015261114761062082015261115961064082015261119b6106608201526111ab6106808201526111b36106a08201526111bb6106c08201526111be6106e08201526111c36107008201526111d56107208201526111e06107408201526111e96107608201526111ef6107808201526111f26107a08201526111fd6107c08201526112056107e082015261121761080082015261123c61082082015261123d61084082015261124161086082015261124461088082015261129d6108a08201526112a16108c08201526112a86108e08201526112bb6109008201526112bd6109208201526112c16109408201526112c46109608201526112cc6109808201526112d26109a08201526112e16109c08201526113106109e0820152611323610a00820152611333610a20820152611334610a4082015261133a610a60820152611350610a80820152611353610aa0820152611359610ac0820152611370610ae0820152611375610b00820152611380610b20820152611383610b408201526113a9610b608201526113b4610b808201526113b7610ba08201526113ba610bc08201526113ec610be08201526113f1610c008201526113f7610c20820152611415610c40820152611417610c6082015261388190600290615111565b601f8054906000614a6383615b30565b9190505550565b614a758484846109a8565b6001600160a01b0383163b15614aae57614a9184848484615179565b614aae576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b6008546001600160a01b03163314614acb57600080fd5b601255565b600d546000906001600160a01b03163314614afd5760405162461bcd60e51b8152600401610bb090615aaf565b614b08848484610b83565b506001949350505050565b6008546001600160a01b03163314614b2a57600080fd5b601e805460ff191682151590811790915560405160ff909116151581527f499bc16c623215e401b3844a28bb5803585b6dd4137cb2571fdb858590852bbc9060200160405180910390a150565b6040805160808101825260008082526020820181905291810182905260608101919091526040805160808101825260008082526020820181905291810182905260608101919091526001831080614bd057506000548310155b15614bdb5792915050565b614be483615033565b9050806040015115614bf65792915050565b610e0183615264565b6060614c0a82614d56565b614c2757604051630a14c4b560e41b815260040160405180910390fd5b6000614c31615299565b90506000614c3e8461354e565b90508151600003614c5e5760405180602001604052806000815250614cb7565b81614c6c82604001516152a8565b614c7983602001516152a8565b614c8684606001516152a8565b614c9385608001516152a8565b604051602001614ca7959493929190615d07565b6040516020818303038152906040525b949350505050565b6008546001600160a01b03163314614cd657600080fd5b601355565b6008546001600160a01b03163314614cf257600080fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b614d4d6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6108108261354e565b600081600111158015614d6a575060005482105b8015610810575050600090815260046020526040902054600160e01b161590565b60008180600111614de157600054811015614de15760008181526004602052604081205490600160e01b82169003614ddf575b80600003610e01575060001901600081815260046020526040902054614dbe565b505b604051636f96cda160e11b815260040160405180910390fd5b614e058160006152f7565b50565b600081600003614e745760155460165410610f925760405162461bcd60e51b815260206004820152602660248201527f5b4552524f525d203a20537570706c7920506c6179657220616c72656164792060448201526552656163682160d01b6064820152608401610bb0565b81600203614edb5760175460185410610f925760405162461bcd60e51b8152602060048201526024808201527f5b4552524f525d203a20537570706c7920476f616c20616c72656164792052656044820152636163682160e01b6064820152608401610bb0565b81600303614f4b57601954601a5410610f925760405162461bcd60e51b815260206004820152602c60248201527f5b4552524f525d203a20537570706c7920476f616c204361707461696e20616c60448201526b72656164792052656163682160a01b6064820152608401610bb0565b506000919050565b6000546001600160a01b038316614f7c57604051622e076360e81b815260040160405180910390fd5b81600003614f9d5760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b038316600081815260056020526040902080546801000000000000000185020190554260a01b6001841460e11b1717600082815260046020526040902055808281015b6040516001830192906001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4808210614fe75760005550505050565b60408051608081018252600080825260208201819052918101829052606081019190915260008281526004602052604090205461081090615441565b60005b60378110156112985782601c600084846037811061509257615092615b96565b602002015161ffff1681526020019081526020016000208190555080806150b890615b30565b915050615072565b60005b60648110156112985782601c60008484606481106150e3576150e3615b96565b602002015161ffff16815260200190815260200160002081905550808061510990615b30565b9150506150c3565b6008546001600160a01b0316331461512857600080fd5b60005b60648110156112985782601c600084846064811061514b5761514b615b96565b602002015161ffff16815260200190815260200160002081905550808061517190615b30565b91505061512b565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a02906151ae903390899088908890600401615d94565b6020604051808303816000875af19250505080156151e9575060408051601f3d908101601f191682019092526151e691810190615dd1565b60015b615247573d808015615217576040519150601f19603f3d011682016040523d82523d6000602084013e61521c565b606091505b50805160000361523f576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b60408051608081018252600080825260208201819052918101829052606081019190915261081061529483614d8b565b615441565b60606010805461082590615a75565b604080516080810191829052607f0190826030600a8206018353600a90045b80156152e557600183039250600a81066030018353600a90046152c7565b50819003601f19909101908152919050565b600061530283614d8b565b90508060008061532086600090815260066020526040902080549091565b915091508415615360576153358184336109fd565b615360576153438333610776565b61536057604051632ce44b5f60e11b815260040160405180910390fd5b801561536b57600082555b6001600160a01b038316600081815260056020526040902080546fffffffffffffffffffffffffffffffff0190554260a01b17600360e01b17600087815260046020526040812091909155600160e11b851690036153f9576001860160008181526004602052604081205490036153f75760005481146153f75760008181526004602052604090208590555b505b60405186906000906001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050600180548101905550505050565b604080516080810182526001600160a01b038316815260a083901c6001600160401b03166020820152600160e01b831615159181019190915260e89190911c606082015290565b82805461549490615a75565b90600052602060002090601f0160209004810192826154b657600085556154fc565b82601f106154cf57805160ff19168380011785556154fc565b828001600101855582156154fc579182015b828111156154fc5782518255916020019190600101906154e1565b5061550892915061550c565b5090565b5b80821115615508576000815560010161550d565b6001600160e01b031981168114614e0557600080fd5b60006020828403121561554957600080fd5b8135610e0181615521565b60005b8381101561556f578181015183820152602001615557565b83811115614aae5750506000910152565b60008151808452615598816020860160208601615554565b601f01601f19169290920160200192915050565b602081526000610e016020830184615580565b6000602082840312156155d157600080fd5b5035919050565b6001600160a01b0381168114614e0557600080fd5b6000806040838503121561560057600080fd5b823561560b816155d8565b946020939093013593505050565b60008060006060848603121561562e57600080fd5b8335615639816155d8565b92506020840135615649816155d8565b929592945050506040919091013590565b60006020828403121561566c57600080fd5b8135610e01816155d8565b60008060006060848603121561568c57600080fd5b8335615697816155d8565b95602085013595506040909401359392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156156ea576156ea6156ac565b604052919050565b60006001600160401b0382111561570b5761570b6156ac565b5060051b60200190565b600082601f83011261572657600080fd5b8135602061573b615736836156f2565b6156c2565b82815260059290921b8401810191818101908684111561575a57600080fd5b8286015b84811015615775578035835291830191830161575e565b509695505050505050565b60006020828403121561579257600080fd5b81356001600160401b038111156157a857600080fd5b614cb784828501615715565b80516001600160a01b031682526020808201516001600160401b03169083015260408082015115159083015260609081015162ffffff16910152565b6020808252825182820181905260009190848201906040850190845b81811015611dd95761581f8385516157b4565b928401926080929092019160010161580c565b6000806040838503121561584557600080fd5b8235915060208301356001600160401b0381111561586257600080fd5b61586e85828601615715565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b81811015611dd957835183529284019291840191600101615894565b60006001600160401b038311156158c9576158c96156ac565b6158dc601f8401601f19166020016156c2565b90508281528383830111156158f057600080fd5b828260208301376000602084830101529392505050565b60006020828403121561591957600080fd5b81356001600160401b0381111561592f57600080fd5b8201601f8101841361594057600080fd5b614cb7848235602084016158b0565b8035801515811461167257600080fd5b6000806040838503121561597257600080fd5b823561597d816155d8565b915061598b6020840161594f565b90509250929050565b600080600080608085870312156159aa57600080fd5b84356159b5816155d8565b935060208501356159c5816155d8565b92506040850135915060608501356001600160401b038111156159e757600080fd5b8501601f810187136159f857600080fd5b615a07878235602084016158b0565b91505092959194509250565b600060208284031215615a2557600080fd5b610e018261594f565b6080810161081082846157b4565b60008060408385031215615a4f57600080fd5b8235615a5a816155d8565b91506020830135615a6a816155d8565b809150509250929050565b600181811c90821680615a8957607f821691505b602082108103615aa957634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526033908201527f5b4552524f525d20284e46542043464329203a2041646472657373206e6f7420604082015272617070726f766520666f72205570677261646560681b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115615b2b57615b2b615b02565b500190565b600060018201615b4257615b42615b02565b5060010190565b600060208284031215615b5b57600080fd5b8151610e01816155d8565b600082821015615b7857615b78615b02565b500390565b600060208284031215615b8f57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60208082526039908201527f5b4552524f525d203a2054686973206973206163636f756e7420646f6e74206860408201527f617665204f6e6520696e646578204e46542120286275726e2900000000000000606082015260800190565b6020808252602f908201527f5b4552524f525d203a20596f75722074797065206f66206e667420646573697260408201526e656420697320736f6c64206f75742160881b606082015260800190565b6000816000190483118215151615615c7257615c72615b02565b500290565b60006020808385031215615c8a57600080fd5b82516001600160401b03811115615ca057600080fd5b8301601f81018513615cb157600080fd5b8051615cbf615736826156f2565b81815260059190911b82018301908381019087831115615cde57600080fd5b928401925b82841015615cfc57835182529284019290840190615ce3565b979650505050505050565b60008651615d19818460208b01615554565b865190830190615d2d818360208b01615554565b602f60f81b91018181528651909190615d4d816001850160208b01615554565b600192019182018190528551615d6a816002850160208a01615554565b60029201918201528351615d85816003840160208801615554565b01600301979650505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090615dc790830184615580565b9695505050505050565b600060208284031215615de357600080fd5b8151610e018161552156fea2646970667358221220e306d9e7e99d781cfe5525cc182407c882383720443696b10a0a29eba361767964736f6c634300080e0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003909da30e2b12a9fac09c0a4db963d7f707c98ff
-----Decoded View---------------
Arg [0] : _adrJeton (address): 0x3909da30e2b12a9fac09c0a4db963d7f707c98ff
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000003909da30e2b12a9fac09c0a4db963d7f707c98ff
Deployed ByteCode Sourcemap
54064:20399:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14672:615;;;;;;:::i;:::-;;:::i;:::-;;;565:14:1;;558:22;540:41;;528:2;513:18;14672:615:0;;;;;;;;20319:100;;;:::i;:::-;;;;;;;:::i;22265:204::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1692:32:1;;;1674:51;;1662:2;1647:18;22265:204:0;1528:203:1;21813:386:0;;;;;;:::i;:::-;;:::i;:::-;;64084:102;;;;;;:::i;:::-;;:::i;54247:26::-;;;;;-1:-1:-1;;;;;54247:26:0;;;13726:315;64922:1;13992:12;13779:7;13976:13;:28;-1:-1:-1;;13976:46:0;13726:315;;;2338:25:1;;;2326:2;2311:18;13726:315:0;2192:177:1;54700:34:0;;;;;;54577:36;;;;;;31530:2800;;;;;;:::i;:::-;;:::i;54620:32::-;;;;;;63834:105;;;;;;:::i;:::-;;:::i;54659:34::-;;;;;;67813:1141;;;;;;:::i;:::-;;:::i;54280:24::-;;;;;-1:-1:-1;;;;;54280:24:0;;;68973:605;;;;;;:::i;:::-;;:::i;69586:1010::-;;;;;;:::i;:::-;;:::i;23155:185::-;;;;;;:::i;:::-;;:::i;64537:117::-;;;;;;:::i;:::-;;:::i;54787:28::-;;;;;;54741:37;;;;;;48896:468;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;63949:113::-;;;;;;:::i;:::-;;:::i;20108:144::-;;;;;;:::i;:::-;;:::i;54535:35::-;;;;;;70614:1330;;;;;;:::i;:::-;;:::i;71952:2258::-;;;;;;:::i;:::-;;:::i;15351:224::-;;;;;;:::i;:::-;;:::i;52708:892::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;65917:670::-;;;;;;:::i;:::-;;:::i;:::-;;;;7434:25:1;;;7490:2;7475:18;;7468:34;;;;7518:18;;;7511:34;7422:2;7407:18;65917:670:0;7232:319:1;54824:41:0;;;;;;:::i;:::-;;;;;;;;;;;;;;20488:104;;;:::i;49754:2505::-;;;;;;:::i;:::-;;:::i;55459:3558::-;;;:::i;64419:110::-;;;;;;:::i;:::-;;:::i;22541:308::-;;;;;;:::i;:::-;;:::i;54181:25::-;;;;;;66723:179;;;;;;:::i;:::-;;:::i;:::-;;;;;;9051:4:1;9093:3;9082:9;9078:19;9070:27;;9130:6;9124:13;9113:9;9106:32;9194:4;9186:6;9182:17;9176:24;9169:4;9158:9;9154:20;9147:54;9257:4;9249:6;9245:17;9239:24;9232:4;9221:9;9217:20;9210:54;9320:4;9312:6;9308:17;9302:24;9295:4;9284:9;9280:20;9273:54;9383:4;9375:6;9371:17;9365:24;9358:4;9347:9;9343:20;9336:54;9446:4;9438:6;9434:17;9428:24;9421:4;9410:9;9406:20;9399:54;8909:550;;;;;63625:92:0;;;;;;:::i;:::-;;:::i;59025:3959::-;;;:::i;23411:399::-;;;;;;:::i;:::-;;:::i;64194:98::-;;;;;;:::i;:::-;;:::i;67613:190::-;;;;;;:::i;:::-;;:::i;64666:127::-;;;;;;:::i;:::-;;:::i;48317:420::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;64939:856::-;;;;;;:::i;:::-;;:::i;64301:110::-;;;;;;:::i;:::-;;:::i;63725:101::-;;;;;;:::i;:::-;;:::i;54500:28::-;;;;;;66595:120;;;;;;:::i;:::-;;:::i;54215:23::-;;;;;-1:-1:-1;;;;;54215:23:0;;;22920:164;;;;;;:::i;:::-;-1:-1:-1;;;;;23041:25:0;;;23017:4;23041:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;22920:164;54311:24;;;;;-1:-1:-1;;;;;54311:24:0;;;54903:27;;;;;;;;;14672:615;14757:4;-1:-1:-1;;;;;;;;;15057:25:0;;;;:102;;-1:-1:-1;;;;;;;;;;15134:25:0;;;15057:102;:179;;;-1:-1:-1;;;;;;;;;;15211:25:0;;;15057:179;15037:199;14672:615;-1:-1:-1;;14672:615:0:o;20319:100::-;20373:13;20406:5;20399:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20319:100;:::o;22265:204::-;22333:7;22358:16;22366:7;22358;:16::i;:::-;22353:64;;22383:34;;-1:-1:-1;;;22383:34:0;;;;;;;;;;;22353:64;-1:-1:-1;22437:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;22437:24:0;;22265:204::o;21813:386::-;21886:13;21902:16;21910:7;21902;:16::i;:::-;21886:32;-1:-1:-1;42713:10:0;-1:-1:-1;;;;;21935:28:0;;;21931:175;;21983:44;22000:5;42713:10;22920:164;:::i;21983:44::-;21978:128;;22055:35;;-1:-1:-1;;;22055:35:0;;;;;;;;;;;21978:128;22118:24;;;;:15;:24;;;;;;:29;;-1:-1:-1;;;;;;22118:29:0;-1:-1:-1;;;;;22118:29:0;;;;;;;;;22163:28;;22118:24;;22163:28;;;;;;;21875:324;21813:386;;:::o;64084:102::-;74286:5;;-1:-1:-1;;;;;74286:5:0;74272:10;:19;74264:28;;;;;;64156:9:::1;:22:::0;64084:102::o;31530:2800::-;31664:27;31694;31713:7;31694:18;:27::i;:::-;31664:57;;31779:4;-1:-1:-1;;;;;31738:45:0;31754:19;-1:-1:-1;;;;;31738:45:0;;31734:86;;31792:28;;-1:-1:-1;;;31792:28:0;;;;;;;;;;;31734:86;31834:27;30260:21;;;30087:15;30302:4;30295:36;30384:4;30368:21;;30474:26;;32018:62;30474:26;32054:4;42713:10;32060:19;-1:-1:-1;;;;;31079:31:0;;;30925:26;;31206:19;;31227:30;;31203:55;;30631:645;32018:62;32013:174;;32100:43;32117:4;42713:10;22920:164;:::i;32100:43::-;32095:92;;32152:35;;-1:-1:-1;;;32152:35:0;;;;;;;;;;;32095:92;-1:-1:-1;;;;;32204:16:0;;32200:52;;32229:23;;-1:-1:-1;;;32229:23:0;;;;;;;;;;;32200:52;32401:15;32398:160;;;32541:1;32520:19;32513:30;32398:160;-1:-1:-1;;;;;32936:24:0;;;;;;;:18;:24;;;;;;32934:26;;-1:-1:-1;;32934:26:0;;;33005:22;;;;;;;;;33003:24;;-1:-1:-1;33003:24:0;;;20007:11;19983:22;19979:40;19966:62;-1:-1:-1;;;19966:62:0;33298:26;;;;:17;:26;;;;;:174;;;;-1:-1:-1;;;33592:46:0;;:51;;33588:626;;33696:1;33686:11;;33664:19;33819:30;;;:17;:30;;;;;;:35;;33815:384;;33957:13;;33942:11;:28;33938:242;;34104:30;;;;:17;:30;;;;;:52;;;33938:242;33645:569;33588:626;34261:7;34257:2;-1:-1:-1;;;;;34242:27:0;34251:4;-1:-1:-1;;;;;34242:27:0;;;;;;;;;;;31653:2677;;;31530:2800;;;:::o;63834:105::-;74286:5;;-1:-1:-1;;;;;74286:5:0;74272:10;:19;74264:28;;;;;;63909:9:::1;:22:::0;;-1:-1:-1;;;;;;63909:22:0::1;-1:-1:-1::0;;;;;63909:22:0;;;::::1;::::0;;;::::1;::::0;;63834:105::o;67813:1141::-;74371:11;;67906:4;;-1:-1:-1;;;;;74371:11:0;74357:10;:25;74349:89;;;;-1:-1:-1;;;74349:89:0;;;;;;;:::i;:::-;;;;;;;;;67958:8:::1;-1:-1:-1::0;;;;;67936:30:0::1;:18;67944:9;67936:7;:18::i;:::-;-1:-1:-1::0;;;;;67936:30:0::1;;67928:91;;;::::0;-1:-1:-1;;;67928:91:0;;12118:2:1;67928:91:0::1;::::0;::::1;12100:21:1::0;12157:2;12137:18;;;12130:30;12196:34;12176:18;;;12169:62;-1:-1:-1;;;12247:18:1;;;12240:46;12303:19;;67928:91:0::1;11916:412:1::0;67928:91:0::1;68069:11;::::0;68038:18:::1;::::0;;;:7:::1;:18;::::0;;;;:27:::1;;::::0;:42;68030:94:::1;;;::::0;-1:-1:-1;;;68030:94:0;;12535:2:1;68030:94:0::1;::::0;::::1;12517:21:1::0;12574:2;12554:18;;;12547:30;12613:34;12593:18;;;12586:62;-1:-1:-1;;;12664:18:1;;;12657:37;12711:19;;68030:94:0::1;12333:403:1::0;68030:94:0::1;68173:11;::::0;68140:18:::1;::::0;;;:7:::1;:18;::::0;;;;:27:::1;;::::0;:29:::1;::::0;68168:1:::1;68140:29;:::i;:::-;:44:::0;68137:193:::1;;68256:8;::::0;:10:::1;::::0;68265:1:::1;68256:10;:::i;:::-;68218:18;::::0;;;:7:::1;:18;::::0;;;;:24:::1;;::::0;:34:::1;::::0;68245:7;;68218:34:::1;:::i;:::-;:48;;68210:108;;;::::0;-1:-1:-1;;;68210:108:0;;13208:2:1;68210:108:0::1;::::0;::::1;13190:21:1::0;13247:2;13227:18;;;13220:30;13286:34;13266:18;;;13259:62;-1:-1:-1;;;13337:18:1;;;13330:45;13392:19;;68210:108:0::1;13006:411:1::0;68210:108:0::1;68342:10;68355:18:::0;;;:7:::1;:18;::::0;;;;:24:::1;::::0;::::1;::::0;68406:27:::1;::::0;::::1;::::0;68457:24:::1;::::0;;::::1;::::0;68355;;68494:285:::1;68514:7;68510:1;:11;68494:285;;;68563:8;;68555:5;:16;68552:216;;;68605:10;68614:1;68605:10:::0;::::1;:::i;:::-;;;68552:216;;;68690:1;::::0;-1:-1:-1;68710:13:0::1;68690:1:::0;68710:13;::::1;:::i;:::-;::::0;-1:-1:-1;68742:10:0::1;68751:1;68742:10:::0;::::1;:::i;:::-;;;68552:216;68523:3:::0;::::1;::::0;::::1;:::i;:::-;;;;68494:285;;;-1:-1:-1::0;68791:18:0::1;::::0;;;:7:::1;:18;::::0;;;;:24:::1;::::0;::::1;:32:::0;;;;68834:27:::1;::::0;::::1;:38:::0;;;;68883:24:::1;::::0;;::::1;:32:::0;-1:-1:-1;68942:4:0::1;74447:1;67813:1141:::0;;;;;:::o;68973:605::-;69051:50;;-1:-1:-1;;;69051:50:0;;;;;2338:25:1;;;69021:4:0;;69105:10;;69076:4;;69051:39;;2311:18:1;;69051:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;69051:64:0;;69043:122;;;;-1:-1:-1;;;69043:122:0;;14020:2:1;69043:122:0;;;14002:21:1;14059:2;14039:18;;;14032:30;14098:34;14078:18;;;14071:62;-1:-1:-1;;;14149:18:1;;;14142:43;14202:19;;69043:122:0;13818:409:1;69043:122:0;69178:16;69184:9;69178:5;:16::i;:::-;69210:9;69223:1;69210:14;69207:342;;69265:1;69243:20;;:23;;;;;;;:::i;:::-;;;;;;;;69299:1;69281:16;;:19;;;;;;;:::i;:::-;;;;-1:-1:-1;69207:342:0;;-1:-1:-1;69207:342:0;;69330:9;69343:1;69330:14;69327:222;;69382:1;69362:18;;:21;;;;;;;:::i;:::-;;;;;;;;69414:1;69398:14;;:17;;;;;;;:::i;69327:222::-;69445:9;69458:1;69445:14;69442:107;;69501:1;69478:21;;:24;;;;;;;:::i;:::-;;;;;;;;69536:1;69517:17;;:20;;;;;;;:::i;:::-;;;;-1:-1:-1;;69442:107:0;-1:-1:-1;69566:4:0;;68973:605;-1:-1:-1;68973:605:0:o;69586:1010::-;69732:17;;69675:53;;-1:-1:-1;;;69675:53:0;;69717:10;69675:53;;;1674:51:1;69645:4:0;;69732:17;69700:4;;69675:41;;1647:18:1;;69675:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:74;;69667:131;;;;-1:-1:-1;;;69667:131:0;;14753:2:1;69667:131:0;;;14735:21:1;14792:2;14772:18;;;14765:30;14831:34;14811:18;;;14804:62;-1:-1:-1;;;14882:18:1;;;14875:42;14934:19;;69667:131:0;14551:408:1;69667:131:0;69815:6;69811:230;69831:10;:17;69827:1;:21;69811:230;;;69945:10;-1:-1:-1;;;;;69887:68:0;69912:4;-1:-1:-1;;;;;69887:39:0;;69927:10;69938:1;69927:13;;;;;;;;:::i;:::-;;;;;;;69887:54;;;;;;;;;;;;;2338:25:1;;2326:2;2311:18;;2192:177;69887:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;69887:68:0;;69879:138;;;;-1:-1:-1;;;69879:138:0;;;;;;;:::i;:::-;69850:3;;;;:::i;:::-;;;;69811:230;;;;70057:6;70053:512;70073:10;:17;70069:1;:21;70053:512;;;70124:10;70135:1;70124:13;;;;;;;;:::i;:::-;;;;;;;70141:1;70124:18;70121:398;;70187:1;70165:20;;:23;;;;;;;:::i;:::-;;;;;;;;70225:1;70207:16;;:19;;;;;;;:::i;:::-;;;;-1:-1:-1;70121:398:0;;-1:-1:-1;70121:398:0;;70264:10;70275:1;70264:13;;;;;;;;:::i;:::-;;;;;;;70281:1;70264:18;70261:258;;70324:1;70304:18;;:21;;;;;;;:::i;:::-;;;;;;;;70360:1;70344:14;;:17;;;;;;;:::i;70261:258::-;70399:10;70410:1;70399:13;;;;;;;;:::i;:::-;;;;;;;70416:1;70399:18;70396:123;;70463:1;70440:21;;:24;;;;;;;:::i;:::-;;;;;;;;70502:1;70483:17;;:20;;;;;;;:::i;:::-;;;;-1:-1:-1;;70396:123:0;70533:20;70539:10;70550:1;70539:13;;;;;;;;:::i;:::-;;;;;;;70533:5;:20::i;:::-;70092:3;;;;:::i;:::-;;;;70053:512;;;-1:-1:-1;70584:4:0;;69586:1010;-1:-1:-1;;69586:1010:0:o;23155:185::-;23293:39;23310:4;23316:2;23320:7;23293:39;;;;;;;;;;;;:16;:39::i;:::-;23155:185;;;:::o;64537:117::-;74286:5;;-1:-1:-1;;;;;74286:5:0;74272:10;:19;74264:28;;;;;;64618:12:::1;:28:::0;64537:117::o;48896:468::-;49071:15;;48985:23;;49046:22;49071:15;-1:-1:-1;;;;;49138:36:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49138:36:0;;-1:-1:-1;;49138:36:0;;;;;;;;;;;;49101:73;;49194:9;49189:125;49210:14;49205:1;:19;49189:125;;49266:32;49286:8;49295:1;49286:11;;;;;;;;:::i;:::-;;;;;;;49266:19;:32::i;:::-;49250:10;49261:1;49250:13;;;;;;;;:::i;:::-;;;;;;;;;;:48;49226:3;;49189:125;;;-1:-1:-1;49335:10:0;48896:468;-1:-1:-1;;;48896:468:0:o;63949:113::-;74286:5;;-1:-1:-1;;;;;74286:5:0;74272:10;:19;74264:28;;;;;;64028:11:::1;:26:::0;;-1:-1:-1;;;;;;64028:26:0::1;-1:-1:-1::0;;;;;64028:26:0;;;::::1;::::0;;;::::1;::::0;;63949:113::o;20108:144::-;20172:7;20215:27;20234:7;20215:18;:27::i;70614:1330::-;74286:5;;70672:4;;-1:-1:-1;;;;;74286:5:0;74272:10;:19;74264:28;;;;;;70699:10:::1;13495:13:::0;;;70747:183:::1;70767:7;70763:1;:11;70747:183;;;70813:41;70832:12;:21;70845:7;70851:1:::0;70845:5;:7:::1;:::i;:::-;70832:21;;;;;;;;;;;;70813:18;:41::i;:::-;70805:101;;;;-1:-1:-1::0;;;70805:101:0::1;;;;;;;:::i;:::-;70776:3:::0;::::1;::::0;::::1;:::i;:::-;;;;70747:183;;;;70942:26;70948:10;70960:7;70942:5;:26::i;:::-;70994:6;70990:906;71010:7;71006:1;:11;70990:906;;;71062:12;:21;71075:7;71081:1:::0;71075:5;:7:::1;:::i;:::-;71062:21;;;;;;;;;;;;71087:1;71062:26:::0;71059:631:::1;;71110:18;:20:::0;;;:18:::1;:20;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;71178:18:0::1;::::0;71149:7:::1;:16;71157:7;71163:1:::0;71157:5;:7:::1;:::i;:::-;71149:16;;;;;;;;;;;:26;;:47;;;;71242:1;71215:7;:16;71229:1;71223:5;:7;;;;:::i;:::-;71215:16:::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;71215:16:0;:24:::1;;:28:::0;71059:631:::1;;;71281:12;:21;71294:7;71300:1:::0;71294:5;:7:::1;:::i;:::-;71281:21;;;;;;;;;;;;71306:1;71281:26:::0;71278:412:::1;;71331:21;:23:::0;;;:21:::1;:23;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;71402:21:0::1;::::0;71373:7:::1;:16;71381:7;71387:1:::0;71381:5;:7:::1;:::i;:::-;71373:16;;;;;;;;;;;:26;;:50;;;;71469:1;71442:7;:16;71456:1;71450:5;:7;;;;:::i;71278:412::-;71537:20;:22:::0;;;:20:::1;:22;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;;71607:20:0::1;::::0;71578:7:::1;:16;71586:7;71592:1:::0;71586:5;:7:::1;:::i;:::-;71578:16;;;;;;;;;;;:26;;:49;;;;71673:1;71646:7;:16;71660:1;71654:5;:7;;;;:::i;:::-;71646:16:::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;71646:16:0;:24:::1;;:28:::0;71278:412:::1;71749:7;71755:1:::0;71749:5;:7:::1;:::i;:::-;71721;:16;71729:7;71735:1:::0;71729:5;:7:::1;:::i;:::-;71721:16;;;;;;;;;;;:25;;:35;;;;71796:1;71771:7;:16;71785:1;71779:5;:7;;;;:::i;:::-;71771:16;;;;;;;;;;;:22;;:26;;;;71840:1;71812:7;:16;71826:1;71820:5;:7;;;;:::i;:::-;71812:16;;;;;;;;;;;:25;;:29;;;;71883:1;71858:7;:16;71872:1;71866:5;:7;;;;:::i;:::-;71858:16:::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;71858:16:0;:22:::1;;:26:::0;71019:3;::::1;::::0;::::1;:::i;:::-;;;;70990:906;;;;71915:4;71908:11;;;74301:1;70614:1330:::0;;;:::o;71952:2258::-;72073:7;;72030:4;;72073:7;;72072:8;72064:45;;;;-1:-1:-1;;;72064:45:0;;16140:2:1;72064:45:0;;;16122:21:1;16179:2;16159:18;;;16152:30;16218:27;16198:18;;;16191:55;16263:18;;72064:45:0;15938:349:1;72064:45:0;72142:12;;72131:7;:23;;72123:86;;;;-1:-1:-1;;;72123:86:0;;16494:2:1;72123:86:0;;;16476:21:1;16533:2;16513:18;;;16506:30;16572:34;16552:18;;;16545:62;-1:-1:-1;;;16623:18:1;;;16616:48;16681:19;;72123:86:0;16292:414:1;72123:86:0;72222:10;72247:7;72235:9;;:19;;;;:::i;:::-;72222:32;;72284:15;:22;72275:5;:31;;72267:90;;;;-1:-1:-1;;;72267:90:0;;17086:2:1;72267:90:0;;;17068:21:1;17125:2;17105:18;;;17098:30;17164:34;17144:18;;;17137:62;-1:-1:-1;;;17215:18:1;;;17208:44;17269:19;;72267:90:0;16884:410:1;72267:90:0;72393:8;;72376:48;;-1:-1:-1;;;72376:48:0;;72413:10;72376:48;;;1674:51:1;72428:5:0;;-1:-1:-1;;;;;72393:8:0;;72376:36;;1647:18:1;;72376:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:57;;72368:107;;;;-1:-1:-1;;;72368:107:0;;17501:2:1;72368:107:0;;;17483:21:1;17540:2;17520:18;;;17513:30;17579:34;17559:18;;;17552:62;-1:-1:-1;;;17630:18:1;;;17623:35;17675:19;;72368:107:0;17299:401:1;72368:107:0;72510:10;13495:13;;;72575:171;72595:7;72591:1;:11;72575:171;;;72641:41;72660:12;:21;72673:7;72679:1;72673:5;:7;:::i;72641:41::-;72633:101;;;;-1:-1:-1;;;72633:101:0;;;;;;;:::i;:::-;72604:3;;;;:::i;:::-;;;;72575:171;;;;72773:6;72769:207;72789:5;72785:1;:9;72769:207;;;72850:8;;72868:18;;72891:10;;-1:-1:-1;;;;;72850:8:0;;72833:34;;72868:15;;72884:1;;72868:18;;;;;;:::i;:::-;;;;;;;72833:54;;;;;;;;;;;;;2338:25:1;;2326:2;2311:18;;2192:177;72833:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;72833:68:0;;72825:138;;;;-1:-1:-1;;;72825:138:0;;;;;;;:::i;:::-;72796:3;;;;:::i;:::-;;;;72769:207;;;;73015:6;73011:184;73031:5;73027:1;:9;73011:184;;;73085:8;;73164:18;;-1:-1:-1;;;;;73085:8:0;;;;73068:39;;73108:10;;73120:42;;73164:15;;73180:1;;73164:18;;;;;;:::i;:::-;;;;;;;;;;;73068:115;;-1:-1:-1;;;;;;73068:115:0;;;;;;;-1:-1:-1;;;;;17963:15:1;;;73068:115:0;;;17945:34:1;18015:15;;;;17995:18;;;17988:43;18047:18;;;18040:34;17880:18;;73068:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;73038:3;;;;;:::i;:::-;;;;73011:184;;;;73207:26;73213:10;73225:7;73207:5;:26::i;:::-;73278:6;73274:890;73294:7;73290:1;:11;73274:890;;;73347:12;:21;73360:7;73366:1;73360:5;:7;:::i;:::-;73347:21;;;;;;;;;;;;73372:1;73347:26;73344:617;;73395:18;:20;;;:18;:20;;;:::i;:::-;;;;-1:-1:-1;;73463:18:0;;73434:7;:16;73442:7;73448:1;73442:5;:7;:::i;:::-;73434:16;;;;;;;;;;;:26;;:47;;;;73527:1;73500:7;:16;73514:1;73508:5;:7;;;;:::i;:::-;73500:16;;;;;;;;;;;-1:-1:-1;73500:16:0;:24;;:28;73344:617;;;73566:12;:21;73579:7;73585:1;73579:5;:7;:::i;:::-;73566:21;;;;;;;;;;;;73591:1;73566:26;73563:398;;73614:21;:23;;;:21;:23;;;:::i;:::-;;;;-1:-1:-1;;73685:21:0;;73656:7;:16;73664:7;73670:1;73664:5;:7;:::i;:::-;73656:16;;;;;;;;;;;:26;;:50;;;;73752:1;73725:7;:16;73739:1;73733:5;:7;;;;:::i;73563:398::-;73808:20;:22;;;:20;:22;;;:::i;:::-;;;;-1:-1:-1;;73878:20:0;;73849:7;:16;73857:7;73863:1;73857:5;:7;:::i;:::-;73849:16;;;;;;;;;;;:26;;:49;;;;73944:1;73917:7;:16;73931:1;73925:5;:7;;;;:::i;:::-;73917:16;;;;;;;;;;;-1:-1:-1;73917:16:0;:24;;:28;73563:398;74005:7;74011:1;74005:5;:7;:::i;:::-;73977;:16;73985:7;73991:1;73985:5;:7;:::i;:::-;73977:16;;;;;;;;;;;:25;;:35;;;;74064:1;74039:7;:16;74053:1;74047:5;:7;;;;:::i;:::-;74039:16;;;;;;;;;;;:22;;:26;;;;74108:1;74080:7;:16;74094:1;74088:5;:7;;;;:::i;:::-;74080:16;;;;;;;;;;;:25;;:29;;;;74151:1;74126:7;:16;74140:1;74134:5;:7;;;;:::i;:::-;74126:16;;;;;;;;;;;-1:-1:-1;74126:16:0;:22;;:26;73303:3;;;;:::i;:::-;;;;73274:890;;;-1:-1:-1;74181:4:0;;71952:2258;-1:-1:-1;;;;;71952:2258:0:o;15351:224::-;15415:7;-1:-1:-1;;;;;15439:19:0;;15435:60;;15467:28;;-1:-1:-1;;;15467:28:0;;;;;;;;;;;15435:60;-1:-1:-1;;;;;;15513:25:0;;;;;:18;:25;;;;;;-1:-1:-1;;;;;15513:54:0;;15351:224::o;52708:892::-;52778:16;52832:19;52866:25;52906:22;52931:16;52941:5;52931:9;:16::i;:::-;52906:41;;52962:25;53004:14;-1:-1:-1;;;;;52990:29:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;52990:29:0;;52962:57;;53034:31;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53034:31:0;64922:1;53080:472;53129:14;53114:11;:29;53080:472;;53181:15;53194:1;53181:12;:15::i;:::-;53169:27;;53219:9;:16;;;53260:8;53215:73;53310:14;;-1:-1:-1;;;;;53310:28:0;;53306:111;;53383:14;;;-1:-1:-1;53306:111:0;53460:5;-1:-1:-1;;;;;53439:26:0;:17;-1:-1:-1;;;;;53439:26:0;;53435:102;;53516:1;53490:8;53499:13;;;;;;53490:23;;;;;;;;:::i;:::-;;;;;;:27;;;;;53435:102;53145:3;;53080:472;;;-1:-1:-1;53573:8:0;;52708:892;-1:-1:-1;;;;;;52708:892:0:o;65917:670::-;66076:55;;-1:-1:-1;;;66076:55:0;;-1:-1:-1;;;;;1692:32:1;;66076:55:0;;;1674:51:1;65977:13:0;;;;;;;;66101:4;;66076:45;;1647:18:1;;66076:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;66076:55:0;;;;;;;;;;;;:::i;:::-;66050:81;-1:-1:-1;66142:13:0;;66168:412;66188:9;:16;66184:1;:20;66168:412;;;66246:7;:21;66254:9;66264:1;66254:12;;;;;;;;:::i;:::-;;;;;;;66246:21;;;;;;;;;;;:29;;;66235:40;;66295:8;66307:1;66295:13;66292:265;;66342:10;;;;:::i;:::-;;;;66292:265;;;66390:8;66402:1;66390:13;66387:170;;66437:8;;;;:::i;:::-;;;;66387:170;;;66483:8;66495:1;66483:13;66480:77;;66530:11;;;;:::i;:::-;;;;66480:77;66206:3;;;;:::i;:::-;;;;66168:412;;;;66039:548;;65917:670;;;;;:::o;20488:104::-;20544:13;20577:7;20570:14;;;;;:::i;49754:2505::-;49889:16;49956:4;49947:5;:13;49943:45;;49969:19;;-1:-1:-1;;;49969:19:0;;;;;;;;;;;49943:45;50003:19;50037:17;50057:14;13468:7;13495:13;;13421:95;50057:14;50037:34;-1:-1:-1;64922:1:0;50149:5;:23;50145:87;;;64922:1;50193:23;;50145:87;50308:9;50301:4;:16;50297:73;;;50345:9;50338:16;;50297:73;50384:25;50412:16;50422:5;50412:9;:16::i;:::-;50384:44;;50606:4;50598:5;:12;50594:278;;;50653:12;;;50688:31;;;50684:111;;;50764:11;50744:31;;50684:111;50612:198;50594:278;;;-1:-1:-1;50855:1:0;50594:278;50886:25;50928:17;-1:-1:-1;;;;;50914:32:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;50914:32:0;;50886:60;;50965:17;50986:1;50965:22;50961:78;;51015:8;-1:-1:-1;51008:15:0;;-1:-1:-1;;;51008:15:0;50961:78;51183:31;51217:26;51237:5;51217:19;:26::i;:::-;51183:60;;51258:25;51503:9;:16;;;51498:92;;-1:-1:-1;51560:14:0;;51498:92;51621:5;51604:478;51633:4;51628:1;:9;;:45;;;;;51656:17;51641:11;:32;;51628:45;51604:478;;;51711:15;51724:1;51711:12;:15::i;:::-;51699:27;;51749:9;:16;;;51790:8;51745:73;51840:14;;-1:-1:-1;;;;;51840:28:0;;51836:111;;51913:14;;;-1:-1:-1;51836:111:0;51990:5;-1:-1:-1;;;;;51969:26:0;:17;-1:-1:-1;;;;;51969:26:0;;51965:102;;52046:1;52020:8;52029:13;;;;;;52020:23;;;;;;;;:::i;:::-;;;;;;:27;;;;;51965:102;51675:3;;51604:478;;;-1:-1:-1;;;52167:29:0;;;-1:-1:-1;52167:29:0;;49754:2505;-1:-1:-1;;;;;49754:2505:0:o;55459:3558::-;74286:5;;-1:-1:-1;;;;;74286:5:0;74272:10;:19;74264:28;;;;;;55528:4:::1;::::0;:9;55520:45:::1;;;::::0;-1:-1:-1;;;55520:45:0;;19173:2:1;55520:45:0::1;::::0;::::1;19155:21:1::0;19212:2;19192:18;;;19185:30;19251:25;19231:18;;;19224:53;19294:18;;55520:45:0::1;18971:347:1::0;55520:45:0::1;55576:337;::::0;;::::1;::::0;::::1;::::0;;55595:3:::1;55576:337:::0;;55599:3:::1;55576:337;::::0;::::1;::::0;55603:3:::1;55576:337:::0;;;;;;;55607:3:::1;55576:337:::0;;;;55611:3:::1;55576:337:::0;;;;55615:3:::1;55576:337:::0;;;;55619:3:::1;55576:337:::0;;;;55623:3:::1;55576:337:::0;;;;55627:3:::1;55576:337:::0;;;;55631:3:::1;55576:337:::0;;;;55635:3:::1;55576:337:::0;;;;55639:3:::1;55576:337:::0;;;;55643:3:::1;55576:337:::0;;;;55647:3:::1;55576:337:::0;;;;55651:3:::1;55576:337:::0;;;;55655:3:::1;55576:337:::0;;;;55659:4:::1;55576:337:::0;;;;55664:4:::1;55576:337:::0;;;;55669:4:::1;55576:337:::0;;;;55674:4:::1;55576:337:::0;;;;55679:4:::1;55576:337:::0;;;;55684:4:::1;55576:337:::0;;;;55689:4:::1;55576:337:::0;;;;55694:4:::1;55576:337:::0;;;;55728:4:::1;55576:337:::0;;;;55733:4:::1;55576:337:::0;;;;55738:4:::1;55576:337:::0;;;;55743:4:::1;55576:337:::0;;;;55748:4:::1;55576:337:::0;;;;55753:4:::1;55576:337:::0;;;;55758:4:::1;55576:337:::0;;;;55763:4:::1;55576:337:::0;;;;55768:4:::1;55576:337:::0;;;;55773:4:::1;55576:337:::0;;;;55778:4:::1;55576:337:::0;;;;55783:4:::1;55576:337:::0;;;;55788:4:::1;55576:337:::0;;;;55793:4:::1;55576:337:::0;;;;55798:4:::1;55576:337:::0;;;;55803:4:::1;55576:337:::0;;;;55808:4:::1;55576:337:::0;;;;55813:4:::1;55576:337:::0;;;;55818:4:::1;55576:337:::0;;;;55823:4:::1;55576:337:::0;;;;55828:4:::1;55576:337:::0;;;;55862:4:::1;55576:337:::0;;;;55867:4:::1;55576:337:::0;;;;55872:4:::1;55576:337:::0;;;;55877:4:::1;55576:337:::0;;;;55882:4:::1;55576:337:::0;;;;55887:4:::1;55576:337:::0;;;;55892:4:::1;55576:337:::0;;;;55897:4:::1;55576:337:::0;;;;55902:4:::1;55576:337:::0;;;;55907:4:::1;55576:337:::0;;;;::::1;::::0;55591:1:::1;::::0;55576:14:::1;:337::i;:::-;55928:469;::::0;;::::1;::::0;::::1;::::0;;55949:2:::1;55928:469:::0;;55952:2:::1;55928:469;::::0;::::1;::::0;55955:2:::1;55928:469:::0;;;;55958:2:::1;55928:469:::0;;;;;;;;55961:2:::1;55928:469:::0;;;;55964:2:::1;55928:469:::0;;;;55967:2:::1;55928:469:::0;;;;55970:2:::1;55928:469:::0;;;;55973:2:::1;55928:469:::0;;;;55976:2:::1;55928:469:::0;;;;55979:2:::1;55928:469:::0;;;;;;;;55982:2:::1;55928:469:::0;;;;55985:2:::1;55928:469:::0;;;;;;;;;;;55991:2:::1;55928:469:::0;;;;55994:2:::1;55928:469:::0;;;;55997:2:::1;55928:469:::0;;;;56000:2:::1;55928:469:::0;;;;56003:2:::1;55928:469:::0;;;;56006:2:::1;55928:469:::0;;;;56009:2:::1;55928:469:::0;;;;56012:2:::1;55928:469:::0;;;;56015:2:::1;55928:469:::0;;;;56018:2:::1;55928:469:::0;;;;;;56021:2:::1;55928:469:::0;;;;56024:2:::1;55928:469:::0;;;;;;;;56030:2:::1;55928:469:::0;;;;56033:2:::1;55928:469:::0;;;;56036:2:::1;55928:469:::0;;;;56039:2:::1;55928:469:::0;;;;56042:2:::1;55928:469:::0;;;;56076:2:::1;55928:469:::0;;;;56079:2:::1;55928:469:::0;;;;56082:2:::1;55928:469:::0;;;;56085:2:::1;55928:469:::0;;;;56088:2:::1;55928:469:::0;;;;56091:2:::1;55928:469:::0;;;;56094:2:::1;55928:469:::0;;;;56097:2:::1;55928:469:::0;;;;56100:2:::1;55928:469:::0;;;;56103:2:::1;55928:469:::0;;;;56106:2:::1;55928:469:::0;;;;56109:2:::1;55928:469:::0;;;;56112:2:::1;55928:469:::0;;;;;;;;56118:2:::1;55928:469:::0;;;;56121:2:::1;55928:469:::0;;;;56124:2:::1;55928:469:::0;;;;56127:3:::1;55928:469:::0;;;;56131:3:::1;55928:469:::0;;;;56135:3:::1;55928:469:::0;;;;56139:3:::1;55928:469:::0;;;;56143:3:::1;55928:469:::0;;;;56147:3:::1;55928:469:::0;;;;56151:3:::1;55928:469:::0;;;;56155:3:::1;55928:469:::0;;;;56159:3:::1;55928:469:::0;;;;56163:3:::1;55928:469:::0;;;;56167:3:::1;55928:469:::0;;;;56205:3:::1;55928:469:::0;;;;56209:3:::1;55928:469:::0;;;;56213:3:::1;55928:469:::0;;;;56217:3:::1;55928:469:::0;;;;56221:3:::1;55928:469:::0;;;;56225:3:::1;55928:469:::0;;;;56229:3:::1;55928:469:::0;;;;56233:3:::1;55928:469:::0;;;;56237:3:::1;55928:469:::0;;;;56241:3:::1;55928:469:::0;;;;56245:3:::1;55928:469:::0;;;;56249:3:::1;55928:469:::0;;;;56253:3:::1;55928:469:::0;;;;56257:3:::1;55928:469:::0;;;;56261:3:::1;55928:469:::0;;;;56265:3:::1;55928:469:::0;;;;56269:3:::1;55928:469:::0;;;;56273:3:::1;55928:469:::0;;;;56277:3:::1;55928:469:::0;;;;56281:3:::1;55928:469:::0;;;;;;;;;;;56289:3:::1;55928:469:::0;;;;56293:3:::1;55928:469:::0;;;;56297:3:::1;55928:469:::0;;;;56332:3:::1;55928:469:::0;;;;56336:3:::1;55928:469:::0;;;;56340:3:::1;55928:469:::0;;;;56344:3:::1;55928:469:::0;;;;56348:3:::1;55928:469:::0;;;;56352:3:::1;55928:469:::0;;;;56356:3:::1;55928:469:::0;;;;56360:3:::1;55928:469:::0;;;;56364:3:::1;55928:469:::0;;;;56368:3:::1;55928:469:::0;;;;56372:3:::1;55928:469:::0;;;;56376:3:::1;55928:469:::0;;;;56380:3:::1;55928:469:::0;;;;56384:3:::1;55928:469:::0;;;;56388:3:::1;55928:469:::0;;;;56392:3:::1;55928:469:::0;;;;::::1;::::0;55945:1:::1;::::0;55928:16:::1;:469::i;:::-;56410:622;::::0;;::::1;::::0;::::1;::::0;;56431:3:::1;56410:622:::0;;56435:3:::1;56410:622;::::0;::::1;::::0;56439:3:::1;56410:622:::0;;;;;;;56443:3:::1;56410:622:::0;;;;56447:3:::1;56410:622:::0;;;;56451:3:::1;56410:622:::0;;;;56455:3:::1;56410:622:::0;;;;56459:3:::1;56410:622:::0;;;;56463:3:::1;56410:622:::0;;;;56467:3:::1;56410:622:::0;;;;56471:3:::1;56410:622:::0;;;;56475:3:::1;56410:622:::0;;;;56479:3:::1;56410:622:::0;;;;56483:3:::1;56410:622:::0;;;;56487:3:::1;56410:622:::0;;;;56491:3:::1;56410:622:::0;;;;56495:3:::1;56410:622:::0;;;;56499:3:::1;56410:622:::0;;;;56503:3:::1;56410:622:::0;;;;56507:3:::1;56410:622:::0;;;;56511:3:::1;56410:622:::0;;;;56515:3:::1;56410:622:::0;;;;56519:3:::1;56410:622:::0;;;;56523:3:::1;56410:622:::0;;;;56527:4:::1;56410:622:::0;;;;56563:4:::1;56410:622:::0;;;;56568:4:::1;56410:622:::0;;;;56573:4:::1;56410:622:::0;;;;56578:4:::1;56410:622:::0;;;;56583:4:::1;56410:622:::0;;;;56588:4:::1;56410:622:::0;;;;56593:4:::1;56410:622:::0;;;;56598:4:::1;56410:622:::0;;;;56603:4:::1;56410:622:::0;;;;56608:4:::1;56410:622:::0;;;;56613:4:::1;56410:622:::0;;;;56618:4:::1;56410:622:::0;;;;56623:4:::1;56410:622:::0;;;;56628:4:::1;56410:622:::0;;;;56633:4:::1;56410:622:::0;;;;56638:4:::1;56410:622:::0;;;;56643:4:::1;56410:622:::0;;;;56648:4:::1;56410:622:::0;;;;;;;;56653:4:::1;56410:622:::0;;;;56658:4:::1;56410:622:::0;;;;56694:4:::1;56410:622:::0;;;;56699:4:::1;56410:622:::0;;;;56704:4:::1;56410:622:::0;;;;56709:4:::1;56410:622:::0;;;;56714:4:::1;56410:622:::0;;;;56719:4:::1;56410:622:::0;;;;56724:4:::1;56410:622:::0;;;;56729:4:::1;56410:622:::0;;;;56734:4:::1;56410:622:::0;;;;56739:4:::1;56410:622:::0;;;;;;;;56749:4:::1;56410:622:::0;;;;56754:4:::1;56410:622:::0;;;;56759:4:::1;56410:622:::0;;;;56764:4:::1;56410:622:::0;;;;56769:4:::1;56410:622:::0;;;;56774:4:::1;56410:622:::0;;;;56779:4:::1;56410:622:::0;;;;56784:4:::1;56410:622:::0;;;;56789:4:::1;56410:622:::0;;;;56794:4:::1;56410:622:::0;;;;56830:4:::1;56410:622:::0;;;;56835:4:::1;56410:622:::0;;;;56840:4:::1;56410:622:::0;;;;56845:4:::1;56410:622:::0;;;;56850:4:::1;56410:622:::0;;;;56855:4:::1;56410:622:::0;;;;56860:4:::1;56410:622:::0;;;;56865:4:::1;56410:622:::0;;;;56870:4:::1;56410:622:::0;;;;56875:4:::1;56410:622:::0;;;;56880:4:::1;56410:622:::0;;;;56885:4:::1;56410:622:::0;;;;56890:4:::1;56410:622:::0;;;;56895:4:::1;56410:622:::0;;;;56900:4:::1;56410:622:::0;;;;56905:4:::1;56410:622:::0;;;;56910:4:::1;56410:622:::0;;;;56915:4:::1;56410:622:::0;;;;56920:4:::1;56410:622:::0;;;;56925:4:::1;56410:622:::0;;;;56961:4:::1;56410:622:::0;;;;56966:4:::1;56410:622:::0;;;;56971:4:::1;56410:622:::0;;;;56976:4:::1;56410:622:::0;;;;56981:4:::1;56410:622:::0;;;;56986:4:::1;56410:622:::0;;;;56991:4:::1;56410:622:::0;;;;56996:4:::1;56410:622:::0;;;;57001:4:::1;56410:622:::0;;;;57006:4:::1;56410:622:::0;;;;57011:4:::1;56410:622:::0;;;;57016:4:::1;56410:622:::0;;;;57021:4:::1;56410:622:::0;;;;57026:4:::1;56410:622:::0;;;;::::1;::::0;56427:1:::1;::::0;56410:16:::1;:622::i;:::-;57045:646;::::0;;::::1;::::0;::::1;::::0;;57066:4:::1;57045:646:::0;;57071:4:::1;57045:646;::::0;::::1;::::0;57076:4:::1;57045:646:::0;;;;;;;57081:4:::1;57045:646:::0;;;;57086:4:::1;57045:646:::0;;;;57091:4:::1;57045:646:::0;;;;;;57096:4:::1;57045:646:::0;;;;57101:4:::1;57045:646:::0;;;;57106:4:::1;57045:646:::0;;;;57111:4:::1;57045:646:::0;;;;57116:4:::1;57045:646:::0;;;;57121:4:::1;57045:646:::0;;;;57126:4:::1;57045:646:::0;;;;57131:4:::1;57045:646:::0;;;;57136:4:::1;57045:646:::0;;;;57141:4:::1;57045:646:::0;;;;57146:4:::1;57045:646:::0;;;;57151:4:::1;57045:646:::0;;;;57156:4:::1;57045:646:::0;;;;57161:4:::1;57045:646:::0;;;;57197:4:::1;57045:646:::0;;;;57202:4:::1;57045:646:::0;;;;57207:4:::1;57045:646:::0;;;;57212:4:::1;57045:646:::0;;;;57217:4:::1;57045:646:::0;;;;57222:4:::1;57045:646:::0;;;;57227:4:::1;57045:646:::0;;;;57232:4:::1;57045:646:::0;;;;57237:4:::1;57045:646:::0;;;;57242:4:::1;57045:646:::0;;;;;;57247:4:::1;57045:646:::0;;;;57252:4:::1;57045:646:::0;;;;57257:4:::1;57045:646:::0;;;;57262:4:::1;57045:646:::0;;;;57267:4:::1;57045:646:::0;;;;57272:4:::1;57045:646:::0;;;;57277:4:::1;57045:646:::0;;;;57282:4:::1;57045:646:::0;;;;57287:4:::1;57045:646:::0;;;;57292:4:::1;57045:646:::0;;;;57328:4:::1;57045:646:::0;;;;57333:4:::1;57045:646:::0;;;;57338:4:::1;57045:646:::0;;;;57343:4:::1;57045:646:::0;;;;57348:4:::1;57045:646:::0;;;;57353:4:::1;57045:646:::0;;;;57358:4:::1;57045:646:::0;;;;57363:4:::1;57045:646:::0;;;;;;;57368:4:::1;57045:646:::0;;;;57373:4:::1;57045:646:::0;;;;57378:4:::1;57045:646:::0;;;;57383:4:::1;57045:646:::0;;;;57388:4:::1;57045:646:::0;;;;57393:4:::1;57045:646:::0;;;;57398:4:::1;57045:646:::0;;;;57403:4:::1;57045:646:::0;;;;57408:4:::1;57045:646:::0;;;;57413:4:::1;57045:646:::0;;;;57418:4:::1;57045:646:::0;;;;;;57423:4:::1;57045:646:::0;;;;57459:4:::1;57045:646:::0;;;;57464:4:::1;57045:646:::0;;;;57469:4:::1;57045:646:::0;;;;57474:4:::1;57045:646:::0;;;;57479:4:::1;57045:646:::0;;;;57484:4:::1;57045:646:::0;;;;57489:4:::1;57045:646:::0;;;;57494:4:::1;57045:646:::0;;;;57499:4:::1;57045:646:::0;;;;57504:4:::1;57045:646:::0;;;;57509:4:::1;57045:646:::0;;;;;;;;57514:4:::1;57045:646:::0;;;;57519:4:::1;57045:646:::0;;;;57524:4:::1;57045:646:::0;;;;57529:4:::1;57045:646:::0;;;;57534:4:::1;57045:646:::0;;;;;;;;57544:4:::1;57045:646:::0;;;;57549:4:::1;57045:646:::0;;;;57554:4:::1;57045:646:::0;;;;57590:4:::1;57045:646:::0;;;;57595:4:::1;57045:646:::0;;;;57600:4:::1;57045:646:::0;;;;57605:4:::1;57045:646:::0;;;;57610:4:::1;57045:646:::0;;;;57615:4:::1;57045:646:::0;;;;57620:4:::1;57045:646:::0;;;;57625:4:::1;57045:646:::0;;;;57630:4:::1;57045:646:::0;;;;57635:4:::1;57045:646:::0;;;;57640:4:::1;57045:646:::0;;;;57645:4:::1;57045:646:::0;;;;57650:4:::1;57045:646:::0;;;;57655:4:::1;57045:646:::0;;;;57660:4:::1;57045:646:::0;;;;57665:4:::1;57045:646:::0;;;;57670:4:::1;57045:646:::0;;;;57675:4:::1;57045:646:::0;;;;57680:4:::1;57045:646:::0;;;;57685:4:::1;57045:646:::0;;;;::::1;::::0;57062:1:::1;::::0;57045:16:::1;:646::i;:::-;57704;::::0;;::::1;::::0;::::1;::::0;;57725:4:::1;57704:646:::0;;57730:4:::1;57704:646;::::0;::::1;::::0;57735:4:::1;57704:646:::0;;;;;;57740:4:::1;57704:646:::0;;;;57745:4:::1;57704:646:::0;;;;57750:4:::1;57704:646:::0;;;;57755:4:::1;57704:646:::0;;;;57760:4:::1;57704:646:::0;;;;57765:4:::1;57704:646:::0;;;;57770:4:::1;57704:646:::0;;;;57775:4:::1;57704:646:::0;;;;57780:4:::1;57704:646:::0;;;;57785:4:::1;57704:646:::0;;;;57790:4:::1;57704:646:::0;;;;57795:4:::1;57704:646:::0;;;;57800:4:::1;57704:646:::0;;;;57805:4:::1;57704:646:::0;;;;57810:4:::1;57704:646:::0;;;;;;57815:4:::1;57704:646:::0;;;;57820:4:::1;57704:646:::0;;;;57856:4:::1;57704:646:::0;;;;57861:4:::1;57704:646:::0;;;;57866:4:::1;57704:646:::0;;;;57871:4:::1;57704:646:::0;;;;57876:4:::1;57704:646:::0;;;;57881:4:::1;57704:646:::0;;;;57886:4:::1;57704:646:::0;;;;57891:4:::1;57704:646:::0;;;;57896:4:::1;57704:646:::0;;;;57901:4:::1;57704:646:::0;;;;57906:4:::1;57704:646:::0;;;;57911:4:::1;57704:646:::0;;;;57916:4:::1;57704:646:::0;;;;57921:4:::1;57704:646:::0;;;;57926:4:::1;57704:646:::0;;;;57931:4:::1;57704:646:::0;;;;57936:4:::1;57704:646:::0;;;;57941:4:::1;57704:646:::0;;;;57946:4:::1;57704:646:::0;;;;57951:4:::1;57704:646:::0;;;;57987:4:::1;57704:646:::0;;;;57992:4:::1;57704:646:::0;;;;57997:4:::1;57704:646:::0;;;;58002:4:::1;57704:646:::0;;;;58007:4:::1;57704:646:::0;;;;58012:4:::1;57704:646:::0;;;;58017:4:::1;57704:646:::0;;;;58022:4:::1;57704:646:::0;;;;58027:4:::1;57704:646:::0;;;;58032:4:::1;57704:646:::0;;;;58037:4:::1;57704:646:::0;;;;58042:4:::1;57704:646:::0;;;;58047:4:::1;57704:646:::0;;;;58052:4:::1;57704:646:::0;;;;58057:4:::1;57704:646:::0;;;;58062:4:::1;57704:646:::0;;;;58067:4:::1;57704:646:::0;;;;58072:4:::1;57704:646:::0;;;;58077:4:::1;57704:646:::0;;;;58082:4:::1;57704:646:::0;;;;58118:4:::1;57704:646:::0;;;;58123:4:::1;57704:646:::0;;;;58128:4:::1;57704:646:::0;;;;58133:4:::1;57704:646:::0;;;;58138:4:::1;57704:646:::0;;;;58143:4:::1;57704:646:::0;;;;58148:4:::1;57704:646:::0;;;;58153:4:::1;57704:646:::0;;;;58158:4:::1;57704:646:::0;;;;58163:4:::1;57704:646:::0;;;;58168:4:::1;57704:646:::0;;;;58173:4:::1;57704:646:::0;;;;58178:4:::1;57704:646:::0;;;;58183:4:::1;57704:646:::0;;;;58188:4:::1;57704:646:::0;;;;58193:4:::1;57704:646:::0;;;;58198:4:::1;57704:646:::0;;;;58203:4:::1;57704:646:::0;;;;58208:4:::1;57704:646:::0;;;;58213:4:::1;57704:646:::0;;;;58249:4:::1;57704:646:::0;;;;;;;58254:4:::1;57704:646:::0;;;;58259:4:::1;57704:646:::0;;;;58264:4:::1;57704:646:::0;;;;58269:4:::1;57704:646:::0;;;;58274:4:::1;57704:646:::0;;;;58279:4:::1;57704:646:::0;;;;58284:4:::1;57704:646:::0;;;;58289:4:::1;57704:646:::0;;;;58294:4:::1;57704:646:::0;;;;;;;58299:4:::1;57704:646:::0;;;;58304:4:::1;57704:646:::0;;;;58309:4:::1;57704:646:::0;;;;58314:4:::1;57704:646:::0;;;;58319:4:::1;57704:646:::0;;;;58324:4:::1;57704:646:::0;;;;58329:4:::1;57704:646:::0;;;;58334:4:::1;57704:646:::0;;;;58339:4:::1;57704:646:::0;;;;58344:4:::1;57704:646:::0;;;;::::1;::::0;57721:1:::1;::::0;57704:16:::1;:646::i;:::-;58363;::::0;;::::1;::::0;::::1;::::0;;58384:4:::1;58363:646:::0;;58389:4:::1;58363:646;::::0;::::1;::::0;58394:4:::1;58363:646:::0;;;;;;;58399:4:::1;58363:646:::0;;;;58404:4:::1;58363:646:::0;;;;58409:4:::1;58363:646:::0;;;;58414:4:::1;58363:646:::0;;;;58419:4:::1;58363:646:::0;;;;58424:4:::1;58363:646:::0;;;;58429:4:::1;58363:646:::0;;;;58434:4:::1;58363:646:::0;;;;58439:4:::1;58363:646:::0;;;;58444:4:::1;58363:646:::0;;;;58449:4:::1;58363:646:::0;;;;58454:4:::1;58363:646:::0;;;;58459:4:::1;58363:646:::0;;;;58464:4:::1;58363:646:::0;;;;58469:4:::1;58363:646:::0;;;;58474:4:::1;58363:646:::0;;;;58479:4:::1;58363:646:::0;;;;58515:4:::1;58363:646:::0;;;;58520:4:::1;58363:646:::0;;;;58525:4:::1;58363:646:::0;;;;58530:4:::1;58363:646:::0;;;;58535:4:::1;58363:646:::0;;;;58540:4:::1;58363:646:::0;;;;58545:4:::1;58363:646:::0;;;;58550:4:::1;58363:646:::0;;;;58555:4:::1;58363:646:::0;;;;58560:4:::1;58363:646:::0;;;;58565:4:::1;58363:646:::0;;;;58570:4:::1;58363:646:::0;;;;58575:4:::1;58363:646:::0;;;;58580:4:::1;58363:646:::0;;;;58585:4:::1;58363:646:::0;;;;58590:4:::1;58363:646:::0;;;;58595:4:::1;58363:646:::0;;;;58600:4:::1;58363:646:::0;;;;58605:4:::1;58363:646:::0;;;;58610:4:::1;58363:646:::0;;;;58646:4:::1;58363:646:::0;;;;58651:4:::1;58363:646:::0;;;;58656:4:::1;58363:646:::0;;;;58661:4:::1;58363:646:::0;;;;58666:4:::1;58363:646:::0;;;;58671:4:::1;58363:646:::0;;;;58676:4:::1;58363:646:::0;;;;58681:4:::1;58363:646:::0;;;;58686:4:::1;58363:646:::0;;;;58691:4:::1;58363:646:::0;;;;58696:4:::1;58363:646:::0;;;;58701:4:::1;58363:646:::0;;;;58706:4:::1;58363:646:::0;;;;58711:4:::1;58363:646:::0;;;;58716:4:::1;58363:646:::0;;;;58721:4:::1;58363:646:::0;;;;58726:4:::1;58363:646:::0;;;;58731:4:::1;58363:646:::0;;;;58736:4:::1;58363:646:::0;;;;58741:4:::1;58363:646:::0;;;;58777:4:::1;58363:646:::0;;;;58782:4:::1;58363:646:::0;;;;58787:4:::1;58363:646:::0;;;;58792:4:::1;58363:646:::0;;;;58797:4:::1;58363:646:::0;;;;58802:4:::1;58363:646:::0;;;;58807:4:::1;58363:646:::0;;;;58812:4:::1;58363:646:::0;;;;58817:4:::1;58363:646:::0;;;;58822:4:::1;58363:646:::0;;;;58827:4:::1;58363:646:::0;;;;58832:4:::1;58363:646:::0;;;;58837:4:::1;58363:646:::0;;;;58842:4:::1;58363:646:::0;;;;58847:4:::1;58363:646:::0;;;;58852:4:::1;58363:646:::0;;;;58857:4:::1;58363:646:::0;;;;58862:4:::1;58363:646:::0;;;;58867:4:::1;58363:646:::0;;;;58872:4:::1;58363:646:::0;;;;58908:4:::1;58363:646:::0;;;;58913:4:::1;58363:646:::0;;;;58918:4:::1;58363:646:::0;;;;58923:4:::1;58363:646:::0;;;;58928:4:::1;58363:646:::0;;;;58933:4:::1;58363:646:::0;;;;58938:4:::1;58363:646:::0;;;;58943:4:::1;58363:646:::0;;;;58948:4:::1;58363:646:::0;;;;58953:4:::1;58363:646:::0;;;;58958:4:::1;58363:646:::0;;;;58963:4:::1;58363:646:::0;;;;58968:4:::1;58363:646:::0;;;;58973:4:::1;58363:646:::0;;;;58978:4:::1;58363:646:::0;;;;58983:4:::1;58363:646:::0;;;;58988:4:::1;58363:646:::0;;;;58993:4:::1;58363:646:::0;;;;58998:4:::1;58363:646:::0;;;;59003:4:::1;58363:646:::0;;;;::::1;::::0;58380:1:::1;::::0;58363:16:::1;:646::i;:::-;55459:3558::o:0;64419:110::-;74286:5;;-1:-1:-1;;;;;74286:5:0;74272:10;:19;74264:28;;;;;;64503:18;;::::1;::::0;:7:::1;::::0;:18:::1;::::0;::::1;::::0;::::1;:::i;:::-;;64419:110:::0;:::o;22541:308::-;42713:10;-1:-1:-1;;;;;22640:31:0;;;22636:61;;22680:17;;-1:-1:-1;;;22680:17:0;;;;;;;;;;;22636:61;42713:10;22710:39;;;;:18;:39;;;;;;;;-1:-1:-1;;;;;22710:49:0;;;;;;;;;;;;:60;;-1:-1:-1;;22710:60:0;;;;;;;;;;22786:55;;540:41:1;;;22710:49:0;;42713:10;22786:55;;513:18:1;22786:55:0;;;;;;;22541:308;;:::o;66723:179::-;66776:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;66776:14:0;66816:15;66824:6;66816:7;:15::i;:::-;66808:53;;;;-1:-1:-1;;;66808:53:0;;19525:2:1;66808:53:0;;;19507:21:1;19564:2;19544:18;;;19537:30;19603:27;19583:18;;;19576:55;19648:18;;66808:53:0;19323:349:1;66808:53:0;-1:-1:-1;66879:15:0;;;;:7;:15;;;;;;;;;66872:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;66723:179::o;63625:92::-;74286:5;;-1:-1:-1;;;;;74286:5:0;74272:10;:19;74264:28;;;;;;63695:5:::1;:14:::0;;-1:-1:-1;;;;;;63695:14:0::1;-1:-1:-1::0;;;;;63695:14:0;;;::::1;::::0;;;::::1;::::0;;63625:92::o;59025:3959::-;74286:5;;-1:-1:-1;;;;;74286:5:0;74272:10;:19;74264:28;;;;;;59095:4:::1;;59103:1;59095:9:::0;59092:3868:::1;;59130:347;::::0;;::::1;::::0;::::1;::::0;;59149:3:::1;59130:347:::0;;59153:3:::1;59130:347;::::0;::::1;::::0;59157:3:::1;59130:347:::0;;;;;;;59161:3:::1;59130:347:::0;;;;59165:3:::1;59130:347:::0;;;;59169:3:::1;59130:347:::0;;;;59173:3:::1;59130:347:::0;;;;59177:3:::1;59130:347:::0;;;;59181:3:::1;59130:347:::0;;;;59185:3:::1;59130:347:::0;;;;59189:3:::1;59130:347:::0;;;;59193:3:::1;59130:347:::0;;;;59197:3:::1;59130:347:::0;;;;59201:3:::1;59130:347:::0;;;;59205:3:::1;59130:347:::0;;;;59209:3:::1;59130:347:::0;;;;59213:4:::1;59130:347:::0;;;;59218:4:::1;59130:347:::0;;;;59223:4:::1;59130:347:::0;;;;59228:4:::1;59130:347:::0;;;;59233:4:::1;59130:347:::0;;;;59238:4:::1;59130:347:::0;;;;59243:4:::1;59130:347:::0;;;;59248:4:::1;59130:347:::0;;;;59287:4:::1;59130:347:::0;;;;59292:4:::1;59130:347:::0;;;;59297:4:::1;59130:347:::0;;;;59302:4:::1;59130:347:::0;;;;59307:4:::1;59130:347:::0;;;;59312:4:::1;59130:347:::0;;;;59317:4:::1;59130:347:::0;;;;59322:4:::1;59130:347:::0;;;;59327:4:::1;59130:347:::0;;;;59332:4:::1;59130:347:::0;;;;59337:4:::1;59130:347:::0;;;;59342:4:::1;59130:347:::0;;;;59347:4:::1;59130:347:::0;;;;59352:4:::1;59130:347:::0;;;;59357:4:::1;59130:347:::0;;;;59362:4:::1;59130:347:::0;;;;59367:4:::1;59130:347:::0;;;;59372:4:::1;59130:347:::0;;;;59377:4:::1;59130:347:::0;;;;59382:4:::1;59130:347:::0;;;;59387:4:::1;59130:347:::0;;;;59426:4:::1;59130:347:::0;;;;59431:4:::1;59130:347:::0;;;;59436:4:::1;59130:347:::0;;;;59441:4:::1;59130:347:::0;;;;59446:4:::1;59130:347:::0;;;;59451:4:::1;59130:347:::0;;;;59456:4:::1;59130:347:::0;;;;59461:4:::1;59130:347:::0;;;;59466:4:::1;59130:347:::0;;;;59471:4:::1;59130:347:::0;;;;::::1;::::0;59145:1:::1;::::0;59130:14:::1;:347::i;:::-;59092:3868;;;59509:4;;59517:1;59509:9:::0;59506:3454:::1;;59544:477;::::0;;::::1;::::0;::::1;::::0;;59565:2:::1;59544:477:::0;;59568:2:::1;59544:477;::::0;::::1;::::0;59571:2:::1;59544:477:::0;;;;59574:2:::1;59544:477:::0;;;;;;;;59577:2:::1;59544:477:::0;;;;59580:2:::1;59544:477:::0;;;;59583:2:::1;59544:477:::0;;;;59586:2:::1;59544:477:::0;;;;59589:2:::1;59544:477:::0;;;;59592:2:::1;59544:477:::0;;;;59595:2:::1;59544:477:::0;;;;;;;;59598:2:::1;59544:477:::0;;;;59601:2:::1;59544:477:::0;;;;59604:2:::1;59544:477:::0;;;;;;;;;;;59610:2:::1;59544:477:::0;;;;59613:2:::1;59544:477:::0;;;;59616:2:::1;59544:477:::0;;;;59619:2:::1;59544:477:::0;;;;59622:2:::1;59544:477:::0;;;;59625:2:::1;59544:477:::0;;;;59628:2:::1;59544:477:::0;;;;59631:2:::1;59544:477:::0;;;;59634:2:::1;59544:477:::0;;;;59637:2:::1;59544:477:::0;;;;;;59640:2:::1;59544:477:::0;;;;59643:2:::1;59544:477:::0;;;;;;;;59649:2:::1;59544:477:::0;;;;59652:2:::1;59544:477:::0;;;;59655:2:::1;59544:477:::0;;;;59658:2:::1;59544:477:::0;;;;59661:2:::1;59544:477:::0;;;;59698:2:::1;59544:477:::0;;;;59701:2:::1;59544:477:::0;;;;59704:2:::1;59544:477:::0;;;;59707:2:::1;59544:477:::0;;;;59710:2:::1;59544:477:::0;;;;59713:2:::1;59544:477:::0;;;;59716:2:::1;59544:477:::0;;;;59719:2:::1;59544:477:::0;;;;59722:2:::1;59544:477:::0;;;;59725:2:::1;59544:477:::0;;;;59728:2:::1;59544:477:::0;;;;59731:2:::1;59544:477:::0;;;;59734:2:::1;59544:477:::0;;;;;;;;59740:2:::1;59544:477:::0;;;;59743:2:::1;59544:477:::0;;;;59746:2:::1;59544:477:::0;;;;59749:3:::1;59544:477:::0;;;;59753:3:::1;59544:477:::0;;;;59757:3:::1;59544:477:::0;;;;59761:3:::1;59544:477:::0;;;;59765:3:::1;59544:477:::0;;;;59769:3:::1;59544:477:::0;;;;59773:3:::1;59544:477:::0;;;;59777:3:::1;59544:477:::0;;;;59781:3:::1;59544:477:::0;;;;59785:3:::1;59544:477:::0;;;;59789:3:::1;59544:477:::0;;;;59830:3:::1;59544:477:::0;;;;59834:3:::1;59544:477:::0;;;;59838:3:::1;59544:477:::0;;;;59842:3:::1;59544:477:::0;;;;59846:3:::1;59544:477:::0;;;;59850:3:::1;59544:477:::0;;;;59854:3:::1;59544:477:::0;;;;59858:3:::1;59544:477:::0;;;;59862:3:::1;59544:477:::0;;;;59866:3:::1;59544:477:::0;;;;59870:3:::1;59544:477:::0;;;;59874:3:::1;59544:477:::0;;;;59878:3:::1;59544:477:::0;;;;59882:3:::1;59544:477:::0;;;;59886:3:::1;59544:477:::0;;;;59890:3:::1;59544:477:::0;;;;59894:3:::1;59544:477:::0;;;;59898:3:::1;59544:477:::0;;;;59902:3:::1;59544:477:::0;;;;;;;;;;;59910:3:::1;59544:477:::0;;;;59914:3:::1;59544:477:::0;;;;59918:3:::1;59544:477:::0;;;;59956:3:::1;59544:477:::0;;;;59960:3:::1;59544:477:::0;;;;59964:3:::1;59544:477:::0;;;;59968:3:::1;59544:477:::0;;;;59972:3:::1;59544:477:::0;;;;59976:3:::1;59544:477:::0;;;;59980:3:::1;59544:477:::0;;;;59984:3:::1;59544:477:::0;;;;59988:3:::1;59544:477:::0;;;;59992:3:::1;59544:477:::0;;;;59996:3:::1;59544:477:::0;;;;60000:3:::1;59544:477:::0;;;;60004:3:::1;59544:477:::0;;;;60008:3:::1;59544:477:::0;;;;60012:3:::1;59544:477:::0;;;;60016:3:::1;59544:477:::0;;;;::::1;::::0;59561:1:::1;::::0;59544:16:::1;:477::i;59506:3454::-;60051:4;;60059:1;60051:9:::0;60048:2912:::1;;60086:634;::::0;;::::1;::::0;::::1;::::0;;60107:3:::1;60086:634:::0;;60111:3:::1;60086:634;::::0;::::1;::::0;60115:3:::1;60086:634:::0;;;;;;;60119:3:::1;60086:634:::0;;;;60123:3:::1;60086:634:::0;;;;60127:3:::1;60086:634:::0;;;;60131:3:::1;60086:634:::0;;;;60135:3:::1;60086:634:::0;;;;60139:3:::1;60086:634:::0;;;;60143:3:::1;60086:634:::0;;;;60147:3:::1;60086:634:::0;;;;60151:3:::1;60086:634:::0;;;;60155:3:::1;60086:634:::0;;;;60159:3:::1;60086:634:::0;;;;60163:3:::1;60086:634:::0;;;;60167:3:::1;60086:634:::0;;;;60171:3:::1;60086:634:::0;;;;60175:3:::1;60086:634:::0;;;;60179:3:::1;60086:634:::0;;;;60183:3:::1;60086:634:::0;;;;60187:3:::1;60086:634:::0;;;;60191:3:::1;60086:634:::0;;;;60195:3:::1;60086:634:::0;;;;60199:3:::1;60086:634:::0;;;;60203:4:::1;60086:634:::0;;;;60242:4:::1;60086:634:::0;;;;60247:4:::1;60086:634:::0;;;;60252:4:::1;60086:634:::0;;;;60257:4:::1;60086:634:::0;;;;60262:4:::1;60086:634:::0;;;;60267:4:::1;60086:634:::0;;;;60272:4:::1;60086:634:::0;;;;60277:4:::1;60086:634:::0;;;;60282:4:::1;60086:634:::0;;;;60287:4:::1;60086:634:::0;;;;60292:4:::1;60086:634:::0;;;;60297:4:::1;60086:634:::0;;;;60302:4:::1;60086:634:::0;;;;60307:4:::1;60086:634:::0;;;;60312:4:::1;60086:634:::0;;;;60317:4:::1;60086:634:::0;;;;60322:4:::1;60086:634:::0;;;;60327:4:::1;60086:634:::0;;;;;;;;60332:4:::1;60086:634:::0;;;;60337:4:::1;60086:634:::0;;;;60376:4:::1;60086:634:::0;;;;60381:4:::1;60086:634:::0;;;;60386:4:::1;60086:634:::0;;;;60391:4:::1;60086:634:::0;;;;60396:4:::1;60086:634:::0;;;;60401:4:::1;60086:634:::0;;;;60406:4:::1;60086:634:::0;;;;60411:4:::1;60086:634:::0;;;;60416:4:::1;60086:634:::0;;;;60421:4:::1;60086:634:::0;;;;;;;;60431:4:::1;60086:634:::0;;;;60436:4:::1;60086:634:::0;;;;60441:4:::1;60086:634:::0;;;;60446:4:::1;60086:634:::0;;;;60451:4:::1;60086:634:::0;;;;60456:4:::1;60086:634:::0;;;;60461:4:::1;60086:634:::0;;;;60466:4:::1;60086:634:::0;;;;60471:4:::1;60086:634:::0;;;;60476:4:::1;60086:634:::0;;;;60515:4:::1;60086:634:::0;;;;60520:4:::1;60086:634:::0;;;;60525:4:::1;60086:634:::0;;;;60530:4:::1;60086:634:::0;;;;60535:4:::1;60086:634:::0;;;;60540:4:::1;60086:634:::0;;;;60545:4:::1;60086:634:::0;;;;60550:4:::1;60086:634:::0;;;;60555:4:::1;60086:634:::0;;;;60560:4:::1;60086:634:::0;;;;60565:4:::1;60086:634:::0;;;;60570:4:::1;60086:634:::0;;;;60575:4:::1;60086:634:::0;;;;60580:4:::1;60086:634:::0;;;;60585:4:::1;60086:634:::0;;;;60590:4:::1;60086:634:::0;;;;60595:4:::1;60086:634:::0;;;;60600:4:::1;60086:634:::0;;;;60605:4:::1;60086:634:::0;;;;60610:4:::1;60086:634:::0;;;;60649:4:::1;60086:634:::0;;;;60654:4:::1;60086:634:::0;;;;60659:4:::1;60086:634:::0;;;;60664:4:::1;60086:634:::0;;;;60669:4:::1;60086:634:::0;;;;60674:4:::1;60086:634:::0;;;;60679:4:::1;60086:634:::0;;;;60684:4:::1;60086:634:::0;;;;60689:4:::1;60086:634:::0;;;;60694:4:::1;60086:634:::0;;;;60699:4:::1;60086:634:::0;;;;60704:4:::1;60086:634:::0;;;;60709:4:::1;60086:634:::0;;;;60714:4:::1;60086:634:::0;;;;::::1;::::0;60103:1:::1;::::0;60086:16:::1;:634::i;60048:2912::-;60750:4;;60758:1;60750:9:::0;60747:2213:::1;;60785:658;::::0;;::::1;::::0;::::1;::::0;;60806:4:::1;60785:658:::0;;60811:4:::1;60785:658;::::0;::::1;::::0;60816:4:::1;60785:658:::0;;;;;;;60821:4:::1;60785:658:::0;;;;60826:4:::1;60785:658:::0;;;;60831:4:::1;60785:658:::0;;;;;;60836:4:::1;60785:658:::0;;;;60841:4:::1;60785:658:::0;;;;60846:4:::1;60785:658:::0;;;;60851:4:::1;60785:658:::0;;;;60856:4:::1;60785:658:::0;;;;60861:4:::1;60785:658:::0;;;;60866:4:::1;60785:658:::0;;;;60871:4:::1;60785:658:::0;;;;60876:4:::1;60785:658:::0;;;;60881:4:::1;60785:658:::0;;;;60886:4:::1;60785:658:::0;;;;60891:4:::1;60785:658:::0;;;;60896:4:::1;60785:658:::0;;;;60901:4:::1;60785:658:::0;;;;60940:4:::1;60785:658:::0;;;;60945:4:::1;60785:658:::0;;;;60950:4:::1;60785:658:::0;;;;60955:4:::1;60785:658:::0;;;;60960:4:::1;60785:658:::0;;;;60965:4:::1;60785:658:::0;;;;60970:4:::1;60785:658:::0;;;;60975:4:::1;60785:658:::0;;;;60980:4:::1;60785:658:::0;;;;60985:4:::1;60785:658:::0;;;;;;60990:4:::1;60785:658:::0;;;;60995:4:::1;60785:658:::0;;;;61000:4:::1;60785:658:::0;;;;61005:4:::1;60785:658:::0;;;;61010:4:::1;60785:658:::0;;;;61015:4:::1;60785:658:::0;;;;61020:4:::1;60785:658:::0;;;;61025:4:::1;60785:658:::0;;;;61030:4:::1;60785:658:::0;;;;61035:4:::1;60785:658:::0;;;;61074:4:::1;60785:658:::0;;;;61079:4:::1;60785:658:::0;;;;61084:4:::1;60785:658:::0;;;;61089:4:::1;60785:658:::0;;;;61094:4:::1;60785:658:::0;;;;61099:4:::1;60785:658:::0;;;;61104:4:::1;60785:658:::0;;;;61109:4:::1;60785:658:::0;;;;;;;61114:4:::1;60785:658:::0;;;;61119:4:::1;60785:658:::0;;;;61124:4:::1;60785:658:::0;;;;61129:4:::1;60785:658:::0;;;;61134:4:::1;60785:658:::0;;;;61139:4:::1;60785:658:::0;;;;61144:4:::1;60785:658:::0;;;;61149:4:::1;60785:658:::0;;;;61154:4:::1;60785:658:::0;;;;61159:4:::1;60785:658:::0;;;;61164:4:::1;60785:658:::0;;;;;;61169:4:::1;60785:658:::0;;;;61208:4:::1;60785:658:::0;;;;61213:4:::1;60785:658:::0;;;;61218:4:::1;60785:658:::0;;;;61223:4:::1;60785:658:::0;;;;61228:4:::1;60785:658:::0;;;;61233:4:::1;60785:658:::0;;;;61238:4:::1;60785:658:::0;;;;61243:4:::1;60785:658:::0;;;;61248:4:::1;60785:658:::0;;;;61253:4:::1;60785:658:::0;;;;61258:4:::1;60785:658:::0;;;;;;;;61263:4:::1;60785:658:::0;;;;61268:4:::1;60785:658:::0;;;;61273:4:::1;60785:658:::0;;;;61278:4:::1;60785:658:::0;;;;61283:4:::1;60785:658:::0;;;;;;;;61293:4:::1;60785:658:::0;;;;61298:4:::1;60785:658:::0;;;;61303:4:::1;60785:658:::0;;;;61342:4:::1;60785:658:::0;;;;61347:4:::1;60785:658:::0;;;;61352:4:::1;60785:658:::0;;;;61357:4:::1;60785:658:::0;;;;61362:4:::1;60785:658:::0;;;;61367:4:::1;60785:658:::0;;;;61372:4:::1;60785:658:::0;;;;61377:4:::1;60785:658:::0;;;;61382:4:::1;60785:658:::0;;;;61387:4:::1;60785:658:::0;;;;61392:4:::1;60785:658:::0;;;;61397:4:::1;60785:658:::0;;;;61402:4:::1;60785:658:::0;;;;61407:4:::1;60785:658:::0;;;;61412:4:::1;60785:658:::0;;;;61417:4:::1;60785:658:::0;;;;61422:4:::1;60785:658:::0;;;;61427:4:::1;60785:658:::0;;;;61432:4:::1;60785:658:::0;;;;61437:4:::1;60785:658:::0;;;;::::1;::::0;60802:1:::1;::::0;60785:16:::1;:658::i;60747:2213::-;61473:4;;61481:1;61473:9:::0;61470:1490:::1;;61508:658;::::0;;::::1;::::0;::::1;::::0;;61529:4:::1;61508:658:::0;;61534:4:::1;61508:658;::::0;::::1;::::0;61539:4:::1;61508:658:::0;;;;;;61544:4:::1;61508:658:::0;;;;61549:4:::1;61508:658:::0;;;;61554:4:::1;61508:658:::0;;;;61559:4:::1;61508:658:::0;;;;61564:4:::1;61508:658:::0;;;;61569:4:::1;61508:658:::0;;;;61574:4:::1;61508:658:::0;;;;61579:4:::1;61508:658:::0;;;;61584:4:::1;61508:658:::0;;;;61589:4:::1;61508:658:::0;;;;61594:4:::1;61508:658:::0;;;;61599:4:::1;61508:658:::0;;;;61604:4:::1;61508:658:::0;;;;61609:4:::1;61508:658:::0;;;;61614:4:::1;61508:658:::0;;;;;;61619:4:::1;61508:658:::0;;;;61624:4:::1;61508:658:::0;;;;61663:4:::1;61508:658:::0;;;;61668:4:::1;61508:658:::0;;;;61673:4:::1;61508:658:::0;;;;61678:4:::1;61508:658:::0;;;;61683:4:::1;61508:658:::0;;;;61688:4:::1;61508:658:::0;;;;61693:4:::1;61508:658:::0;;;;61698:4:::1;61508:658:::0;;;;61703:4:::1;61508:658:::0;;;;61708:4:::1;61508:658:::0;;;;61713:4:::1;61508:658:::0;;;;61718:4:::1;61508:658:::0;;;;61723:4:::1;61508:658:::0;;;;61728:4:::1;61508:658:::0;;;;61733:4:::1;61508:658:::0;;;;61738:4:::1;61508:658:::0;;;;61743:4:::1;61508:658:::0;;;;61748:4:::1;61508:658:::0;;;;61753:4:::1;61508:658:::0;;;;61758:4:::1;61508:658:::0;;;;61797:4:::1;61508:658:::0;;;;61802:4:::1;61508:658:::0;;;;61807:4:::1;61508:658:::0;;;;61812:4:::1;61508:658:::0;;;;61817:4:::1;61508:658:::0;;;;61822:4:::1;61508:658:::0;;;;61827:4:::1;61508:658:::0;;;;61832:4:::1;61508:658:::0;;;;61837:4:::1;61508:658:::0;;;;61842:4:::1;61508:658:::0;;;;61847:4:::1;61508:658:::0;;;;61852:4:::1;61508:658:::0;;;;61857:4:::1;61508:658:::0;;;;61862:4:::1;61508:658:::0;;;;61867:4:::1;61508:658:::0;;;;61872:4:::1;61508:658:::0;;;;61877:4:::1;61508:658:::0;;;;61882:4:::1;61508:658:::0;;;;61887:4:::1;61508:658:::0;;;;61892:4:::1;61508:658:::0;;;;61931:4:::1;61508:658:::0;;;;61936:4:::1;61508:658:::0;;;;61941:4:::1;61508:658:::0;;;;61946:4:::1;61508:658:::0;;;;61951:4:::1;61508:658:::0;;;;61956:4:::1;61508:658:::0;;;;61961:4:::1;61508:658:::0;;;;61966:4:::1;61508:658:::0;;;;61971:4:::1;61508:658:::0;;;;61976:4:::1;61508:658:::0;;;;61981:4:::1;61508:658:::0;;;;61986:4:::1;61508:658:::0;;;;61991:4:::1;61508:658:::0;;;;61996:4:::1;61508:658:::0;;;;62001:4:::1;61508:658:::0;;;;62006:4:::1;61508:658:::0;;;;62011:4:::1;61508:658:::0;;;;62016:4:::1;61508:658:::0;;;;62021:4:::1;61508:658:::0;;;;62026:4:::1;61508:658:::0;;;;62065:4:::1;61508:658:::0;;;;;;;62070:4:::1;61508:658:::0;;;;62075:4:::1;61508:658:::0;;;;62080:4:::1;61508:658:::0;;;;62085:4:::1;61508:658:::0;;;;62090:4:::1;61508:658:::0;;;;62095:4:::1;61508:658:::0;;;;62100:4:::1;61508:658:::0;;;;62105:4:::1;61508:658:::0;;;;62110:4:::1;61508:658:::0;;;;;;;62115:4:::1;61508:658:::0;;;;62120:4:::1;61508:658:::0;;;;62125:4:::1;61508:658:::0;;;;62130:4:::1;61508:658:::0;;;;62135:4:::1;61508:658:::0;;;;62140:4:::1;61508:658:::0;;;;62145:4:::1;61508:658:::0;;;;62150:4:::1;61508:658:::0;;;;62155:4:::1;61508:658:::0;;;;62160:4:::1;61508:658:::0;;;;::::1;::::0;61525:1:::1;::::0;61508:16:::1;:658::i;61470:1490::-;62196:4;;62204:1;62196:9:::0;62193:767:::1;;62231:658;::::0;;::::1;::::0;::::1;::::0;;62252:4:::1;62231:658:::0;;62257:4:::1;62231:658;::::0;::::1;::::0;62262:4:::1;62231:658:::0;;;;;;;62267:4:::1;62231:658:::0;;;;62272:4:::1;62231:658:::0;;;;62277:4:::1;62231:658:::0;;;;62282:4:::1;62231:658:::0;;;;62287:4:::1;62231:658:::0;;;;62292:4:::1;62231:658:::0;;;;62297:4:::1;62231:658:::0;;;;62302:4:::1;62231:658:::0;;;;62307:4:::1;62231:658:::0;;;;62312:4:::1;62231:658:::0;;;;62317:4:::1;62231:658:::0;;;;62322:4:::1;62231:658:::0;;;;62327:4:::1;62231:658:::0;;;;62332:4:::1;62231:658:::0;;;;62337:4:::1;62231:658:::0;;;;62342:4:::1;62231:658:::0;;;;62347:4:::1;62231:658:::0;;;;62386:4:::1;62231:658:::0;;;;62391:4:::1;62231:658:::0;;;;62396:4:::1;62231:658:::0;;;;62401:4:::1;62231:658:::0;;;;62406:4:::1;62231:658:::0;;;;62411:4:::1;62231:658:::0;;;;62416:4:::1;62231:658:::0;;;;62421:4:::1;62231:658:::0;;;;62426:4:::1;62231:658:::0;;;;62431:4:::1;62231:658:::0;;;;62436:4:::1;62231:658:::0;;;;62441:4:::1;62231:658:::0;;;;62446:4:::1;62231:658:::0;;;;62451:4:::1;62231:658:::0;;;;62456:4:::1;62231:658:::0;;;;62461:4:::1;62231:658:::0;;;;62466:4:::1;62231:658:::0;;;;62471:4:::1;62231:658:::0;;;;62476:4:::1;62231:658:::0;;;;62481:4:::1;62231:658:::0;;;;62520:4:::1;62231:658:::0;;;;62525:4:::1;62231:658:::0;;;;62530:4:::1;62231:658:::0;;;;62535:4:::1;62231:658:::0;;;;62540:4:::1;62231:658:::0;;;;62545:4:::1;62231:658:::0;;;;62550:4:::1;62231:658:::0;;;;62555:4:::1;62231:658:::0;;;;62560:4:::1;62231:658:::0;;;;62565:4:::1;62231:658:::0;;;;62570:4:::1;62231:658:::0;;;;62575:4:::1;62231:658:::0;;;;62580:4:::1;62231:658:::0;;;;62585:4:::1;62231:658:::0;;;;62590:4:::1;62231:658:::0;;;;62595:4:::1;62231:658:::0;;;;62600:4:::1;62231:658:::0;;;;62605:4:::1;62231:658:::0;;;;62610:4:::1;62231:658:::0;;;;62615:4:::1;62231:658:::0;;;;62654:4:::1;62231:658:::0;;;;62659:4:::1;62231:658:::0;;;;62664:4:::1;62231:658:::0;;;;62669:4:::1;62231:658:::0;;;;62674:4:::1;62231:658:::0;;;;62679:4:::1;62231:658:::0;;;;62684:4:::1;62231:658:::0;;;;62689:4:::1;62231:658:::0;;;;62694:4:::1;62231:658:::0;;;;62699:4:::1;62231:658:::0;;;;62704:4:::1;62231:658:::0;;;;62709:4:::1;62231:658:::0;;;;62714:4:::1;62231:658:::0;;;;62719:4:::1;62231:658:::0;;;;62724:4:::1;62231:658:::0;;;;62729:4:::1;62231:658:::0;;;;62734:4:::1;62231:658:::0;;;;62739:4:::1;62231:658:::0;;;;62744:4:::1;62231:658:::0;;;;62749:4:::1;62231:658:::0;;;;62788:4:::1;62231:658:::0;;;;62793:4:::1;62231:658:::0;;;;62798:4:::1;62231:658:::0;;;;62803:4:::1;62231:658:::0;;;;62808:4:::1;62231:658:::0;;;;62813:4:::1;62231:658:::0;;;;62818:4:::1;62231:658:::0;;;;62823:4:::1;62231:658:::0;;;;62828:4:::1;62231:658:::0;;;;62833:4:::1;62231:658:::0;;;;62838:4:::1;62231:658:::0;;;;62843:4:::1;62231:658:::0;;;;62848:4:::1;62231:658:::0;;;;62853:4:::1;62231:658:::0;;;;62858:4:::1;62231:658:::0;;;;62863:4:::1;62231:658:::0;;;;62868:4:::1;62231:658:::0;;;;62873:4:::1;62231:658:::0;;;;62878:4:::1;62231:658:::0;;;;62883:4:::1;62231:658:::0;;;;::::1;::::0;62248:1:::1;::::0;62231:16:::1;:658::i;62193:767::-;62970:4;:6:::0;;;:4:::1;:6;::::0;::::1;:::i;:::-;;;;;;59025:3959::o:0;23411:399::-;23578:31;23591:4;23597:2;23601:7;23578:12;:31::i;:::-;-1:-1:-1;;;;;23624:14:0;;;:19;23620:183;;23663:56;23694:4;23700:2;23704:7;23713:5;23663:30;:56::i;:::-;23658:145;;23747:40;;-1:-1:-1;;;23747:40:0;;;;;;;;;;;23658:145;23411:399;;;;:::o;64194:98::-;74286:5;;-1:-1:-1;;;;;74286:5:0;74272:10;:19;74264:28;;;;;;64264:8:::1;:20:::0;64194:98::o;67613:190::-;74371:11;;67714:4;;-1:-1:-1;;;;;74371:11:0;74357:10;:25;74349:89;;;;-1:-1:-1;;;74349:89:0;;;;;;;:::i;:::-;67736:37:::1;67744:8;67754:9;67765:7;67736;:37::i;:::-;-1:-1:-1::0;67791:4:0::1;::::0;67613:190;-1:-1:-1;;;;67613:190:0:o;64666:127::-;74286:5;;-1:-1:-1;;;;;74286:5:0;74272:10;:19;74264:28;;;;;;64732:7:::1;:18:::0;;-1:-1:-1;;64732:18:0::1;::::0;::::1;;::::0;;::::1;::::0;;;64766:19:::1;::::0;64732:18:::1;64777:7:::0;;;565:14:1;558:22;540:41;;64766:19:0::1;::::0;528:2:1;513:18;64766:19:0::1;;;;;;;64666:127:::0;:::o;48317:420::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;64922:1:0;48473:7;:25;:54;;;-1:-1:-1;13468:7:0;13495:13;48502:7;:25;;48473:54;48469:103;;;48551:9;48317:420;-1:-1:-1;;48317:420:0:o;48469:103::-;48594:21;48607:7;48594:12;:21::i;:::-;48582:33;;48630:9;:16;;;48626:65;;;48670:9;48317:420;-1:-1:-1;;48317:420:0:o;48626:65::-;48708:21;48721:7;48708:12;:21::i;64939:856::-;65031:13;65062:16;65070:7;65062;:16::i;:::-;65057:59;;65087:29;;-1:-1:-1;;;65087:29:0;;;;;;;;;;;65057:59;65129:21;65153:10;:8;:10::i;:::-;65129:34;;65176:23;65202:19;65213:7;65202:10;:19::i;:::-;65176:45;;65247:7;65241:21;65266:1;65241:26;:546;;;;;;;;;;;;;;;;;65294:7;65373:27;65383:8;:16;;;65373:9;:27::i;:::-;65476:29;65486:8;:18;;;65476:9;:29::i;:::-;65581:25;65591:8;:14;;;65581:9;:25::i;:::-;65682:28;65692:8;:17;;;65682:9;:28::i;:::-;65277:504;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;65241:546;65234:553;64939:856;-1:-1:-1;;;;64939:856:0:o;64301:110::-;74286:5;;-1:-1:-1;;;;;74286:5:0;74272:10;:19;74264:28;;;;;;64377:11:::1;:26:::0;64301:110::o;63725:101::-;74286:5;;-1:-1:-1;;;;;74286:5:0;74272:10;:19;74264:28;;;;;;63798:8:::1;:20:::0;;-1:-1:-1;;;;;;63798:20:0::1;-1:-1:-1::0;;;;;63798:20:0;;;::::1;::::0;;;::::1;::::0;;63725:101::o;66595:120::-;66650:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;66650:14:0;66689:18;66700:6;66689:10;:18::i;24065:273::-;24122:4;24178:7;64922:1;24159:26;;:66;;;;;24212:13;;24202:7;:23;24159:66;:152;;;;-1:-1:-1;;24263:26:0;;;;:17;:26;;;;;;-1:-1:-1;;;24263:43:0;:48;;24065:273::o;17025:1129::-;17092:7;17127;;64922:1;17176:23;17172:915;;17229:13;;17222:4;:20;17218:869;;;17267:14;17284:23;;;:17;:23;;;;;;;-1:-1:-1;;;17373:23:0;;:28;;17369:699;;17892:113;17899:6;17909:1;17899:11;17892:113;;-1:-1:-1;;;17970:6:0;17952:25;;;;:17;:25;;;;;;17892:113;;17369:699;17244:843;17218:869;18115:31;;-1:-1:-1;;;18115:31:0;;;;;;;;;;;34408:89;34468:21;34474:7;34483:5;34468;:21::i;:::-;34408:89;:::o;66922:657::-;66987:4;67023:8;67035:1;67023:13;67020:528;;67084:16;;67061:20;;:39;67053:90;;;;-1:-1:-1;;;67053:90:0;;21363:2:1;67053:90:0;;;21345:21:1;21402:2;21382:18;;;21375:30;21441:34;21421:18;;;21414:62;-1:-1:-1;;;21492:18:1;;;21485:36;21538:19;;67053:90:0;21161:402:1;67020:528:0;67208:8;67220:1;67208:13;67205:343;;67267:14;;67246:18;;:35;67238:84;;;;-1:-1:-1;;;67238:84:0;;21770:2:1;67238:84:0;;;21752:21:1;21809:2;21789:18;;;21782:30;21848:34;21828:18;;;21821:62;-1:-1:-1;;;21899:18:1;;;21892:34;21943:19;;67238:84:0;21568:400:1;67205:343:0;67381:8;67393:1;67381:13;67378:170;;67443:17;;67419:21;;:41;67411:98;;;;-1:-1:-1;;;67411:98:0;;22175:2:1;67411:98:0;;;22157:21:1;22214:2;22194:18;;;22187:30;22253:34;22233:18;;;22226:62;-1:-1:-1;;;22304:18:1;;;22297:42;22356:19;;67411:98:0;21973:408:1;67378:170:0;-1:-1:-1;67565:5:0;;66922:657;-1:-1:-1;66922:657:0:o;25896:1529::-;25961:20;25984:13;-1:-1:-1;;;;;26012:16:0;;26008:48;;26037:19;;-1:-1:-1;;;26037:19:0;;;;;;;;;;;26008:48;26071:8;26083:1;26071:13;26067:44;;26093:18;;-1:-1:-1;;;26093:18:0;;;;;;;;;;;26067:44;-1:-1:-1;;;;;26599:22:0;;;;;;:18;:22;;10043:2;26599:22;;:70;;26637:31;26625:44;;26599:70;;;20007:11;19983:22;19979:40;-1:-1:-1;21717:15:0;;21692:23;21688:45;19976:51;19966:62;26912:31;;;;:17;:31;;;;;:173;26930:12;27161:23;;;27199:101;27226:35;;27251:9;;;;;-1:-1:-1;;;;;27226:35:0;;;27243:1;;27226:35;;27243:1;;27226:35;27295:3;27285:7;:13;27199:101;;27316:13;:19;-1:-1:-1;23155:185:0;;;:::o;18702:153::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18822:24:0;;;;:17;:24;;;;;;18803:44;;:18;:44::i;62993:190::-;63084:6;63080:96;63100:2;63096:1;:6;63080:96;;;63159:5;63133:12;:23;63146:6;63153:1;63146:9;;;;;;;:::i;:::-;;;;;63133:23;;;;;;;;;;;;;:31;;;;63104:3;;;;;:::i;:::-;;;;63080:96;;63191:194;63285:6;63281:97;63301:3;63297:1;:7;63281:97;;;63361:5;63335:12;:23;63348:6;63355:1;63348:9;;;;;;;:::i;:::-;;;;;63335:23;;;;;;;;;;;;;:31;;;;63306:3;;;;;:::i;:::-;;;;63281:97;;63393:204;74286:5;;-1:-1:-1;;;;;74286:5:0;74272:10;:19;74264:28;;;;;;63497:6:::1;63493:97;63513:3;63509:1;:7;63493:97;;;63573:5;63547:12;:23;63560:6;63567:1;63560:9;;;;;;;:::i;:::-;;;;;63547:23;;;;;;;;;;;;;:31;;;;63518:3;;;;;:::i;:::-;;;;63493:97;;38281:716:::0;38465:88;;-1:-1:-1;;;38465:88:0;;38444:4;;-1:-1:-1;;;;;38465:45:0;;;;;:88;;42713:10;;38532:4;;38538:7;;38547:5;;38465:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38465:88:0;;;;;;;;-1:-1:-1;;38465:88:0;;;;;;;;;;;;:::i;:::-;;;38461:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38748:6;:13;38765:1;38748:18;38744:235;;38794:40;;-1:-1:-1;;;38794:40:0;;;;;;;;;;;38744:235;38937:6;38931:13;38922:6;38918:2;38914:15;38907:38;38461:529;-1:-1:-1;;;;;;38624:64:0;-1:-1:-1;;;38624:64:0;;-1:-1:-1;38281:716:0;;;;;;:::o;19358:158::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19461:47:0;19480:27;19499:7;19480:18;:27::i;:::-;19461:18;:47::i;65803:100::-;65855:13;65888:7;65881:14;;;;;:::i;42837:1960::-;43306:4;43300:11;;43313:3;43296:21;;43391:17;;;;44087:11;;;43966:5;44219:2;44233;44223:13;;44215:22;44087:11;44202:36;44274:2;44264:13;;43858:697;44293:4;43858:697;;;44484:1;44479:3;44475:11;44468:18;;44535:2;44529:4;44525:13;44521:2;44517:22;44512:3;44504:36;44388:2;44378:13;;43858:697;;;-1:-1:-1;44585:13:0;;;-1:-1:-1;;44700:12:0;;;44760:19;;;44700:12;42837:1960;-1:-1:-1;42837:1960:0:o;34726:3063::-;34806:27;34836;34855:7;34836:18;:27::i;:::-;34806:57;-1:-1:-1;34806:57:0;34876:12;;34998:28;35018:7;29961:27;30260:21;;;30087:15;30302:4;30295:36;30384:4;30368:21;;30474:26;;30368:21;;29866:652;34998:28;34941:85;;;;35043:13;35039:310;;;35164:62;35183:15;35200:4;42713:10;35206:19;42626:105;35164:62;35159:178;;35250:43;35267:4;42713:10;22920:164;:::i;35250:43::-;35245:92;;35302:35;;-1:-1:-1;;;35302:35:0;;;;;;;;;;;35245:92;35505:15;35502:160;;;35645:1;35624:19;35617:30;35502:160;-1:-1:-1;;;;;36263:24:0;;;;;;:18;:24;;;;;:59;;36291:31;36263:59;;;20007:11;19983:22;19979:40;19966:62;-1:-1:-1;;;19966:62:0;36560:26;;;;:17;:26;;;;;:203;;;;-1:-1:-1;;;36883:46:0;;:51;;36879:626;;36987:1;36977:11;;36955:19;37110:30;;;:17;:30;;;;;;:35;;37106:384;;37248:13;;37233:11;:28;37229:242;;37395:30;;;;:17;:30;;;;;:52;;;37229:242;36936:569;36879:626;37533:35;;37560:7;;37556:1;;-1:-1:-1;;;;;37533:35:0;;;;;37556:1;;37533:35;-1:-1:-1;;37756:12:0;:14;;;;;;-1:-1:-1;;;;34726:3063:0:o;18248:363::-;-1:-1:-1;;;;;;;;;;;;;18358:41:0;;;;10560:3;18444:32;;;-1:-1:-1;;;;;18410:67:0;-1:-1:-1;;;18410:67:0;-1:-1:-1;;;18507:23:0;;:28;;-1:-1:-1;;;18488:47:0;;;;11077:3;18575:27;;;;-1:-1:-1;;;18546:57:0;-1:-1:-1;18248:363:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:131:1;-1:-1:-1;;;;;;88:32:1;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:258::-;664:1;674:113;688:6;685:1;682:13;674:113;;;764:11;;;758:18;745:11;;;738:39;710:2;703:10;674:113;;;805:6;802:1;799:13;796:48;;;-1:-1:-1;;840:1:1;822:16;;815:27;592:258::o;855:::-;897:3;935:5;929:12;962:6;957:3;950:19;978:63;1034:6;1027:4;1022:3;1018:14;1011:4;1004:5;1000:16;978:63;:::i;:::-;1095:2;1074:15;-1:-1:-1;;1070:29:1;1061:39;;;;1102:4;1057:50;;855:258;-1:-1:-1;;855:258:1:o;1118:220::-;1267:2;1256:9;1249:21;1230:4;1287:45;1328:2;1317:9;1313:18;1305:6;1287:45;:::i;1343:180::-;1402:6;1455:2;1443:9;1434:7;1430:23;1426:32;1423:52;;;1471:1;1468;1461:12;1423:52;-1:-1:-1;1494:23:1;;1343:180;-1:-1:-1;1343:180:1:o;1736:131::-;-1:-1:-1;;;;;1811:31:1;;1801:42;;1791:70;;1857:1;1854;1847:12;1872:315;1940:6;1948;2001:2;1989:9;1980:7;1976:23;1972:32;1969:52;;;2017:1;2014;2007:12;1969:52;2056:9;2043:23;2075:31;2100:5;2075:31;:::i;:::-;2125:5;2177:2;2162:18;;;;2149:32;;-1:-1:-1;;;1872:315:1:o;2374:456::-;2451:6;2459;2467;2520:2;2508:9;2499:7;2495:23;2491:32;2488:52;;;2536:1;2533;2526:12;2488:52;2575:9;2562:23;2594:31;2619:5;2594:31;:::i;:::-;2644:5;-1:-1:-1;2701:2:1;2686:18;;2673:32;2714:33;2673:32;2714:33;:::i;:::-;2374:456;;2766:7;;-1:-1:-1;;;2820:2:1;2805:18;;;;2792:32;;2374:456::o;2835:247::-;2894:6;2947:2;2935:9;2926:7;2922:23;2918:32;2915:52;;;2963:1;2960;2953:12;2915:52;3002:9;2989:23;3021:31;3046:5;3021:31;:::i;3087:383::-;3164:6;3172;3180;3233:2;3221:9;3212:7;3208:23;3204:32;3201:52;;;3249:1;3246;3239:12;3201:52;3288:9;3275:23;3307:31;3332:5;3307:31;:::i;:::-;3357:5;3409:2;3394:18;;3381:32;;-1:-1:-1;3460:2:1;3445:18;;;3432:32;;3087:383;-1:-1:-1;;;3087:383:1:o;3475:127::-;3536:10;3531:3;3527:20;3524:1;3517:31;3567:4;3564:1;3557:15;3591:4;3588:1;3581:15;3607:275;3678:2;3672:9;3743:2;3724:13;;-1:-1:-1;;3720:27:1;3708:40;;-1:-1:-1;;;;;3763:34:1;;3799:22;;;3760:62;3757:88;;;3825:18;;:::i;:::-;3861:2;3854:22;3607:275;;-1:-1:-1;3607:275:1:o;3887:183::-;3947:4;-1:-1:-1;;;;;3972:6:1;3969:30;3966:56;;;4002:18;;:::i;:::-;-1:-1:-1;4047:1:1;4043:14;4059:4;4039:25;;3887:183::o;4075:662::-;4129:5;4182:3;4175:4;4167:6;4163:17;4159:27;4149:55;;4200:1;4197;4190:12;4149:55;4236:6;4223:20;4262:4;4286:60;4302:43;4342:2;4302:43;:::i;:::-;4286:60;:::i;:::-;4380:15;;;4466:1;4462:10;;;;4450:23;;4446:32;;;4411:12;;;;4490:15;;;4487:35;;;4518:1;4515;4508:12;4487:35;4554:2;4546:6;4542:15;4566:142;4582:6;4577:3;4574:15;4566:142;;;4648:17;;4636:30;;4686:12;;;;4599;;4566:142;;;-1:-1:-1;4726:5:1;4075:662;-1:-1:-1;;;;;;4075:662:1:o;4742:348::-;4826:6;4879:2;4867:9;4858:7;4854:23;4850:32;4847:52;;;4895:1;4892;4885:12;4847:52;4935:9;4922:23;-1:-1:-1;;;;;4960:6:1;4957:30;4954:50;;;5000:1;4997;4990:12;4954:50;5023:61;5076:7;5067:6;5056:9;5052:22;5023:61;:::i;5095:349::-;5179:12;;-1:-1:-1;;;;;5175:38:1;5163:51;;5267:4;5256:16;;;5250:23;-1:-1:-1;;;;;5246:48:1;5230:14;;;5223:72;5358:4;5347:16;;;5341:23;5334:31;5327:39;5311:14;;;5304:63;5420:4;5409:16;;;5403:23;5428:8;5399:38;5383:14;;5376:62;5095:349::o;5449:720::-;5680:2;5732:21;;;5802:13;;5705:18;;;5824:22;;;5651:4;;5680:2;5903:15;;;;5877:2;5862:18;;;5651:4;5946:197;5960:6;5957:1;5954:13;5946:197;;;6009:52;6057:3;6048:6;6042:13;6009:52;:::i;:::-;6118:15;;;;6090:4;6081:14;;;;;5982:1;5975:9;5946:197;;6174:416;6267:6;6275;6328:2;6316:9;6307:7;6303:23;6299:32;6296:52;;;6344:1;6341;6334:12;6296:52;6380:9;6367:23;6357:33;;6441:2;6430:9;6426:18;6413:32;-1:-1:-1;;;;;6460:6:1;6457:30;6454:50;;;6500:1;6497;6490:12;6454:50;6523:61;6576:7;6567:6;6556:9;6552:22;6523:61;:::i;:::-;6513:71;;;6174:416;;;;;:::o;6595:632::-;6766:2;6818:21;;;6888:13;;6791:18;;;6910:22;;;6737:4;;6766:2;6989:15;;;;6963:2;6948:18;;;6737:4;7032:169;7046:6;7043:1;7040:13;7032:169;;;7107:13;;7095:26;;7176:15;;;;7141:12;;;;7068:1;7061:9;7032:169;;7556:407;7621:5;-1:-1:-1;;;;;7647:6:1;7644:30;7641:56;;;7677:18;;:::i;:::-;7715:57;7760:2;7739:15;;-1:-1:-1;;7735:29:1;7766:4;7731:40;7715:57;:::i;:::-;7706:66;;7795:6;7788:5;7781:21;7835:3;7826:6;7821:3;7817:16;7814:25;7811:45;;;7852:1;7849;7842:12;7811:45;7901:6;7896:3;7889:4;7882:5;7878:16;7865:43;7955:1;7948:4;7939:6;7932:5;7928:18;7924:29;7917:40;7556:407;;;;;:::o;7968:451::-;8037:6;8090:2;8078:9;8069:7;8065:23;8061:32;8058:52;;;8106:1;8103;8096:12;8058:52;8146:9;8133:23;-1:-1:-1;;;;;8171:6:1;8168:30;8165:50;;;8211:1;8208;8201:12;8165:50;8234:22;;8287:4;8279:13;;8275:27;-1:-1:-1;8265:55:1;;8316:1;8313;8306:12;8265:55;8339:74;8405:7;8400:2;8387:16;8382:2;8378;8374:11;8339:74;:::i;8424:160::-;8489:20;;8545:13;;8538:21;8528:32;;8518:60;;8574:1;8571;8564:12;8589:315;8654:6;8662;8715:2;8703:9;8694:7;8690:23;8686:32;8683:52;;;8731:1;8728;8721:12;8683:52;8770:9;8757:23;8789:31;8814:5;8789:31;:::i;:::-;8839:5;-1:-1:-1;8863:35:1;8894:2;8879:18;;8863:35;:::i;:::-;8853:45;;8589:315;;;;;:::o;9464:795::-;9559:6;9567;9575;9583;9636:3;9624:9;9615:7;9611:23;9607:33;9604:53;;;9653:1;9650;9643:12;9604:53;9692:9;9679:23;9711:31;9736:5;9711:31;:::i;:::-;9761:5;-1:-1:-1;9818:2:1;9803:18;;9790:32;9831:33;9790:32;9831:33;:::i;:::-;9883:7;-1:-1:-1;9937:2:1;9922:18;;9909:32;;-1:-1:-1;9992:2:1;9977:18;;9964:32;-1:-1:-1;;;;;10008:30:1;;10005:50;;;10051:1;10048;10041:12;10005:50;10074:22;;10127:4;10119:13;;10115:27;-1:-1:-1;10105:55:1;;10156:1;10153;10146:12;10105:55;10179:74;10245:7;10240:2;10227:16;10222:2;10218;10214:11;10179:74;:::i;:::-;10169:84;;;9464:795;;;;;;;:::o;10264:180::-;10320:6;10373:2;10361:9;10352:7;10348:23;10344:32;10341:52;;;10389:1;10386;10379:12;10341:52;10412:26;10428:9;10412:26;:::i;10449:264::-;10643:3;10628:19;;10656:51;10632:9;10689:6;10656:51;:::i;10718:388::-;10786:6;10794;10847:2;10835:9;10826:7;10822:23;10818:32;10815:52;;;10863:1;10860;10853:12;10815:52;10902:9;10889:23;10921:31;10946:5;10921:31;:::i;:::-;10971:5;-1:-1:-1;11028:2:1;11013:18;;11000:32;11041:33;11000:32;11041:33;:::i;:::-;11093:7;11083:17;;;10718:388;;;;;:::o;11111:380::-;11190:1;11186:12;;;;11233;;;11254:61;;11308:4;11300:6;11296:17;11286:27;;11254:61;11361:2;11353:6;11350:14;11330:18;11327:38;11324:161;;11407:10;11402:3;11398:20;11395:1;11388:31;11442:4;11439:1;11432:15;11470:4;11467:1;11460:15;11324:161;;11111:380;;;:::o;11496:415::-;11698:2;11680:21;;;11737:2;11717:18;;;11710:30;11776:34;11771:2;11756:18;;11749:62;-1:-1:-1;;;11842:2:1;11827:18;;11820:49;11901:3;11886:19;;11496:415::o;12741:127::-;12802:10;12797:3;12793:20;12790:1;12783:31;12833:4;12830:1;12823:15;12857:4;12854:1;12847:15;12873:128;12913:3;12944:1;12940:6;12937:1;12934:13;12931:39;;;12950:18;;:::i;:::-;-1:-1:-1;12986:9:1;;12873:128::o;13422:135::-;13461:3;13482:17;;;13479:43;;13502:18;;:::i;:::-;-1:-1:-1;13549:1:1;13538:13;;13422:135::o;13562:251::-;13632:6;13685:2;13673:9;13664:7;13660:23;13656:32;13653:52;;;13701:1;13698;13691:12;13653:52;13733:9;13727:16;13752:31;13777:5;13752:31;:::i;14232:125::-;14272:4;14300:1;14297;14294:8;14291:34;;;14305:18;;:::i;:::-;-1:-1:-1;14342:9:1;;14232:125::o;14362:184::-;14432:6;14485:2;14473:9;14464:7;14460:23;14456:32;14453:52;;;14501:1;14498;14491:12;14453:52;-1:-1:-1;14524:16:1;;14362:184;-1:-1:-1;14362:184:1:o;14964:127::-;15025:10;15020:3;15016:20;15013:1;15006:31;15056:4;15053:1;15046:15;15080:4;15077:1;15070:15;15096:421;15298:2;15280:21;;;15337:2;15317:18;;;15310:30;15376:34;15371:2;15356:18;;15349:62;15447:27;15442:2;15427:18;;15420:55;15507:3;15492:19;;15096:421::o;15522:411::-;15724:2;15706:21;;;15763:2;15743:18;;;15736:30;15802:34;15797:2;15782:18;;15775:62;-1:-1:-1;;;15868:2:1;15853:18;;15846:45;15923:3;15908:19;;15522:411::o;16711:168::-;16751:7;16817:1;16813;16809:6;16805:14;16802:1;16799:21;16794:1;16787:9;16780:17;16776:45;16773:71;;;16824:18;;:::i;:::-;-1:-1:-1;16864:9:1;;16711:168::o;18085:881::-;18180:6;18211:2;18254;18242:9;18233:7;18229:23;18225:32;18222:52;;;18270:1;18267;18260:12;18222:52;18303:9;18297:16;-1:-1:-1;;;;;18328:6:1;18325:30;18322:50;;;18368:1;18365;18358:12;18322:50;18391:22;;18444:4;18436:13;;18432:27;-1:-1:-1;18422:55:1;;18473:1;18470;18463:12;18422:55;18502:2;18496:9;18525:60;18541:43;18581:2;18541:43;:::i;18525:60::-;18619:15;;;18701:1;18697:10;;;;18689:19;;18685:28;;;18650:12;;;;18725:19;;;18722:39;;;18757:1;18754;18747:12;18722:39;18781:11;;;;18801:135;18817:6;18812:3;18809:15;18801:135;;;18883:10;;18871:23;;18834:12;;;;18914;;;;18801:135;;;18955:5;18085:881;-1:-1:-1;;;;;;;18085:881:1:o;19677:1479::-;20303:3;20341:6;20335:13;20357:53;20403:6;20398:3;20391:4;20383:6;20379:17;20357:53;:::i;:::-;20473:13;;20432:16;;;;20495:57;20473:13;20432:16;20529:4;20517:17;;20495:57;:::i;:::-;-1:-1:-1;;;20574:20:1;;20625:17;;;20667:13;;20574:20;;20613:3;20689:65;20667:13;20741:1;20730:13;;20723:4;20711:17;;20689:65;:::i;:::-;20817:1;20773:20;;20809:10;;;20802:22;;;20849:13;;20871:62;20849:13;20920:1;20912:10;;20905:4;20893:17;;20871:62;:::i;:::-;20993:1;20952:17;;20985:10;;;20978:22;21025:13;;21047:62;21025:13;21096:1;21088:10;;21081:4;21069:17;;21047:62;:::i;:::-;21129:17;21148:1;21125:25;;19677:1479;-1:-1:-1;;;;;;;19677:1479:1:o;22386:489::-;-1:-1:-1;;;;;22655:15:1;;;22637:34;;22707:15;;22702:2;22687:18;;22680:43;22754:2;22739:18;;22732:34;;;22802:3;22797:2;22782:18;;22775:31;;;22580:4;;22823:46;;22849:19;;22841:6;22823:46;:::i;:::-;22815:54;22386:489;-1:-1:-1;;;;;;22386:489:1:o;22880:249::-;22949:6;23002:2;22990:9;22981:7;22977:23;22973:32;22970:52;;;23018:1;23015;23008:12;22970:52;23050:9;23044:16;23069:30;23093:5;23069:30;:::i
Swarm Source
ipfs://e306d9e7e99d781cfe5525cc182407c882383720443696b10a0a29eba3617679