Contract Overview
Balance:
0 FTM
FTM Value:
$0.00
My Name Tag:
Not Available, login to update
Txn Hash | Method |
Block
|
From
|
To
|
Value | [Txn Fee] | ||
---|---|---|---|---|---|---|---|---|
0xe5f7b65208b957b1d50aeddfa32aa7d62eebc66e9f9e4cb8422d99262f8a18ee | 0x60a06040 | 37902232 | 13 days 19 hrs ago | 0xb1690cc68de3557e8c7f5083617076d705be19de | IN | Create: ZeusBasket | 0 FTM | 0.704390985 |
[ Download CSV Export ]
Latest 1 internal transaction
Parent Txn Hash | Block | From | To | Value | |||
---|---|---|---|---|---|---|---|
0xe5f7b65208b957b1d50aeddfa32aa7d62eebc66e9f9e4cb8422d99262f8a18ee | 37902232 | 13 days 19 hrs ago | 0xb1690cc68de3557e8c7f5083617076d705be19de | Contract Creation | 0 FTM |
[ Download CSV Export ]
Contract Name:
ZeusBasket
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity)
/** *Submitted for verification at FtmScan.com on 2022-05-09 */ /** *Submitted for verification at FtmScan.com on 2022-04-19 */ /** *Submitted for verification at FtmScan.com on 2021-11-27 */ // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts v4.4.0 (utils/Address.sol) pragma solidity ^0.8.0; /** * @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 * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 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 assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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 `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, 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 `sender` to `recipient` 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 sender, address recipient, uint256 amount ) external returns (bool); /** * @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); } // File: @openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol // OpenZeppelin Contracts v4.4.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)); } } /** * @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/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.0 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File: @openzeppelin/contracts/security/ReentrancyGuard.sol // OpenZeppelin Contracts v4.4.0 (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.0 (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/security/Pausable.sol // OpenZeppelin Contracts v4.4.0 (security/Pausable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { require(!paused(), "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { require(paused(), "Pausable: not paused"); _; } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } // File: @openzeppelin/contracts/token/ERC20/ERC20.sol // OpenZeppelin Contracts v4.4.0 (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } // File: @openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol // OpenZeppelin Contracts v4.4.0 (token/ERC20/extensions/ERC20Burnable.sol) pragma solidity ^0.8.0; /** * @dev Extension of {ERC20} that allows token holders to destroy both their own * tokens and those that they have an allowance for, in a way that can be * recognized off-chain (via event analysis). */ abstract contract ERC20Burnable is Context, ERC20 { /** * @dev Destroys `amount` tokens from the caller. * * See {ERC20-_burn}. */ function burn(uint256 amount) public virtual { _burn(_msgSender(), amount); } /** * @dev Destroys `amount` tokens from `account`, deducting from the caller's * allowance. * * See {ERC20-_burn} and {ERC20-allowance}. * * Requirements: * * - the caller must have allowance for ``accounts``'s tokens of at least * `amount`. */ function burnFrom(address account, uint256 amount) public virtual { uint256 currentAllowance = allowance(account, _msgSender()); require(currentAllowance >= amount, "ERC20: burn amount exceeds allowance"); unchecked { _approve(account, _msgSender(), currentAllowance - amount); } _burn(account, amount); } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.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 Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { 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: zeus.sol //SPDX-License-Identifier: MIT pragma solidity 0.8.0; // K. /////////////////// IMPORTS ////////////////////// /////////////////// CONTRACT //////////////////// /* Token is paused in the beginning to prevent mishandling. * Then token will be unpaused manually before farming launch. * Token CANNOT be paused again once unpaused. */ contract ZeusToken is ERC20, ERC20Burnable, Ownable, Pausable { ////////////////// DECLARATIONS ///////////////// /* masterchef - masterchef address that will handle the minting. Owner cannot mint. * tokenSoftCap - Soft cap is implemented instead of a hard cap to have a flexible emission and additional supply if needed. * previousTokenCap - Records the previous token cap before the implemented change. * totalMinted - Counts the total mint and compares it with the softcap to limit minting over the set soft cap. * intialSupply - Initial mint for liquidity adding and giveaways. */ address public masterchef; uint256 public tokenSoftCap; uint256 public previousTokenCap = 0; uint256 public totalMinted = 0; uint256 public initialSupply = 0; bool public transferEnabled = false; /////////////////// EVENTS ////////////////////// event UpdatedTokenSoftCap(uint256 amount); event InitialSupplyMint(address indexed user, uint256 amount); event MasterchefInitialized(address indexed masterchef); event TransferEnabled(bool status); /////////////////// CONSTRUCTOR ///////////////// constructor (uint256 _tokenSoftCap, uint256 _initialSupply) ERC20("Zeus", "ZEUS") { require(_tokenSoftCap > 0, "ERROR: Token soft cap cannot be zero."); tokenSoftCap = _tokenSoftCap; initialSupply = _initialSupply; _mint(msg.sender, initialSupply); totalMinted = totalMinted + initialSupply; _pause(); emit InitialSupplyMint(msg.sender, initialSupply); } /////////////////// MODIFIERS /////////////////// // Throws if called by any account other than the Masterchef. modifier onlyMasterchef() { require(msg.sender == masterchef, "Caller is not the Masterchef"); _; } ////////////// PRIVILEGED FUNCTIONS ////////////// //This function initializes the masterchef address into the token address. This can only be called ONCE. function initializeMC(address _masterchef) external onlyOwner { require( masterchef == address(0) && _masterchef != address(0) && _masterchef != address(this), "ERROR: Masterchef cannot be the zero address." ); masterchef = _masterchef; emit MasterchefInitialized(masterchef); } // This function updates the token soft cap to a new one. A timelocked operator is highly recommended. function setTokenSoftCap(uint256 _newSoftCap) external onlyOwner { previousTokenCap = tokenSoftCap; tokenSoftCap = _newSoftCap; emit UpdatedTokenSoftCap(_newSoftCap); } // This function mints ZEUS tokens. Can only be called by the Masterchef. function mint(address _to, uint256 _amount) public onlyMasterchef whenNotPaused { require(tokenSoftCap >= totalMinted + _amount, "Token soft cap has been reached."); totalMinted = totalMinted + _amount; _mint(_to, _amount); } ////////// STATE MODIFYING FUNCTIONS ///////////// //Unpauses the token contract to allow token transfers. Just for safeguards nothing special. function transferEnable() external onlyOwner { require(transferEnabled == false, "Token transfers has already started."); transferEnabled = true; _unpause(); emit TransferEnabled(transferEnabled); } // This override function transfers tokens to a receipient whenever the contract is not paused. function transfer(address recipient, uint256 amount) public virtual override whenNotPaused returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } // This override function transfers tokens to a receipient whenever the contract is not paused. function transferFrom(address sender, address recipient, uint256 amount) public virtual override whenNotPaused returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = allowance(sender, msg.sender); require(currentAllowance >= amount, "ERC20: Transfer amount exceeds allowance."); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } /// END OF CONTRACT /// } // File: masterchef.sol pragma solidity 0.8.0; // MasterChef is the master of ZEUSs. He can make ZEUSs and he is a fair guy. // // Note that it's ownable and the owner wields tremendous power. The ownership // will be transferred to a governance smart contract once ZEUS is sufficiently // distributed and the community can show to govern itself. contract ZeusBasket is Ownable, ReentrancyGuard { using SafeERC20 for IERC20; // Info of each user. struct UserInfo { uint256 amount; // How many LP tokens the user has provided. uint256 rewardDebt; // Reward debt. See explanation below. // // We do some fancy math here. Basically, any point in time, the amount of ZEUS // entitled to a user but is pending to be distributed is: // // pending reward = (user.amount * pool.accZeusPerShare) - user.rewardDebt // // Whenever a user deposits or withdraws LP tokens to a pool. Here's what happens: // 1. The pool's `accZeusPerShare` (and `lastRewardTime`) gets updated. // 2. User receives the pending reward sent to his/her address. // 3. User's `amount` gets updated. // 4. User's `rewardDebt` gets updated. } // Info of each pool. struct PoolInfo { IERC20 lpToken; // Address of LP token contract. uint256 allocPoint; // How many allocation points assigned to this pool. ZEUSs to distribute per second. uint256 lastRewardTime; // Last timestamp that ZEUSs distribution occurs. uint256 accZeusPerShare; // Accumulated ZEUSs per share, times 1e18. See below. uint16 depositFeeBP; // Deposit fee in basis points uint256 lpSupply; } // The ZEUS TOKEN! ZeusToken public immutable zeus; // Dev address. address public devaddr; // ZEUS tokens created per timestamp. uint256 public zeusPerSecond; // Deposit Fee address address public feeAddress; // Info of each pool. PoolInfo[] public poolInfo; // Info of each user that stakes LP tokens. mapping(uint256 => mapping(address => UserInfo)) public userInfo; // Total allocation points. Must be the sum of all allocation points in all pools. uint256 public totalAllocPoint = 0; // The timestamp when ZEUS distribution starts. uint256 public startTime; // Maximum ZEUS Per Second uint256 public MAX_EMISSION_RATE = 10 ether; event Deposit(address indexed user, uint256 indexed pid, uint256 amount); event Withdraw(address indexed user, uint256 indexed pid, uint256 amount); event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount); event SetFeeAddress(address indexed user, address indexed newAddress); event SetDevAddress(address indexed user, address indexed newAddress); event UpdateEmissionRate(address indexed user, uint256 zeusPerSecond); event addPool(uint256 indexed pid, address lpToken, uint256 allocPoint, uint256 depositFeeBP); event setPool(uint256 indexed pid, address lpToken, uint256 allocPoint, uint256 depositFeeBP); event UpdateStartTime(uint256 newStartBlock); event zeusMintError(bytes reason); constructor( ZeusToken _tokenAddress, address _devaddr, address _feeAddress, uint256 _zeusPerSecond, uint256 _startTime ) { require(_startTime >= block.timestamp, "Starting time cannot be set in the past."); require(_devaddr != address(0), "Dev address cannot be the zero address."); require(_feeAddress != address(0), "Fee address cannot be the zero address."); require(_zeusPerSecond <= MAX_EMISSION_RATE, "Emission rate cannot be more than the maximum."); zeus = _tokenAddress; devaddr = _devaddr; feeAddress = _feeAddress; zeusPerSecond = _zeusPerSecond; startTime = _startTime; } function poolLength() external view returns (uint256) { return poolInfo.length; } mapping(IERC20 => bool) public poolExistence; modifier nonDuplicated(IERC20 _lpToken) { require(poolExistence[_lpToken] == false, "nonDuplicated: duplicated"); _; } // Add a new lp to the pool. Can only be called by the owner. function add(uint256 _allocPoint, IERC20 _lpToken, uint16 _depositFeeBP, bool _withUpdate) external onlyOwner nonDuplicated(_lpToken) { // valid ERC20 token _lpToken.balanceOf(address(this)); require(_depositFeeBP <= 420, "add: invalid deposit fee basis points"); if (_withUpdate) { massUpdatePools(); } uint256 lastRewardTime = block.timestamp > startTime ? block.timestamp : startTime; totalAllocPoint = totalAllocPoint + _allocPoint; poolExistence[_lpToken] = true; poolInfo.push( PoolInfo({ lpToken : _lpToken, allocPoint : _allocPoint, lastRewardTime : lastRewardTime, accZeusPerShare : 0, depositFeeBP : _depositFeeBP, lpSupply: 0 }) ); emit addPool(poolInfo.length - 1, address(_lpToken), _allocPoint, _depositFeeBP); } // Update the given pool's ZEUS allocation point and deposit fee. Can only be called by the owner. function set(uint256 _pid, uint256 _allocPoint, uint16 _depositFeeBP, bool _withUpdate) external onlyOwner { require(_depositFeeBP <= 420, "set: invalid deposit fee basis points"); if (_withUpdate) { massUpdatePools(); } totalAllocPoint = totalAllocPoint - poolInfo[_pid].allocPoint + _allocPoint; poolInfo[_pid].allocPoint = _allocPoint; poolInfo[_pid].depositFeeBP = _depositFeeBP; emit setPool(_pid, address(poolInfo[_pid].lpToken), _allocPoint, _depositFeeBP); } // Return reward multiplier over the given _from to _to timestamp. function getMultiplier(uint256 _from, uint256 _to) public pure returns (uint256) { return _to - _from; } // View function to see pending ZEUSs on frontend. function pendingZeus(uint256 _pid, address _user) external view returns (uint256) { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][_user]; uint256 accZeusPerShare = pool.accZeusPerShare; if (block.timestamp > pool.lastRewardTime && pool.lpSupply != 0 && totalAllocPoint > 0) { uint256 multiplier = getMultiplier(pool.lastRewardTime, block.timestamp); uint256 zeusReward = multiplier * zeusPerSecond * pool.allocPoint / totalAllocPoint; accZeusPerShare = accZeusPerShare + zeusReward * 1e18 / pool.lpSupply; } return user.amount * accZeusPerShare / 1e18 - user.rewardDebt; } // Update reward variables for all pools. Be careful of gas spending! function massUpdatePools() public { uint256 length = poolInfo.length; for (uint256 pid = 0; pid < length; ++pid) { updatePool(pid); } } // Update reward variables of the given pool to be up-to-date. function updatePool(uint256 _pid) public { PoolInfo storage pool = poolInfo[_pid]; if (block.timestamp <= pool.lastRewardTime) { return; } if (pool.lpSupply == 0 || pool.allocPoint == 0) { pool.lastRewardTime = block.timestamp; return; } uint256 multiplier = getMultiplier(pool.lastRewardTime, block.timestamp); uint256 zeusReward = multiplier * zeusPerSecond * pool.allocPoint / totalAllocPoint; try zeus.mint(devaddr, zeusReward / 10) { } catch (bytes memory reason) { zeusReward = 0; emit zeusMintError(reason); } try zeus.mint(address(this), zeusReward) { } catch (bytes memory reason) { zeusReward = 0; emit zeusMintError(reason); } pool.accZeusPerShare = pool.accZeusPerShare + zeusReward * 1e18 / pool.lpSupply; pool.lastRewardTime = block.timestamp; } // Deposit LP tokens to MasterChef for ZEUS allocation. function deposit(uint256 _pid, uint256 _amount) external nonReentrant { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; updatePool(_pid); if (user.amount > 0) { uint256 pending = user.amount * pool.accZeusPerShare / 1e18 - user.rewardDebt; if (pending > 0) { safeZeusTransfer(msg.sender, pending); } } if (_amount > 0) { uint256 balanceBefore = pool.lpToken.balanceOf(address(this)); pool.lpToken.safeTransferFrom(address(msg.sender), address(this), _amount); _amount = pool.lpToken.balanceOf(address(this)) - balanceBefore; if (pool.depositFeeBP > 0) { uint256 depositFee = _amount * pool.depositFeeBP / 10000; pool.lpToken.safeTransfer(feeAddress, depositFee); user.amount = user.amount + _amount - depositFee; pool.lpSupply = pool.lpSupply + _amount - depositFee; } else { user.amount = user.amount + _amount; pool.lpSupply = pool.lpSupply + _amount; } } user.rewardDebt = user.amount * pool.accZeusPerShare / 1e18; emit Deposit(msg.sender, _pid, _amount); } // Withdraw LP tokens from MasterChef. function withdraw(uint256 _pid, uint256 _amount) external nonReentrant { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; require(user.amount >= _amount, "withdraw: not good"); updatePool(_pid); uint256 pending = user.amount * pool.accZeusPerShare / 1e18 - user.rewardDebt; if (pending > 0) { safeZeusTransfer(msg.sender, pending); } if (_amount > 0) { user.amount = user.amount - _amount; pool.lpToken.safeTransfer(address(msg.sender), _amount); pool.lpSupply = pool.lpSupply - _amount; } user.rewardDebt = user.amount * pool.accZeusPerShare / 1e18; emit Withdraw(msg.sender, _pid, _amount); } // Withdraw without caring about rewards. EMERGENCY ONLY. function emergencyWithdraw(uint256 _pid) external nonReentrant { PoolInfo storage pool = poolInfo[_pid]; UserInfo storage user = userInfo[_pid][msg.sender]; uint256 amount = user.amount; user.amount = 0; user.rewardDebt = 0; pool.lpToken.safeTransfer(address(msg.sender), amount); if (pool.lpSupply >= amount) { pool.lpSupply = pool.lpSupply - amount; } else { pool.lpSupply = 0; } emit EmergencyWithdraw(msg.sender, _pid, amount); } // Safe Zeus transfer function, just in case if rounding error causes pool to not have enough ZEUSs. function safeZeusTransfer(address _to, uint256 _amount) internal { uint256 zeusBal = zeus.balanceOf(address(this)); bool transferSuccess = false; if (_amount > zeusBal) { transferSuccess = zeus.transfer(_to, zeusBal); } else { transferSuccess = zeus.transfer(_to, _amount); } require(transferSuccess, "safeZeusTransfer: transfer failed"); } // Update dev address. function setDevAddress(address _devaddr) external { require(msg.sender == devaddr, "setDevAddress: ACCESS DENIED"); require(_devaddr != address(0), "setDevAddress: INCORRECT INPUT"); devaddr = _devaddr; emit SetDevAddress(msg.sender, _devaddr); } function setFeeAddress(address _feeAddress) external { require(msg.sender == feeAddress, "setFeeAddress: ACCESS DENIED"); require(_feeAddress != address(0), "setFeeAddress: INCORRECT INPUT"); feeAddress = _feeAddress; emit SetFeeAddress(msg.sender, _feeAddress); } // Pancake has to add hidden dummy pools inorder to alter the emission, here we make it simple and transparent to all. function updateEmissionRate(uint256 _zeusPerSecond) external onlyOwner { require(_zeusPerSecond <= MAX_EMISSION_RATE, "updateEmissionRate: INCORRECT INPUT"); massUpdatePools(); zeusPerSecond = _zeusPerSecond; emit UpdateEmissionRate(msg.sender, _zeusPerSecond); } // Only update before start of farm function updateStartTime(uint256 _newStartTime) external onlyOwner { require(block.timestamp < startTime, "updateStartTime: FARM ALREADY STARTED"); require(block.timestamp < _newStartTime, "updateStartTime: INCORRECT INPUT"); uint256 length = poolInfo.length; for (uint256 pid = 0; pid < length; ++pid) { PoolInfo storage pool = poolInfo[pid]; pool.lastRewardTime = _newStartTime; } startTime = _newStartTime; emit UpdateStartTime(startTime); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"contract ZeusToken","name":"_tokenAddress","type":"address"},{"internalType":"address","name":"_devaddr","type":"address"},{"internalType":"address","name":"_feeAddress","type":"address"},{"internalType":"uint256","name":"_zeusPerSecond","type":"uint256"},{"internalType":"uint256","name":"_startTime","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"SetDevAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"SetFeeAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"zeusPerSecond","type":"uint256"}],"name":"UpdateEmissionRate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newStartBlock","type":"uint256"}],"name":"UpdateStartTime","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"address","name":"lpToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"allocPoint","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"depositFeeBP","type":"uint256"}],"name":"addPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"address","name":"lpToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"allocPoint","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"depositFeeBP","type":"uint256"}],"name":"setPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"zeusMintError","type":"event"},{"inputs":[],"name":"MAX_EMISSION_RATE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"contract IERC20","name":"_lpToken","type":"address"},{"internalType":"uint16","name":"_depositFeeBP","type":"uint16"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devaddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_from","type":"uint256"},{"internalType":"uint256","name":"_to","type":"uint256"}],"name":"getMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"pendingZeus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"name":"poolExistence","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"contract IERC20","name":"lpToken","type":"address"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"lastRewardTime","type":"uint256"},{"internalType":"uint256","name":"accZeusPerShare","type":"uint256"},{"internalType":"uint16","name":"depositFeeBP","type":"uint16"},{"internalType":"uint256","name":"lpSupply","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"uint16","name":"_depositFeeBP","type":"uint16"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devaddr","type":"address"}],"name":"setDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeAddress","type":"address"}],"name":"setFeeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAllocPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_zeusPerSecond","type":"uint256"}],"name":"updateEmissionRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"updatePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newStartTime","type":"uint256"}],"name":"updateStartTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeus","outputs":[{"internalType":"contract ZeusToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zeusPerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60a06040526000600755678ac7230489e800006009553480156200002257600080fd5b506040516200424c3803806200424c8339818101604052810190620000489190620003c6565b620000686200005c620002b560201b60201c565b620002bd60201b60201c565b6001808190555042811015620000b5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000ac906200060a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141562000128576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200011f906200064e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156200019b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200019290620005e8565b60405180910390fd5b600954821115620001e3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001da906200062c565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505083600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160038190555080600881905550505050505062000721565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000815190506200039281620006d3565b92915050565b600081519050620003a981620006ed565b92915050565b600081519050620003c08162000707565b92915050565b600080600080600060a08688031215620003df57600080fd5b6000620003ef8882890162000398565b9550506020620004028882890162000381565b9450506040620004158882890162000381565b93505060606200042888828901620003af565b92505060806200043b88828901620003af565b9150509295509295909350565b60006200045760278362000670565b91507f46656520616464726573732063616e6e6f7420626520746865207a65726f206160008301527f6464726573732e000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000620004bf60288362000670565b91507f5374617274696e672074696d652063616e6e6f742062652073657420696e207460008301527f686520706173742e0000000000000000000000000000000000000000000000006020830152604082019050919050565b600062000527602e8362000670565b91507f456d697373696f6e20726174652063616e6e6f74206265206d6f72652074686160008301527f6e20746865206d6178696d756d2e0000000000000000000000000000000000006020830152604082019050919050565b60006200058f60278362000670565b91507f44657620616464726573732063616e6e6f7420626520746865207a65726f206160008301527f6464726573732e000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006020820190508181036000830152620006038162000448565b9050919050565b600060208201905081810360008301526200062581620004b0565b9050919050565b60006020820190508181036000830152620006478162000518565b9050919050565b60006020820190508181036000830152620006698162000580565b9050919050565b600082825260208201905092915050565b60006200068e82620006a9565b9050919050565b6000620006a28262000681565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b620006de8162000681565b8114620006ea57600080fd5b50565b620006f88162000695565b81146200070457600080fd5b50565b6200071281620006c9565b81146200071e57600080fd5b50565b60805160601c613ae96200076360003960008181610d8d01528181610eb90152818161181b0152818161231c015281816123d101526124850152613ae96000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c8063715018a6116100f957806393f1a40b11610097578063d49e77cd11610071578063d49e77cd14610488578063d9638422146104a6578063e2bbb158146104c2578063f2fde38b146104de576101a9565b806393f1a40b1461040b578063cbd258b51461043c578063d0d41fe11461046c576101a9565b80638705fcd4116100d35780638705fcd41461038357806388d1366c1461039f5780638da5cb5b146103bd5780638dbb1e3a146103db576101a9565b8063715018a61461033f57806378e979251461034957806384e82a3314610367576101a9565b806335ba3e8d11610166578063441a3e7011610140578063441a3e70146102e157806351eb05a6146102fd5780635312ea8e14610319578063630b5ba114610335576101a9565b806335ba3e8d1461028757806341275358146102a5578063436cc3d6146102c3576101a9565b806306bcf02f146101ae578063081e3eda146101ca5780630ba84cd2146101e85780631526fe271461020457806317caf6f1146102395780631838567e14610257575b600080fd5b6101c860048036038101906101c39190612ac7565b6104fa565b005b6101d26106bd565b6040516101df91906136f7565b60405180910390f35b61020260048036038101906101fd9190612ac7565b6106ca565b005b61021e60048036038101906102199190612ac7565b6107eb565b60405161023096959493929190613419565b60405180910390f35b610241610865565b60405161024e91906136f7565b60405180910390f35b610271600480360381019061026c9190612b19565b61086b565b60405161027e91906136f7565b60405180910390f35b61028f6109f0565b60405161029c91906136f7565b60405180910390f35b6102ad6109f6565b6040516102ba919061332a565b60405180910390f35b6102cb610a1c565b6040516102d891906136f7565b60405180910390f35b6102fb60048036038101906102f69190612bb8565b610a22565b005b61031760048036038101906103129190612ac7565b610cc3565b005b610333600480360381019061032e9190612ac7565b610fff565b005b61033d6111e8565b005b61034761121b565b005b6103516112a3565b60405161035e91906136f7565b60405180910390f35b610381600480360381019061037c9190612b55565b6112a9565b005b61039d60048036038101906103989190612a4c565b61167b565b005b6103a7611819565b6040516103b4919061347a565b60405180910390f35b6103c561183d565b6040516103d2919061332a565b60405180910390f35b6103f560048036038101906103f09190612bb8565b611866565b60405161040291906136f7565b60405180910390f35b61042560048036038101906104209190612b19565b61187c565b604051610433929190613712565b60405180910390f35b61045660048036038101906104519190612a9e565b6118ad565b60405161046391906133dc565b60405180910390f35b61048660048036038101906104819190612a4c565b6118cd565b005b610490611a6b565b60405161049d919061332a565b60405180910390f35b6104c060048036038101906104bb9190612bf4565b611a91565b005b6104dc60048036038101906104d79190612bb8565b611d32565b005b6104f860048036038101906104f39190612a4c565b612218565b005b610502612310565b73ffffffffffffffffffffffffffffffffffffffff1661052061183d565b73ffffffffffffffffffffffffffffffffffffffff1614610576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056d90613617565b60405180910390fd5b60085442106105ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b190613697565b60405180910390fd5b8042106105fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f3906135b7565b60405180910390fd5b6000600580549050905060005b818110156106785760006005828154811061064d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600602019050838160020181905550508061067190613988565b9050610609565b50816008819055507fa09018266c541576eb124551c9c57c82a8129add3ba6777a5974b1d0e6252e996008546040516106b191906136f7565b60405180910390a15050565b6000600580549050905090565b6106d2612310565b73ffffffffffffffffffffffffffffffffffffffff166106f061183d565b73ffffffffffffffffffffffffffffffffffffffff1614610746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073d90613617565b60405180910390fd5b60095481111561078b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610782906135f7565b60405180910390fd5b6107936111e8565b806003819055503373ffffffffffffffffffffffffffffffffffffffff167fe2492e003bbe8afa53088b406f0c1cb5d9e280370fc72a74cf116ffd343c4053826040516107e091906136f7565b60405180910390a250565b600581815481106107fb57600080fd5b90600052602060002090600602016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154908060040160009054906101000a900461ffff16908060050154905086565b60075481565b600080600584815481106108a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000209060060201905060006006600086815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008260030154905082600201544211801561092d57506000836005015414155b801561093b57506000600754115b156109b3576000610950846002015442611866565b9050600060075485600101546003548461096a9190613805565b6109749190613805565b61097e91906137d4565b90508460050154670de0b6b3a7640000826109999190613805565b6109a391906137d4565b836109ae919061377e565b925050505b8160010154670de0b6b3a76400008284600001546109d19190613805565b6109db91906137d4565b6109e5919061385f565b935050505092915050565b60035481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b60026001541415610a68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5f906136d7565b60405180910390fd5b6002600181905550600060058381548110610aac577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000209060060201905060006006600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508281600001541015610b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4e90613657565b60405180910390fd5b610b6084610cc3565b60008160010154670de0b6b3a764000084600301548460000154610b849190613805565b610b8e91906137d4565b610b98919061385f565b90506000811115610bae57610bad3382612318565b5b6000841115610c3757838260000154610bc7919061385f565b8260000181905550610c1e33858560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166125799092919063ffffffff16565b838360050154610c2e919061385f565b83600501819055505b670de0b6b3a764000083600301548360000154610c549190613805565b610c5e91906137d4565b8260010181905550843373ffffffffffffffffffffffffffffffffffffffff167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56886604051610cad91906136f7565b60405180910390a3505050600180819055505050565b600060058281548110610cff577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000209060060201905080600201544211610d205750610ffc565b600081600501541480610d37575060008160010154145b15610d4b5742816002018190555050610ffc565b6000610d5b826002015442611866565b90506000600754836001015460035484610d759190613805565b610d7f9190613805565b610d8991906137d4565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f19600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a84610df791906137d4565b6040518363ffffffff1660e01b8152600401610e1492919061337c565b600060405180830381600087803b158015610e2e57600080fd5b505af1925050508015610e3f575060015b610eb6573d8060008114610e6f576040519150601f19603f3d011682016040523d82523d6000602084013e610e74565b606091505b50600091507f244c52553cb1ba3685f1bd0a2465197d6f6c166c43d128d17f280dd100a88c0681604051610ea891906133f7565b60405180910390a150610eb7565b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b8152600401610f1292919061337c565b600060405180830381600087803b158015610f2c57600080fd5b505af1925050508015610f3d575060015b610fb4573d8060008114610f6d576040519150601f19603f3d011682016040523d82523d6000602084013e610f72565b606091505b50600091507f244c52553cb1ba3685f1bd0a2465197d6f6c166c43d128d17f280dd100a88c0681604051610fa691906133f7565b60405180910390a150610fb5565b5b8260050154670de0b6b3a764000082610fce9190613805565b610fd891906137d4565b8360030154610fe7919061377e565b83600301819055504283600201819055505050505b50565b60026001541415611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103c906136d7565b60405180910390fd5b6002600181905550600060058281548110611089577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000209060060201905060006006600084815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600001549050600082600001819055506000826001018190555061115933828560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166125799092919063ffffffff16565b8083600501541061118157808360050154611174919061385f565b836005018190555061118c565b600083600501819055505b833373ffffffffffffffffffffffffffffffffffffffff167fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae0595836040516111d391906136f7565b60405180910390a35050506001808190555050565b6000600580549050905060005b818110156112175761120681610cc3565b8061121090613988565b90506111f5565b5050565b611223612310565b73ffffffffffffffffffffffffffffffffffffffff1661124161183d565b73ffffffffffffffffffffffffffffffffffffffff1614611297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128e90613617565b60405180910390fd5b6112a160006125ff565b565b60085481565b6112b1612310565b73ffffffffffffffffffffffffffffffffffffffff166112cf61183d565b73ffffffffffffffffffffffffffffffffffffffff1614611325576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131c90613617565b60405180910390fd5b8260001515600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146113b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b090613677565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113f2919061332a565b60206040518083038186803b15801561140a57600080fd5b505afa15801561141e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114429190612af0565b506101a48361ffff16111561148c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611483906134b7565b60405180910390fd5b811561149b5761149a6111e8565b5b600060085442116114ae576008546114b0565b425b9050856007546114c0919061377e565b6007819055506001600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060056040518060c001604052808773ffffffffffffffffffffffffffffffffffffffff168152602001888152602001838152602001600081526020018661ffff1681526020016000815250908060018154018082558091505060019003906000526020600020906006020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155604082015181600201556060820151816003015560808201518160040160006101000a81548161ffff021916908361ffff16021790555060a0820151816005015550506001600580549050611638919061385f565b7faa6642278d4bbef86d8990c37355d5d4dfe365c194106bdf7a65162268606f0786888760405161166b939291906133a5565b60405180910390a2505050505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461170b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170290613577565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561177b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177290613517565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fd44190acf9d04bdb5d3a1aafff7e6dee8b40b93dfb8c5d3f0eea4b9f4539c3f760405160405180910390a350565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008282611874919061385f565b905092915050565b6006602052816000526040600020602052806000526040600020600091509150508060000154908060010154905082565b600a6020528060005260406000206000915054906101000a900460ff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461195d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611954906134f7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c490613597565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f618c54559e94f1499a808aad71ee8729f8e74e8c48e979616328ce493a1a52e760405160405180910390a350565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a99612310565b73ffffffffffffffffffffffffffffffffffffffff16611ab761183d565b73ffffffffffffffffffffffffffffffffffffffff1614611b0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0490613617565b60405180910390fd5b6101a48261ffff161115611b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4d906135d7565b60405180910390fd5b8015611b6557611b646111e8565b5b8260058581548110611ba0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906006020160010154600754611bbf919061385f565b611bc9919061377e565b6007819055508260058581548110611c0a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000209060060201600101819055508160058581548110611c5a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906006020160040160006101000a81548161ffff021916908361ffff160217905550837f39f0c3d078af018954b4fa56832a05a2b511afaa999b133ea3f1c487c21ed28760058681548110611ce1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906006020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168585604051611d24939291906133a5565b60405180910390a250505050565b60026001541415611d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6f906136d7565b60405180910390fd5b6002600181905550600060058381548110611dbc577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000209060060201905060006006600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050611e2984610cc3565b600081600001541115611e865760008160010154670de0b6b3a764000084600301548460000154611e5a9190613805565b611e6491906137d4565b611e6e919061385f565b90506000811115611e8457611e833382612318565b5b505b600083111561218d5760008260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611eee919061332a565b60206040518083038186803b158015611f0657600080fd5b505afa158015611f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3e9190612af0565b9050611f913330868660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166126c3909392919063ffffffff16565b808360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611fef919061332a565b60206040518083038186803b15801561200757600080fd5b505afa15801561201b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203f9190612af0565b612049919061385f565b935060008360040160009054906101000a900461ffff1661ffff16111561215a5760006127108460040160009054906101000a900461ffff1661ffff16866120919190613805565b61209b91906137d4565b905061210e600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166125799092919063ffffffff16565b8085846000015461211f919061377e565b612129919061385f565b836000018190555080858560050154612142919061377e565b61214c919061385f565b84600501819055505061218b565b83826000015461216a919061377e565b8260000181905550838360050154612182919061377e565b83600501819055505b505b670de0b6b3a7640000826003015482600001546121aa9190613805565b6121b491906137d4565b8160010181905550833373ffffffffffffffffffffffffffffffffffffffff167f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a158560405161220391906136f7565b60405180910390a35050600180819055505050565b612220612310565b73ffffffffffffffffffffffffffffffffffffffff1661223e61183d565b73ffffffffffffffffffffffffffffffffffffffff1614612294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228b90613617565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fb906134d7565b60405180910390fd5b61230d816125ff565b50565b600033905090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612373919061332a565b60206040518083038186803b15801561238b57600080fd5b505afa15801561239f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c39190612af0565b9050600081831115612483577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85846040518363ffffffff1660e01b815260040161242a92919061337c565b602060405180830381600087803b15801561244457600080fd5b505af1158015612458573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061247c9190612a75565b9050612533565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040518363ffffffff1660e01b81526004016124de92919061337c565b602060405180830381600087803b1580156124f857600080fd5b505af115801561250c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125309190612a75565b90505b80612573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256a90613537565b60405180910390fd5b50505050565b6125fa8363a9059cbb60e01b848460405160240161259892919061337c565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061274c565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612746846323b872dd60e01b8585856040516024016126e493929190613345565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061274c565b50505050565b60006127ae826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166128139092919063ffffffff16565b905060008151111561280e57808060200190518101906127ce9190612a75565b61280d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612804906136b7565b60405180910390fd5b5b505050565b6060612822848460008561282b565b90509392505050565b606082471015612870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286790613557565b60405180910390fd5b6128798561293f565b6128b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128af90613637565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516128e19190613313565b60006040518083038185875af1925050503d806000811461291e576040519150601f19603f3d011682016040523d82523d6000602084013e612923565b606091505b5091509150612933828286612952565b92505050949350505050565b600080823b905060008111915050919050565b60608315612962578290506129b2565b6000835111156129755782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a99190613495565b60405180910390fd5b9392505050565b6000813590506129c881613a40565b92915050565b6000813590506129dd81613a57565b92915050565b6000815190506129f281613a57565b92915050565b600081359050612a0781613a6e565b92915050565b600081359050612a1c81613a85565b92915050565b600081359050612a3181613a9c565b92915050565b600081519050612a4681613a9c565b92915050565b600060208284031215612a5e57600080fd5b6000612a6c848285016129b9565b91505092915050565b600060208284031215612a8757600080fd5b6000612a95848285016129e3565b91505092915050565b600060208284031215612ab057600080fd5b6000612abe848285016129f8565b91505092915050565b600060208284031215612ad957600080fd5b6000612ae784828501612a22565b91505092915050565b600060208284031215612b0257600080fd5b6000612b1084828501612a37565b91505092915050565b60008060408385031215612b2c57600080fd5b6000612b3a85828601612a22565b9250506020612b4b858286016129b9565b9150509250929050565b60008060008060808587031215612b6b57600080fd5b6000612b7987828801612a22565b9450506020612b8a878288016129f8565b9350506040612b9b87828801612a0d565b9250506060612bac878288016129ce565b91505092959194509250565b60008060408385031215612bcb57600080fd5b6000612bd985828601612a22565b9250506020612bea85828601612a22565b9150509250929050565b60008060008060808587031215612c0a57600080fd5b6000612c1887828801612a22565b9450506020612c2987828801612a22565b9350506040612c3a87828801612a0d565b9250506060612c4b878288016129ce565b91505092959194509250565b612c6081613893565b82525050565b612c6f816138a5565b82525050565b6000612c808261373b565b612c8a8185613751565b9350612c9a818560208601613955565b612ca381613a2f565b840191505092915050565b6000612cb98261373b565b612cc38185613762565b9350612cd3818560208601613955565b80840191505092915050565b612ce8816138fb565b82525050565b612cf78161391f565b82525050565b6000612d0882613746565b612d12818561376d565b9350612d22818560208601613955565b612d2b81613a2f565b840191505092915050565b6000612d4360258361376d565b91507f6164643a20696e76616c6964206465706f73697420666565206261736973207060008301527f6f696e74730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612da960268361376d565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612e0f601c8361376d565b91507f736574446576416464726573733a204143434553532044454e494544000000006000830152602082019050919050565b6000612e4f601e8361376d565b91507f736574466565416464726573733a20494e434f525245435420494e50555400006000830152602082019050919050565b6000612e8f60218361376d565b91507f736166655a6575735472616e736665723a207472616e73666572206661696c6560008301527f64000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ef560268361376d565b91507f416464726573733a20696e73756666696369656e742062616c616e636520666f60008301527f722063616c6c00000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612f5b601c8361376d565b91507f736574466565416464726573733a204143434553532044454e494544000000006000830152602082019050919050565b6000612f9b601e8361376d565b91507f736574446576416464726573733a20494e434f525245435420494e50555400006000830152602082019050919050565b6000612fdb60208361376d565b91507f757064617465537461727454696d653a20494e434f525245435420494e5055546000830152602082019050919050565b600061301b60258361376d565b91507f7365743a20696e76616c6964206465706f73697420666565206261736973207060008301527f6f696e74730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061308160238361376d565b91507f757064617465456d697373696f6e526174653a20494e434f525245435420494e60008301527f50555400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006130e760208361376d565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613127601d8361376d565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b600061316760128361376d565b91507f77697468647261773a206e6f7420676f6f6400000000000000000000000000006000830152602082019050919050565b60006131a760198361376d565b91507f6e6f6e4475706c6963617465643a206475706c696361746564000000000000006000830152602082019050919050565b60006131e760258361376d565b91507f757064617465537461727454696d653a204641524d20414c524541445920535460008301527f41525445440000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061324d602a8361376d565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b60006132b3601f8361376d565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b6132ef816138c3565b82525050565b6132fe81613943565b82525050565b61330d816138f1565b82525050565b600061331f8284612cae565b915081905092915050565b600060208201905061333f6000830184612c57565b92915050565b600060608201905061335a6000830186612c57565b6133676020830185612c57565b6133746040830184613304565b949350505050565b60006040820190506133916000830185612c57565b61339e6020830184613304565b9392505050565b60006060820190506133ba6000830186612c57565b6133c76020830185613304565b6133d460408301846132f5565b949350505050565b60006020820190506133f16000830184612c66565b92915050565b600060208201905081810360008301526134118184612c75565b905092915050565b600060c08201905061342e6000830189612cdf565b61343b6020830188613304565b6134486040830187613304565b6134556060830186613304565b61346260808301856132e6565b61346f60a0830184613304565b979650505050505050565b600060208201905061348f6000830184612cee565b92915050565b600060208201905081810360008301526134af8184612cfd565b905092915050565b600060208201905081810360008301526134d081612d36565b9050919050565b600060208201905081810360008301526134f081612d9c565b9050919050565b6000602082019050818103600083015261351081612e02565b9050919050565b6000602082019050818103600083015261353081612e42565b9050919050565b6000602082019050818103600083015261355081612e82565b9050919050565b6000602082019050818103600083015261357081612ee8565b9050919050565b6000602082019050818103600083015261359081612f4e565b9050919050565b600060208201905081810360008301526135b081612f8e565b9050919050565b600060208201905081810360008301526135d081612fce565b9050919050565b600060208201905081810360008301526135f08161300e565b9050919050565b6000602082019050818103600083015261361081613074565b9050919050565b60006020820190508181036000830152613630816130da565b9050919050565b600060208201905081810360008301526136508161311a565b9050919050565b600060208201905081810360008301526136708161315a565b9050919050565b600060208201905081810360008301526136908161319a565b9050919050565b600060208201905081810360008301526136b0816131da565b9050919050565b600060208201905081810360008301526136d081613240565b9050919050565b600060208201905081810360008301526136f0816132a6565b9050919050565b600060208201905061370c6000830184613304565b92915050565b60006040820190506137276000830185613304565b6137346020830184613304565b9392505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000613789826138f1565b9150613794836138f1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156137c9576137c86139d1565b5b828201905092915050565b60006137df826138f1565b91506137ea836138f1565b9250826137fa576137f9613a00565b5b828204905092915050565b6000613810826138f1565b915061381b836138f1565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613854576138536139d1565b5b828202905092915050565b600061386a826138f1565b9150613875836138f1565b925082821015613888576138876139d1565b5b828203905092915050565b600061389e826138d1565b9050919050565b60008115159050919050565b60006138bc82613893565b9050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006139068261390d565b9050919050565b6000613918826138d1565b9050919050565b600061392a82613931565b9050919050565b600061393c826138d1565b9050919050565b600061394e826138c3565b9050919050565b60005b83811015613973578082015181840152602081019050613958565b83811115613982576000848401525b50505050565b6000613993826138f1565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156139c6576139c56139d1565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b613a4981613893565b8114613a5457600080fd5b50565b613a60816138a5565b8114613a6b57600080fd5b50565b613a77816138b1565b8114613a8257600080fd5b50565b613a8e816138c3565b8114613a9957600080fd5b50565b613aa5816138f1565b8114613ab057600080fd5b5056fea2646970667358221220708236a5493ed3eb0404b7999d8be4bb9e185972f49e330d52784a52ef4337e864736f6c6343000800003300000000000000000000000025bfd2fb3e79c6c2b6a73c102a4c02008d953d2c000000000000000000000000b1690cc68de3557e8c7f5083617076d705be19de000000000000000000000000b1690cc68de3557e8c7f5083617076d705be19de00000000000000000000000000000000000000000000000000038d7ea4c680000000000000000000000000000000000000000000000000000000000062813190
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000025bfd2fb3e79c6c2b6a73c102a4c02008d953d2c000000000000000000000000b1690cc68de3557e8c7f5083617076d705be19de000000000000000000000000b1690cc68de3557e8c7f5083617076d705be19de00000000000000000000000000000000000000000000000000038d7ea4c680000000000000000000000000000000000000000000000000000000000062813190
-----Decoded View---------------
Arg [0] : _tokenAddress (address): 0x25bfd2fb3e79c6c2b6a73c102a4c02008d953d2c
Arg [1] : _devaddr (address): 0xb1690cc68de3557e8c7f5083617076d705be19de
Arg [2] : _feeAddress (address): 0xb1690cc68de3557e8c7f5083617076d705be19de
Arg [3] : _zeusPerSecond (uint256): 1000000000000000
Arg [4] : _startTime (uint256): 1652634000
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 00000000000000000000000025bfd2fb3e79c6c2b6a73c102a4c02008d953d2c
Arg [1] : 000000000000000000000000b1690cc68de3557e8c7f5083617076d705be19de
Arg [2] : 000000000000000000000000b1690cc68de3557e8c7f5083617076d705be19de
Arg [3] : 00000000000000000000000000000000000000000000000000038d7ea4c68000
Arg [4] : 0000000000000000000000000000000000000000000000000000000062813190
Deployed ByteCode Sourcemap
43093:13344:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;55864:570;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46764:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;55492:323;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44813:26;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;45054:34;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49082:723;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44689:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44752:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;45211:43;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52642:833;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;50144:1020;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;53546:579;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49888:180;;;:::i;:::-;;37043:103;;;:::i;:::-;;45148:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47134:1005;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;55035:325;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44558:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36392:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48900:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44895:64;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;46867:44;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;54720:307;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;44617:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48251:569;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51237:1353;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37301:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;55864:570;36623:12;:10;:12::i;:::-;36612:23;;:7;:5;:7::i;:::-;:23;;;36604:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;55968:9:::1;;55950:15;:27;55942:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;56056:13;56038:15;:31;56030:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;56127:14;56144:8;:15;;;;56127:32;;56185:11;56180:157;56208:6;56202:3;:12;56180:157;;;56238:21;56262:8;56271:3;56262:13;;;;;;;;;;;;;;;;;;;;;;;;;;56238:37;;56312:13;56290:4;:19;;:35;;;;56180:157;56216:5;;;;:::i;:::-;;;56180:157;;;;56369:13;56357:9;:25;;;;56400:26;56416:9;;56400:26;;;;;;:::i;:::-;;;;;;;;36683:1;55864:570:::0;:::o;46764:95::-;46809:7;46836:8;:15;;;;46829:22;;46764:95;:::o;55492:323::-;36623:12;:10;:12::i;:::-;36612:23;;:7;:5;:7::i;:::-;:23;;;36604:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;55600:17:::1;;55582:14;:35;;55574:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;55668:17;:15;:17::i;:::-;55722:14;55706:13;:30;;;;55780:10;55761:46;;;55792:14;55761:46;;;;;;:::i;:::-;;;;;;;;55492:323:::0;:::o;44813:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;45054:34::-;;;;:::o;49082:723::-;49155:7;49175:21;49199:8;49208:4;49199:14;;;;;;;;;;;;;;;;;;;;;;;;;;49175:38;;49224:21;49248:8;:14;49257:4;49248:14;;;;;;;;;;;:21;49263:5;49248:21;;;;;;;;;;;;;;;49224:45;;49290:23;49316:4;:20;;;49290:46;;49379:4;:19;;;49361:15;:37;:59;;;;;49419:1;49402:4;:13;;;:18;;49361:59;:82;;;;;49442:1;49424:15;;:19;49361:82;49357:369;;;49460:18;49481:51;49495:4;:19;;;49516:15;49481:13;:51::i;:::-;49460:72;;49547:18;49615:15;;49597:4;:15;;;49581:13;;49568:10;:26;;;;:::i;:::-;:44;;;;:::i;:::-;:62;;;;:::i;:::-;49547:83;;49701:4;:13;;;49694:4;49681:10;:17;;;;:::i;:::-;:33;;;;:::i;:::-;49663:15;:51;;;;:::i;:::-;49645:69;;49357:369;;;49782:4;:15;;;49775:4;49757:15;49743:4;:11;;;:29;;;;:::i;:::-;:36;;;;:::i;:::-;:54;;;;:::i;:::-;49736:61;;;;;49082:723;;;;:::o;44689:28::-;;;;:::o;44752:25::-;;;;;;;;;;;;;:::o;45211:43::-;;;;:::o;52642:833::-;17727:1;18325:7;;:19;;18317:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;17727:1;18458:7;:18;;;;52724:21:::1;52748:8;52757:4;52748:14;;;;;;;;;;;;;;;;;;;;;;;;;;52724:38;;52773:21;52797:8;:14;52806:4;52797:14;;;;;;;;;;;:26;52812:10;52797:26;;;;;;;;;;;;;;;52773:50;;52857:7;52842:4;:11;;;:22;;52834:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;52898:16;52909:4;52898:10;:16::i;:::-;52935:15;52997:4;:15;;;52990:4;52967;:20;;;52953:4;:11;;;:34;;;;:::i;:::-;:41;;;;:::i;:::-;:59;;;;:::i;:::-;52935:77;;53047:1;53037:7;:11;53033:81;;;53065:37;53082:10;53094:7;53065:16;:37::i;:::-;53033:81;53148:1;53138:7;:11;53134:203;;;53194:7;53180:4;:11;;;:21;;;;:::i;:::-;53166:4;:11;;:35;;;;53216:55;53250:10;53263:7;53216:4;:12;;;;;;;;;;;;:25;;;;:55;;;;;:::i;:::-;53318:7;53302:4;:13;;;:23;;;;:::i;:::-;53286:4;:13;;:39;;;;53134:203;53412:4;53389;:20;;;53375:4;:11;;;:34;;;;:::i;:::-;:41;;;;:::i;:::-;53357:4;:15;;:59;;;;53453:4;53441:10;53432:35;;;53459:7;53432:35;;;;;;:::i;:::-;;;;;;;;18489:1;;;17683::::0;18637:7;:22;;;;52642:833;;:::o;50144:1020::-;50196:21;50220:8;50229:4;50220:14;;;;;;;;;;;;;;;;;;;;;;;;;;50196:38;;50268:4;:19;;;50249:15;:38;50245:77;;50304:7;;;50245:77;50353:1;50336:4;:13;;;:18;:42;;;;50377:1;50358:4;:15;;;:20;50336:42;50332:133;;;50417:15;50395:4;:19;;:37;;;;50447:7;;;50332:133;50475:18;50496:51;50510:4;:19;;;50531:15;50496:13;:51::i;:::-;50475:72;;50558:18;50626:15;;50608:4;:15;;;50592:13;;50579:10;:26;;;;:::i;:::-;:44;;;;:::i;:::-;:62;;;;:::i;:::-;50558:83;;50666:4;:9;;;50676:7;;;;;;;;;;;50698:2;50685:10;:15;;;;:::i;:::-;50666:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50662:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50771:1;50758:14;;50792:21;50806:6;50792:21;;;;;;:::i;:::-;;;;;;;;50715:110;50662:163;;;;50849:4;:9;;;50867:4;50874:10;50849:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50845:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;50955:1;50942:14;;50976:21;50990:6;50976:21;;;;;;:::i;:::-;;;;;;;;50899:110;50845:164;;;;51095:4;:13;;;51088:4;51075:10;:17;;;;:::i;:::-;:33;;;;:::i;:::-;51052:4;:20;;;:56;;;;:::i;:::-;51029:4;:20;;:79;;;;51141:15;51119:4;:19;;:37;;;;50144:1020;;;;;:::o;53546:579::-;17727:1;18325:7;;:19;;18317:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;17727:1;18458:7;:18;;;;53620:21:::1;53644:8;53653:4;53644:14;;;;;;;;;;;;;;;;;;;;;;;;;;53620:38;;53669:21;53693:8;:14;53702:4;53693:14;;;;;;;;;;;:26;53708:10;53693:26;;;;;;;;;;;;;;;53669:50;;53740:14;53757:4;:11;;;53740:28;;53793:1;53779:4;:11;;:15;;;;53823:1;53805:4;:15;;:19;;;;53845:54;53879:10;53892:6;53845:4;:12;;;;;;;;;;;;:25;;;;:54;;;;;:::i;:::-;53934:6;53916:4;:13;;;:24;53912:145;;53989:6;53973:4;:13;;;:22;;;;:::i;:::-;53957:4;:13;;:38;;;;53912:145;;;54044:1;54028:4;:13;;:17;;;;53912:145;54104:4;54092:10;54074:43;;;54110:6;54074:43;;;;;;:::i;:::-;;;;;;;;18489:1;;;17683::::0;18637:7;:22;;;;53546:579;:::o;49888:180::-;49933:14;49950:8;:15;;;;49933:32;;49981:11;49976:85;50004:6;49998:3;:12;49976:85;;;50034:15;50045:3;50034:10;:15::i;:::-;50012:5;;;;:::i;:::-;;;49976:85;;;;49888:180;:::o;37043:103::-;36623:12;:10;:12::i;:::-;36612:23;;:7;:5;:7::i;:::-;:23;;;36604:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37108:30:::1;37135:1;37108:18;:30::i;:::-;37043:103::o:0;45148:24::-;;;;:::o;47134:1005::-;36623:12;:10;:12::i;:::-;36612:23;;:7;:5;:7::i;:::-;:23;;;36604:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;47258:8:::1;47004:5;46977:32;;:13;:23;46991:8;46977:23;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;46969:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;47309:8:::2;:18;;;47336:4;47309:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;47380:3;47363:13;:20;;;;47355:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;47450:11;47446:61;;;47478:17;:15;:17::i;:::-;47446:61;47527:22;47570:9;;47552:15;:27;:57;;47600:9;;47552:57;;;47582:15;47552:57;47527:82;;47666:11;47648:15;;:29;;;;:::i;:::-;47630:15;:47;;;;47714:4;47688:13;:23;47702:8;47688:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;47729:8;47757:270;;;;;;;;47795:8;47757:270;;;;;;47835:11;47757:270;;;;47882:14;47757:270;;;;47933:1;47757:270;;;;47968:13;47757:270;;;;;;48010:1;47757:270;;::::0;47729:309:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;48082:1;48064:8;:15;;;;:19;;;;:::i;:::-;48056:75;48093:8;48104:11;48117:13;48056:75;;;;;;;;:::i;:::-;;;;;;;;47050:1;36683::::1;47134:1005:::0;;;;:::o;55035:325::-;55121:10;;;;;;;;;;;55107:24;;:10;:24;;;55099:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;55206:1;55183:25;;:11;:25;;;;55175:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;55277:11;55264:10;;:24;;;;;;;;;;;;;;;;;;55340:11;55314:38;;55328:10;55314:38;;;;;;;;;;;;55035:325;:::o;44558:31::-;;;:::o;36392:87::-;36438:7;36465:6;;;;;;;;;;;36458:13;;36392:87;:::o;48900:118::-;48972:7;49005:5;48999:3;:11;;;;:::i;:::-;48992:18;;48900:118;;;;:::o;44895:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;46867:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;54720:307::-;54803:7;;;;;;;;;;;54789:21;;:10;:21;;;54781:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;54882:1;54862:22;;:8;:22;;;;54854:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;54950:8;54940:7;;:18;;;;;;;;;;;;;;;;;;55010:8;54984:35;;54998:10;54984:35;;;;;;;;;;;;54720:307;:::o;44617:22::-;;;;;;;;;;;;;:::o;48251:569::-;36623:12;:10;:12::i;:::-;36612:23;;:7;:5;:7::i;:::-;:23;;;36604:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;48394:3:::1;48377:13;:20;;;;48369:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;48464:11;48460:61;;;48492:17;:15;:17::i;:::-;48460:61;48605:11;48577:8;48586:4;48577:14;;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;48559:15;;:43;;;;:::i;:::-;:57;;;;:::i;:::-;48541:15;:75;;;;48655:11;48627:8;48636:4;48627:14;;;;;;;;;;;;;;;;;;;;;;;;;;:25;;:39;;;;48707:13;48677:8;48686:4;48677:14;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;:43;;;;;;;;;;;;;;;;;;48746:4;48738:74;48760:8;48769:4;48760:14;;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;48785:11;48798:13;48738:74;;;;;;;;:::i;:::-;;;;;;;;48251:569:::0;;;;:::o;51237:1353::-;17727:1;18325:7;;:19;;18317:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;17727:1;18458:7;:18;;;;51318:21:::1;51342:8;51351:4;51342:14;;;;;;;;;;;;;;;;;;;;;;;;;;51318:38;;51367:21;51391:8;:14;51400:4;51391:14;;;;;;;;;;;:26;51406:10;51391:26;;;;;;;;;;;;;;;51367:50;;51428:16;51439:4;51428:10;:16::i;:::-;51483:1;51469:4;:11;;;:15;51465:228;;;51501:15;51563:4;:15;;;51556:4;51533;:20;;;51519:4;:11;;;:34;;;;:::i;:::-;:41;;;;:::i;:::-;:59;;;;:::i;:::-;51501:77;;51607:1;51597:7;:11;51593:89;;;51629:37;51646:10;51658:7;51629:16;:37::i;:::-;51593:89;51465:228;;51717:1;51707:7;:11;51703:758;;;51735:21;51759:4;:12;;;;;;;;;;;;:22;;;51790:4;51759:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;51735:61;;51811:74;51849:10;51870:4;51877:7;51811:4;:12;;;;;;;;;;;;:29;;;;:74;;;;;;:::i;:::-;51950:13;51910:4;:12;;;;;;;;;;;;:22;;;51941:4;51910:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;;;:::i;:::-;51900:63;;52016:1;51996:4;:17;;;;;;;;;;;;:21;;;51992:458;;;52038:18;52089:5;52069:4;:17;;;;;;;;;;;;52059:27;;:7;:27;;;;:::i;:::-;:35;;;;:::i;:::-;52038:56;;52113:49;52139:10;;;;;;;;;;;52151;52113:4;:12;;;;;;;;;;;;:25;;;;:49;;;;;:::i;:::-;52219:10;52209:7;52195:4;:11;;;:21;;;;:::i;:::-;:34;;;;:::i;:::-;52181:4;:11;;:48;;;;52290:10;52280:7;52264:4;:13;;;:23;;;;:::i;:::-;:36;;;;:::i;:::-;52248:4;:13;;:52;;;;51992:458;;;;52369:7;52355:4;:11;;;:21;;;;:::i;:::-;52341:4;:11;;:35;;;;52427:7;52411:4;:13;;;:23;;;;:::i;:::-;52395:4;:13;;:39;;;;51992:458;51703:758;;52528:4;52505;:20;;;52491:4;:11;;;:34;;;;:::i;:::-;:41;;;;:::i;:::-;52473:4;:15;;:59;;;;52568:4;52556:10;52548:34;;;52574:7;52548:34;;;;;;:::i;:::-;;;;;;;;18489:1;;17683::::0;18637:7;:22;;;;51237:1353;;:::o;37301:201::-;36623:12;:10;:12::i;:::-;36612:23;;:7;:5;:7::i;:::-;:23;;;36604:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37410:1:::1;37390:22;;:8;:22;;;;37382:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;37466:28;37485:8;37466:18;:28::i;:::-;37301:201:::0;:::o;19353:98::-;19406:7;19433:10;19426:17;;19353:98;:::o;54239:445::-;54315:15;54333:4;:14;;;54356:4;54333:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;54315:47;;54373:20;54436:7;54426;:17;54422:173;;;54478:4;:13;;;54492:3;54497:7;54478:27;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;54460:45;;54422:173;;;54556:4;:13;;;54570:3;54575:7;54556:27;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;54538:45;;54422:173;54623:15;54615:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;54239:445;;;;:::o;11884:211::-;12001:86;12021:5;12051:23;;;12076:2;12080:5;12028:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12001:19;:86::i;:::-;11884:211;;;:::o;37662:191::-;37736:16;37755:6;;;;;;;;;;;37736:25;;37781:8;37772:6;;:17;;;;;;;;;;;;;;;;;;37836:8;37805:40;;37826:8;37805:40;;;;;;;;;;;;37662:191;;:::o;12103:248::-;12247:96;12267:5;12297:27;;;12326:4;12332:2;12336:5;12274:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12247:19;:96::i;:::-;12103:248;;;;:::o;14457:716::-;14881:23;14907:69;14935:4;14907:69;;;;;;;;;;;;;;;;;14915:5;14907:27;;;;:69;;;;;:::i;:::-;14881:95;;15011:1;14991:10;:17;:21;14987:179;;;15088:10;15077:30;;;;;;;;;;;;:::i;:::-;15069:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14987:179;14457:716;;;:::o;3766:229::-;3903:12;3935:52;3957:6;3965:4;3971:1;3974:12;3935:21;:52::i;:::-;3928:59;;3766:229;;;;;:::o;4886:510::-;5056:12;5114:5;5089:21;:30;;5081:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;5181:18;5192:6;5181:10;:18::i;:::-;5173:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;5247:12;5261:23;5288:6;:11;;5307:5;5314:4;5288:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5246:73;;;;5337:51;5354:7;5363:10;5375:12;5337:16;:51::i;:::-;5330:58;;;;4886:510;;;;;;:::o;960:387::-;1020:4;1228:12;1295:7;1283:20;1275:28;;1338:1;1331:4;:8;1324:15;;;960:387;;;:::o;7572:712::-;7722:12;7751:7;7747:530;;;7782:10;7775:17;;;;7747:530;7916:1;7896:10;:17;:21;7892:374;;;8094:10;8088:17;8155:15;8142:10;8138:2;8134:19;8127:44;8042:148;8237:12;8230:20;;;;;;;;;;;:::i;:::-;;;;;;;;7572:712;;;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:133::-;;233:6;220:20;211:29;;249:30;273:5;249:30;:::i;:::-;201:84;;;;:::o;291:137::-;;376:6;370:13;361:22;;392:30;416:5;392:30;:::i;:::-;351:77;;;;:::o;434:167::-;;532:6;519:20;510:29;;548:47;589:5;548:47;:::i;:::-;500:101;;;;:::o;607:137::-;;690:6;677:20;668:29;;706:32;732:5;706:32;:::i;:::-;658:86;;;;:::o;750:139::-;;834:6;821:20;812:29;;850:33;877:5;850:33;:::i;:::-;802:87;;;;:::o;895:143::-;;983:6;977:13;968:22;;999:33;1026:5;999:33;:::i;:::-;958:80;;;;:::o;1044:262::-;;1152:2;1140:9;1131:7;1127:23;1123:32;1120:2;;;1168:1;1165;1158:12;1120:2;1211:1;1236:53;1281:7;1272:6;1261:9;1257:22;1236:53;:::i;:::-;1226:63;;1182:117;1110:196;;;;:::o;1312:278::-;;1428:2;1416:9;1407:7;1403:23;1399:32;1396:2;;;1444:1;1441;1434:12;1396:2;1487:1;1512:61;1565:7;1556:6;1545:9;1541:22;1512:61;:::i;:::-;1502:71;;1458:125;1386:204;;;;:::o;1596:290::-;;1718:2;1706:9;1697:7;1693:23;1689:32;1686:2;;;1734:1;1731;1724:12;1686:2;1777:1;1802:67;1861:7;1852:6;1841:9;1837:22;1802:67;:::i;:::-;1792:77;;1748:131;1676:210;;;;:::o;1892:262::-;;2000:2;1988:9;1979:7;1975:23;1971:32;1968:2;;;2016:1;2013;2006:12;1968:2;2059:1;2084:53;2129:7;2120:6;2109:9;2105:22;2084:53;:::i;:::-;2074:63;;2030:117;1958:196;;;;:::o;2160:284::-;;2279:2;2267:9;2258:7;2254:23;2250:32;2247:2;;;2295:1;2292;2285:12;2247:2;2338:1;2363:64;2419:7;2410:6;2399:9;2395:22;2363:64;:::i;:::-;2353:74;;2309:128;2237:207;;;;:::o;2450:407::-;;;2575:2;2563:9;2554:7;2550:23;2546:32;2543:2;;;2591:1;2588;2581:12;2543:2;2634:1;2659:53;2704:7;2695:6;2684:9;2680:22;2659:53;:::i;:::-;2649:63;;2605:117;2761:2;2787:53;2832:7;2823:6;2812:9;2808:22;2787:53;:::i;:::-;2777:63;;2732:118;2533:324;;;;;:::o;2863:718::-;;;;;3032:3;3020:9;3011:7;3007:23;3003:33;3000:2;;;3049:1;3046;3039:12;3000:2;3092:1;3117:53;3162:7;3153:6;3142:9;3138:22;3117:53;:::i;:::-;3107:63;;3063:117;3219:2;3245:67;3304:7;3295:6;3284:9;3280:22;3245:67;:::i;:::-;3235:77;;3190:132;3361:2;3387:52;3431:7;3422:6;3411:9;3407:22;3387:52;:::i;:::-;3377:62;;3332:117;3488:2;3514:50;3556:7;3547:6;3536:9;3532:22;3514:50;:::i;:::-;3504:60;;3459:115;2990:591;;;;;;;:::o;3587:407::-;;;3712:2;3700:9;3691:7;3687:23;3683:32;3680:2;;;3728:1;3725;3718:12;3680:2;3771:1;3796:53;3841:7;3832:6;3821:9;3817:22;3796:53;:::i;:::-;3786:63;;3742:117;3898:2;3924:53;3969:7;3960:6;3949:9;3945:22;3924:53;:::i;:::-;3914:63;;3869:118;3670:324;;;;;:::o;4000:690::-;;;;;4155:3;4143:9;4134:7;4130:23;4126:33;4123:2;;;4172:1;4169;4162:12;4123:2;4215:1;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4186:117;4342:2;4368:53;4413:7;4404:6;4393:9;4389:22;4368:53;:::i;:::-;4358:63;;4313:118;4470:2;4496:52;4540:7;4531:6;4520:9;4516:22;4496:52;:::i;:::-;4486:62;;4441:117;4597:2;4623:50;4665:7;4656:6;4645:9;4641:22;4623:50;:::i;:::-;4613:60;;4568:115;4113:577;;;;;;;:::o;4696:118::-;4783:24;4801:5;4783:24;:::i;:::-;4778:3;4771:37;4761:53;;:::o;4820:109::-;4901:21;4916:5;4901:21;:::i;:::-;4896:3;4889:34;4879:50;;:::o;4935:360::-;;5049:38;5081:5;5049:38;:::i;:::-;5103:70;5166:6;5161:3;5103:70;:::i;:::-;5096:77;;5182:52;5227:6;5222:3;5215:4;5208:5;5204:16;5182:52;:::i;:::-;5259:29;5281:6;5259:29;:::i;:::-;5254:3;5250:39;5243:46;;5025:270;;;;;:::o;5301:373::-;;5433:38;5465:5;5433:38;:::i;:::-;5487:88;5568:6;5563:3;5487:88;:::i;:::-;5480:95;;5584:52;5629:6;5624:3;5617:4;5610:5;5606:16;5584:52;:::i;:::-;5661:6;5656:3;5652:16;5645:23;;5409:265;;;;;:::o;5680:159::-;5781:51;5826:5;5781:51;:::i;:::-;5776:3;5769:64;5759:80;;:::o;5845:167::-;5950:55;5999:5;5950:55;:::i;:::-;5945:3;5938:68;5928:84;;:::o;6018:364::-;;6134:39;6167:5;6134:39;:::i;:::-;6189:71;6253:6;6248:3;6189:71;:::i;:::-;6182:78;;6269:52;6314:6;6309:3;6302:4;6295:5;6291:16;6269:52;:::i;:::-;6346:29;6368:6;6346:29;:::i;:::-;6341:3;6337:39;6330:46;;6110:272;;;;;:::o;6388:369::-;;6551:67;6615:2;6610:3;6551:67;:::i;:::-;6544:74;;6648:34;6644:1;6639:3;6635:11;6628:55;6714:7;6709:2;6704:3;6700:12;6693:29;6748:2;6743:3;6739:12;6732:19;;6534:223;;;:::o;6763:370::-;;6926:67;6990:2;6985:3;6926:67;:::i;:::-;6919:74;;7023:34;7019:1;7014:3;7010:11;7003:55;7089:8;7084:2;7079:3;7075:12;7068:30;7124:2;7119:3;7115:12;7108:19;;6909:224;;;:::o;7139:326::-;;7302:67;7366:2;7361:3;7302:67;:::i;:::-;7295:74;;7399:30;7395:1;7390:3;7386:11;7379:51;7456:2;7451:3;7447:12;7440:19;;7285:180;;;:::o;7471:328::-;;7634:67;7698:2;7693:3;7634:67;:::i;:::-;7627:74;;7731:32;7727:1;7722:3;7718:11;7711:53;7790:2;7785:3;7781:12;7774:19;;7617:182;;;:::o;7805:365::-;;7968:67;8032:2;8027:3;7968:67;:::i;:::-;7961:74;;8065:34;8061:1;8056:3;8052:11;8045:55;8131:3;8126:2;8121:3;8117:12;8110:25;8161:2;8156:3;8152:12;8145:19;;7951:219;;;:::o;8176:370::-;;8339:67;8403:2;8398:3;8339:67;:::i;:::-;8332:74;;8436:34;8432:1;8427:3;8423:11;8416:55;8502:8;8497:2;8492:3;8488:12;8481:30;8537:2;8532:3;8528:12;8521:19;;8322:224;;;:::o;8552:326::-;;8715:67;8779:2;8774:3;8715:67;:::i;:::-;8708:74;;8812:30;8808:1;8803:3;8799:11;8792:51;8869:2;8864:3;8860:12;8853:19;;8698:180;;;:::o;8884:328::-;;9047:67;9111:2;9106:3;9047:67;:::i;:::-;9040:74;;9144:32;9140:1;9135:3;9131:11;9124:53;9203:2;9198:3;9194:12;9187:19;;9030:182;;;:::o;9218:330::-;;9381:67;9445:2;9440:3;9381:67;:::i;:::-;9374:74;;9478:34;9474:1;9469:3;9465:11;9458:55;9539:2;9534:3;9530:12;9523:19;;9364:184;;;:::o;9554:369::-;;9717:67;9781:2;9776:3;9717:67;:::i;:::-;9710:74;;9814:34;9810:1;9805:3;9801:11;9794:55;9880:7;9875:2;9870:3;9866:12;9859:29;9914:2;9909:3;9905:12;9898:19;;9700:223;;;:::o;9929:367::-;;10092:67;10156:2;10151:3;10092:67;:::i;:::-;10085:74;;10189:34;10185:1;10180:3;10176:11;10169:55;10255:5;10250:2;10245:3;10241:12;10234:27;10287:2;10282:3;10278:12;10271:19;;10075:221;;;:::o;10302:330::-;;10465:67;10529:2;10524:3;10465:67;:::i;:::-;10458:74;;10562:34;10558:1;10553:3;10549:11;10542:55;10623:2;10618:3;10614:12;10607:19;;10448:184;;;:::o;10638:327::-;;10801:67;10865:2;10860:3;10801:67;:::i;:::-;10794:74;;10898:31;10894:1;10889:3;10885:11;10878:52;10956:2;10951:3;10947:12;10940:19;;10784:181;;;:::o;10971:316::-;;11134:67;11198:2;11193:3;11134:67;:::i;:::-;11127:74;;11231:20;11227:1;11222:3;11218:11;11211:41;11278:2;11273:3;11269:12;11262:19;;11117:170;;;:::o;11293:323::-;;11456:67;11520:2;11515:3;11456:67;:::i;:::-;11449:74;;11553:27;11549:1;11544:3;11540:11;11533:48;11607:2;11602:3;11598:12;11591:19;;11439:177;;;:::o;11622:369::-;;11785:67;11849:2;11844:3;11785:67;:::i;:::-;11778:74;;11882:34;11878:1;11873:3;11869:11;11862:55;11948:7;11943:2;11938:3;11934:12;11927:29;11982:2;11977:3;11973:12;11966:19;;11768:223;;;:::o;11997:374::-;;12160:67;12224:2;12219:3;12160:67;:::i;:::-;12153:74;;12257:34;12253:1;12248:3;12244:11;12237:55;12323:12;12318:2;12313:3;12309:12;12302:34;12362:2;12357:3;12353:12;12346:19;;12143:228;;;:::o;12377:329::-;;12540:67;12604:2;12599:3;12540:67;:::i;:::-;12533:74;;12637:33;12633:1;12628:3;12624:11;12617:54;12697:2;12692:3;12688:12;12681:19;;12523:183;;;:::o;12712:115::-;12797:23;12814:5;12797:23;:::i;:::-;12792:3;12785:36;12775:52;;:::o;12833:129::-;12919:36;12949:5;12919:36;:::i;:::-;12914:3;12907:49;12897:65;;:::o;12968:118::-;13055:24;13073:5;13055:24;:::i;:::-;13050:3;13043:37;13033:53;;:::o;13092:271::-;;13244:93;13333:3;13324:6;13244:93;:::i;:::-;13237:100;;13354:3;13347:10;;13226:137;;;;:::o;13369:222::-;;13500:2;13489:9;13485:18;13477:26;;13513:71;13581:1;13570:9;13566:17;13557:6;13513:71;:::i;:::-;13467:124;;;;:::o;13597:442::-;;13784:2;13773:9;13769:18;13761:26;;13797:71;13865:1;13854:9;13850:17;13841:6;13797:71;:::i;:::-;13878:72;13946:2;13935:9;13931:18;13922:6;13878:72;:::i;:::-;13960;14028:2;14017:9;14013:18;14004:6;13960:72;:::i;:::-;13751:288;;;;;;:::o;14045:332::-;;14204:2;14193:9;14189:18;14181:26;;14217:71;14285:1;14274:9;14270:17;14261:6;14217:71;:::i;:::-;14298:72;14366:2;14355:9;14351:18;14342:6;14298:72;:::i;:::-;14171:206;;;;;:::o;14383:440::-;;14569:2;14558:9;14554:18;14546:26;;14582:71;14650:1;14639:9;14635:17;14626:6;14582:71;:::i;:::-;14663:72;14731:2;14720:9;14716:18;14707:6;14663:72;:::i;:::-;14745:71;14812:2;14801:9;14797:18;14788:6;14745:71;:::i;:::-;14536:287;;;;;;:::o;14829:210::-;;14954:2;14943:9;14939:18;14931:26;;14967:65;15029:1;15018:9;15014:17;15005:6;14967:65;:::i;:::-;14921:118;;;;:::o;15045:309::-;;15194:2;15183:9;15179:18;15171:26;;15243:9;15237:4;15233:20;15229:1;15218:9;15214:17;15207:47;15271:76;15342:4;15333:6;15271:76;:::i;:::-;15263:84;;15161:193;;;;:::o;15360:799::-;;15643:3;15632:9;15628:19;15620:27;;15657:85;15739:1;15728:9;15724:17;15715:6;15657:85;:::i;:::-;15752:72;15820:2;15809:9;15805:18;15796:6;15752:72;:::i;:::-;15834;15902:2;15891:9;15887:18;15878:6;15834:72;:::i;:::-;15916;15984:2;15973:9;15969:18;15960:6;15916:72;:::i;:::-;15998:71;16064:3;16053:9;16049:19;16040:6;15998:71;:::i;:::-;16079:73;16147:3;16136:9;16132:19;16123:6;16079:73;:::i;:::-;15610:549;;;;;;;;;:::o;16165:258::-;;16314:2;16303:9;16299:18;16291:26;;16327:89;16413:1;16402:9;16398:17;16389:6;16327:89;:::i;:::-;16281:142;;;;:::o;16429:313::-;;16580:2;16569:9;16565:18;16557:26;;16629:9;16623:4;16619:20;16615:1;16604:9;16600:17;16593:47;16657:78;16730:4;16721:6;16657:78;:::i;:::-;16649:86;;16547:195;;;;:::o;16748:419::-;;16952:2;16941:9;16937:18;16929:26;;17001:9;16995:4;16991:20;16987:1;16976:9;16972:17;16965:47;17029:131;17155:4;17029:131;:::i;:::-;17021:139;;16919:248;;;:::o;17173:419::-;;17377:2;17366:9;17362:18;17354:26;;17426:9;17420:4;17416:20;17412:1;17401:9;17397:17;17390:47;17454:131;17580:4;17454:131;:::i;:::-;17446:139;;17344:248;;;:::o;17598:419::-;;17802:2;17791:9;17787:18;17779:26;;17851:9;17845:4;17841:20;17837:1;17826:9;17822:17;17815:47;17879:131;18005:4;17879:131;:::i;:::-;17871:139;;17769:248;;;:::o;18023:419::-;;18227:2;18216:9;18212:18;18204:26;;18276:9;18270:4;18266:20;18262:1;18251:9;18247:17;18240:47;18304:131;18430:4;18304:131;:::i;:::-;18296:139;;18194:248;;;:::o;18448:419::-;;18652:2;18641:9;18637:18;18629:26;;18701:9;18695:4;18691:20;18687:1;18676:9;18672:17;18665:47;18729:131;18855:4;18729:131;:::i;:::-;18721:139;;18619:248;;;:::o;18873:419::-;;19077:2;19066:9;19062:18;19054:26;;19126:9;19120:4;19116:20;19112:1;19101:9;19097:17;19090:47;19154:131;19280:4;19154:131;:::i;:::-;19146:139;;19044:248;;;:::o;19298:419::-;;19502:2;19491:9;19487:18;19479:26;;19551:9;19545:4;19541:20;19537:1;19526:9;19522:17;19515:47;19579:131;19705:4;19579:131;:::i;:::-;19571:139;;19469:248;;;:::o;19723:419::-;;19927:2;19916:9;19912:18;19904:26;;19976:9;19970:4;19966:20;19962:1;19951:9;19947:17;19940:47;20004:131;20130:4;20004:131;:::i;:::-;19996:139;;19894:248;;;:::o;20148:419::-;;20352:2;20341:9;20337:18;20329:26;;20401:9;20395:4;20391:20;20387:1;20376:9;20372:17;20365:47;20429:131;20555:4;20429:131;:::i;:::-;20421:139;;20319:248;;;:::o;20573:419::-;;20777:2;20766:9;20762:18;20754:26;;20826:9;20820:4;20816:20;20812:1;20801:9;20797:17;20790:47;20854:131;20980:4;20854:131;:::i;:::-;20846:139;;20744:248;;;:::o;20998:419::-;;21202:2;21191:9;21187:18;21179:26;;21251:9;21245:4;21241:20;21237:1;21226:9;21222:17;21215:47;21279:131;21405:4;21279:131;:::i;:::-;21271:139;;21169:248;;;:::o;21423:419::-;;21627:2;21616:9;21612:18;21604:26;;21676:9;21670:4;21666:20;21662:1;21651:9;21647:17;21640:47;21704:131;21830:4;21704:131;:::i;:::-;21696:139;;21594:248;;;:::o;21848:419::-;;22052:2;22041:9;22037:18;22029:26;;22101:9;22095:4;22091:20;22087:1;22076:9;22072:17;22065:47;22129:131;22255:4;22129:131;:::i;:::-;22121:139;;22019:248;;;:::o;22273:419::-;;22477:2;22466:9;22462:18;22454:26;;22526:9;22520:4;22516:20;22512:1;22501:9;22497:17;22490:47;22554:131;22680:4;22554:131;:::i;:::-;22546:139;;22444:248;;;:::o;22698:419::-;;22902:2;22891:9;22887:18;22879:26;;22951:9;22945:4;22941:20;22937:1;22926:9;22922:17;22915:47;22979:131;23105:4;22979:131;:::i;:::-;22971:139;;22869:248;;;:::o;23123:419::-;;23327:2;23316:9;23312:18;23304:26;;23376:9;23370:4;23366:20;23362:1;23351:9;23347:17;23340:47;23404:131;23530:4;23404:131;:::i;:::-;23396:139;;23294:248;;;:::o;23548:419::-;;23752:2;23741:9;23737:18;23729:26;;23801:9;23795:4;23791:20;23787:1;23776:9;23772:17;23765:47;23829:131;23955:4;23829:131;:::i;:::-;23821:139;;23719:248;;;:::o;23973:419::-;;24177:2;24166:9;24162:18;24154:26;;24226:9;24220:4;24216:20;24212:1;24201:9;24197:17;24190:47;24254:131;24380:4;24254:131;:::i;:::-;24246:139;;24144:248;;;:::o;24398:222::-;;24529:2;24518:9;24514:18;24506:26;;24542:71;24610:1;24599:9;24595:17;24586:6;24542:71;:::i;:::-;24496:124;;;;:::o;24626:332::-;;24785:2;24774:9;24770:18;24762:26;;24798:71;24866:1;24855:9;24851:17;24842:6;24798:71;:::i;:::-;24879:72;24947:2;24936:9;24932:18;24923:6;24879:72;:::i;:::-;24752:206;;;;;:::o;24964:98::-;;25049:5;25043:12;25033:22;;25022:40;;;:::o;25068:99::-;;25154:5;25148:12;25138:22;;25127:40;;;:::o;25173:168::-;;25290:6;25285:3;25278:19;25330:4;25325:3;25321:14;25306:29;;25268:73;;;;:::o;25347:147::-;;25485:3;25470:18;;25460:34;;;;:::o;25500:169::-;;25618:6;25613:3;25606:19;25658:4;25653:3;25649:14;25634:29;;25596:73;;;;:::o;25675:305::-;;25734:20;25752:1;25734:20;:::i;:::-;25729:25;;25768:20;25786:1;25768:20;:::i;:::-;25763:25;;25922:1;25854:66;25850:74;25847:1;25844:81;25841:2;;;25928:18;;:::i;:::-;25841:2;25972:1;25969;25965:9;25958:16;;25719:261;;;;:::o;25986:185::-;;26043:20;26061:1;26043:20;:::i;:::-;26038:25;;26077:20;26095:1;26077:20;:::i;:::-;26072:25;;26116:1;26106:2;;26121:18;;:::i;:::-;26106:2;26163:1;26160;26156:9;26151:14;;26028:143;;;;:::o;26177:348::-;;26240:20;26258:1;26240:20;:::i;:::-;26235:25;;26274:20;26292:1;26274:20;:::i;:::-;26269:25;;26462:1;26394:66;26390:74;26387:1;26384:81;26379:1;26372:9;26365:17;26361:105;26358:2;;;26469:18;;:::i;:::-;26358:2;26517:1;26514;26510:9;26499:20;;26225:300;;;;:::o;26531:191::-;;26591:20;26609:1;26591:20;:::i;:::-;26586:25;;26625:20;26643:1;26625:20;:::i;:::-;26620:25;;26664:1;26661;26658:8;26655:2;;;26669:18;;:::i;:::-;26655:2;26714:1;26711;26707:9;26699:17;;26576:146;;;;:::o;26728:96::-;;26794:24;26812:5;26794:24;:::i;:::-;26783:35;;26773:51;;;:::o;26830:90::-;;26907:5;26900:13;26893:21;26882:32;;26872:48;;;:::o;26926:110::-;;27006:24;27024:5;27006:24;:::i;:::-;26995:35;;26985:51;;;:::o;27042:89::-;;27118:6;27111:5;27107:18;27096:29;;27086:45;;;:::o;27137:126::-;;27214:42;27207:5;27203:54;27192:65;;27182:81;;;:::o;27269:77::-;;27335:5;27324:16;;27314:32;;;:::o;27352:154::-;;27449:51;27494:5;27449:51;:::i;:::-;27436:64;;27426:80;;;:::o;27512:127::-;;27609:24;27627:5;27609:24;:::i;:::-;27596:37;;27586:53;;;:::o;27645:162::-;;27746:55;27795:5;27746:55;:::i;:::-;27733:68;;27723:84;;;:::o;27813:131::-;;27914:24;27932:5;27914:24;:::i;:::-;27901:37;;27891:53;;;:::o;27950:111::-;;28032:23;28049:5;28032:23;:::i;:::-;28019:36;;28009:52;;;:::o;28067:307::-;28135:1;28145:113;28159:6;28156:1;28153:13;28145:113;;;28244:1;28239:3;28235:11;28229:18;28225:1;28220:3;28216:11;28209:39;28181:2;28178:1;28174:10;28169:15;;28145:113;;;28276:6;28273:1;28270:13;28267:2;;;28356:1;28347:6;28342:3;28338:16;28331:27;28267:2;28116:258;;;;:::o;28380:233::-;;28442:24;28460:5;28442:24;:::i;:::-;28433:33;;28488:66;28481:5;28478:77;28475:2;;;28558:18;;:::i;:::-;28475:2;28605:1;28598:5;28594:13;28587:20;;28423:190;;;:::o;28619:180::-;28667:77;28664:1;28657:88;28764:4;28761:1;28754:15;28788:4;28785:1;28778:15;28805:180;28853:77;28850:1;28843:88;28950:4;28947:1;28940:15;28974:4;28971:1;28964:15;28991:102;;29083:2;29079:7;29074:2;29067:5;29063:14;29059:28;29049:38;;29039:54;;;:::o;29099:122::-;29172:24;29190:5;29172:24;:::i;:::-;29165:5;29162:35;29152:2;;29211:1;29208;29201:12;29152:2;29142:79;:::o;29227:116::-;29297:21;29312:5;29297:21;:::i;:::-;29290:5;29287:32;29277:2;;29333:1;29330;29323:12;29277:2;29267:76;:::o;29349:150::-;29436:38;29468:5;29436:38;:::i;:::-;29429:5;29426:49;29416:2;;29489:1;29486;29479:12;29416:2;29406:93;:::o;29505:120::-;29577:23;29594:5;29577:23;:::i;:::-;29570:5;29567:34;29557:2;;29615:1;29612;29605:12;29557:2;29547:78;:::o;29631:122::-;29704:24;29722:5;29704:24;:::i;:::-;29697:5;29694:35;29684:2;;29743:1;29740;29733:12;29684:2;29674:79;:::o
Swarm Source
ipfs://708236a5493ed3eb0404b7999d8be4bb9e185972f49e330d52784a52ef4337e8
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Validator ID :
0 FTM
Amount Staked
0
Amount Delegated
0
Staking Total
0
Staking Start Epoch
0
Staking Start Time
0
Proof of Importance
0
Origination Score
0
Validation Score
0
Active
0
Online
0
Downtime
0 s
Address | Amount | claimed Rewards | Created On Epoch | Created On |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.