Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 135 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set WCA Tokens A... | 17516911 | 566 days ago | IN | 0 ETH | 0.00064275 | ||||
Vote | 17230904 | 607 days ago | IN | 0 ETH | 0.01997554 | ||||
Add Proposal | 17225107 | 608 days ago | IN | 0 ETH | 0.08596062 | ||||
Vote | 16941676 | 648 days ago | IN | 0 ETH | 0.00715574 | ||||
Vote | 16932827 | 649 days ago | IN | 0 ETH | 0.00427587 | ||||
Vote | 16928521 | 649 days ago | IN | 0 ETH | 0.00481849 | ||||
Vote | 16925920 | 650 days ago | IN | 0 ETH | 0.00401111 | ||||
Vote | 16925280 | 650 days ago | IN | 0 ETH | 0.00350236 | ||||
Vote | 16924193 | 650 days ago | IN | 0 ETH | 0.00353264 | ||||
Vote | 16921653 | 650 days ago | IN | 0 ETH | 0.0051845 | ||||
Vote | 16921428 | 650 days ago | IN | 0 ETH | 0.00425732 | ||||
Vote | 16917901 | 651 days ago | IN | 0 ETH | 0.00274497 | ||||
Vote | 16913516 | 652 days ago | IN | 0 ETH | 0.00306877 | ||||
Vote | 16910422 | 652 days ago | IN | 0 ETH | 0.00227097 | ||||
Vote | 16910232 | 652 days ago | IN | 0 ETH | 0.00238656 | ||||
Vote | 16906603 | 653 days ago | IN | 0 ETH | 0.00259034 | ||||
Vote | 16906126 | 653 days ago | IN | 0 ETH | 0.00519013 | ||||
Vote | 16904487 | 653 days ago | IN | 0 ETH | 0.00305717 | ||||
Vote | 16904158 | 653 days ago | IN | 0 ETH | 0.00220348 | ||||
Vote | 16904146 | 653 days ago | IN | 0 ETH | 0.00209903 | ||||
Vote | 16904146 | 653 days ago | IN | 0 ETH | 0.00210402 | ||||
Vote | 16904143 | 653 days ago | IN | 0 ETH | 0.00205148 | ||||
Vote | 16903565 | 653 days ago | IN | 0 ETH | 0.00211163 | ||||
Vote | 16903530 | 653 days ago | IN | 0 ETH | 0.00241086 | ||||
Vote | 16903490 | 653 days ago | IN | 0 ETH | 0.00214218 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
WCAVoting
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-01-12 */ // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol // OpenZeppelin Contracts (last updated v4.7.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * 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 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); } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/draft-IERC20Permit.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612]. * * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't * need to send a transaction, and thus is not required to hold Ether at all. */ interface IERC20Permit { /** * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens, * given ``owner``'s signed approval. * * IMPORTANT: The same issues {IERC20-approve} has related to transaction * ordering also apply here. * * Emits an {Approval} event. * * Requirements: * * - `spender` cannot be the zero address. * - `deadline` must be a timestamp in the future. * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` * over the EIP712-formatted function arguments. * - the signature must use ``owner``'s current nonce (see {nonces}). * * For more information on the signature format, see the * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP * section]. */ function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; /** * @dev Returns the current nonce for `owner`. This value must be * included whenever a signature is generated for {permit}. * * Every successful call to {permit} increases ``owner``'s nonce by one. This * prevents a signature from being used multiple times. */ function nonces(address owner) external view returns (uint256); /** * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}. */ // solhint-disable-next-line func-name-mixedcase function DOMAIN_SEPARATOR() external view returns (bytes32); } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); } // File: @openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/utils/SafeERC20.sol) pragma solidity ^0.8.0; /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure (when the token * contract returns false). Tokens that return no value (and instead revert or * throw on failure) are also supported, non-reverting calls are assumed to be * successful. * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { using Address for address; function safeTransfer( IERC20 token, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value)); } function safeTransferFrom( IERC20 token, address from, address to, uint256 value ) internal { _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value)); } /** * @dev Deprecated. This function has issues similar to the ones found in * {IERC20-approve}, and its usage is discouraged. * * Whenever possible, use {safeIncreaseAllowance} and * {safeDecreaseAllowance} instead. */ function safeApprove( IERC20 token, address spender, uint256 value ) internal { // safeApprove should only be called when setting an initial allowance, // or when resetting it to zero. To increase and decrease it, use // 'safeIncreaseAllowance' and 'safeDecreaseAllowance' require( (value == 0) || (token.allowance(address(this), spender) == 0), "SafeERC20: approve from non-zero to non-zero allowance" ); _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value)); } function safeIncreaseAllowance( IERC20 token, address spender, uint256 value ) internal { uint256 newAllowance = token.allowance(address(this), spender) + value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } function safeDecreaseAllowance( IERC20 token, address spender, uint256 value ) internal { unchecked { uint256 oldAllowance = token.allowance(address(this), spender); require(oldAllowance >= value, "SafeERC20: decreased allowance below zero"); uint256 newAllowance = oldAllowance - value; _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance)); } } function safePermit( IERC20Permit token, address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) internal { uint256 nonceBefore = token.nonces(owner); token.permit(owner, spender, value, deadline, v, r, s); uint256 nonceAfter = token.nonces(owner); require(nonceAfter == nonceBefore + 1, "SafeERC20: permit did not succeed"); } /** * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement * on the return value: the return value is optional (but if data is returned, it must not be false). * @param token The token targeted by the call. * @param data The call data (encoded using abi.encode or one of its variants). */ function _callOptionalReturn(IERC20 token, bytes memory data) private { // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that // the target address contains contract code and also asserts for success in the low-level call. bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed"); if (returndata.length > 0) { // Return data is optional require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed"); } } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: contracts/WCAVoting.sol //SPDX-License-Identifier: MIT pragma solidity ^0.8.17; contract WCAVoting is Ownable { using SafeERC20 for IERC20; IWCATokensAggregator private WCATokensAggregator; IWCAMundialStaking private WCAMundialStaking; IERC721 private WCANFT; IERC721 private WCAMUNDIAL; IERC721 private WCAVIP; struct Proposal { Data data; mapping(address => bool) hasVoted; bool exists; } struct Data { uint256 id; string title; string message; string[] attachments; Option[] options; uint256 startTimestamp; uint256 expirationTimestamp; } struct Option { uint256 id; string value; address[] votes; } struct Result { uint256 optionId; uint256 percentage; uint256 count; address[] votes; } string public constant version = "0.2"; mapping(address => bool) public admins; mapping(uint256 => Proposal) public proposals; uint256 public proposalsCount; uint256 public deletedProposalsCount; modifier onlyOwnerOrAdmin() { require(msg.sender == owner() || admins[msg.sender], "Unauthorized"); _; } constructor( address _WCATokensAggregator, address _WCAMundialStaking, address _WCANFT, address _WCAMUNDIAL, address _WCAVIP ) { WCATokensAggregator = IWCATokensAggregator(_WCATokensAggregator); WCAMundialStaking = IWCAMundialStaking(_WCAMundialStaking); WCANFT = IERC721(_WCANFT); WCAMUNDIAL = IERC721(_WCAMUNDIAL); WCAVIP = IERC721(_WCAVIP); } function setWCATokensAggregator(address _address) external onlyOwner { WCATokensAggregator = IWCATokensAggregator(_address); } function addAdmin(address _admin) external onlyOwner { admins[_admin] = true; } function removeAdmin(address _admin) external onlyOwner { admins[_admin] = false; } function addProposal(Data calldata data) external onlyOwnerOrAdmin { require(data.startTimestamp < data.expirationTimestamp, "Expiration date should be greater than start date"); require(data.options.length > 0, "There should be at least one option"); proposals[proposalsCount].data = data; proposals[proposalsCount].data.id = proposalsCount; proposals[proposalsCount].exists = true; proposalsCount++; } function removeProposal(uint256 id) external onlyOwnerOrAdmin { require(proposals[id].exists, "No proposals found"); proposals[id].exists = false; deletedProposalsCount++; } function getProposals() external view returns (Data[] memory) { Data[] memory _datas = new Data[](proposalsCount - deletedProposalsCount); uint256 j; for (uint256 i = 0; i < proposalsCount; i++) { if (proposals[i].exists) { _datas[j] = proposals[i].data; j++; } } return _datas; } function getProposal(uint256 proposalId) external view returns (Data memory) { require(proposals[proposalId].exists, "No proposals found"); return proposals[proposalId].data; } function getProposalResults(uint256 proposalId) external view returns (Result[] memory) { require(proposals[proposalId].exists, "No proposals found"); Option[] memory options = proposals[proposalId].data.options; Result[] memory results = new Result[](proposals[proposalId].data.options.length); uint256 totalVotes = 0; for (uint256 i = 0; i < options.length; i++) { results[i].optionId = options[i].id; results[i].votes = options[i].votes; results[i].count = options[i].votes.length; totalVotes += results[i].count; } for (uint256 i = 0; i < options.length; i++) { if (totalVotes == 0) { results[i].percentage = 0; } else { results[i].percentage = (results[i].count * 100) / totalVotes; } } return results; } function vote(uint256 proposalId, uint256 optionId) external { require(proposals[proposalId].exists, "No proposals found"); require(proposals[proposalId].data.startTimestamp < block.timestamp, "It is not yet possible to answer the proposal"); require(proposals[proposalId].data.expirationTimestamp > block.timestamp, "Time for answering proposal expired"); require(WCATokensAggregator.balanceOf(msg.sender) > 0 || WCANFT.balanceOf(msg.sender) > 0 || WCAMUNDIAL.balanceOf(msg.sender) > 0 || WCAVIP.balanceOf(msg.sender) > 0 || WCAMundialStaking.getStakedCount(msg.sender) > 0, "You doesn't own any WCA token or NFT"); require(!proposals[proposalId].hasVoted[msg.sender], "You already voted this proposal"); for (uint256 i = 0; i < proposals[proposalId].data.options.length; i++) { if (proposals[proposalId].data.options[i].id == optionId) { proposals[proposalId].data.options[i].votes.push(msg.sender); proposals[proposalId].hasVoted[msg.sender] = true; break; } } } } interface IWCATokensAggregator { function balanceOf(address _address) external view returns (uint256); function stakedBalanceOf(address _address) external view returns (uint256); } interface IWCAMundialStaking { function getStakedCount(address staker) external view returns (uint256); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_WCATokensAggregator","type":"address"},{"internalType":"address","name":"_WCAMundialStaking","type":"address"},{"internalType":"address","name":"_WCANFT","type":"address"},{"internalType":"address","name":"_WCAMUNDIAL","type":"address"},{"internalType":"address","name":"_WCAVIP","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"name":"addAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"message","type":"string"},{"internalType":"string[]","name":"attachments","type":"string[]"},{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"value","type":"string"},{"internalType":"address[]","name":"votes","type":"address[]"}],"internalType":"struct WCAVoting.Option[]","name":"options","type":"tuple[]"},{"internalType":"uint256","name":"startTimestamp","type":"uint256"},{"internalType":"uint256","name":"expirationTimestamp","type":"uint256"}],"internalType":"struct WCAVoting.Data","name":"data","type":"tuple"}],"name":"addProposal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"admins","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deletedProposalsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"getProposal","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"message","type":"string"},{"internalType":"string[]","name":"attachments","type":"string[]"},{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"value","type":"string"},{"internalType":"address[]","name":"votes","type":"address[]"}],"internalType":"struct WCAVoting.Option[]","name":"options","type":"tuple[]"},{"internalType":"uint256","name":"startTimestamp","type":"uint256"},{"internalType":"uint256","name":"expirationTimestamp","type":"uint256"}],"internalType":"struct WCAVoting.Data","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"getProposalResults","outputs":[{"components":[{"internalType":"uint256","name":"optionId","type":"uint256"},{"internalType":"uint256","name":"percentage","type":"uint256"},{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"address[]","name":"votes","type":"address[]"}],"internalType":"struct WCAVoting.Result[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProposals","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"message","type":"string"},{"internalType":"string[]","name":"attachments","type":"string[]"},{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"value","type":"string"},{"internalType":"address[]","name":"votes","type":"address[]"}],"internalType":"struct WCAVoting.Option[]","name":"options","type":"tuple[]"},{"internalType":"uint256","name":"startTimestamp","type":"uint256"},{"internalType":"uint256","name":"expirationTimestamp","type":"uint256"}],"internalType":"struct WCAVoting.Data[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"message","type":"string"},{"internalType":"string[]","name":"attachments","type":"string[]"},{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"string","name":"value","type":"string"},{"internalType":"address[]","name":"votes","type":"address[]"}],"internalType":"struct WCAVoting.Option[]","name":"options","type":"tuple[]"},{"internalType":"uint256","name":"startTimestamp","type":"uint256"},{"internalType":"uint256","name":"expirationTimestamp","type":"uint256"}],"internalType":"struct WCAVoting.Data","name":"data","type":"tuple"},{"internalType":"bool","name":"exists","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"name":"removeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"removeProposal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setWCATokensAggregator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalId","type":"uint256"},{"internalType":"uint256","name":"optionId","type":"uint256"}],"name":"vote","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040516200449a3803806200449a8339818101604052810190620000379190620002dd565b620000576200004b620001a760201b60201c565b620001af60201b60201c565b84600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505062000365565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002a58262000278565b9050919050565b620002b78162000298565b8114620002c357600080fd5b50565b600081519050620002d781620002ac565b92915050565b600080600080600060a08688031215620002fc57620002fb62000273565b5b60006200030c88828901620002c6565b95505060206200031f88828901620002c6565b94505060406200033288828901620002c6565b93505060606200034588828901620002c6565b92505060806200035888828901620002c6565b9150509295509295909350565b61412580620003756000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806362564c48116100a25780638da5cb5b116100715780638da5cb5b14610291578063b384abef146102af578063c72d0837146102cb578063c7f758a8146102e9578063f2fde38b146103195761010b565b806362564c4814610231578063704802751461024f578063715018a61461026b578063854dc287146102755761010b565b80634ce4e6c7116100de5780634ce4e6c7146101ab57806354fd4d50146101c757806356930272146101e55780635bdcd008146102015761010b565b8063013cf08b146101105780630a9f46ad146101415780631785f53c1461015f578063429b62e51461017b575b600080fd5b61012a60048036038101906101259190612296565b610335565b6040516101389291906126f9565b60405180910390f35b610149610714565b6040516101569190612738565b60405180910390f35b6101796004803603810190610174919061277f565b61071a565b005b6101956004803603810190610190919061277f565b61077d565b6040516101a291906127ac565b60405180910390f35b6101c560048036038101906101c09190612296565b61079d565b005b6101cf610913565b6040516101dc9190612811565b60405180910390f35b6101ff60048036038101906101fa9190612857565b61094c565b005b61021b60048036038101906102169190612296565b610b49565b60405161022891906129c5565b60405180910390f35b610239610f89565b6040516102469190612b5a565b60405180910390f35b6102696004803603810190610264919061277f565b61143b565b005b61027361149e565b005b61028f600480360381019061028a919061277f565b6114b2565b005b6102996114fe565b6040516102a69190612b8b565b60405180910390f35b6102c960048036038101906102c49190612ba6565b611527565b005b6102d3611be7565b6040516102e09190612738565b60405180910390f35b61030360048036038101906102fe9190612296565b611bed565b6040516103109190612be6565b60405180910390f35b610333600480360381019061032e919061277f565b612024565b005b6007602052806000526040600020600091509050806000016040518060e00160405290816000820154815260200160018201805461037290612c37565b80601f016020809104026020016040519081016040528092919081815260200182805461039e90612c37565b80156103eb5780601f106103c0576101008083540402835291602001916103eb565b820191906000526020600020905b8154815290600101906020018083116103ce57829003601f168201915b5050505050815260200160028201805461040490612c37565b80601f016020809104026020016040519081016040528092919081815260200182805461043090612c37565b801561047d5780601f106104525761010080835404028352916020019161047d565b820191906000526020600020905b81548152906001019060200180831161046057829003601f168201915b5050505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156105575783829060005260206000200180546104ca90612c37565b80601f01602080910402602001604051908101604052809291908181526020018280546104f690612c37565b80156105435780601f1061051857610100808354040283529160200191610543565b820191906000526020600020905b81548152906001019060200180831161052657829003601f168201915b5050505050815260200190600101906104ab565b50505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b828210156106e05783829060005260206000209060030201604051806060016040529081600082015481526020016001820180546105c190612c37565b80601f01602080910402602001604051908101604052809291908181526020018280546105ed90612c37565b801561063a5780601f1061060f5761010080835404028352916020019161063a565b820191906000526020600020905b81548152906001019060200180831161061d57829003601f168201915b50505050508152602001600282018054806020026020016040519081016040528092919081815260200182805480156106c857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161067e575b50505050508152505081526020019060010190610584565b50505050815260200160058201548152602001600682015481525050908060080160009054906101000a900460ff16905082565b60085481565b6107226120a7565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60066020528060005260406000206000915054906101000a900460ff1681565b6107a56114fe565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108275750600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085d90612cb4565b60405180910390fd5b6007600082815260200190815260200160002060080160009054906101000a900460ff166108c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c090612d20565b60405180910390fd5b60006007600083815260200190815260200160002060080160006101000a81548160ff0219169083151502179055506009600081548092919061090b90612d6f565b919050555050565b6040518060400160405280600381526020017f302e32000000000000000000000000000000000000000000000000000000000081525081565b6109546114fe565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109d65750600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0c90612cb4565b60405180910390fd5b8060c001358160a0013510610a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5690612e29565b60405180910390fd5b6000818060800190610a719190612e58565b905011610ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaa90612f2d565b60405180910390fd5b806007600060085481526020019081526020016000206000018181610ad89190613c88565b90505060085460076000600854815260200190815260200160002060000160000181905550600160076000600854815260200190815260200160002060080160006101000a81548160ff02191690831515021790555060086000815480929190610b4190612d6f565b919050555050565b60606007600083815260200190815260200160002060080160009054906101000a900460ff16610bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba590612d20565b60405180910390fd5b600060076000848152602001908152602001600020600001600401805480602002602001604051908101604052809291908181526020016000905b82821015610d45578382906000526020600020906003020160405180606001604052908160008201548152602001600182018054610c2690612c37565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5290612c37565b8015610c9f5780601f10610c7457610100808354040283529160200191610c9f565b820191906000526020600020905b815481529060010190602001808311610c8257829003601f168201915b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015610d2d57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610ce3575b50505050508152505081526020019060010190610be9565b5050505090506000600760008581526020019081526020016000206000016004018054905067ffffffffffffffff811115610d8357610d826130a8565b5b604051908082528060200260200182016040528015610dbc57816020015b610da96121f1565b815260200190600190039081610da15790505b5090506000805b8351811015610ed157838181518110610ddf57610dde613c96565b5b602002602001015160000151838281518110610dfe57610dfd613c96565b5b60200260200101516000018181525050838181518110610e2157610e20613c96565b5b602002602001015160400151838281518110610e4057610e3f613c96565b5b602002602001015160600181905250838181518110610e6257610e61613c96565b5b60200260200101516040015151838281518110610e8257610e81613c96565b5b60200260200101516040018181525050828181518110610ea557610ea4613c96565b5b60200260200101516040015182610ebc9190613cc5565b91508080610ec990612d6f565b915050610dc3565b5060005b8351811015610f7d5760008203610f10576000838281518110610efb57610efa613c96565b5b60200260200101516020018181525050610f6a565b816064848381518110610f2657610f25613c96565b5b602002602001015160400151610f3c91906133a5565b610f469190613d28565b838281518110610f5957610f58613c96565b5b602002602001015160200181815250505b8080610f7590612d6f565b915050610ed5565b50819350505050919050565b60606000600954600854610f9d9190613d59565b67ffffffffffffffff811115610fb657610fb56130a8565b5b604051908082528060200260200182016040528015610fef57816020015b610fdc612219565b815260200190600190039081610fd45790505b509050600080600090505b600854811015611432576007600082815260200190815260200160002060080160009054906101000a900460ff161561141f57600760008281526020019081526020016000206000016040518060e00160405290816000820154815260200160018201805461106890612c37565b80601f016020809104026020016040519081016040528092919081815260200182805461109490612c37565b80156110e15780601f106110b6576101008083540402835291602001916110e1565b820191906000526020600020905b8154815290600101906020018083116110c457829003601f168201915b505050505081526020016002820180546110fa90612c37565b80601f016020809104026020016040519081016040528092919081815260200182805461112690612c37565b80156111735780601f1061114857610100808354040283529160200191611173565b820191906000526020600020905b81548152906001019060200180831161115657829003601f168201915b5050505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b8282101561124d5783829060005260206000200180546111c090612c37565b80601f01602080910402602001604051908101604052809291908181526020018280546111ec90612c37565b80156112395780601f1061120e57610100808354040283529160200191611239565b820191906000526020600020905b81548152906001019060200180831161121c57829003601f168201915b5050505050815260200190600101906111a1565b50505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b828210156113d65783829060005260206000209060030201604051806060016040529081600082015481526020016001820180546112b790612c37565b80601f01602080910402602001604051908101604052809291908181526020018280546112e390612c37565b80156113305780601f1061130557610100808354040283529160200191611330565b820191906000526020600020905b81548152906001019060200180831161131357829003601f168201915b50505050508152602001600282018054806020026020016040519081016040528092919081815260200182805480156113be57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611374575b5050505050815250508152602001906001019061127a565b5050505081526020016005820154815260200160068201548152505083838151811061140557611404613c96565b5b6020026020010181905250818061141b90612d6f565b9250505b808061142a90612d6f565b915050610ffa565b50819250505090565b6114436120a7565b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6114a66120a7565b6114b06000612125565b565b6114ba6120a7565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6007600083815260200190815260200160002060080160009054906101000a900460ff1661158a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158190612d20565b60405180910390fd5b426007600084815260200190815260200160002060000160050154106115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc90613dff565b60405180910390fd5b42600760008481526020019081526020016000206000016006015411611640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163790613e91565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161169d9190612b8b565b602060405180830381865afa1580156116ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116de9190613ec6565b118061178557506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016117429190612b8b565b602060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117839190613ec6565b115b8061182b57506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016117e89190612b8b565b602060405180830381865afa158015611805573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118299190613ec6565b115b806118d157506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161188e9190612b8b565b602060405180830381865afa1580156118ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118cf9190613ec6565b115b8061197757506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166383c13db2336040518263ffffffff1660e01b81526004016119349190612b8b565b602060405180830381865afa158015611951573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119759190613ec6565b115b6119b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ad90613f65565b60405180910390fd5b6007600083815260200190815260200160002060070160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4e90613fd1565b60405180910390fd5b60005b6007600084815260200190815260200160002060000160040180549050811015611be25781600760008581526020019081526020016000206000016004018281548110611aaa57611aa9613c96565b5b90600052602060002090600302016000015403611bcf57600760008481526020019081526020016000206000016004018181548110611aec57611aeb613c96565b5b9060005260206000209060030201600201339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016007600085815260200190815260200160002060070160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611be2565b8080611bda90612d6f565b915050611a5a565b505050565b60095481565b611bf5612219565b6007600083815260200190815260200160002060080160009054906101000a900460ff16611c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4f90612d20565b60405180910390fd5b600760008381526020019081526020016000206000016040518060e001604052908160008201548152602001600182018054611c9390612c37565b80601f0160208091040260200160405190810160405280929190818152602001828054611cbf90612c37565b8015611d0c5780601f10611ce157610100808354040283529160200191611d0c565b820191906000526020600020905b815481529060010190602001808311611cef57829003601f168201915b50505050508152602001600282018054611d2590612c37565b80601f0160208091040260200160405190810160405280929190818152602001828054611d5190612c37565b8015611d9e5780601f10611d7357610100808354040283529160200191611d9e565b820191906000526020600020905b815481529060010190602001808311611d8157829003601f168201915b5050505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015611e78578382906000526020600020018054611deb90612c37565b80601f0160208091040260200160405190810160405280929190818152602001828054611e1790612c37565b8015611e645780601f10611e3957610100808354040283529160200191611e64565b820191906000526020600020905b815481529060010190602001808311611e4757829003601f168201915b505050505081526020019060010190611dcc565b50505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015612001578382906000526020600020906003020160405180606001604052908160008201548152602001600182018054611ee290612c37565b80601f0160208091040260200160405190810160405280929190818152602001828054611f0e90612c37565b8015611f5b5780601f10611f3057610100808354040283529160200191611f5b565b820191906000526020600020905b815481529060010190602001808311611f3e57829003601f168201915b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015611fe957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611f9f575b50505050508152505081526020019060010190611ea5565b505050508152602001600582015481526020016006820154815250509050919050565b61202c6120a7565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361209b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209290614063565b60405180910390fd5b6120a481612125565b50565b6120af6121e9565b73ffffffffffffffffffffffffffffffffffffffff166120cd6114fe565b73ffffffffffffffffffffffffffffffffffffffff1614612123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211a906140cf565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6040518060800160405280600081526020016000815260200160008152602001606081525090565b6040518060e00160405280600081526020016060815260200160608152602001606081526020016060815260200160008152602001600081525090565b600080fd5b600080fd5b6000819050919050565b61227381612260565b811461227e57600080fd5b50565b6000813590506122908161226a565b92915050565b6000602082840312156122ac576122ab612256565b5b60006122ba84828501612281565b91505092915050565b6122cc81612260565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561230c5780820151818401526020810190506122f1565b60008484015250505050565b6000601f19601f8301169050919050565b6000612334826122d2565b61233e81856122dd565b935061234e8185602086016122ee565b61235781612318565b840191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600061239a8383612329565b905092915050565b6000602082019050919050565b60006123ba82612362565b6123c4818561236d565b9350836020820285016123d68561237e565b8060005b8581101561241257848403895281516123f3858261238e565b94506123fe836123a2565b925060208a019950506001810190506123da565b50829750879550505050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124a78261247c565b9050919050565b6124b78161249c565b82525050565b60006124c983836124ae565b60208301905092915050565b6000602082019050919050565b60006124ed82612450565b6124f7818561245b565b93506125028361246c565b8060005b8381101561253357815161251a88826124bd565b9750612525836124d5565b925050600181019050612506565b5085935050505092915050565b600060608301600083015161255860008601826122c3565b50602083015184820360208601526125708282612329565b9150506040830151848203604086015261258a82826124e2565b9150508091505092915050565b60006125a38383612540565b905092915050565b6000602082019050919050565b60006125c382612424565b6125cd818561242f565b9350836020820285016125df85612440565b8060005b8581101561261b57848403895281516125fc8582612597565b9450612607836125ab565b925060208a019950506001810190506125e3565b50829750879550505050505092915050565b600060e08301600083015161264560008601826122c3565b506020830151848203602086015261265d8282612329565b915050604083015184820360408601526126778282612329565b9150506060830151848203606086015261269182826123af565b915050608083015184820360808601526126ab82826125b8565b91505060a08301516126c060a08601826122c3565b5060c08301516126d360c08601826122c3565b508091505092915050565b60008115159050919050565b6126f3816126de565b82525050565b60006040820190508181036000830152612713818561262d565b905061272260208301846126ea565b9392505050565b61273281612260565b82525050565b600060208201905061274d6000830184612729565b92915050565b61275c8161249c565b811461276757600080fd5b50565b60008135905061277981612753565b92915050565b60006020828403121561279557612794612256565b5b60006127a38482850161276a565b91505092915050565b60006020820190506127c160008301846126ea565b92915050565b600082825260208201905092915050565b60006127e3826122d2565b6127ed81856127c7565b93506127fd8185602086016122ee565b61280681612318565b840191505092915050565b6000602082019050818103600083015261282b81846127d8565b905092915050565b600080fd5b600060e0828403121561284e5761284d612833565b5b81905092915050565b60006020828403121561286d5761286c612256565b5b600082013567ffffffffffffffff81111561288b5761288a61225b565b5b61289784828501612838565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006080830160008301516128e460008601826122c3565b5060208301516128f760208601826122c3565b50604083015161290a60408601826122c3565b506060830151848203606086015261292282826124e2565b9150508091505092915050565b600061293b83836128cc565b905092915050565b6000602082019050919050565b600061295b826128a0565b61296581856128ab565b935083602082028501612977856128bc565b8060005b858110156129b35784840389528151612994858261292f565b945061299f83612943565b925060208a0199505060018101905061297b565b50829750879550505050505092915050565b600060208201905081810360008301526129df8184612950565b905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600060e083016000830151612a2b60008601826122c3565b5060208301518482036020860152612a438282612329565b91505060408301518482036040860152612a5d8282612329565b91505060608301518482036060860152612a7782826123af565b91505060808301518482036080860152612a9182826125b8565b91505060a0830151612aa660a08601826122c3565b5060c0830151612ab960c08601826122c3565b508091505092915050565b6000612ad08383612a13565b905092915050565b6000602082019050919050565b6000612af0826129e7565b612afa81856129f2565b935083602082028501612b0c85612a03565b8060005b85811015612b485784840389528151612b298582612ac4565b9450612b3483612ad8565b925060208a01995050600181019050612b10565b50829750879550505050505092915050565b60006020820190508181036000830152612b748184612ae5565b905092915050565b612b858161249c565b82525050565b6000602082019050612ba06000830184612b7c565b92915050565b60008060408385031215612bbd57612bbc612256565b5b6000612bcb85828601612281565b9250506020612bdc85828601612281565b9150509250929050565b60006020820190508181036000830152612c00818461262d565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612c4f57607f821691505b602082108103612c6257612c61612c08565b5b50919050565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b6000612c9e600c836127c7565b9150612ca982612c68565b602082019050919050565b60006020820190508181036000830152612ccd81612c91565b9050919050565b7f4e6f2070726f706f73616c7320666f756e640000000000000000000000000000600082015250565b6000612d0a6012836127c7565b9150612d1582612cd4565b602082019050919050565b60006020820190508181036000830152612d3981612cfd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612d7a82612260565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612dac57612dab612d40565b5b600182019050919050565b7f45787069726174696f6e20646174652073686f756c642062652067726561746560008201527f72207468616e2073746172742064617465000000000000000000000000000000602082015250565b6000612e136031836127c7565b9150612e1e82612db7565b604082019050919050565b60006020820190508181036000830152612e4281612e06565b9050919050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112612e7557612e74612e49565b5b80840192508235915067ffffffffffffffff821115612e9757612e96612e4e565b5b602083019250602082023603831315612eb357612eb2612e53565b5b509250929050565b7f54686572652073686f756c64206265206174206c65617374206f6e65206f707460008201527f696f6e0000000000000000000000000000000000000000000000000000000000602082015250565b6000612f176023836127c7565b9150612f2282612ebb565b604082019050919050565b60006020820190508181036000830152612f4681612f0a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b60008135612f898161226a565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612fcb84612f92565b9350801983169250808416831791505092915050565b6000819050919050565b6000613006613001612ffc84612260565b612fe1565b612260565b9050919050565b6000819050919050565b61302082612feb565b61303361302c8261300d565b8354612f9f565b8255505050565b6000808335600160200384360303811261305757613056612e49565b5b80840192508235915067ffffffffffffffff82111561307957613078612e4e565b5b60208301925060018202360383131561309557613094612e53565b5b509250929050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026131397fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826130fc565b61314386836130fc565b95508019841693508086168417925050509392505050565b61316483612feb565b6131786131708261300d565b848454613109565b825550505050565b600090565b61318d613180565b61319881848461315b565b505050565b5b818110156131bc576131b1600082613185565b60018101905061319e565b5050565b601f821115613201576131d2816130d7565b6131db846130ec565b810160208510156131ea578190505b6131fe6131f6856130ec565b83018261319d565b50505b505050565b600082821c905092915050565b600061322460001984600802613206565b1980831691505092915050565b600061323d8383613213565b9150826002028217905092915050565b613257838361309d565b67ffffffffffffffff8111156132705761326f6130a8565b5b61327a8254612c37565b6132858282856131c0565b6000601f8311600181146132b457600084156132a2578287013590505b6132ac8582613231565b865550613314565b601f1984166132c2866130d7565b60005b828110156132ea578489013582556001820191506020850194506020810190506132c5565b868310156133075784890135613303601f891682613213565b8355505b6001600288020188555050505b50505050505050565b61332883838361324d565b505050565b6000808335600160200384360303811261334a57613349612e49565b5b80840192508235915067ffffffffffffffff82111561336c5761336b612e4e565b5b60208301925060208202360383131561338857613387612e53565b5b509250929050565b6000819050919050565b600081549050919050565b60006133b082612260565b91506133bb83612260565b92508282026133c981612260565b915082820484148315176133e0576133df612d40565b5b5092915050565b60008190506001806001038301049050919050565b60008190508160005260206000209050919050565b6134417fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802613206565b815481168255505050565b613455816130d7565b613460838254613231565b8083556000825550505050565b60208410600081146134c857601f8411600181146134965761348f8685613231565b83556134c2565b61349f836130d7565b6134b66134ab876130ec565b82016001830161319d565b6134c0878561344c565b505b50613515565b6134d1826130d7565b6134da866130ec565b8101601f871680156134f4576134f38160018403613411565b5b613508613500886130ec565b84018361319d565b6001886002021785555050505b5050505050565b68010000000000000000841115613536576135356130a8565b5b602083106000811461358157602085106000811461355f576135588685613231565b835561357b565b8360ff1916935083613570846130d7565b556001866002020183555b5061358b565b6001856002020182555b5050505050565b805461359d81612c37565b808411156135b2576135b18482848661351c565b5b808410156135c7576135c68482848661346d565b5b50505050565b818110156135eb576135e0600082613185565b6001810190506135cd565b5050565b6135fa600082613592565b50565b6000821461360e5761360d612f4d565b5b613617816135ef565b5050565b5b8181101561363a5761362f6000826135fd565b60018101905061361c565b5050565b818310156136775761364f826133e7565b613658846133e7565b613661836133fc565b818101838201613671818361361b565b50505050505b505050565b68010000000000000000821115613696576136956130a8565b5b61369f8161339a565b8282556136ad83828461363e565b505050565b600082905092915050565b6136c783836136b2565b6136d1818361367c565b6136da83613390565b6136e3836133fc565b60005b8381101561371c576136f8838761303a565b61370381838661331d565b60208501945060018401935050506001810190506136e6565b50505050505050565b6137308383836136bd565b505050565b6000819050919050565b60008235600160600383360303811261375b5761375a612e49565b5b80830191505092915050565b600081549050919050565b60008190506137828260036133a5565b9050919050565b60008190508160005260206000209050919050565b600081549050919050565b60008190506001806001038301049050919050565b60008190508160005260206000209050919050565b5b818110156137f2576137e7600082613185565b6001810190506137d4565b5050565b8183101561382f57613807826137a9565b613810846137a9565b613819836137be565b81810183820161382981836137d3565b50505050505b505050565b6801000000000000000082111561384e5761384d6130a8565b5b6138578161379e565b8282556138658382846137f6565b505050565b613875600082613834565b50565b6000821461388957613888612f4d565b5b6138928161386a565b5050565b6138a36000808301613185565b6138b16000600183016135fd565b6138bf600060028301613878565b50565b600082146138d3576138d2612f4d565b5b6138dc81613896565b5050565b5b818110156138ff576138f46000826138c2565b6003810190506138e1565b5050565b8183101561393c5761391482613772565b61391d84613772565b61392683613789565b81810183820161393681836138e0565b50505050505b505050565b6801000000000000000082111561395b5761395a6130a8565b5b61396481613767565b828255613972838284613903565b505050565b600082905092915050565b6000808335600160200384360303811261399f5761399e612e49565b5b80840192508235915067ffffffffffffffff8211156139c1576139c0612e4e565b5b6020830192506020820236038313156139dd576139dc612e53565b5b509250929050565b600082905092915050565b600081356139fd81612753565b80915050919050565b6000819050919050565b6000819050919050565b613a2483836139e5565b67ffffffffffffffff811115613a3d57613a3c6130a8565b5b613a478183613834565b613a5083613a06565b613a59836137be565b6001830460005b81811015613a98576000613a73856139f0565b613a7c81613a10565b8092506020870196505050808285015550600181019050613a60565b5050505050505050565b613aad838383613a1a565b505050565b600081016000830180613ac481612f7c565b9050613ad08184613017565b5050506001810160208301613ae5818561303a565b613af081838661331d565b505050506002810160408301613b068185613982565b613b11818386613aa2565b505050505050565b613b238282613ab2565b5050565b613b318383613977565b613b3b8183613941565b613b4483613735565b613b4d83613789565b60005b83811015613b8457613b62838761373f565b613b6c8184613b19565b60208401935060038301925050600181019050613b50565b50505050505050565b613b98838383613b27565b505050565b600081016000830180613baf81612f7c565b9050613bbb8184613017565b5050506001810160208301613bd0818561303a565b613bdb81838661331d565b505050506002810160408301613bf1818561303a565b613bfc81838661331d565b505050506003810160608301613c12818561332d565b613c1d818386613725565b505050506004810160808301613c338185612e58565b613c3e818386613b8d565b505050506005810160a0830180613c5481612f7c565b9050613c608184613017565b5050506006810160c0830180613c7581612f7c565b9050613c818184613017565b5050505050565b613c928282613b9d565b5050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613cd082612260565b9150613cdb83612260565b9250828201905080821115613cf357613cf2612d40565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d3382612260565b9150613d3e83612260565b925082613d4e57613d4d613cf9565b5b828204905092915050565b6000613d6482612260565b9150613d6f83612260565b9250828203905081811115613d8757613d86612d40565b5b92915050565b7f4974206973206e6f742079657420706f737369626c6520746f20616e7377657260008201527f207468652070726f706f73616c00000000000000000000000000000000000000602082015250565b6000613de9602d836127c7565b9150613df482613d8d565b604082019050919050565b60006020820190508181036000830152613e1881613ddc565b9050919050565b7f54696d6520666f7220616e73776572696e672070726f706f73616c206578706960008201527f7265640000000000000000000000000000000000000000000000000000000000602082015250565b6000613e7b6023836127c7565b9150613e8682613e1f565b604082019050919050565b60006020820190508181036000830152613eaa81613e6e565b9050919050565b600081519050613ec08161226a565b92915050565b600060208284031215613edc57613edb612256565b5b6000613eea84828501613eb1565b91505092915050565b7f596f7520646f65736e2774206f776e20616e792057434120746f6b656e206f7260008201527f204e465400000000000000000000000000000000000000000000000000000000602082015250565b6000613f4f6024836127c7565b9150613f5a82613ef3565b604082019050919050565b60006020820190508181036000830152613f7e81613f42565b9050919050565b7f596f7520616c726561647920766f74656420746869732070726f706f73616c00600082015250565b6000613fbb601f836127c7565b9150613fc682613f85565b602082019050919050565b60006020820190508181036000830152613fea81613fae565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061404d6026836127c7565b915061405882613ff1565b604082019050919050565b6000602082019050818103600083015261407c81614040565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006140b96020836127c7565b91506140c482614083565b602082019050919050565b600060208201905081810360008301526140e8816140ac565b905091905056fea2646970667358221220352ff1addf5ffd5cc143ce6e1fed628d2cd29f54db31615a0ec9b51b1b99fe5364736f6c634300081100330000000000000000000000004f971b8b6667130910a4874a9cc290dc166fd20e0000000000000000000000009bf349f29a3ff54ca03c98891023b72140cd7bbe000000000000000000000000709ce875e2bec643b1932e4c9fd22ce113e20e2d00000000000000000000000023f0512c871c1435f7b3a32df5e1616adc3eeb0a000000000000000000000000b8f21f8d8306898c755d5214687e656a2ad78737
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061010b5760003560e01c806362564c48116100a25780638da5cb5b116100715780638da5cb5b14610291578063b384abef146102af578063c72d0837146102cb578063c7f758a8146102e9578063f2fde38b146103195761010b565b806362564c4814610231578063704802751461024f578063715018a61461026b578063854dc287146102755761010b565b80634ce4e6c7116100de5780634ce4e6c7146101ab57806354fd4d50146101c757806356930272146101e55780635bdcd008146102015761010b565b8063013cf08b146101105780630a9f46ad146101415780631785f53c1461015f578063429b62e51461017b575b600080fd5b61012a60048036038101906101259190612296565b610335565b6040516101389291906126f9565b60405180910390f35b610149610714565b6040516101569190612738565b60405180910390f35b6101796004803603810190610174919061277f565b61071a565b005b6101956004803603810190610190919061277f565b61077d565b6040516101a291906127ac565b60405180910390f35b6101c560048036038101906101c09190612296565b61079d565b005b6101cf610913565b6040516101dc9190612811565b60405180910390f35b6101ff60048036038101906101fa9190612857565b61094c565b005b61021b60048036038101906102169190612296565b610b49565b60405161022891906129c5565b60405180910390f35b610239610f89565b6040516102469190612b5a565b60405180910390f35b6102696004803603810190610264919061277f565b61143b565b005b61027361149e565b005b61028f600480360381019061028a919061277f565b6114b2565b005b6102996114fe565b6040516102a69190612b8b565b60405180910390f35b6102c960048036038101906102c49190612ba6565b611527565b005b6102d3611be7565b6040516102e09190612738565b60405180910390f35b61030360048036038101906102fe9190612296565b611bed565b6040516103109190612be6565b60405180910390f35b610333600480360381019061032e919061277f565b612024565b005b6007602052806000526040600020600091509050806000016040518060e00160405290816000820154815260200160018201805461037290612c37565b80601f016020809104026020016040519081016040528092919081815260200182805461039e90612c37565b80156103eb5780601f106103c0576101008083540402835291602001916103eb565b820191906000526020600020905b8154815290600101906020018083116103ce57829003601f168201915b5050505050815260200160028201805461040490612c37565b80601f016020809104026020016040519081016040528092919081815260200182805461043090612c37565b801561047d5780601f106104525761010080835404028352916020019161047d565b820191906000526020600020905b81548152906001019060200180831161046057829003601f168201915b5050505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156105575783829060005260206000200180546104ca90612c37565b80601f01602080910402602001604051908101604052809291908181526020018280546104f690612c37565b80156105435780601f1061051857610100808354040283529160200191610543565b820191906000526020600020905b81548152906001019060200180831161052657829003601f168201915b5050505050815260200190600101906104ab565b50505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b828210156106e05783829060005260206000209060030201604051806060016040529081600082015481526020016001820180546105c190612c37565b80601f01602080910402602001604051908101604052809291908181526020018280546105ed90612c37565b801561063a5780601f1061060f5761010080835404028352916020019161063a565b820191906000526020600020905b81548152906001019060200180831161061d57829003601f168201915b50505050508152602001600282018054806020026020016040519081016040528092919081815260200182805480156106c857602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161067e575b50505050508152505081526020019060010190610584565b50505050815260200160058201548152602001600682015481525050908060080160009054906101000a900460ff16905082565b60085481565b6107226120a7565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60066020528060005260406000206000915054906101000a900460ff1681565b6107a56114fe565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108275750600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085d90612cb4565b60405180910390fd5b6007600082815260200190815260200160002060080160009054906101000a900460ff166108c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c090612d20565b60405180910390fd5b60006007600083815260200190815260200160002060080160006101000a81548160ff0219169083151502179055506009600081548092919061090b90612d6f565b919050555050565b6040518060400160405280600381526020017f302e32000000000000000000000000000000000000000000000000000000000081525081565b6109546114fe565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109d65750600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610a15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0c90612cb4565b60405180910390fd5b8060c001358160a0013510610a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5690612e29565b60405180910390fd5b6000818060800190610a719190612e58565b905011610ab3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aaa90612f2d565b60405180910390fd5b806007600060085481526020019081526020016000206000018181610ad89190613c88565b90505060085460076000600854815260200190815260200160002060000160000181905550600160076000600854815260200190815260200160002060080160006101000a81548160ff02191690831515021790555060086000815480929190610b4190612d6f565b919050555050565b60606007600083815260200190815260200160002060080160009054906101000a900460ff16610bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba590612d20565b60405180910390fd5b600060076000848152602001908152602001600020600001600401805480602002602001604051908101604052809291908181526020016000905b82821015610d45578382906000526020600020906003020160405180606001604052908160008201548152602001600182018054610c2690612c37565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5290612c37565b8015610c9f5780601f10610c7457610100808354040283529160200191610c9f565b820191906000526020600020905b815481529060010190602001808311610c8257829003601f168201915b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015610d2d57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610ce3575b50505050508152505081526020019060010190610be9565b5050505090506000600760008581526020019081526020016000206000016004018054905067ffffffffffffffff811115610d8357610d826130a8565b5b604051908082528060200260200182016040528015610dbc57816020015b610da96121f1565b815260200190600190039081610da15790505b5090506000805b8351811015610ed157838181518110610ddf57610dde613c96565b5b602002602001015160000151838281518110610dfe57610dfd613c96565b5b60200260200101516000018181525050838181518110610e2157610e20613c96565b5b602002602001015160400151838281518110610e4057610e3f613c96565b5b602002602001015160600181905250838181518110610e6257610e61613c96565b5b60200260200101516040015151838281518110610e8257610e81613c96565b5b60200260200101516040018181525050828181518110610ea557610ea4613c96565b5b60200260200101516040015182610ebc9190613cc5565b91508080610ec990612d6f565b915050610dc3565b5060005b8351811015610f7d5760008203610f10576000838281518110610efb57610efa613c96565b5b60200260200101516020018181525050610f6a565b816064848381518110610f2657610f25613c96565b5b602002602001015160400151610f3c91906133a5565b610f469190613d28565b838281518110610f5957610f58613c96565b5b602002602001015160200181815250505b8080610f7590612d6f565b915050610ed5565b50819350505050919050565b60606000600954600854610f9d9190613d59565b67ffffffffffffffff811115610fb657610fb56130a8565b5b604051908082528060200260200182016040528015610fef57816020015b610fdc612219565b815260200190600190039081610fd45790505b509050600080600090505b600854811015611432576007600082815260200190815260200160002060080160009054906101000a900460ff161561141f57600760008281526020019081526020016000206000016040518060e00160405290816000820154815260200160018201805461106890612c37565b80601f016020809104026020016040519081016040528092919081815260200182805461109490612c37565b80156110e15780601f106110b6576101008083540402835291602001916110e1565b820191906000526020600020905b8154815290600101906020018083116110c457829003601f168201915b505050505081526020016002820180546110fa90612c37565b80601f016020809104026020016040519081016040528092919081815260200182805461112690612c37565b80156111735780601f1061114857610100808354040283529160200191611173565b820191906000526020600020905b81548152906001019060200180831161115657829003601f168201915b5050505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b8282101561124d5783829060005260206000200180546111c090612c37565b80601f01602080910402602001604051908101604052809291908181526020018280546111ec90612c37565b80156112395780601f1061120e57610100808354040283529160200191611239565b820191906000526020600020905b81548152906001019060200180831161121c57829003601f168201915b5050505050815260200190600101906111a1565b50505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b828210156113d65783829060005260206000209060030201604051806060016040529081600082015481526020016001820180546112b790612c37565b80601f01602080910402602001604051908101604052809291908181526020018280546112e390612c37565b80156113305780601f1061130557610100808354040283529160200191611330565b820191906000526020600020905b81548152906001019060200180831161131357829003601f168201915b50505050508152602001600282018054806020026020016040519081016040528092919081815260200182805480156113be57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611374575b5050505050815250508152602001906001019061127a565b5050505081526020016005820154815260200160068201548152505083838151811061140557611404613c96565b5b6020026020010181905250818061141b90612d6f565b9250505b808061142a90612d6f565b915050610ffa565b50819250505090565b6114436120a7565b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6114a66120a7565b6114b06000612125565b565b6114ba6120a7565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6007600083815260200190815260200160002060080160009054906101000a900460ff1661158a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158190612d20565b60405180910390fd5b426007600084815260200190815260200160002060000160050154106115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc90613dff565b60405180910390fd5b42600760008481526020019081526020016000206000016006015411611640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163790613e91565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161169d9190612b8b565b602060405180830381865afa1580156116ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116de9190613ec6565b118061178557506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016117429190612b8b565b602060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117839190613ec6565b115b8061182b57506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016117e89190612b8b565b602060405180830381865afa158015611805573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118299190613ec6565b115b806118d157506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161188e9190612b8b565b602060405180830381865afa1580156118ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118cf9190613ec6565b115b8061197757506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166383c13db2336040518263ffffffff1660e01b81526004016119349190612b8b565b602060405180830381865afa158015611951573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119759190613ec6565b115b6119b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ad90613f65565b60405180910390fd5b6007600083815260200190815260200160002060070160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4e90613fd1565b60405180910390fd5b60005b6007600084815260200190815260200160002060000160040180549050811015611be25781600760008581526020019081526020016000206000016004018281548110611aaa57611aa9613c96565b5b90600052602060002090600302016000015403611bcf57600760008481526020019081526020016000206000016004018181548110611aec57611aeb613c96565b5b9060005260206000209060030201600201339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016007600085815260200190815260200160002060070160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611be2565b8080611bda90612d6f565b915050611a5a565b505050565b60095481565b611bf5612219565b6007600083815260200190815260200160002060080160009054906101000a900460ff16611c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4f90612d20565b60405180910390fd5b600760008381526020019081526020016000206000016040518060e001604052908160008201548152602001600182018054611c9390612c37565b80601f0160208091040260200160405190810160405280929190818152602001828054611cbf90612c37565b8015611d0c5780601f10611ce157610100808354040283529160200191611d0c565b820191906000526020600020905b815481529060010190602001808311611cef57829003601f168201915b50505050508152602001600282018054611d2590612c37565b80601f0160208091040260200160405190810160405280929190818152602001828054611d5190612c37565b8015611d9e5780601f10611d7357610100808354040283529160200191611d9e565b820191906000526020600020905b815481529060010190602001808311611d8157829003601f168201915b5050505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015611e78578382906000526020600020018054611deb90612c37565b80601f0160208091040260200160405190810160405280929190818152602001828054611e1790612c37565b8015611e645780601f10611e3957610100808354040283529160200191611e64565b820191906000526020600020905b815481529060010190602001808311611e4757829003601f168201915b505050505081526020019060010190611dcc565b50505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015612001578382906000526020600020906003020160405180606001604052908160008201548152602001600182018054611ee290612c37565b80601f0160208091040260200160405190810160405280929190818152602001828054611f0e90612c37565b8015611f5b5780601f10611f3057610100808354040283529160200191611f5b565b820191906000526020600020905b815481529060010190602001808311611f3e57829003601f168201915b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015611fe957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611f9f575b50505050508152505081526020019060010190611ea5565b505050508152602001600582015481526020016006820154815250509050919050565b61202c6120a7565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361209b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209290614063565b60405180910390fd5b6120a481612125565b50565b6120af6121e9565b73ffffffffffffffffffffffffffffffffffffffff166120cd6114fe565b73ffffffffffffffffffffffffffffffffffffffff1614612123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211a906140cf565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b6040518060800160405280600081526020016000815260200160008152602001606081525090565b6040518060e00160405280600081526020016060815260200160608152602001606081526020016060815260200160008152602001600081525090565b600080fd5b600080fd5b6000819050919050565b61227381612260565b811461227e57600080fd5b50565b6000813590506122908161226a565b92915050565b6000602082840312156122ac576122ab612256565b5b60006122ba84828501612281565b91505092915050565b6122cc81612260565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561230c5780820151818401526020810190506122f1565b60008484015250505050565b6000601f19601f8301169050919050565b6000612334826122d2565b61233e81856122dd565b935061234e8185602086016122ee565b61235781612318565b840191505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600061239a8383612329565b905092915050565b6000602082019050919050565b60006123ba82612362565b6123c4818561236d565b9350836020820285016123d68561237e565b8060005b8581101561241257848403895281516123f3858261238e565b94506123fe836123a2565b925060208a019950506001810190506123da565b50829750879550505050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124a78261247c565b9050919050565b6124b78161249c565b82525050565b60006124c983836124ae565b60208301905092915050565b6000602082019050919050565b60006124ed82612450565b6124f7818561245b565b93506125028361246c565b8060005b8381101561253357815161251a88826124bd565b9750612525836124d5565b925050600181019050612506565b5085935050505092915050565b600060608301600083015161255860008601826122c3565b50602083015184820360208601526125708282612329565b9150506040830151848203604086015261258a82826124e2565b9150508091505092915050565b60006125a38383612540565b905092915050565b6000602082019050919050565b60006125c382612424565b6125cd818561242f565b9350836020820285016125df85612440565b8060005b8581101561261b57848403895281516125fc8582612597565b9450612607836125ab565b925060208a019950506001810190506125e3565b50829750879550505050505092915050565b600060e08301600083015161264560008601826122c3565b506020830151848203602086015261265d8282612329565b915050604083015184820360408601526126778282612329565b9150506060830151848203606086015261269182826123af565b915050608083015184820360808601526126ab82826125b8565b91505060a08301516126c060a08601826122c3565b5060c08301516126d360c08601826122c3565b508091505092915050565b60008115159050919050565b6126f3816126de565b82525050565b60006040820190508181036000830152612713818561262d565b905061272260208301846126ea565b9392505050565b61273281612260565b82525050565b600060208201905061274d6000830184612729565b92915050565b61275c8161249c565b811461276757600080fd5b50565b60008135905061277981612753565b92915050565b60006020828403121561279557612794612256565b5b60006127a38482850161276a565b91505092915050565b60006020820190506127c160008301846126ea565b92915050565b600082825260208201905092915050565b60006127e3826122d2565b6127ed81856127c7565b93506127fd8185602086016122ee565b61280681612318565b840191505092915050565b6000602082019050818103600083015261282b81846127d8565b905092915050565b600080fd5b600060e0828403121561284e5761284d612833565b5b81905092915050565b60006020828403121561286d5761286c612256565b5b600082013567ffffffffffffffff81111561288b5761288a61225b565b5b61289784828501612838565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006080830160008301516128e460008601826122c3565b5060208301516128f760208601826122c3565b50604083015161290a60408601826122c3565b506060830151848203606086015261292282826124e2565b9150508091505092915050565b600061293b83836128cc565b905092915050565b6000602082019050919050565b600061295b826128a0565b61296581856128ab565b935083602082028501612977856128bc565b8060005b858110156129b35784840389528151612994858261292f565b945061299f83612943565b925060208a0199505060018101905061297b565b50829750879550505050505092915050565b600060208201905081810360008301526129df8184612950565b905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600060e083016000830151612a2b60008601826122c3565b5060208301518482036020860152612a438282612329565b91505060408301518482036040860152612a5d8282612329565b91505060608301518482036060860152612a7782826123af565b91505060808301518482036080860152612a9182826125b8565b91505060a0830151612aa660a08601826122c3565b5060c0830151612ab960c08601826122c3565b508091505092915050565b6000612ad08383612a13565b905092915050565b6000602082019050919050565b6000612af0826129e7565b612afa81856129f2565b935083602082028501612b0c85612a03565b8060005b85811015612b485784840389528151612b298582612ac4565b9450612b3483612ad8565b925060208a01995050600181019050612b10565b50829750879550505050505092915050565b60006020820190508181036000830152612b748184612ae5565b905092915050565b612b858161249c565b82525050565b6000602082019050612ba06000830184612b7c565b92915050565b60008060408385031215612bbd57612bbc612256565b5b6000612bcb85828601612281565b9250506020612bdc85828601612281565b9150509250929050565b60006020820190508181036000830152612c00818461262d565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612c4f57607f821691505b602082108103612c6257612c61612c08565b5b50919050565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b6000612c9e600c836127c7565b9150612ca982612c68565b602082019050919050565b60006020820190508181036000830152612ccd81612c91565b9050919050565b7f4e6f2070726f706f73616c7320666f756e640000000000000000000000000000600082015250565b6000612d0a6012836127c7565b9150612d1582612cd4565b602082019050919050565b60006020820190508181036000830152612d3981612cfd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612d7a82612260565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612dac57612dab612d40565b5b600182019050919050565b7f45787069726174696f6e20646174652073686f756c642062652067726561746560008201527f72207468616e2073746172742064617465000000000000000000000000000000602082015250565b6000612e136031836127c7565b9150612e1e82612db7565b604082019050919050565b60006020820190508181036000830152612e4281612e06565b9050919050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112612e7557612e74612e49565b5b80840192508235915067ffffffffffffffff821115612e9757612e96612e4e565b5b602083019250602082023603831315612eb357612eb2612e53565b5b509250929050565b7f54686572652073686f756c64206265206174206c65617374206f6e65206f707460008201527f696f6e0000000000000000000000000000000000000000000000000000000000602082015250565b6000612f176023836127c7565b9150612f2282612ebb565b604082019050919050565b60006020820190508181036000830152612f4681612f0a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b60008135612f898161226a565b80915050919050565b60008160001b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612fcb84612f92565b9350801983169250808416831791505092915050565b6000819050919050565b6000613006613001612ffc84612260565b612fe1565b612260565b9050919050565b6000819050919050565b61302082612feb565b61303361302c8261300d565b8354612f9f565b8255505050565b6000808335600160200384360303811261305757613056612e49565b5b80840192508235915067ffffffffffffffff82111561307957613078612e4e565b5b60208301925060018202360383131561309557613094612e53565b5b509250929050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026131397fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826130fc565b61314386836130fc565b95508019841693508086168417925050509392505050565b61316483612feb565b6131786131708261300d565b848454613109565b825550505050565b600090565b61318d613180565b61319881848461315b565b505050565b5b818110156131bc576131b1600082613185565b60018101905061319e565b5050565b601f821115613201576131d2816130d7565b6131db846130ec565b810160208510156131ea578190505b6131fe6131f6856130ec565b83018261319d565b50505b505050565b600082821c905092915050565b600061322460001984600802613206565b1980831691505092915050565b600061323d8383613213565b9150826002028217905092915050565b613257838361309d565b67ffffffffffffffff8111156132705761326f6130a8565b5b61327a8254612c37565b6132858282856131c0565b6000601f8311600181146132b457600084156132a2578287013590505b6132ac8582613231565b865550613314565b601f1984166132c2866130d7565b60005b828110156132ea578489013582556001820191506020850194506020810190506132c5565b868310156133075784890135613303601f891682613213565b8355505b6001600288020188555050505b50505050505050565b61332883838361324d565b505050565b6000808335600160200384360303811261334a57613349612e49565b5b80840192508235915067ffffffffffffffff82111561336c5761336b612e4e565b5b60208301925060208202360383131561338857613387612e53565b5b509250929050565b6000819050919050565b600081549050919050565b60006133b082612260565b91506133bb83612260565b92508282026133c981612260565b915082820484148315176133e0576133df612d40565b5b5092915050565b60008190506001806001038301049050919050565b60008190508160005260206000209050919050565b6134417fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802613206565b815481168255505050565b613455816130d7565b613460838254613231565b8083556000825550505050565b60208410600081146134c857601f8411600181146134965761348f8685613231565b83556134c2565b61349f836130d7565b6134b66134ab876130ec565b82016001830161319d565b6134c0878561344c565b505b50613515565b6134d1826130d7565b6134da866130ec565b8101601f871680156134f4576134f38160018403613411565b5b613508613500886130ec565b84018361319d565b6001886002021785555050505b5050505050565b68010000000000000000841115613536576135356130a8565b5b602083106000811461358157602085106000811461355f576135588685613231565b835561357b565b8360ff1916935083613570846130d7565b556001866002020183555b5061358b565b6001856002020182555b5050505050565b805461359d81612c37565b808411156135b2576135b18482848661351c565b5b808410156135c7576135c68482848661346d565b5b50505050565b818110156135eb576135e0600082613185565b6001810190506135cd565b5050565b6135fa600082613592565b50565b6000821461360e5761360d612f4d565b5b613617816135ef565b5050565b5b8181101561363a5761362f6000826135fd565b60018101905061361c565b5050565b818310156136775761364f826133e7565b613658846133e7565b613661836133fc565b818101838201613671818361361b565b50505050505b505050565b68010000000000000000821115613696576136956130a8565b5b61369f8161339a565b8282556136ad83828461363e565b505050565b600082905092915050565b6136c783836136b2565b6136d1818361367c565b6136da83613390565b6136e3836133fc565b60005b8381101561371c576136f8838761303a565b61370381838661331d565b60208501945060018401935050506001810190506136e6565b50505050505050565b6137308383836136bd565b505050565b6000819050919050565b60008235600160600383360303811261375b5761375a612e49565b5b80830191505092915050565b600081549050919050565b60008190506137828260036133a5565b9050919050565b60008190508160005260206000209050919050565b600081549050919050565b60008190506001806001038301049050919050565b60008190508160005260206000209050919050565b5b818110156137f2576137e7600082613185565b6001810190506137d4565b5050565b8183101561382f57613807826137a9565b613810846137a9565b613819836137be565b81810183820161382981836137d3565b50505050505b505050565b6801000000000000000082111561384e5761384d6130a8565b5b6138578161379e565b8282556138658382846137f6565b505050565b613875600082613834565b50565b6000821461388957613888612f4d565b5b6138928161386a565b5050565b6138a36000808301613185565b6138b16000600183016135fd565b6138bf600060028301613878565b50565b600082146138d3576138d2612f4d565b5b6138dc81613896565b5050565b5b818110156138ff576138f46000826138c2565b6003810190506138e1565b5050565b8183101561393c5761391482613772565b61391d84613772565b61392683613789565b81810183820161393681836138e0565b50505050505b505050565b6801000000000000000082111561395b5761395a6130a8565b5b61396481613767565b828255613972838284613903565b505050565b600082905092915050565b6000808335600160200384360303811261399f5761399e612e49565b5b80840192508235915067ffffffffffffffff8211156139c1576139c0612e4e565b5b6020830192506020820236038313156139dd576139dc612e53565b5b509250929050565b600082905092915050565b600081356139fd81612753565b80915050919050565b6000819050919050565b6000819050919050565b613a2483836139e5565b67ffffffffffffffff811115613a3d57613a3c6130a8565b5b613a478183613834565b613a5083613a06565b613a59836137be565b6001830460005b81811015613a98576000613a73856139f0565b613a7c81613a10565b8092506020870196505050808285015550600181019050613a60565b5050505050505050565b613aad838383613a1a565b505050565b600081016000830180613ac481612f7c565b9050613ad08184613017565b5050506001810160208301613ae5818561303a565b613af081838661331d565b505050506002810160408301613b068185613982565b613b11818386613aa2565b505050505050565b613b238282613ab2565b5050565b613b318383613977565b613b3b8183613941565b613b4483613735565b613b4d83613789565b60005b83811015613b8457613b62838761373f565b613b6c8184613b19565b60208401935060038301925050600181019050613b50565b50505050505050565b613b98838383613b27565b505050565b600081016000830180613baf81612f7c565b9050613bbb8184613017565b5050506001810160208301613bd0818561303a565b613bdb81838661331d565b505050506002810160408301613bf1818561303a565b613bfc81838661331d565b505050506003810160608301613c12818561332d565b613c1d818386613725565b505050506004810160808301613c338185612e58565b613c3e818386613b8d565b505050506005810160a0830180613c5481612f7c565b9050613c608184613017565b5050506006810160c0830180613c7581612f7c565b9050613c818184613017565b5050505050565b613c928282613b9d565b5050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613cd082612260565b9150613cdb83612260565b9250828201905080821115613cf357613cf2612d40565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d3382612260565b9150613d3e83612260565b925082613d4e57613d4d613cf9565b5b828204905092915050565b6000613d6482612260565b9150613d6f83612260565b9250828203905081811115613d8757613d86612d40565b5b92915050565b7f4974206973206e6f742079657420706f737369626c6520746f20616e7377657260008201527f207468652070726f706f73616c00000000000000000000000000000000000000602082015250565b6000613de9602d836127c7565b9150613df482613d8d565b604082019050919050565b60006020820190508181036000830152613e1881613ddc565b9050919050565b7f54696d6520666f7220616e73776572696e672070726f706f73616c206578706960008201527f7265640000000000000000000000000000000000000000000000000000000000602082015250565b6000613e7b6023836127c7565b9150613e8682613e1f565b604082019050919050565b60006020820190508181036000830152613eaa81613e6e565b9050919050565b600081519050613ec08161226a565b92915050565b600060208284031215613edc57613edb612256565b5b6000613eea84828501613eb1565b91505092915050565b7f596f7520646f65736e2774206f776e20616e792057434120746f6b656e206f7260008201527f204e465400000000000000000000000000000000000000000000000000000000602082015250565b6000613f4f6024836127c7565b9150613f5a82613ef3565b604082019050919050565b60006020820190508181036000830152613f7e81613f42565b9050919050565b7f596f7520616c726561647920766f74656420746869732070726f706f73616c00600082015250565b6000613fbb601f836127c7565b9150613fc682613f85565b602082019050919050565b60006020820190508181036000830152613fea81613fae565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061404d6026836127c7565b915061405882613ff1565b604082019050919050565b6000602082019050818103600083015261407c81614040565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006140b96020836127c7565b91506140c482614083565b602082019050919050565b600060208201905081810360008301526140e8816140ac565b905091905056fea2646970667358221220352ff1addf5ffd5cc143ce6e1fed628d2cd29f54db31615a0ec9b51b1b99fe5364736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004f971b8b6667130910a4874a9cc290dc166fd20e0000000000000000000000009bf349f29a3ff54ca03c98891023b72140cd7bbe000000000000000000000000709ce875e2bec643b1932e4c9fd22ce113e20e2d00000000000000000000000023f0512c871c1435f7b3a32df5e1616adc3eeb0a000000000000000000000000b8f21f8d8306898c755d5214687e656a2ad78737
-----Decoded View---------------
Arg [0] : _WCATokensAggregator (address): 0x4F971b8B6667130910a4874A9cC290Dc166Fd20E
Arg [1] : _WCAMundialStaking (address): 0x9BF349F29a3ff54cA03c98891023B72140cD7bbE
Arg [2] : _WCANFT (address): 0x709ce875E2bec643b1932E4c9fd22Ce113E20e2D
Arg [3] : _WCAMUNDIAL (address): 0x23F0512c871C1435F7B3a32dF5E1616Adc3eEB0A
Arg [4] : _WCAVIP (address): 0xb8F21f8D8306898C755d5214687e656A2aD78737
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000004f971b8b6667130910a4874a9cc290dc166fd20e
Arg [1] : 0000000000000000000000009bf349f29a3ff54ca03c98891023b72140cd7bbe
Arg [2] : 000000000000000000000000709ce875e2bec643b1932e4c9fd22ce113e20e2d
Arg [3] : 00000000000000000000000023f0512c871c1435f7b3a32df5e1616adc3eeb0a
Arg [4] : 000000000000000000000000b8f21f8d8306898c755d5214687e656a2ad78737
Deployed Bytecode Sourcemap
27787:4662:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28575:45;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;28624:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29425:88;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28533:38;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29946:184;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28491:38;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29518:423;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30644:784;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30135:315;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29336:84;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26868:103;;;:::i;:::-;;29200:131;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26220:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31433:1013;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28657:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30455:184;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27126:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28575:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;28624:29::-;;;;:::o;29425:88::-;26106:13;:11;:13::i;:::-;29503:5:::1;29486:6;:14;29493:6;29486:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;29425:88:::0;:::o;28533:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;29946:184::-;28754:7;:5;:7::i;:::-;28740:21;;:10;:21;;;:43;;;;28765:6;:18;28772:10;28765:18;;;;;;;;;;;;;;;;;;;;;;;;;28740:43;28732:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30021:9:::1;:13;30031:2;30021:13;;;;;;;;;;;:20;;;;;;;;;;;;30013:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;30092:5;30069:9;:13;30079:2;30069:13;;;;;;;;;;;:20;;;:28;;;;;;;;;;;;;;;;;;30102:21;;:23;;;;;;;;;:::i;:::-;;;;;;29946:184:::0;:::o;28491:38::-;;;;;;;;;;;;;;;;;;;:::o;29518:423::-;28754:7;:5;:7::i;:::-;28740:21;;:10;:21;;;:43;;;;28765:6;:18;28772:10;28765:18;;;;;;;;;;;;;;;;;;;;;;;;;28740:43;28732:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29620:4:::1;:24;;;29598:4;:19;;;:46;29590:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;29733:1;29711:4;:12;;;;;;;;:::i;:::-;:19;;:23;29703:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;29812:4;29779:9;:25;29789:14;;29779:25;;;;;;;;;;;:30;;:37;;;;;;:::i;:::-;;;;29857:14;;29821:9;:25;29831:14;;29821:25;;;;;;;;;;;:30;;:33;;:50;;;;29911:4;29876:9;:25;29886:14;;29876:25;;;;;;;;;;;:32;;;:39;;;;;;;;;;;;;;;;;;29920:14;;:16;;;;;;;;;:::i;:::-;;;;;;29518:423:::0;:::o;30644:784::-;30715:15;30745:9;:21;30755:10;30745:21;;;;;;;;;;;:28;;;;;;;;;;;;30737:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;30803:23;30829:9;:21;30839:10;30829:21;;;;;;;;;;;:26;;:34;;30803:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30868:23;30907:9;:21;30917:10;30907:21;;;;;;;;;;;:26;;:34;;:41;;;;30894:55;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;30868:81;;30954:18;30988:9;30983:217;31007:7;:14;31003:1;:18;30983:217;;;31056:7;31064:1;31056:10;;;;;;;;:::i;:::-;;;;;;;;:13;;;31034:7;31042:1;31034:10;;;;;;;;:::i;:::-;;;;;;;;:19;;:35;;;;;31094:7;31102:1;31094:10;;;;;;;;:::i;:::-;;;;;;;;:16;;;31075:7;31083:1;31075:10;;;;;;;;:::i;:::-;;;;;;;;:16;;:35;;;;31135:7;31143:1;31135:10;;;;;;;;:::i;:::-;;;;;;;;:16;;;:23;31116:7;31124:1;31116:10;;;;;;;;:::i;:::-;;;;;;;;:16;;:42;;;;;31178:7;31186:1;31178:10;;;;;;;;:::i;:::-;;;;;;;;:16;;;31164:30;;;;;:::i;:::-;;;31023:3;;;;;:::i;:::-;;;;30983:217;;;;31211:9;31206:197;31230:7;:14;31226:1;:18;31206:197;;;31275:1;31261:10;:15;31257:141;;31309:1;31285:7;31293:1;31285:10;;;;;;;;:::i;:::-;;;;;;;;:21;;:25;;;;;31257:141;;;31381:10;31374:3;31355:7;31363:1;31355:10;;;;;;;;:::i;:::-;;;;;;;;:16;;;:22;;;;:::i;:::-;31354:37;;;;:::i;:::-;31330:7;31338:1;31330:10;;;;;;;;:::i;:::-;;;;;;;;:21;;:61;;;;;31257:141;31246:3;;;;;:::i;:::-;;;;31206:197;;;;31416:7;31409:14;;;;;30644:784;;;:::o;30135:315::-;30182:13;30202:20;30253:21;;30236:14;;:38;;;;:::i;:::-;30225:50;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;30202:73;;30280:9;30299;30311:1;30299:13;;30294:134;30318:14;;30314:1;:18;30294:134;;;30349:9;:12;30359:1;30349:12;;;;;;;;;;;:19;;;;;;;;;;;;30345:78;;;30389:9;:12;30399:1;30389:12;;;;;;;;;;;:17;;30377:29;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:6;30384:1;30377:9;;;;;;;;:::i;:::-;;;;;;;:29;;;;30413:3;;;;;:::i;:::-;;;;30345:78;30334:3;;;;;:::i;:::-;;;;30294:134;;;;30439:6;30432:13;;;;30135:315;:::o;29336:84::-;26106:13;:11;:13::i;:::-;29411:4:::1;29394:6;:14;29401:6;29394:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;29336:84:::0;:::o;26868:103::-;26106:13;:11;:13::i;:::-;26933:30:::1;26960:1;26933:18;:30::i;:::-;26868:103::o:0;29200:131::-;26106:13;:11;:13::i;:::-;29317:8:::1;29274:19;;:52;;;;;;;;;;;;;;;;;;29200:131:::0;:::o;26220:87::-;26266:7;26293:6;;;;;;;;;;;26286:13;;26220:87;:::o;31433:1013::-;31507:9;:21;31517:10;31507:21;;;;;;;;;;;:28;;;;;;;;;;;;31499:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;31615:15;31571:9;:21;31581:10;31571:21;;;;;;;;;;;:26;;:41;;;:59;31563:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;31742:15;31693:9;:21;31703:10;31693:21;;;;;;;;;;;:26;;:46;;;:64;31685:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;31854:1;31810:19;;;;;;;;;;;:29;;;31840:10;31810:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;:81;;;;31890:1;31859:6;;;;;;;;;;;:16;;;31876:10;31859:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:32;31810:81;:121;;;;31930:1;31895:10;;;;;;;;;;;:20;;;31916:10;31895:32;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;31810:121;:157;;;;31966:1;31935:6;;;;;;;;;;;:16;;;31952:10;31935:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:32;31810:157;:209;;;;32018:1;31971:17;;;;;;;;;;;:32;;;32004:10;31971:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;31810:209;31802:258;;;;;;;;;;;;:::i;:::-;;;;;;;;;32074:9;:21;32084:10;32074:21;;;;;;;;;;;:30;;:42;32105:10;32074:42;;;;;;;;;;;;;;;;;;;;;;;;;32073:43;32065:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;32164:9;32159:283;32183:9;:21;32193:10;32183:21;;;;;;;;;;;:26;;:34;;:41;;;;32179:1;:45;32159:283;;;32285:8;32241:9;:21;32251:10;32241:21;;;;;;;;;;;:26;;:34;;32276:1;32241:37;;;;;;;;:::i;:::-;;;;;;;;;;;;:40;;;:52;32237:200;;32302:9;:21;32312:10;32302:21;;;;;;;;;;;:26;;:34;;32337:1;32302:37;;;;;;;;:::i;:::-;;;;;;;;;;;;:43;;32351:10;32302:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32414:4;32369:9;:21;32379:10;32369:21;;;;;;;;;;;:30;;:42;32400:10;32369:42;;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;32425:5;;32237:200;32226:3;;;;;:::i;:::-;;;;32159:283;;;;31433:1013;;:::o;28657:36::-;;;;:::o;30455:184::-;30519:11;;:::i;:::-;30545:9;:21;30555:10;30545:21;;;;;;;;;;;:28;;;;;;;;;;;;30537:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;30608:9;:21;30618:10;30608:21;;;;;;;;;;;:26;;30601:33;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30455:184;;;:::o;27126:201::-;26106:13;:11;:13::i;:::-;27235:1:::1;27215:22;;:8;:22;;::::0;27207:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;27291:28;27310:8;27291:18;:28::i;:::-;27126:201:::0;:::o;26385:132::-;26460:12;:10;:12::i;:::-;26449:23;;:7;:5;:7::i;:::-;:23;;;26441:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26385:132::o;27487:191::-;27561:16;27580:6;;;;;;;;;;;27561:25;;27606:8;27597:6;;:17;;;;;;;;;;;;;;;;;;27661:8;27630:40;;27651:8;27630:40;;;;;;;;;;;;27550:128;27487:191;:::o;24771:98::-;24824:7;24851:10;24844:17;;24771:98;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:108::-;1102:24;1120:5;1102:24;:::i;:::-;1097:3;1090:37;1025:108;;:::o;1139:99::-;1191:6;1225:5;1219:12;1209:22;;1139:99;;;:::o;1244:159::-;1318:11;1352:6;1347:3;1340:19;1392:4;1387:3;1383:14;1368:29;;1244:159;;;;:::o;1409:246::-;1490:1;1500:113;1514:6;1511:1;1508:13;1500:113;;;1599:1;1594:3;1590:11;1584:18;1580:1;1575:3;1571:11;1564:39;1536:2;1533:1;1529:10;1524:15;;1500:113;;;1647:1;1638:6;1633:3;1629:16;1622:27;1471:184;1409:246;;;:::o;1661:102::-;1702:6;1753:2;1749:7;1744:2;1737:5;1733:14;1729:28;1719:38;;1661:102;;;:::o;1769:357::-;1847:3;1875:39;1908:5;1875:39;:::i;:::-;1930:61;1984:6;1979:3;1930:61;:::i;:::-;1923:68;;2000:65;2058:6;2053:3;2046:4;2039:5;2035:16;2000:65;:::i;:::-;2090:29;2112:6;2090:29;:::i;:::-;2085:3;2081:39;2074:46;;1851:275;1769:357;;;;:::o;2132:124::-;2209:6;2243:5;2237:12;2227:22;;2132:124;;;:::o;2262:184::-;2361:11;2395:6;2390:3;2383:19;2435:4;2430:3;2426:14;2411:29;;2262:184;;;;:::o;2452:142::-;2529:4;2552:3;2544:11;;2582:4;2577:3;2573:14;2565:22;;2452:142;;;:::o;2600:196::-;2689:10;2724:66;2786:3;2778:6;2724:66;:::i;:::-;2710:80;;2600:196;;;;:::o;2802:123::-;2882:4;2914;2909:3;2905:14;2897:22;;2802:123;;;:::o;2959:971::-;3088:3;3117:64;3175:5;3117:64;:::i;:::-;3197:86;3276:6;3271:3;3197:86;:::i;:::-;3190:93;;3309:3;3354:4;3346:6;3342:17;3337:3;3333:27;3384:66;3444:5;3384:66;:::i;:::-;3473:7;3504:1;3489:396;3514:6;3511:1;3508:13;3489:396;;;3585:9;3579:4;3575:20;3570:3;3563:33;3636:6;3630:13;3664:84;3743:4;3728:13;3664:84;:::i;:::-;3656:92;;3771:70;3834:6;3771:70;:::i;:::-;3761:80;;3870:4;3865:3;3861:14;3854:21;;3549:336;3536:1;3533;3529:9;3524:14;;3489:396;;;3493:14;3901:4;3894:11;;3921:3;3914:10;;3093:837;;;;;2959:971;;;;:::o;3936:137::-;4026:6;4060:5;4054:12;4044:22;;3936:137;;;:::o;4079:197::-;4191:11;4225:6;4220:3;4213:19;4265:4;4260:3;4256:14;4241:29;;4079:197;;;;:::o;4282:155::-;4372:4;4395:3;4387:11;;4425:4;4420:3;4416:14;4408:22;;4282:155;;;:::o;4443:114::-;4510:6;4544:5;4538:12;4528:22;;4443:114;;;:::o;4563:174::-;4652:11;4686:6;4681:3;4674:19;4726:4;4721:3;4717:14;4702:29;;4563:174;;;;:::o;4743:132::-;4810:4;4833:3;4825:11;;4863:4;4858:3;4854:14;4846:22;;4743:132;;;:::o;4881:126::-;4918:7;4958:42;4951:5;4947:54;4936:65;;4881:126;;;:::o;5013:96::-;5050:7;5079:24;5097:5;5079:24;:::i;:::-;5068:35;;5013:96;;;:::o;5115:108::-;5192:24;5210:5;5192:24;:::i;:::-;5187:3;5180:37;5115:108;;:::o;5229:179::-;5298:10;5319:46;5361:3;5353:6;5319:46;:::i;:::-;5397:4;5392:3;5388:14;5374:28;;5229:179;;;;:::o;5414:113::-;5484:4;5516;5511:3;5507:14;5499:22;;5414:113;;;:::o;5563:712::-;5672:3;5701:54;5749:5;5701:54;:::i;:::-;5771:76;5840:6;5835:3;5771:76;:::i;:::-;5764:83;;5871:56;5921:5;5871:56;:::i;:::-;5950:7;5981:1;5966:284;5991:6;5988:1;5985:13;5966:284;;;6067:6;6061:13;6094:63;6153:3;6138:13;6094:63;:::i;:::-;6087:70;;6180:60;6233:6;6180:60;:::i;:::-;6170:70;;6026:224;6013:1;6010;6006:9;6001:14;;5966:284;;;5970:14;6266:3;6259:10;;5677:598;;;5563:712;;;;:::o;6339:867::-;6444:3;6480:4;6475:3;6471:14;6565:4;6558:5;6554:16;6548:23;6584:63;6641:4;6636:3;6632:14;6618:12;6584:63;:::i;:::-;6495:162;6740:4;6733:5;6729:16;6723:23;6793:3;6787:4;6783:14;6776:4;6771:3;6767:14;6760:38;6819:73;6887:4;6873:12;6819:73;:::i;:::-;6811:81;;6667:236;6986:4;6979:5;6975:16;6969:23;7039:3;7033:4;7029:14;7022:4;7017:3;7013:14;7006:38;7065:103;7163:4;7149:12;7065:103;:::i;:::-;7057:111;;6913:266;7196:4;7189:11;;6449:757;6339:867;;;;:::o;7212:248::-;7327:10;7362:92;7450:3;7442:6;7362:92;:::i;:::-;7348:106;;7212:248;;;;:::o;7466:136::-;7559:4;7591;7586:3;7582:14;7574:22;;7466:136;;;:::o;7670:1075::-;7825:3;7854:77;7925:5;7854:77;:::i;:::-;7947:99;8039:6;8034:3;7947:99;:::i;:::-;7940:106;;8072:3;8117:4;8109:6;8105:17;8100:3;8096:27;8147:79;8220:5;8147:79;:::i;:::-;8249:7;8280:1;8265:435;8290:6;8287:1;8284:13;8265:435;;;8361:9;8355:4;8351:20;8346:3;8339:33;8412:6;8406:13;8440:110;8545:4;8530:13;8440:110;:::i;:::-;8432:118;;8573:83;8649:6;8573:83;:::i;:::-;8563:93;;8685:4;8680:3;8676:14;8669:21;;8325:375;8312:1;8309;8305:9;8300:14;;8265:435;;;8269:14;8716:4;8709:11;;8736:3;8729:10;;7830:915;;;;;7670:1075;;;;:::o;8805:1844::-;8916:3;8952:4;8947:3;8943:14;9037:4;9030:5;9026:16;9020:23;9056:63;9113:4;9108:3;9104:14;9090:12;9056:63;:::i;:::-;8967:162;9212:4;9205:5;9201:16;9195:23;9265:3;9259:4;9255:14;9248:4;9243:3;9239:14;9232:38;9291:73;9359:4;9345:12;9291:73;:::i;:::-;9283:81;;9139:236;9460:4;9453:5;9449:16;9443:23;9513:3;9507:4;9503:14;9496:4;9491:3;9487:14;9480:38;9539:73;9607:4;9593:12;9539:73;:::i;:::-;9531:81;;9385:238;9712:4;9705:5;9701:16;9695:23;9765:3;9759:4;9755:14;9748:4;9743:3;9739:14;9732:38;9791:123;9909:4;9895:12;9791:123;:::i;:::-;9783:131;;9633:292;10010:4;10003:5;9999:16;9993:23;10063:3;10057:4;10053:14;10046:4;10041:3;10037:14;10030:38;10089:149;10233:4;10219:12;10089:149;:::i;:::-;10081:157;;9935:314;10341:4;10334:5;10330:16;10324:23;10360:63;10417:4;10412:3;10408:14;10394:12;10360:63;:::i;:::-;10259:174;10530:4;10523:5;10519:16;10513:23;10549:63;10606:4;10601:3;10597:14;10583:12;10549:63;:::i;:::-;10443:179;10639:4;10632:11;;8921:1728;8805:1844;;;;:::o;10655:90::-;10689:7;10732:5;10725:13;10718:21;10707:32;;10655:90;;;:::o;10751:109::-;10832:21;10847:5;10832:21;:::i;:::-;10827:3;10820:34;10751:109;;:::o;10866:455::-;11023:4;11061:2;11050:9;11046:18;11038:26;;11110:9;11104:4;11100:20;11096:1;11085:9;11081:17;11074:47;11138:100;11233:4;11224:6;11138:100;:::i;:::-;11130:108;;11248:66;11310:2;11299:9;11295:18;11286:6;11248:66;:::i;:::-;10866:455;;;;;:::o;11327:118::-;11414:24;11432:5;11414:24;:::i;:::-;11409:3;11402:37;11327:118;;:::o;11451:222::-;11544:4;11582:2;11571:9;11567:18;11559:26;;11595:71;11663:1;11652:9;11648:17;11639:6;11595:71;:::i;:::-;11451:222;;;;:::o;11679:122::-;11752:24;11770:5;11752:24;:::i;:::-;11745:5;11742:35;11732:63;;11791:1;11788;11781:12;11732:63;11679:122;:::o;11807:139::-;11853:5;11891:6;11878:20;11869:29;;11907:33;11934:5;11907:33;:::i;:::-;11807:139;;;;:::o;11952:329::-;12011:6;12060:2;12048:9;12039:7;12035:23;12031:32;12028:119;;;12066:79;;:::i;:::-;12028:119;12186:1;12211:53;12256:7;12247:6;12236:9;12232:22;12211:53;:::i;:::-;12201:63;;12157:117;11952:329;;;;:::o;12287:210::-;12374:4;12412:2;12401:9;12397:18;12389:26;;12425:65;12487:1;12476:9;12472:17;12463:6;12425:65;:::i;:::-;12287:210;;;;:::o;12503:169::-;12587:11;12621:6;12616:3;12609:19;12661:4;12656:3;12652:14;12637:29;;12503:169;;;;:::o;12678:377::-;12766:3;12794:39;12827:5;12794:39;:::i;:::-;12849:71;12913:6;12908:3;12849:71;:::i;:::-;12842:78;;12929:65;12987:6;12982:3;12975:4;12968:5;12964:16;12929:65;:::i;:::-;13019:29;13041:6;13019:29;:::i;:::-;13014:3;13010:39;13003:46;;12770:285;12678:377;;;;:::o;13061:313::-;13174:4;13212:2;13201:9;13197:18;13189:26;;13261:9;13255:4;13251:20;13247:1;13236:9;13232:17;13225:47;13289:78;13362:4;13353:6;13289:78;:::i;:::-;13281:86;;13061:313;;;;:::o;13380:117::-;13489:1;13486;13479:12;13532:228;13601:5;13642:3;13633:6;13628:3;13624:16;13620:26;13617:113;;;13649:79;;:::i;:::-;13617:113;13748:6;13739:15;;13532:228;;;;:::o;13766:535::-;13848:6;13897:2;13885:9;13876:7;13872:23;13868:32;13865:119;;;13903:79;;:::i;:::-;13865:119;14051:1;14040:9;14036:17;14023:31;14081:18;14073:6;14070:30;14067:117;;;14103:79;;:::i;:::-;14067:117;14208:76;14276:7;14267:6;14256:9;14252:22;14208:76;:::i;:::-;14198:86;;13994:300;13766:535;;;;:::o;14307:138::-;14398:6;14432:5;14426:12;14416:22;;14307:138;;;:::o;14451:208::-;14574:11;14608:6;14603:3;14596:19;14648:4;14643:3;14639:14;14624:29;;14451:208;;;;:::o;14665:156::-;14756:4;14779:3;14771:11;;14809:4;14804:3;14800:14;14792:22;;14665:156;;;:::o;14885:984::-;14992:3;15028:4;15023:3;15019:14;15119:4;15112:5;15108:16;15102:23;15138:63;15195:4;15190:3;15186:14;15172:12;15138:63;:::i;:::-;15043:168;15299:4;15292:5;15288:16;15282:23;15318:63;15375:4;15370:3;15366:14;15352:12;15318:63;:::i;:::-;15221:170;15474:4;15467:5;15463:16;15457:23;15493:63;15550:4;15545:3;15541:14;15527:12;15493:63;:::i;:::-;15401:165;15649:4;15642:5;15638:16;15632:23;15702:3;15696:4;15692:14;15685:4;15680:3;15676:14;15669:38;15728:103;15826:4;15812:12;15728:103;:::i;:::-;15720:111;;15576:266;15859:4;15852:11;;14997:872;14885:984;;;;:::o;15875:252::-;15992:10;16027:94;16117:3;16109:6;16027:94;:::i;:::-;16013:108;;15875:252;;;;:::o;16133:137::-;16227:4;16259;16254:3;16250:14;16242:22;;16133:137;;;:::o;16338:1103::-;16505:3;16534:78;16606:5;16534:78;:::i;:::-;16628:110;16731:6;16726:3;16628:110;:::i;:::-;16621:117;;16764:3;16809:4;16801:6;16797:17;16792:3;16788:27;16839:80;16913:5;16839:80;:::i;:::-;16942:7;16973:1;16958:438;16983:6;16980:1;16977:13;16958:438;;;17054:9;17048:4;17044:20;17039:3;17032:33;17105:6;17099:13;17133:112;17240:4;17225:13;17133:112;:::i;:::-;17125:120;;17268:84;17345:6;17268:84;:::i;:::-;17258:94;;17381:4;17376:3;17372:14;17365:21;;17018:378;17005:1;17002;16998:9;16993:14;;16958:438;;;16962:14;17412:4;17405:11;;17432:3;17425:10;;16510:931;;;;;16338:1103;;;;:::o;17447:469::-;17638:4;17676:2;17665:9;17661:18;17653:26;;17725:9;17719:4;17715:20;17711:1;17700:9;17696:17;17689:47;17753:156;17904:4;17895:6;17753:156;:::i;:::-;17745:164;;17447:469;;;;:::o;17922:135::-;18010:6;18044:5;18038:12;18028:22;;17922:135;;;:::o;18063:205::-;18183:11;18217:6;18212:3;18205:19;18257:4;18252:3;18248:14;18233:29;;18063:205;;;;:::o;18274:153::-;18362:4;18385:3;18377:11;;18415:4;18410:3;18406:14;18398:22;;18274:153;;;:::o;18487:1834::-;18588:3;18624:4;18619:3;18615:14;18709:4;18702:5;18698:16;18692:23;18728:63;18785:4;18780:3;18776:14;18762:12;18728:63;:::i;:::-;18639:162;18884:4;18877:5;18873:16;18867:23;18937:3;18931:4;18927:14;18920:4;18915:3;18911:14;18904:38;18963:73;19031:4;19017:12;18963:73;:::i;:::-;18955:81;;18811:236;19132:4;19125:5;19121:16;19115:23;19185:3;19179:4;19175:14;19168:4;19163:3;19159:14;19152:38;19211:73;19279:4;19265:12;19211:73;:::i;:::-;19203:81;;19057:238;19384:4;19377:5;19373:16;19367:23;19437:3;19431:4;19427:14;19420:4;19415:3;19411:14;19404:38;19463:123;19581:4;19567:12;19463:123;:::i;:::-;19455:131;;19305:292;19682:4;19675:5;19671:16;19665:23;19735:3;19729:4;19725:14;19718:4;19713:3;19709:14;19702:38;19761:149;19905:4;19891:12;19761:149;:::i;:::-;19753:157;;19607:314;20013:4;20006:5;20002:16;19996:23;20032:63;20089:4;20084:3;20080:14;20066:12;20032:63;:::i;:::-;19931:174;20202:4;20195:5;20191:16;20185:23;20221:63;20278:4;20273:3;20269:14;20255:12;20221:63;:::i;:::-;20115:179;20311:4;20304:11;;18593:1728;18487:1834;;;;:::o;20327:240::-;20438:10;20473:88;20557:3;20549:6;20473:88;:::i;:::-;20459:102;;20327:240;;;;:::o;20573:134::-;20664:4;20696;20691:3;20687:14;20679:22;;20573:134;;;:::o;20771:1079::-;20932:3;20961:75;21030:5;20961:75;:::i;:::-;21052:107;21152:6;21147:3;21052:107;:::i;:::-;21045:114;;21185:3;21230:4;21222:6;21218:17;21213:3;21209:27;21260:77;21331:5;21260:77;:::i;:::-;21360:7;21391:1;21376:429;21401:6;21398:1;21395:13;21376:429;;;21472:9;21466:4;21462:20;21457:3;21450:33;21523:6;21517:13;21551:106;21652:4;21637:13;21551:106;:::i;:::-;21543:114;;21680:81;21754:6;21680:81;:::i;:::-;21670:91;;21790:4;21785:3;21781:14;21774:21;;21436:369;21423:1;21420;21416:9;21411:14;;21376:429;;;21380:14;21821:4;21814:11;;21841:3;21834:10;;20937:913;;;;;20771:1079;;;;:::o;21856:457::-;22041:4;22079:2;22068:9;22064:18;22056:26;;22128:9;22122:4;22118:20;22114:1;22103:9;22099:17;22092:47;22156:150;22301:4;22292:6;22156:150;:::i;:::-;22148:158;;21856:457;;;;:::o;22319:118::-;22406:24;22424:5;22406:24;:::i;:::-;22401:3;22394:37;22319:118;;:::o;22443:222::-;22536:4;22574:2;22563:9;22559:18;22551:26;;22587:71;22655:1;22644:9;22640:17;22631:6;22587:71;:::i;:::-;22443:222;;;;:::o;22671:474::-;22739:6;22747;22796:2;22784:9;22775:7;22771:23;22767:32;22764:119;;;22802:79;;:::i;:::-;22764:119;22922:1;22947:53;22992:7;22983:6;22972:9;22968:22;22947:53;:::i;:::-;22937:63;;22893:117;23049:2;23075:53;23120:7;23111:6;23100:9;23096:22;23075:53;:::i;:::-;23065:63;;23020:118;22671:474;;;;;:::o;23151:357::-;23286:4;23324:2;23313:9;23309:18;23301:26;;23373:9;23367:4;23363:20;23359:1;23348:9;23344:17;23337:47;23401:100;23496:4;23487:6;23401:100;:::i;:::-;23393:108;;23151:357;;;;:::o;23514:180::-;23562:77;23559:1;23552:88;23659:4;23656:1;23649:15;23683:4;23680:1;23673:15;23700:320;23744:6;23781:1;23775:4;23771:12;23761:22;;23828:1;23822:4;23818:12;23849:18;23839:81;;23905:4;23897:6;23893:17;23883:27;;23839:81;23967:2;23959:6;23956:14;23936:18;23933:38;23930:84;;23986:18;;:::i;:::-;23930:84;23751:269;23700:320;;;:::o;24026:162::-;24166:14;24162:1;24154:6;24150:14;24143:38;24026:162;:::o;24194:366::-;24336:3;24357:67;24421:2;24416:3;24357:67;:::i;:::-;24350:74;;24433:93;24522:3;24433:93;:::i;:::-;24551:2;24546:3;24542:12;24535:19;;24194:366;;;:::o;24566:419::-;24732:4;24770:2;24759:9;24755:18;24747:26;;24819:9;24813:4;24809:20;24805:1;24794:9;24790:17;24783:47;24847:131;24973:4;24847:131;:::i;:::-;24839:139;;24566:419;;;:::o;24991:168::-;25131:20;25127:1;25119:6;25115:14;25108:44;24991:168;:::o;25165:366::-;25307:3;25328:67;25392:2;25387:3;25328:67;:::i;:::-;25321:74;;25404:93;25493:3;25404:93;:::i;:::-;25522:2;25517:3;25513:12;25506:19;;25165:366;;;:::o;25537:419::-;25703:4;25741:2;25730:9;25726:18;25718:26;;25790:9;25784:4;25780:20;25776:1;25765:9;25761:17;25754:47;25818:131;25944:4;25818:131;:::i;:::-;25810:139;;25537:419;;;:::o;25962:180::-;26010:77;26007:1;26000:88;26107:4;26104:1;26097:15;26131:4;26128:1;26121:15;26148:233;26187:3;26210:24;26228:5;26210:24;:::i;:::-;26201:33;;26256:66;26249:5;26246:77;26243:103;;26326:18;;:::i;:::-;26243:103;26373:1;26366:5;26362:13;26355:20;;26148:233;;;:::o;26387:236::-;26527:34;26523:1;26515:6;26511:14;26504:58;26596:19;26591:2;26583:6;26579:15;26572:44;26387:236;:::o;26629:366::-;26771:3;26792:67;26856:2;26851:3;26792:67;:::i;:::-;26785:74;;26868:93;26957:3;26868:93;:::i;:::-;26986:2;26981:3;26977:12;26970:19;;26629:366;;;:::o;27001:419::-;27167:4;27205:2;27194:9;27190:18;27182:26;;27254:9;27248:4;27244:20;27240:1;27229:9;27225:17;27218:47;27282:131;27408:4;27282:131;:::i;:::-;27274:139;;27001:419;;;:::o;27426:117::-;27535:1;27532;27525:12;27549:117;27658:1;27655;27648:12;27672:117;27781:1;27778;27771:12;27795:765;27913:4;27919:6;27975:11;27962:25;28075:1;28069:4;28065:12;28054:8;28038:14;28034:29;28030:48;28010:18;28006:73;27996:168;;28083:79;;:::i;:::-;27996:168;28195:18;28185:8;28181:33;28173:41;;28247:4;28234:18;28224:28;;28275:18;28267:6;28264:30;28261:117;;;28297:79;;:::i;:::-;28261:117;28405:2;28399:4;28395:13;28387:21;;28462:4;28454:6;28450:17;28434:14;28430:38;28424:4;28420:49;28417:136;;;28472:79;;:::i;:::-;28417:136;27926:634;27795:765;;;;;:::o;28566:222::-;28706:34;28702:1;28694:6;28690:14;28683:58;28775:5;28770:2;28762:6;28758:15;28751:30;28566:222;:::o;28794:366::-;28936:3;28957:67;29021:2;29016:3;28957:67;:::i;:::-;28950:74;;29033:93;29122:3;29033:93;:::i;:::-;29151:2;29146:3;29142:12;29135:19;;28794:366;;;:::o;29166:419::-;29332:4;29370:2;29359:9;29355:18;29347:26;;29419:9;29413:4;29409:20;29405:1;29394:9;29390:17;29383:47;29447:131;29573:4;29447:131;:::i;:::-;29439:139;;29166:419;;;:::o;29591:180::-;29639:77;29636:1;29629:88;29736:4;29733:1;29726:15;29760:4;29757:1;29750:15;29777:186;29822:11;29871:3;29858:17;29884:33;29911:5;29884:33;:::i;:::-;29951:5;29927:29;;29834:129;29777:186;;;:::o;29969:92::-;30001:8;30048:5;30045:1;30041:13;30020:34;;29969:92;;;:::o;30067:290::-;30125:6;30154:66;30241:22;30254:8;30241:22;:::i;:::-;30229:34;;30296:4;30292:9;30285:5;30281:21;30272:30;;30345:4;30335:8;30331:19;30324:5;30321:30;30311:40;;30132:225;30067:290;;;;:::o;30363:60::-;30391:3;30412:5;30405:12;;30363:60;;;:::o;30429:142::-;30479:9;30512:53;30530:34;30539:24;30557:5;30539:24;:::i;:::-;30530:34;:::i;:::-;30512:53;:::i;:::-;30499:66;;30429:142;;;:::o;30577:75::-;30620:3;30641:5;30634:12;;30577:75;;;:::o;30658:262::-;30768:39;30799:7;30768:39;:::i;:::-;30829:84;30871:41;30895:16;30871:41;:::i;:::-;30864:4;30858:11;30829:84;:::i;:::-;30823:4;30816:98;30734:186;30658:262;;:::o;30926:725::-;31004:4;31010:6;31066:11;31053:25;31166:1;31160:4;31156:12;31145:8;31129:14;31125:29;31121:48;31101:18;31097:73;31087:168;;31174:79;;:::i;:::-;31087:168;31286:18;31276:8;31272:33;31264:41;;31338:4;31325:18;31315:28;;31366:18;31358:6;31355:30;31352:117;;;31388:79;;:::i;:::-;31352:117;31496:2;31490:4;31486:13;31478:21;;31553:4;31545:6;31541:17;31525:14;31521:38;31515:4;31511:49;31508:136;;;31563:79;;:::i;:::-;31508:136;31017:634;30926:725;;;;;:::o;31657:97::-;31716:6;31744:3;31734:13;;31657:97;;;;:::o;31760:180::-;31808:77;31805:1;31798:88;31905:4;31902:1;31895:15;31929:4;31926:1;31919:15;31946:141;31995:4;32018:3;32010:11;;32041:3;32038:1;32031:14;32075:4;32072:1;32062:18;32054:26;;31946:141;;;:::o;32093:93::-;32130:6;32177:2;32172;32165:5;32161:14;32157:23;32147:33;;32093:93;;;:::o;32192:107::-;32236:8;32286:5;32280:4;32276:16;32255:37;;32192:107;;;;:::o;32305:393::-;32374:6;32424:1;32412:10;32408:18;32447:97;32477:66;32466:9;32447:97;:::i;:::-;32565:39;32595:8;32584:9;32565:39;:::i;:::-;32553:51;;32637:4;32633:9;32626:5;32622:21;32613:30;;32686:4;32676:8;32672:19;32665:5;32662:30;32652:40;;32381:317;;32305:393;;;;;:::o;32704:269::-;32814:39;32845:7;32814:39;:::i;:::-;32875:91;32924:41;32948:16;32924:41;:::i;:::-;32916:6;32909:4;32903:11;32875:91;:::i;:::-;32869:4;32862:105;32780:193;32704:269;;;:::o;32979:73::-;33024:3;32979:73;:::o;33058:189::-;33135:32;;:::i;:::-;33176:65;33234:6;33226;33220:4;33176:65;:::i;:::-;33111:136;33058:189;;:::o;33253:186::-;33313:120;33330:3;33323:5;33320:14;33313:120;;;33384:39;33421:1;33414:5;33384:39;:::i;:::-;33357:1;33350:5;33346:13;33337:22;;33313:120;;;33253:186;;:::o;33445:543::-;33546:2;33541:3;33538:11;33535:446;;;33580:38;33612:5;33580:38;:::i;:::-;33664:29;33682:10;33664:29;:::i;:::-;33654:8;33650:44;33847:2;33835:10;33832:18;33829:49;;;33868:8;33853:23;;33829:49;33891:80;33947:22;33965:3;33947:22;:::i;:::-;33937:8;33933:37;33920:11;33891:80;:::i;:::-;33550:431;;33535:446;33445:543;;;:::o;33994:117::-;34048:8;34098:5;34092:4;34088:16;34067:37;;33994:117;;;;:::o;34117:169::-;34161:6;34194:51;34242:1;34238:6;34230:5;34227:1;34223:13;34194:51;:::i;:::-;34190:56;34275:4;34269;34265:15;34255:25;;34168:118;34117:169;;;;:::o;34291:295::-;34367:4;34513:29;34538:3;34532:4;34513:29;:::i;:::-;34505:37;;34575:3;34572:1;34568:11;34562:4;34559:21;34551:29;;34291:295;;;;:::o;34591:1403::-;34715:44;34755:3;34750;34715:44;:::i;:::-;34824:18;34816:6;34813:30;34810:56;;;34846:18;;:::i;:::-;34810:56;34890:38;34922:4;34916:11;34890:38;:::i;:::-;34975:67;35035:6;35027;35021:4;34975:67;:::i;:::-;35069:1;35098:2;35090:6;35087:14;35115:1;35110:632;;;;35786:1;35803:6;35800:84;;;35859:9;35854:3;35850:19;35837:33;35828:42;;35800:84;35910:67;35970:6;35963:5;35910:67;:::i;:::-;35904:4;35897:81;35759:229;35080:908;;35110:632;35162:4;35158:9;35150:6;35146:22;35196:37;35228:4;35196:37;:::i;:::-;35255:1;35269:215;35283:7;35280:1;35277:14;35269:215;;;35369:9;35364:3;35360:19;35347:33;35339:6;35332:49;35420:1;35412:6;35408:14;35398:24;;35467:2;35456:9;35452:18;35439:31;;35306:4;35303:1;35299:12;35294:17;;35269:215;;;35512:6;35503:7;35500:19;35497:186;;;35577:9;35572:3;35568:19;35555:33;35620:48;35662:4;35654:6;35650:17;35639:9;35620:48;:::i;:::-;35612:6;35605:64;35520:163;35497:186;35729:1;35725;35717:6;35713:14;35709:22;35703:4;35696:36;35117:625;;;35080:908;;34690:1304;;;34591:1403;;;:::o;36000:218::-;36115:97;36204:7;36195;36189:4;36115:97;:::i;:::-;36000:218;;;:::o;36224:752::-;36329:4;36335:6;36391:11;36378:25;36491:1;36485:4;36481:12;36470:8;36454:14;36450:29;36446:48;36426:18;36422:73;36412:168;;36499:79;;:::i;:::-;36412:168;36611:18;36601:8;36597:33;36589:41;;36663:4;36650:18;36640:28;;36691:18;36683:6;36680:30;36677:117;;;36713:79;;:::i;:::-;36677:117;36821:2;36815:4;36811:13;36803:21;;36878:4;36870:6;36866:17;36850:14;36846:38;36840:4;36836:49;36833:136;;;36888:79;;:::i;:::-;36833:136;36342:634;36224:752;;;;;:::o;36982:114::-;37063:4;37086:3;37078:11;;36982:114;;;:::o;37102:118::-;37173:6;37207:5;37201:12;37191:22;;37102:118;;;:::o;37226:410::-;37266:7;37289:20;37307:1;37289:20;:::i;:::-;37284:25;;37323:20;37341:1;37323:20;:::i;:::-;37318:25;;37378:1;37375;37371:9;37400:30;37418:11;37400:30;:::i;:::-;37389:41;;37579:1;37570:7;37566:15;37563:1;37560:22;37540:1;37533:9;37513:83;37490:139;;37609:18;;:::i;:::-;37490:139;37274:362;37226:410;;;;:::o;37642:210::-;37730:4;37753:6;37745:14;;37843:1;37838;37835;37831:9;37823:6;37819:22;37815:30;37807:38;;37642:210;;;:::o;37857:163::-;37928:4;37951:3;37943:11;;37974:3;37971:1;37964:14;38008:4;38005:1;37995:18;37987:26;;37857:163;;;:::o;38026:244::-;38098:121;38152:66;38142:6;38138:2;38134:15;38131:1;38127:23;38098:121;:::i;:::-;38257:4;38251:11;38245:4;38241:22;38235:4;38228:36;38076:194;38026:244;;:::o;38276:430::-;38513:38;38545:5;38513:38;:::i;:::-;38572:73;38641:3;38631:7;38625:14;38572:73;:::i;:::-;38668:4;38661:5;38654:19;38698:1;38689:7;38682:18;38347:359;;38276:430;;:::o;38711:1239::-;38819:2;38811:6;38808:14;38837:1;38831:521;;;;39401:2;39393:6;39390:14;39422:1;39417:383;;;;39853:66;39912:6;39906:4;39853:66;:::i;:::-;39846:5;39839:81;39383:551;;39417:383;39464:38;39496:5;39464:38;:::i;:::-;39605:100;39678:25;39696:6;39678:25;:::i;:::-;39662:14;39658:46;39654:1;39638:14;39634:22;39605:100;:::i;:::-;39722:64;39779:6;39772:5;39722:64;:::i;:::-;39424:376;39383:551;;38801:1143;;38831:521;38875:38;38907:5;38875:38;:::i;:::-;38965:25;38983:6;38965:25;:::i;:::-;38949:14;38945:46;39102:4;39094:6;39090:17;39123:6;39120:69;;;39132:55;39180:6;39176:1;39163:11;39159:19;39132:55;:::i;:::-;39120:69;39203:89;39265:25;39283:6;39265:25;:::i;:::-;39249:14;39245:46;39232:11;39203:89;:::i;:::-;39339:1;39330:6;39327:1;39323:14;39320:21;39313:5;39306:36;38839:513;;;38801:1143;;38711:1239;;;;:::o;39955:916::-;40060:20;40052:6;40049:32;40046:58;;;40084:18;;:::i;:::-;40046:58;40132:2;40124:6;40121:14;40149:1;40144:144;;;;40337:2;40329:6;40326:14;40358:1;40353:291;;;;40773:66;40832:6;40826:4;40773:66;:::i;:::-;40766:5;40759:81;40319:535;;40353:291;40502:4;40495;40491:9;40487:20;40479:28;;40571:4;40531:38;40563:5;40531:38;:::i;:::-;40524:52;40627:1;40618:6;40615:1;40611:14;40607:22;40600:5;40593:37;40319:535;;40114:750;;40144:144;40275:1;40266:6;40263:1;40259:14;40255:22;40248:5;40241:37;40114:750;;39955:916;;;;:::o;40877:402::-;40960:5;40954:12;40989:31;41015:4;40989:31;:::i;:::-;41044:6;41036;41033:18;41030:116;;;41066:70;41129:6;41121;41115:4;41108:5;41066:70;:::i;:::-;41030:116;41170:6;41162;41159:18;41156:116;;;41192:70;41255:6;41247;41241:4;41234:5;41192:70;:::i;:::-;41156:116;40931:348;;40877:402;;:::o;41346:120::-;41363:3;41356:5;41353:14;41346:120;;;41417:39;41454:1;41447:5;41417:39;:::i;:::-;41390:1;41383:5;41379:13;41370:22;;41346:120;;;41285:187;;:::o;41673:108::-;41736:38;41772:1;41766:4;41736:38;:::i;:::-;41673:108;:::o;41787:174::-;41878:1;41870:6;41867:13;41857:47;;41884:18;;:::i;:::-;41857:47;41913:42;41950:4;41913:42;:::i;:::-;41787:174;;:::o;41967:201::-;42035:127;42052:3;42045:5;42042:14;42035:127;;;42106:46;42150:1;42143:5;42106:46;:::i;:::-;42079:1;42072:5;42068:13;42059:22;;42035:127;;;41967:201;;:::o;42174:716::-;42301:3;42289:10;42286:19;42283:600;;;42392:72;42460:3;42392:72;:::i;:::-;42497:79;42565:10;42497:79;:::i;:::-;42611:60;42665:5;42611:60;:::i;:::-;42723:12;42707:14;42703:33;42786:12;42770:14;42766:33;42813:60;42863:9;42850:11;42813:60;:::i;:::-;42306:577;;;;;42283:600;42174:716;;;:::o;42896:409::-;42996:20;42988:6;42985:32;42982:78;;;43032:18;;:::i;:::-;42982:78;43084:58;43136:5;43084:58;:::i;:::-;43194:6;43187:5;43180:21;43211:87;43291:6;43283;43276:5;43211:87;:::i;:::-;42972:333;42896:409;;:::o;43310:124::-;43396:6;43424:3;43414:13;;43310:124;;;;:::o;43440:903::-;43610:73;43679:3;43672:5;43610:73;:::i;:::-;43693:65;43751:6;43745:4;43693:65;:::i;:::-;43782:70;43846:5;43782:70;:::i;:::-;43881:59;43935:4;43881:59;:::i;:::-;43965:1;43950:387;43975:6;43972:1;43969:13;43950:387;;;44060:57;44110:6;44103:5;44060:57;:::i;:::-;44131:109;44228:11;44215;44202;44131:109;:::i;:::-;44276:2;44268:6;44264:15;44254:25;;44325:1;44312:11;44308:19;44293:34;;44000:337;;43996:1;43993;43989:9;43984:14;;43950:387;;;43954:14;43585:758;;;43440:903;;;:::o;44349:311::-;44513:141;44646:7;44637;44631:4;44513:141;:::i;:::-;44349:311;;;:::o;44666:127::-;44760:4;44783:3;44775:11;;44666:127;;;:::o;44799:391::-;44890:4;44944:11;44931:25;45044:1;45038:4;45034:12;45023:8;45007:14;45003:29;44999:48;44979:18;44975:73;44965:168;;45052:79;;:::i;:::-;44965:168;45164:18;45154:8;45150:33;45142:41;;44895:295;44799:391;;;;:::o;45196:131::-;45280:6;45314:5;45308:12;45298:22;;45196:131;;;:::o;45333:187::-;45434:4;45457:6;45449:14;;45481:32;45506:6;45503:1;45481:32;:::i;:::-;45473:40;;45333:187;;;:::o;45525:176::-;45609:4;45632:3;45624:11;;45655:3;45652:1;45645:14;45689:4;45686:1;45676:18;45668:26;;45525:176;;;:::o;45707:111::-;45771:6;45805:5;45799:12;45789:22;;45707:111;;;:::o;45824:203::-;45905:4;45928:6;45920:14;;46018:1;46013;46010;46006:9;45998:6;45994:22;45990:30;45982:38;;45824:203;;;:::o;46032:156::-;46096:4;46119:3;46111:11;;46142:3;46139:1;46132:14;46176:4;46173:1;46163:18;46155:26;;46032:156;;;:::o;46194:187::-;46255:120;46272:3;46265:5;46262:14;46255:120;;;46326:39;46363:1;46356:5;46326:39;:::i;:::-;46299:1;46292:5;46288:13;46279:22;;46255:120;;;46194:187;;:::o;46387:681::-;46507:3;46495:10;46492:19;46489:572;;;46598:65;46659:3;46598:65;:::i;:::-;46696:72;46757:10;46696:72;:::i;:::-;46803:53;46850:5;46803:53;:::i;:::-;46908:12;46892:14;46888:33;46971:12;46955:14;46951:33;46998:53;47041:9;47028:11;46998:53;:::i;:::-;46512:549;;;;;46489:572;46387:681;;;:::o;47074:388::-;47167:20;47159:6;47156:32;47153:78;;;47203:18;;:::i;:::-;47153:78;47255:51;47300:5;47255:51;:::i;:::-;47358:6;47351:5;47344:21;47375:80;47448:6;47440;47433:5;47375:80;:::i;:::-;47143:319;47074:388;;:::o;47467:138::-;47545:53;47596:1;47590:4;47545:53;:::i;:::-;47467:138;:::o;47611:204::-;47717:1;47709:6;47706:13;47696:47;;47723:18;;:::i;:::-;47696:47;47752:57;47804:4;47752:57;:::i;:::-;47611:204;;:::o;47821:271::-;47898:46;47942:1;47938;47932:4;47928:12;47898:46;:::i;:::-;47954:53;48005:1;48001;47995:4;47991:12;47954:53;:::i;:::-;48017:68;48083:1;48079;48073:4;48069:12;48017:68;:::i;:::-;47821:271;:::o;48098:201::-;48202:1;48194:6;48191:13;48181:47;;48208:18;;:::i;:::-;48181:47;48237:56;48288:4;48237:56;:::i;:::-;48098:201;;:::o;48305:227::-;48386:140;48403:3;48396:5;48393:14;48386:140;;;48457:59;48514:1;48507:5;48457:59;:::i;:::-;48430:1;48423:5;48419:13;48410:22;;48386:140;;;48305:227;;:::o;48538:781::-;48678:3;48666:10;48663:19;48660:652;;;48769:85;48850:3;48769:85;:::i;:::-;48887:92;48968:10;48887:92;:::i;:::-;49014:73;49081:5;49014:73;:::i;:::-;49139:12;49123:14;49119:33;49202:12;49186:14;49182:33;49229:73;49292:9;49279:11;49229:73;:::i;:::-;48683:629;;;;;48660:652;48538:781;;;:::o;49325:448::-;49438:20;49430:6;49427:32;49424:78;;;49474:18;;:::i;:::-;49424:78;49526:71;49591:5;49526:71;:::i;:::-;49649:6;49642:5;49635:21;49666:100;49759:6;49751;49744:5;49666:100;:::i;:::-;49414:359;49325:448;;:::o;49778:137::-;49877:6;49905:3;49895:13;;49778:137;;;;:::o;49921:740::-;50014:4;50020:6;50076:11;50063:25;50176:1;50170:4;50166:12;50155:8;50139:14;50135:29;50131:48;50111:18;50107:73;50097:168;;50184:79;;:::i;:::-;50097:168;50296:18;50286:8;50282:33;50274:41;;50348:4;50335:18;50325:28;;50376:18;50368:6;50365:30;50362:117;;;50398:79;;:::i;:::-;50362:117;50506:2;50500:4;50496:13;50488:21;;50563:4;50555:6;50551:17;50535:14;50531:38;50525:4;50521:49;50518:136;;;50573:79;;:::i;:::-;50518:136;50027:634;49921:740;;;;;:::o;50667:112::-;50741:6;50769:3;50759:13;;50667:112;;;;:::o;50785:186::-;50830:11;50879:3;50866:17;50892:33;50919:5;50892:33;:::i;:::-;50959:5;50935:29;;50842:129;50785:186;;;:::o;50977:102::-;51046:4;51069:3;51061:11;;50977:102;;;:::o;52218:75::-;52261:3;52282:5;52275:12;;52218:75;;;:::o;52299:1019::-;52447:59;52502:3;52497;52447:59;:::i;:::-;52571:18;52563:6;52560:30;52557:56;;;52593:18;;:::i;:::-;52557:56;52622:57;52672:6;52667:3;52622:57;:::i;:::-;52703:56;52755:3;52703:56;:::i;:::-;52783:51;52830:3;52783:51;:::i;:::-;52873:1;52865:6;52861:14;52900:1;52885:426;52910:9;52907:1;52904:16;52885:426;;;52974:1;53027:35;53055:6;53027:35;:::i;:::-;53097:36;53121:11;53097:36;:::i;:::-;53183:9;53150:42;;53232:2;53224:6;53220:15;53210:25;;52989:261;;53288:12;53284:1;53275:7;53271:15;53264:37;52940:371;52935:1;52932;52928:9;52923:14;;52885:426;;;52889:14;52422:896;;;;52299:1019;;;:::o;53324:273::-;53469:122;53583:7;53574;53568:4;53469:122;:::i;:::-;53324:273;;;:::o;53603:1238::-;53775:1;53769:4;53765:12;53821:1;53814:5;53810:13;53871:12;53914:42;53942:13;53914:42;:::i;:::-;53897:59;;53970:78;54034:13;54022:10;53970:78;:::i;:::-;53732:327;;;54112:1;54106:4;54102:12;54158:2;54151:5;54147:14;54224:63;54274:12;54267:5;54224:63;:::i;:::-;54301:112;54399:13;54384;54372:10;54301:112;:::i;:::-;54069:355;;;;54477:1;54471:4;54467:12;54523:2;54516:5;54512:14;54589:78;54654:12;54647:5;54589:78;:::i;:::-;54681:142;54809:13;54794;54782:10;54681:142;:::i;:::-;54434:400;;;;53603:1238;;:::o;54847:248::-;54979:110;55081:7;55075:4;54979:110;:::i;:::-;54847:248;;:::o;55101:994::-;55297:86;55379:3;55372:5;55297:86;:::i;:::-;55393:78;55464:6;55458:4;55393:78;:::i;:::-;55495:83;55572:5;55495:83;:::i;:::-;55607:72;55674:4;55607:72;:::i;:::-;55704:1;55689:400;55714:6;55711:1;55708:13;55689:400;;;55786:70;55849:6;55842:5;55786:70;:::i;:::-;55870:122;55980:11;55967;55870:122;:::i;:::-;56028:2;56020:6;56016:15;56006:25;;56077:1;56064:11;56060:19;56045:34;;55739:350;55735:1;55732;55728:9;55723:14;;55689:400;;;55693:14;55272:823;;;55101:994;;;:::o;56101:363::-;56291:167;56450:7;56441;56435:4;56291:167;:::i;:::-;56101:363;;;:::o;56470:2789::-;56638:1;56632:4;56628:12;56684:1;56677:5;56673:13;56734:12;56777:42;56805:13;56777:42;:::i;:::-;56760:59;;56833:78;56897:13;56885:10;56833:78;:::i;:::-;56595:327;;;56975:1;56969:4;56965:12;57021:2;57014:5;57010:14;57087:63;57137:12;57130:5;57087:63;:::i;:::-;57164:112;57262:13;57247;57235:10;57164:112;:::i;:::-;56932:355;;;;57340:1;57334:4;57330:12;57386:2;57379:5;57375:14;57452:63;57502:12;57495:5;57452:63;:::i;:::-;57529:112;57627:13;57612;57600:10;57529:112;:::i;:::-;57297:355;;;;57705:1;57699:4;57695:12;57751:2;57744:5;57740:14;57817:90;57894:12;57887:5;57817:90;:::i;:::-;57921:161;58068:13;58053;58041:10;57921:161;:::i;:::-;57662:431;;;;58146:1;58140:4;58136:12;58192:3;58185:5;58181:15;58259:103;58349:12;58342:5;58259:103;:::i;:::-;58376:187;58549:13;58534;58522:10;58376:187;:::i;:::-;58103:471;;;;58627:1;58621:4;58617:12;58673:3;58666:5;58662:15;58725:12;58768:42;58796:13;58768:42;:::i;:::-;58751:59;;58824:78;58888:13;58876:10;58824:78;:::i;:::-;58584:329;;;58966:1;58960:4;58956:12;59012:3;59005:5;59001:15;59064:12;59107:42;59135:13;59107:42;:::i;:::-;59090:59;;59163:78;59227:13;59215:10;59163:78;:::i;:::-;58923:329;;;56470:2789;;:::o;59265:240::-;59393:106;59491:7;59485:4;59393:106;:::i;:::-;59265:240;;:::o;59511:180::-;59559:77;59556:1;59549:88;59656:4;59653:1;59646:15;59680:4;59677:1;59670:15;59697:191;59737:3;59756:20;59774:1;59756:20;:::i;:::-;59751:25;;59790:20;59808:1;59790:20;:::i;:::-;59785:25;;59833:1;59830;59826:9;59819:16;;59854:3;59851:1;59848:10;59845:36;;;59861:18;;:::i;:::-;59845:36;59697:191;;;;:::o;59894:180::-;59942:77;59939:1;59932:88;60039:4;60036:1;60029:15;60063:4;60060:1;60053:15;60080:185;60120:1;60137:20;60155:1;60137:20;:::i;:::-;60132:25;;60171:20;60189:1;60171:20;:::i;:::-;60166:25;;60210:1;60200:35;;60215:18;;:::i;:::-;60200:35;60257:1;60254;60250:9;60245:14;;60080:185;;;;:::o;60271:194::-;60311:4;60331:20;60349:1;60331:20;:::i;:::-;60326:25;;60365:20;60383:1;60365:20;:::i;:::-;60360:25;;60409:1;60406;60402:9;60394:17;;60433:1;60427:4;60424:11;60421:37;;;60438:18;;:::i;:::-;60421:37;60271:194;;;;:::o;60471:232::-;60611:34;60607:1;60599:6;60595:14;60588:58;60680:15;60675:2;60667:6;60663:15;60656:40;60471:232;:::o;60709:366::-;60851:3;60872:67;60936:2;60931:3;60872:67;:::i;:::-;60865:74;;60948:93;61037:3;60948:93;:::i;:::-;61066:2;61061:3;61057:12;61050:19;;60709:366;;;:::o;61081:419::-;61247:4;61285:2;61274:9;61270:18;61262:26;;61334:9;61328:4;61324:20;61320:1;61309:9;61305:17;61298:47;61362:131;61488:4;61362:131;:::i;:::-;61354:139;;61081:419;;;:::o;61506:222::-;61646:34;61642:1;61634:6;61630:14;61623:58;61715:5;61710:2;61702:6;61698:15;61691:30;61506:222;:::o;61734:366::-;61876:3;61897:67;61961:2;61956:3;61897:67;:::i;:::-;61890:74;;61973:93;62062:3;61973:93;:::i;:::-;62091:2;62086:3;62082:12;62075:19;;61734:366;;;:::o;62106:419::-;62272:4;62310:2;62299:9;62295:18;62287:26;;62359:9;62353:4;62349:20;62345:1;62334:9;62330:17;62323:47;62387:131;62513:4;62387:131;:::i;:::-;62379:139;;62106:419;;;:::o;62531:143::-;62588:5;62619:6;62613:13;62604:22;;62635:33;62662:5;62635:33;:::i;:::-;62531:143;;;;:::o;62680:351::-;62750:6;62799:2;62787:9;62778:7;62774:23;62770:32;62767:119;;;62805:79;;:::i;:::-;62767:119;62925:1;62950:64;63006:7;62997:6;62986:9;62982:22;62950:64;:::i;:::-;62940:74;;62896:128;62680:351;;;;:::o;63037:223::-;63177:34;63173:1;63165:6;63161:14;63154:58;63246:6;63241:2;63233:6;63229:15;63222:31;63037:223;:::o;63266:366::-;63408:3;63429:67;63493:2;63488:3;63429:67;:::i;:::-;63422:74;;63505:93;63594:3;63505:93;:::i;:::-;63623:2;63618:3;63614:12;63607:19;;63266:366;;;:::o;63638:419::-;63804:4;63842:2;63831:9;63827:18;63819:26;;63891:9;63885:4;63881:20;63877:1;63866:9;63862:17;63855:47;63919:131;64045:4;63919:131;:::i;:::-;63911:139;;63638:419;;;:::o;64063:181::-;64203:33;64199:1;64191:6;64187:14;64180:57;64063:181;:::o;64250:366::-;64392:3;64413:67;64477:2;64472:3;64413:67;:::i;:::-;64406:74;;64489:93;64578:3;64489:93;:::i;:::-;64607:2;64602:3;64598:12;64591:19;;64250:366;;;:::o;64622:419::-;64788:4;64826:2;64815:9;64811:18;64803:26;;64875:9;64869:4;64865:20;64861:1;64850:9;64846:17;64839:47;64903:131;65029:4;64903:131;:::i;:::-;64895:139;;64622:419;;;:::o;65047:225::-;65187:34;65183:1;65175:6;65171:14;65164:58;65256:8;65251:2;65243:6;65239:15;65232:33;65047:225;:::o;65278:366::-;65420:3;65441:67;65505:2;65500:3;65441:67;:::i;:::-;65434:74;;65517:93;65606:3;65517:93;:::i;:::-;65635:2;65630:3;65626:12;65619:19;;65278:366;;;:::o;65650:419::-;65816:4;65854:2;65843:9;65839:18;65831:26;;65903:9;65897:4;65893:20;65889:1;65878:9;65874:17;65867:47;65931:131;66057:4;65931:131;:::i;:::-;65923:139;;65650:419;;;:::o;66075:182::-;66215:34;66211:1;66203:6;66199:14;66192:58;66075:182;:::o;66263:366::-;66405:3;66426:67;66490:2;66485:3;66426:67;:::i;:::-;66419:74;;66502:93;66591:3;66502:93;:::i;:::-;66620:2;66615:3;66611:12;66604:19;;66263:366;;;:::o;66635:419::-;66801:4;66839:2;66828:9;66824:18;66816:26;;66888:9;66882:4;66878:20;66874:1;66863:9;66859:17;66852:47;66916:131;67042:4;66916:131;:::i;:::-;66908:139;;66635:419;;;:::o
Swarm Source
ipfs://352ff1addf5ffd5cc143ce6e1fed628d2cd29f54db31615a0ec9b51b1b99fe53
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.