More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 5 from a total of 5 transactions
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Einstein
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at cronoscan.com on 2024-05-30 */ // File: @openzeppelin/contracts/interfaces/draft-IERC6093.sol // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/draft-IERC6093.sol) pragma solidity ^0.8.20; /** * @dev Standard ERC20 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC20 tokens. */ interface IERC20Errors { /** * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. * @param balance Current balance for the interacting account. * @param needed Minimum amount required to perform a transfer. */ error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC20InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC20InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers. * @param spender Address that may be allowed to operate on tokens without being their owner. * @param allowance Amount of tokens a `spender` is allowed to operate with. * @param needed Minimum amount required to perform a transfer. */ error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC20InvalidApprover(address approver); /** * @dev Indicates a failure with the `spender` to be approved. Used in approvals. * @param spender Address that may be allowed to operate on tokens without being their owner. */ error ERC20InvalidSpender(address spender); } /** * @dev Standard ERC721 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC721 tokens. */ interface IERC721Errors { /** * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in EIP-20. * Used in balance queries. * @param owner Address of the current owner of a token. */ error ERC721InvalidOwner(address owner); /** * @dev Indicates a `tokenId` whose `owner` is the zero address. * @param tokenId Identifier number of a token. */ error ERC721NonexistentToken(uint256 tokenId); /** * @dev Indicates an error related to the ownership over a particular token. Used in transfers. * @param sender Address whose tokens are being transferred. * @param tokenId Identifier number of a token. * @param owner Address of the current owner of a token. */ error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC721InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC721InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `operator`’s approval. Used in transfers. * @param operator Address that may be allowed to operate on tokens without being their owner. * @param tokenId Identifier number of a token. */ error ERC721InsufficientApproval(address operator, uint256 tokenId); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC721InvalidApprover(address approver); /** * @dev Indicates a failure with the `operator` to be approved. Used in approvals. * @param operator Address that may be allowed to operate on tokens without being their owner. */ error ERC721InvalidOperator(address operator); } /** * @dev Standard ERC1155 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC1155 tokens. */ interface IERC1155Errors { /** * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. * @param balance Current balance for the interacting account. * @param needed Minimum amount required to perform a transfer. * @param tokenId Identifier number of a token. */ error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC1155InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC1155InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `operator`’s approval. Used in transfers. * @param operator Address that may be allowed to operate on tokens without being their owner. * @param owner Address of the current owner of a token. */ error ERC1155MissingApprovalForAll(address operator, address owner); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC1155InvalidApprover(address approver); /** * @dev Indicates a failure with the `operator` to be approved. Used in approvals. * @param operator Address that may be allowed to operate on tokens without being their owner. */ error ERC1155InvalidOperator(address operator); /** * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. * Used in batch transfers. * @param idsLength Length of the array of token identifiers * @param valuesLength Length of the array of token amounts */ error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength); } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; /** * @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. * * The initial owner is set to the address provided by the deployer. 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; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling 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 { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _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: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 value) 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 a `value` amount of tokens 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 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 value) external returns (bool); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.20; /** * @dev Interface for the optional metadata functions from the ERC20 standard. */ 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/token/ERC20/ERC20.sol // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.20; /** * @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}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * The default value of {decimals} is 18. To change this, you should override * this function so it returns a different value. * * 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. */ abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors { mapping(address account => uint256) private _balances; mapping(address account => mapping(address spender => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * 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 returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual 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 default value returned by this function, unless * it's 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 returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `value`. */ function transfer(address to, uint256 value) public virtual returns (bool) { address owner = _msgSender(); _transfer(owner, to, value); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 value) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, value); 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}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `value`. * - the caller must have allowance for ``from``'s tokens of at least * `value`. */ function transferFrom(address from, address to, uint256 value) public virtual returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, value); _transfer(from, to, value); return true; } /** * @dev Moves a `value` amount of tokens from `from` to `to`. * * 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. * * NOTE: This function is not virtual, {_update} should be overridden instead. */ function _transfer(address from, address to, uint256 value) internal { if (from == address(0)) { revert ERC20InvalidSender(address(0)); } if (to == address(0)) { revert ERC20InvalidReceiver(address(0)); } _update(from, to, value); } /** * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from` * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding * this function. * * Emits a {Transfer} event. */ function _update(address from, address to, uint256 value) internal virtual { if (from == address(0)) { // Overflow check required: The rest of the code assumes that totalSupply never overflows _totalSupply += value; } else { uint256 fromBalance = _balances[from]; if (fromBalance < value) { revert ERC20InsufficientBalance(from, fromBalance, value); } unchecked { // Overflow not possible: value <= fromBalance <= totalSupply. _balances[from] = fromBalance - value; } } if (to == address(0)) { unchecked { // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply. _totalSupply -= value; } } else { unchecked { // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256. _balances[to] += value; } } emit Transfer(from, to, value); } /** * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0). * Relies on the `_update` mechanism * * Emits a {Transfer} event with `from` set to the zero address. * * NOTE: This function is not virtual, {_update} should be overridden instead. */ function _mint(address account, uint256 value) internal { if (account == address(0)) { revert ERC20InvalidReceiver(address(0)); } _update(address(0), account, value); } /** * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply. * Relies on the `_update` mechanism. * * Emits a {Transfer} event with `to` set to the zero address. * * NOTE: This function is not virtual, {_update} should be overridden instead */ function _burn(address account, uint256 value) internal { if (account == address(0)) { revert ERC20InvalidSender(address(0)); } _update(account, address(0), value); } /** * @dev Sets `value` 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. * * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument. */ function _approve(address owner, address spender, uint256 value) internal { _approve(owner, spender, value, true); } /** * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event. * * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any * `Approval` event during `transferFrom` operations. * * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to * true using the following override: * ``` * function _approve(address owner, address spender, uint256 value, bool) internal virtual override { * super._approve(owner, spender, value, true); * } * ``` * * Requirements are the same as {_approve}. */ function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual { if (owner == address(0)) { revert ERC20InvalidApprover(address(0)); } if (spender == address(0)) { revert ERC20InvalidSpender(address(0)); } _allowances[owner][spender] = value; if (emitEvent) { emit Approval(owner, spender, value); } } /** * @dev Updates `owner` s allowance for `spender` based on spent `value`. * * Does not update the allowance value in case of infinite allowance. * Revert if not enough allowance is available. * * Does not emit an {Approval} event. */ function _spendAllowance(address owner, address spender, uint256 value) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { if (currentAllowance < value) { revert ERC20InsufficientAllowance(spender, currentAllowance, value); } unchecked { _approve(owner, spender, currentAllowance - value, false); } } } } // File: contracts/EIN.sol pragma solidity ^0.8.20; contract Einstein is ERC20, Ownable { uint256 public immutable totalEIN = 500000000000000 * (10 ** 18); uint256 public immutable saleEIN = totalEIN / 2; uint256 public CROcontributed = 0; mapping(address => uint256) public CROcontributions; uint256 public salestarttimestamp; uint256 public saleendtimestamp; uint256 public claimstarttimestamp; error salenotstarted(); error salealreadyended(); error claimnotstarted(); error nocontribution(); error invalidtimestamps(); error recipientsamountsmismatch(); event contributionupdated(address indexed contributor, uint256 amountcontributed, uint256 newCROcontributed); constructor() ERC20("Einstein", "EIN") Ownable(msg.sender) { _mint(address(this), totalEIN); } function setsaleperiod(uint256 _salestarttimestamp, uint256 _saleendtimestamp) public onlyOwner { if (_salestarttimestamp >= _saleendtimestamp) revert invalidtimestamps(); salestarttimestamp = _salestarttimestamp; saleendtimestamp = _saleendtimestamp; } function setclaimstarttimestamp(uint256 _claimstarttimestamp) public onlyOwner { if (_claimstarttimestamp <= saleendtimestamp) revert invalidtimestamps(); claimstarttimestamp = _claimstarttimestamp; } function ein() public payable { if (block.timestamp > saleendtimestamp) revert salealreadyended(); if (block.timestamp < salestarttimestamp) revert salenotstarted(); CROcontributions[msg.sender] += msg.value; CROcontributed += msg.value; emit contributionupdated(msg.sender, msg.value, CROcontributed); } function claim() public { if (block.timestamp < claimstarttimestamp) revert claimnotstarted(); uint256 contribution = CROcontributions[msg.sender]; if (contribution == 0) revert nocontribution(); uint256 claimableamount = (contribution * saleEIN) / CROcontributed; CROcontributions[msg.sender] = 0; _transfer(address(this), msg.sender, claimableamount); } function withdrawCRO(uint256 amount, address receiver) public onlyOwner { (bool ok, ) = payable(receiver).call{value: amount}(""); if (!ok) revert nocontribution(); } function einstein(address[] memory recipients, uint256[] memory amounts) public onlyOwner { if (recipients.length != amounts.length) revert recipientsamountsmismatch(); for (uint256 i = 0; i < recipients.length; i++) { _transfer(address(this), recipients[i], amounts[i]); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"claimnotstarted","type":"error"},{"inputs":[],"name":"invalidtimestamps","type":"error"},{"inputs":[],"name":"nocontribution","type":"error"},{"inputs":[],"name":"recipientsamountsmismatch","type":"error"},{"inputs":[],"name":"salealreadyended","type":"error"},{"inputs":[],"name":"salenotstarted","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contributor","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountcontributed","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newCROcontributed","type":"uint256"}],"name":"contributionupdated","type":"event"},{"inputs":[],"name":"CROcontributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"CROcontributions","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimstarttimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ein","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"einstein","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleEIN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleendtimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"salestarttimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_claimstarttimestamp","type":"uint256"}],"name":"setclaimstarttimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_salestarttimestamp","type":"uint256"},{"internalType":"uint256","name":"_saleendtimestamp","type":"uint256"}],"name":"setsaleperiod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalEIN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"withdrawCRO","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c06040526d18a6e32246c99c60ad850000000060809081525060026080516100289190610543565b60a090815250600060065534801561003f57600080fd5b50336040518060400160405280600881526020017f45696e737465696e0000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f45494e000000000000000000000000000000000000000000000000000000000081525081600390816100bc91906107ba565b5080600490816100cc91906107ba565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101415760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161013891906108cd565b60405180910390fd5b6101508161016860201b60201c565b506101633060805161022e60201b60201c565b61097d565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036102a05760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161029791906108cd565b60405180910390fd5b6102b2600083836102b660201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036103085780600260008282546102fc91906108e8565b925050819055506103db565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610394578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161038b9392919061092b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036104245780600260008282540392505081905550610471565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516104ce9190610962565b60405180910390a3505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061054e826104db565b9150610559836104db565b925082610569576105686104e5565b5b828204905092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806105f557607f821691505b602082108103610608576106076105ae565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026106707fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610633565b61067a8683610633565b95508019841693508086168417925050509392505050565b6000819050919050565b60006106b76106b26106ad846104db565b610692565b6104db565b9050919050565b6000819050919050565b6106d18361069c565b6106e56106dd826106be565b848454610640565b825550505050565b600090565b6106fa6106ed565b6107058184846106c8565b505050565b5b818110156107295761071e6000826106f2565b60018101905061070b565b5050565b601f82111561076e5761073f8161060e565b61074884610623565b81016020851015610757578190505b61076b61076385610623565b83018261070a565b50505b505050565b600082821c905092915050565b600061079160001984600802610773565b1980831691505092915050565b60006107aa8383610780565b9150826002028217905092915050565b6107c382610574565b67ffffffffffffffff8111156107dc576107db61057f565b5b6107e682546105dd565b6107f182828561072d565b600060209050601f8311600181146108245760008415610812578287015190505b61081c858261079e565b865550610884565b601f1984166108328661060e565b60005b8281101561085a57848901518255600182019150602085019450602081019050610835565b868310156108775784890151610873601f891682610780565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006108b78261088c565b9050919050565b6108c7816108ac565b82525050565b60006020820190506108e260008301846108be565b92915050565b60006108f3826104db565b91506108fe836104db565b925082820190508082111561091657610915610514565b5b92915050565b610925816104db565b82525050565b600060608201905061094060008301866108be565b61094d602083018561091c565b61095a604083018461091c565b949350505050565b6000602082019050610977600083018461091c565b92915050565b60805160a051611d8a6109a9600039600081816109b30152610cb501526000610b410152611d8a6000f3fe6080604052600436106101665760003560e01c806370a08231116100d1578063a667c89a1161008a578063b12ecfe211610064578063b12ecfe2146104e9578063b63d6eec14610526578063dd62ed3e14610551578063f2fde38b1461058e57610166565b8063a667c89a14610456578063a6e304bd14610481578063a9059cbb146104ac57610166565b806370a0823114610358578063715018a614610395578063807bfd2a146103ac5780638da5cb5b146103d75780638eff2ed51461040257806395d89b411461042b57610166565b8063313ce56711610123578063313ce5671461026e57806334cd68f714610299578063424f7927146102c45780634e71d92d146102ed57806363a5bbbc1461030457806363fa74821461032f57610166565b806306fdde031461016b578063095ea7b3146101965780630e34b892146101d357806318160ddd146101dd578063227824241461020857806323b872dd14610231575b600080fd5b34801561017757600080fd5b506101806105b7565b60405161018d919061155f565b60405180910390f35b3480156101a257600080fd5b506101bd60048036038101906101b89190611629565b610649565b6040516101ca9190611684565b60405180910390f35b6101db61066c565b005b3480156101e957600080fd5b506101f26107a7565b6040516101ff91906116ae565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a91906116c9565b6107b1565b005b34801561023d57600080fd5b5061025860048036038101906102539190611709565b610861565b6040516102659190611684565b60405180910390f35b34801561027a57600080fd5b50610283610890565b6040516102909190611778565b60405180910390f35b3480156102a557600080fd5b506102ae610899565b6040516102bb91906116ae565b60405180910390f35b3480156102d057600080fd5b506102eb60048036038101906102e69190611793565b61089f565b005b3480156102f957600080fd5b506103026108f2565b005b34801561031057600080fd5b50610319610a3d565b60405161032691906116ae565b60405180910390f35b34801561033b57600080fd5b50610356600480360381019061035191906119de565b610a43565b005b34801561036457600080fd5b5061037f600480360381019061037a9190611a56565b610ae3565b60405161038c91906116ae565b60405180910390f35b3480156103a157600080fd5b506103aa610b2b565b005b3480156103b857600080fd5b506103c1610b3f565b6040516103ce91906116ae565b60405180910390f35b3480156103e357600080fd5b506103ec610b63565b6040516103f99190611a92565b60405180910390f35b34801561040e57600080fd5b5061042960048036038101906104249190611aad565b610b8d565b005b34801561043757600080fd5b50610440610bda565b60405161044d919061155f565b60405180910390f35b34801561046257600080fd5b5061046b610c6c565b60405161047891906116ae565b60405180910390f35b34801561048d57600080fd5b50610496610c72565b6040516104a391906116ae565b60405180910390f35b3480156104b857600080fd5b506104d360048036038101906104ce9190611629565b610c78565b6040516104e09190611684565b60405180910390f35b3480156104f557600080fd5b50610510600480360381019061050b9190611a56565b610c9b565b60405161051d91906116ae565b60405180910390f35b34801561053257600080fd5b5061053b610cb3565b60405161054891906116ae565b60405180910390f35b34801561055d57600080fd5b5061057860048036038101906105739190611ada565b610cd7565b60405161058591906116ae565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b09190611a56565b610d5e565b005b6060600380546105c690611b49565b80601f01602080910402602001604051908101604052809291908181526020018280546105f290611b49565b801561063f5780601f106106145761010080835404028352916020019161063f565b820191906000526020600020905b81548152906001019060200180831161062257829003601f168201915b5050505050905090565b600080610654610de4565b9050610661818585610dec565b600191505092915050565b6009544211156106a8576040517f0d5b901f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6008544210156106e4576040517faea79ffc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107339190611ba9565b92505081905550346006600082825461074c9190611ba9565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f9fffcead843607e6e2b2a06430a36bc8bf6eb85a44bb3a3e21e27c7f4980e2863460065460405161079d929190611bdd565b60405180910390a2565b6000600254905090565b6107b9610dfe565b60008173ffffffffffffffffffffffffffffffffffffffff16836040516107df90611c37565b60006040518083038185875af1925050503d806000811461081c576040519150601f19603f3d011682016040523d82523d6000602084013e610821565b606091505b505090508061085c576040517f7c6a2d5500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60008061086c610de4565b9050610879858285610e85565b610884858585610f19565b60019150509392505050565b60006012905090565b60095481565b6108a7610dfe565b8082106108e0576040517fbf6aae6a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600881905550806009819055505050565b600a5442101561092e576040517fe7ff2d8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081036109ac576040517f7c6a2d5500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006006547f0000000000000000000000000000000000000000000000000000000000000000836109dd9190611c4c565b6109e79190611cbd565b90506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a39303383610f19565b5050565b600a5481565b610a4b610dfe565b8051825114610a86576040517f543fbc9d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610ade57610ad130848381518110610aa957610aa8611cee565b5b6020026020010151848481518110610ac457610ac3611cee565b5b6020026020010151610f19565b8080600101915050610a89565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b33610dfe565b610b3d600061100d565b565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b95610dfe565b6009548111610bd0576040517fbf6aae6a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600a8190555050565b606060048054610be990611b49565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1590611b49565b8015610c625780601f10610c3757610100808354040283529160200191610c62565b820191906000526020600020905b815481529060010190602001808311610c4557829003601f168201915b5050505050905090565b60065481565b60085481565b600080610c83610de4565b9050610c90818585610f19565b600191505092915050565b60076020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d66610dfe565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610dd85760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610dcf9190611a92565b60405180910390fd5b610de18161100d565b50565b600033905090565b610df983838360016110d3565b505050565b610e06610de4565b73ffffffffffffffffffffffffffffffffffffffff16610e24610b63565b73ffffffffffffffffffffffffffffffffffffffff1614610e8357610e47610de4565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610e7a9190611a92565b60405180910390fd5b565b6000610e918484610cd7565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f135781811015610f03578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610efa93929190611d1d565b60405180910390fd5b610f12848484840360006110d3565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f8b5760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610f829190611a92565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ffd5760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610ff49190611a92565b60405180910390fd5b6110088383836112aa565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036111455760006040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161113c9190611a92565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111b75760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016111ae9190611a92565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080156112a4578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161129b91906116ae565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112fc5780600260008282546112f09190611ba9565b925050819055506113cf565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611388578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161137f93929190611d1d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114185780600260008282540392505081905550611465565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114c291906116ae565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156115095780820151818401526020810190506114ee565b60008484015250505050565b6000601f19601f8301169050919050565b6000611531826114cf565b61153b81856114da565b935061154b8185602086016114eb565b61155481611515565b840191505092915050565b600060208201905081810360008301526115798184611526565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115c082611595565b9050919050565b6115d0816115b5565b81146115db57600080fd5b50565b6000813590506115ed816115c7565b92915050565b6000819050919050565b611606816115f3565b811461161157600080fd5b50565b600081359050611623816115fd565b92915050565b600080604083850312156116405761163f61158b565b5b600061164e858286016115de565b925050602061165f85828601611614565b9150509250929050565b60008115159050919050565b61167e81611669565b82525050565b60006020820190506116996000830184611675565b92915050565b6116a8816115f3565b82525050565b60006020820190506116c3600083018461169f565b92915050565b600080604083850312156116e0576116df61158b565b5b60006116ee85828601611614565b92505060206116ff858286016115de565b9150509250929050565b6000806000606084860312156117225761172161158b565b5b6000611730868287016115de565b9350506020611741868287016115de565b925050604061175286828701611614565b9150509250925092565b600060ff82169050919050565b6117728161175c565b82525050565b600060208201905061178d6000830184611769565b92915050565b600080604083850312156117aa576117a961158b565b5b60006117b885828601611614565b92505060206117c985828601611614565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61181082611515565b810181811067ffffffffffffffff8211171561182f5761182e6117d8565b5b80604052505050565b6000611842611581565b905061184e8282611807565b919050565b600067ffffffffffffffff82111561186e5761186d6117d8565b5b602082029050602081019050919050565b600080fd5b600061189761189284611853565b611838565b905080838252602082019050602084028301858111156118ba576118b961187f565b5b835b818110156118e357806118cf88826115de565b8452602084019350506020810190506118bc565b5050509392505050565b600082601f830112611902576119016117d3565b5b8135611912848260208601611884565b91505092915050565b600067ffffffffffffffff821115611936576119356117d8565b5b602082029050602081019050919050565b600061195a6119558461191b565b611838565b9050808382526020820190506020840283018581111561197d5761197c61187f565b5b835b818110156119a657806119928882611614565b84526020840193505060208101905061197f565b5050509392505050565b600082601f8301126119c5576119c46117d3565b5b81356119d5848260208601611947565b91505092915050565b600080604083850312156119f5576119f461158b565b5b600083013567ffffffffffffffff811115611a1357611a12611590565b5b611a1f858286016118ed565b925050602083013567ffffffffffffffff811115611a4057611a3f611590565b5b611a4c858286016119b0565b9150509250929050565b600060208284031215611a6c57611a6b61158b565b5b6000611a7a848285016115de565b91505092915050565b611a8c816115b5565b82525050565b6000602082019050611aa76000830184611a83565b92915050565b600060208284031215611ac357611ac261158b565b5b6000611ad184828501611614565b91505092915050565b60008060408385031215611af157611af061158b565b5b6000611aff858286016115de565b9250506020611b10858286016115de565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611b6157607f821691505b602082108103611b7457611b73611b1a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611bb4826115f3565b9150611bbf836115f3565b9250828201905080821115611bd757611bd6611b7a565b5b92915050565b6000604082019050611bf2600083018561169f565b611bff602083018461169f565b9392505050565b600081905092915050565b50565b6000611c21600083611c06565b9150611c2c82611c11565b600082019050919050565b6000611c4282611c14565b9150819050919050565b6000611c57826115f3565b9150611c62836115f3565b9250828202611c70816115f3565b91508282048414831517611c8757611c86611b7a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611cc8826115f3565b9150611cd3836115f3565b925082611ce357611ce2611c8e565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000606082019050611d326000830186611a83565b611d3f602083018561169f565b611d4c604083018461169f565b94935050505056fea26469706673582212201cb63f73817089e94525b8085448a1f69fa3e53e615efed2389f807242e7718564736f6c634300081a0033
Deployed Bytecode
0x6080604052600436106101665760003560e01c806370a08231116100d1578063a667c89a1161008a578063b12ecfe211610064578063b12ecfe2146104e9578063b63d6eec14610526578063dd62ed3e14610551578063f2fde38b1461058e57610166565b8063a667c89a14610456578063a6e304bd14610481578063a9059cbb146104ac57610166565b806370a0823114610358578063715018a614610395578063807bfd2a146103ac5780638da5cb5b146103d75780638eff2ed51461040257806395d89b411461042b57610166565b8063313ce56711610123578063313ce5671461026e57806334cd68f714610299578063424f7927146102c45780634e71d92d146102ed57806363a5bbbc1461030457806363fa74821461032f57610166565b806306fdde031461016b578063095ea7b3146101965780630e34b892146101d357806318160ddd146101dd578063227824241461020857806323b872dd14610231575b600080fd5b34801561017757600080fd5b506101806105b7565b60405161018d919061155f565b60405180910390f35b3480156101a257600080fd5b506101bd60048036038101906101b89190611629565b610649565b6040516101ca9190611684565b60405180910390f35b6101db61066c565b005b3480156101e957600080fd5b506101f26107a7565b6040516101ff91906116ae565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a91906116c9565b6107b1565b005b34801561023d57600080fd5b5061025860048036038101906102539190611709565b610861565b6040516102659190611684565b60405180910390f35b34801561027a57600080fd5b50610283610890565b6040516102909190611778565b60405180910390f35b3480156102a557600080fd5b506102ae610899565b6040516102bb91906116ae565b60405180910390f35b3480156102d057600080fd5b506102eb60048036038101906102e69190611793565b61089f565b005b3480156102f957600080fd5b506103026108f2565b005b34801561031057600080fd5b50610319610a3d565b60405161032691906116ae565b60405180910390f35b34801561033b57600080fd5b50610356600480360381019061035191906119de565b610a43565b005b34801561036457600080fd5b5061037f600480360381019061037a9190611a56565b610ae3565b60405161038c91906116ae565b60405180910390f35b3480156103a157600080fd5b506103aa610b2b565b005b3480156103b857600080fd5b506103c1610b3f565b6040516103ce91906116ae565b60405180910390f35b3480156103e357600080fd5b506103ec610b63565b6040516103f99190611a92565b60405180910390f35b34801561040e57600080fd5b5061042960048036038101906104249190611aad565b610b8d565b005b34801561043757600080fd5b50610440610bda565b60405161044d919061155f565b60405180910390f35b34801561046257600080fd5b5061046b610c6c565b60405161047891906116ae565b60405180910390f35b34801561048d57600080fd5b50610496610c72565b6040516104a391906116ae565b60405180910390f35b3480156104b857600080fd5b506104d360048036038101906104ce9190611629565b610c78565b6040516104e09190611684565b60405180910390f35b3480156104f557600080fd5b50610510600480360381019061050b9190611a56565b610c9b565b60405161051d91906116ae565b60405180910390f35b34801561053257600080fd5b5061053b610cb3565b60405161054891906116ae565b60405180910390f35b34801561055d57600080fd5b5061057860048036038101906105739190611ada565b610cd7565b60405161058591906116ae565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b09190611a56565b610d5e565b005b6060600380546105c690611b49565b80601f01602080910402602001604051908101604052809291908181526020018280546105f290611b49565b801561063f5780601f106106145761010080835404028352916020019161063f565b820191906000526020600020905b81548152906001019060200180831161062257829003601f168201915b5050505050905090565b600080610654610de4565b9050610661818585610dec565b600191505092915050565b6009544211156106a8576040517f0d5b901f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6008544210156106e4576040517faea79ffc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107339190611ba9565b92505081905550346006600082825461074c9190611ba9565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f9fffcead843607e6e2b2a06430a36bc8bf6eb85a44bb3a3e21e27c7f4980e2863460065460405161079d929190611bdd565b60405180910390a2565b6000600254905090565b6107b9610dfe565b60008173ffffffffffffffffffffffffffffffffffffffff16836040516107df90611c37565b60006040518083038185875af1925050503d806000811461081c576040519150601f19603f3d011682016040523d82523d6000602084013e610821565b606091505b505090508061085c576040517f7c6a2d5500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60008061086c610de4565b9050610879858285610e85565b610884858585610f19565b60019150509392505050565b60006012905090565b60095481565b6108a7610dfe565b8082106108e0576040517fbf6aae6a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600881905550806009819055505050565b600a5442101561092e576040517fe7ff2d8900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081036109ac576040517f7c6a2d5500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006006547f0000000000000000000000000000000000000c5371912364ce3056c280000000836109dd9190611c4c565b6109e79190611cbd565b90506000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610a39303383610f19565b5050565b600a5481565b610a4b610dfe565b8051825114610a86576040517f543fbc9d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610ade57610ad130848381518110610aa957610aa8611cee565b5b6020026020010151848481518110610ac457610ac3611cee565b5b6020026020010151610f19565b8080600101915050610a89565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b33610dfe565b610b3d600061100d565b565b7f00000000000000000000000000000000000018a6e32246c99c60ad850000000081565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b95610dfe565b6009548111610bd0576040517fbf6aae6a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600a8190555050565b606060048054610be990611b49565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1590611b49565b8015610c625780601f10610c3757610100808354040283529160200191610c62565b820191906000526020600020905b815481529060010190602001808311610c4557829003601f168201915b5050505050905090565b60065481565b60085481565b600080610c83610de4565b9050610c90818585610f19565b600191505092915050565b60076020528060005260406000206000915090505481565b7f0000000000000000000000000000000000000c5371912364ce3056c28000000081565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d66610dfe565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610dd85760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610dcf9190611a92565b60405180910390fd5b610de18161100d565b50565b600033905090565b610df983838360016110d3565b505050565b610e06610de4565b73ffffffffffffffffffffffffffffffffffffffff16610e24610b63565b73ffffffffffffffffffffffffffffffffffffffff1614610e8357610e47610de4565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610e7a9190611a92565b60405180910390fd5b565b6000610e918484610cd7565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f135781811015610f03578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610efa93929190611d1d565b60405180910390fd5b610f12848484840360006110d3565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f8b5760006040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610f829190611a92565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ffd5760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610ff49190611a92565b60405180910390fd5b6110088383836112aa565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036111455760006040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161113c9190611a92565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111b75760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016111ae9190611a92565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080156112a4578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161129b91906116ae565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112fc5780600260008282546112f09190611ba9565b925050819055506113cf565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611388578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161137f93929190611d1d565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114185780600260008282540392505081905550611465565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516114c291906116ae565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156115095780820151818401526020810190506114ee565b60008484015250505050565b6000601f19601f8301169050919050565b6000611531826114cf565b61153b81856114da565b935061154b8185602086016114eb565b61155481611515565b840191505092915050565b600060208201905081810360008301526115798184611526565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115c082611595565b9050919050565b6115d0816115b5565b81146115db57600080fd5b50565b6000813590506115ed816115c7565b92915050565b6000819050919050565b611606816115f3565b811461161157600080fd5b50565b600081359050611623816115fd565b92915050565b600080604083850312156116405761163f61158b565b5b600061164e858286016115de565b925050602061165f85828601611614565b9150509250929050565b60008115159050919050565b61167e81611669565b82525050565b60006020820190506116996000830184611675565b92915050565b6116a8816115f3565b82525050565b60006020820190506116c3600083018461169f565b92915050565b600080604083850312156116e0576116df61158b565b5b60006116ee85828601611614565b92505060206116ff858286016115de565b9150509250929050565b6000806000606084860312156117225761172161158b565b5b6000611730868287016115de565b9350506020611741868287016115de565b925050604061175286828701611614565b9150509250925092565b600060ff82169050919050565b6117728161175c565b82525050565b600060208201905061178d6000830184611769565b92915050565b600080604083850312156117aa576117a961158b565b5b60006117b885828601611614565b92505060206117c985828601611614565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61181082611515565b810181811067ffffffffffffffff8211171561182f5761182e6117d8565b5b80604052505050565b6000611842611581565b905061184e8282611807565b919050565b600067ffffffffffffffff82111561186e5761186d6117d8565b5b602082029050602081019050919050565b600080fd5b600061189761189284611853565b611838565b905080838252602082019050602084028301858111156118ba576118b961187f565b5b835b818110156118e357806118cf88826115de565b8452602084019350506020810190506118bc565b5050509392505050565b600082601f830112611902576119016117d3565b5b8135611912848260208601611884565b91505092915050565b600067ffffffffffffffff821115611936576119356117d8565b5b602082029050602081019050919050565b600061195a6119558461191b565b611838565b9050808382526020820190506020840283018581111561197d5761197c61187f565b5b835b818110156119a657806119928882611614565b84526020840193505060208101905061197f565b5050509392505050565b600082601f8301126119c5576119c46117d3565b5b81356119d5848260208601611947565b91505092915050565b600080604083850312156119f5576119f461158b565b5b600083013567ffffffffffffffff811115611a1357611a12611590565b5b611a1f858286016118ed565b925050602083013567ffffffffffffffff811115611a4057611a3f611590565b5b611a4c858286016119b0565b9150509250929050565b600060208284031215611a6c57611a6b61158b565b5b6000611a7a848285016115de565b91505092915050565b611a8c816115b5565b82525050565b6000602082019050611aa76000830184611a83565b92915050565b600060208284031215611ac357611ac261158b565b5b6000611ad184828501611614565b91505092915050565b60008060408385031215611af157611af061158b565b5b6000611aff858286016115de565b9250506020611b10858286016115de565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611b6157607f821691505b602082108103611b7457611b73611b1a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611bb4826115f3565b9150611bbf836115f3565b9250828201905080821115611bd757611bd6611b7a565b5b92915050565b6000604082019050611bf2600083018561169f565b611bff602083018461169f565b9392505050565b600081905092915050565b50565b6000611c21600083611c06565b9150611c2c82611c11565b600082019050919050565b6000611c4282611c14565b9150819050919050565b6000611c57826115f3565b9150611c62836115f3565b9250828202611c70816115f3565b91508282048414831517611c8757611c86611b7a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611cc8826115f3565b9150611cd3836115f3565b925082611ce357611ce2611c8e565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000606082019050611d326000830186611a83565b611d3f602083018561169f565b611d4c604083018461169f565b94935050505056fea26469706673582212201cb63f73817089e94525b8085448a1f69fa3e53e615efed2389f807242e7718564736f6c634300081a0033
Deployed Bytecode Sourcemap
25765:2651:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16371:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18664:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27105:356;;;:::i;:::-;;17473:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27894:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19432:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17324:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26074:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26581:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27469:417;;;;;;;;;;;;;:::i;:::-;;26112:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28091:322;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17635:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9984:103;;;;;;;;;;;;;:::i;:::-;;25808:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9309:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26874:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16581:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25934:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26034;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17958:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25974:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25879:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18203:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10242:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16371:91;16416:13;16449:5;16442:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16371:91;:::o;18664:190::-;18737:4;18754:13;18770:12;:10;:12::i;:::-;18754:28;;18793:31;18802:5;18809:7;18818:5;18793:8;:31::i;:::-;18842:4;18835:11;;;18664:190;;;;:::o;27105:356::-;27168:16;;27150:15;:34;27146:65;;;27193:18;;;;;;;;;;;;;;27146:65;27244:18;;27226:15;:36;27222:65;;;27271:16;;;;;;;;;;;;;;27222:65;27330:9;27298:16;:28;27315:10;27298:28;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;27368:9;27350:14;;:27;;;;;;;:::i;:::-;;;;;;;;27415:10;27395:58;;;27427:9;27438:14;;27395:58;;;;;;;:::i;:::-;;;;;;;;27105:356::o;17473:99::-;17525:7;17552:12;;17545:19;;17473:99;:::o;27894:189::-;9195:13;:11;:13::i;:::-;27978:7:::1;27999:8;27991:22;;28021:6;27991:41;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27977:55;;;28048:2;28043:32;;28059:16;;;;;;;;;;;;;;28043:32;27966:117;27894:189:::0;;:::o;19432:249::-;19519:4;19536:15;19554:12;:10;:12::i;:::-;19536:30;;19577:37;19593:4;19599:7;19608:5;19577:15;:37::i;:::-;19625:26;19635:4;19641:2;19645:5;19625:9;:26::i;:::-;19669:4;19662:11;;;19432:249;;;;;:::o;17324:84::-;17373:5;17398:2;17391:9;;17324:84;:::o;26074:31::-;;;;:::o;26581:285::-;9195:13;:11;:13::i;:::-;26715:17:::1;26692:19;:40;26688:72;;26741:19;;;;;;;;;;;;;;26688:72;26792:19;26771:18;:40;;;;26841:17;26822:16;:36;;;;26581:285:::0;;:::o;27469:417::-;27526:19;;27508:15;:37;27504:67;;;27554:17;;;;;;;;;;;;;;27504:67;27582:20;27605:16;:28;27622:10;27605:28;;;;;;;;;;;;;;;;27582:51;;27664:1;27648:12;:17;27644:46;;27674:16;;;;;;;;;;;;;;27644:46;27703:23;27756:14;;27745:7;27730:12;:22;;;;:::i;:::-;27729:41;;;;:::i;:::-;27703:67;;27812:1;27781:16;:28;27798:10;27781:28;;;;;;;;;;;;;;;:32;;;;27825:53;27843:4;27850:10;27862:15;27825:9;:53::i;:::-;27493:393;;27469:417::o;26112:34::-;;;;:::o;28091:322::-;9195:13;:11;:13::i;:::-;28217:7:::1;:14;28196:10;:17;:35;28192:75;;28240:27;;;;;;;;;;;;;;28192:75;28285:9;28280:126;28304:10;:17;28300:1;:21;28280:126;;;28343:51;28361:4;28368:10;28379:1;28368:13;;;;;;;;:::i;:::-;;;;;;;;28383:7;28391:1;28383:10;;;;;;;;:::i;:::-;;;;;;;;28343:9;:51::i;:::-;28323:3;;;;;;;28280:126;;;;28091:322:::0;;:::o;17635:118::-;17700:7;17727:9;:18;17737:7;17727:18;;;;;;;;;;;;;;;;17720:25;;17635:118;;;:::o;9984:103::-;9195:13;:11;:13::i;:::-;10049:30:::1;10076:1;10049:18;:30::i;:::-;9984:103::o:0;25808:64::-;;;:::o;9309:87::-;9355:7;9382:6;;;;;;;;;;;9375:13;;9309:87;:::o;26874:223::-;9195:13;:11;:13::i;:::-;26992:16:::1;;26968:20;:40;26964:72;;27017:19;;;;;;;;;;;;;;26964:72;27069:20;27047:19;:42;;;;26874:223:::0;:::o;16581:95::-;16628:13;16661:7;16654:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16581:95;:::o;25934:33::-;;;;:::o;26034:::-;;;;:::o;17958:182::-;18027:4;18044:13;18060:12;:10;:12::i;:::-;18044:28;;18083:27;18093:5;18100:2;18104:5;18083:9;:27::i;:::-;18128:4;18121:11;;;17958:182;;;;:::o;25974:51::-;;;;;;;;;;;;;;;;;:::o;25879:47::-;;;:::o;18203:142::-;18283:7;18310:11;:18;18322:5;18310:18;;;;;;;;;;;;;;;:27;18329:7;18310:27;;;;;;;;;;;;;;;;18303:34;;18203:142;;;;:::o;10242:220::-;9195:13;:11;:13::i;:::-;10347:1:::1;10327:22;;:8;:22;;::::0;10323:93:::1;;10401:1;10373:31;;;;;;;;;;;:::i;:::-;;;;;;;;10323:93;10426:28;10445:8;10426:18;:28::i;:::-;10242:220:::0;:::o;7425:98::-;7478:7;7505:10;7498:17;;7425:98;:::o;23491:130::-;23576:37;23585:5;23592:7;23601:5;23608:4;23576:8;:37::i;:::-;23491:130;;;:::o;9474:166::-;9545:12;:10;:12::i;:::-;9534:23;;:7;:5;:7::i;:::-;:23;;;9530:103;;9608:12;:10;:12::i;:::-;9581:40;;;;;;;;;;;:::i;:::-;;;;;;;;9530:103;9474:166::o;25207:487::-;25307:24;25334:25;25344:5;25351:7;25334:9;:25::i;:::-;25307:52;;25394:17;25374:16;:37;25370:317;;25451:5;25432:16;:24;25428:132;;;25511:7;25520:16;25538:5;25484:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;25428:132;25603:57;25612:5;25619:7;25647:5;25628:16;:24;25654:5;25603:8;:57::i;:::-;25370:317;25296:398;25207:487;;;:::o;20066:308::-;20166:1;20150:18;;:4;:18;;;20146:88;;20219:1;20192:30;;;;;;;;;;;:::i;:::-;;;;;;;;20146:88;20262:1;20248:16;;:2;:16;;;20244:88;;20317:1;20288:32;;;;;;;;;;;:::i;:::-;;;;;;;;20244:88;20342:24;20350:4;20356:2;20360:5;20342:7;:24::i;:::-;20066:308;;;:::o;10622:191::-;10696:16;10715:6;;;;;;;;;;;10696:25;;10741:8;10732:6;;:17;;;;;;;;;;;;;;;;;;10796:8;10765:40;;10786:8;10765:40;;;;;;;;;;;;10685:128;10622:191;:::o;24472:443::-;24602:1;24585:19;;:5;:19;;;24581:91;;24657:1;24628:32;;;;;;;;;;;:::i;:::-;;;;;;;;24581:91;24705:1;24686:21;;:7;:21;;;24682:92;;24759:1;24731:31;;;;;;;;;;;:::i;:::-;;;;;;;;24682:92;24814:5;24784:11;:18;24796:5;24784:18;;;;;;;;;;;;;;;:27;24803:7;24784:27;;;;;;;;;;;;;;;:35;;;;24834:9;24830:78;;;24881:7;24865:31;;24874:5;24865:31;;;24890:5;24865:31;;;;;;:::i;:::-;;;;;;;;24830:78;24472:443;;;;:::o;20698:1135::-;20804:1;20788:18;;:4;:18;;;20784:552;;20942:5;20926:12;;:21;;;;;;;:::i;:::-;;;;;;;;20784:552;;;20980:19;21002:9;:15;21012:4;21002:15;;;;;;;;;;;;;;;;20980:37;;21050:5;21036:11;:19;21032:117;;;21108:4;21114:11;21127:5;21083:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;21032:117;21304:5;21290:11;:19;21272:9;:15;21282:4;21272:15;;;;;;;;;;;;;;;:37;;;;20965:371;20784:552;21366:1;21352:16;;:2;:16;;;21348:435;;21534:5;21518:12;;:21;;;;;;;;;;;21348:435;;;21751:5;21734:9;:13;21744:2;21734:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;21348:435;21815:2;21800:25;;21809:4;21800:25;;;21819:5;21800:25;;;;;;:::i;:::-;;;;;;;;20698:1135;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:248::-;369:1;379:113;393:6;390:1;387:13;379:113;;;478:1;473:3;469:11;463:18;459:1;454:3;450:11;443:39;415:2;412:1;408:10;403:15;;379:113;;;526:1;517:6;512:3;508:16;501:27;349:186;287:248;;;:::o;541:102::-;582:6;633:2;629:7;624:2;617:5;613:14;609:28;599:38;;541:102;;;:::o;649:377::-;737:3;765:39;798:5;765:39;:::i;:::-;820:71;884:6;879:3;820:71;:::i;:::-;813:78;;900:65;958:6;953:3;946:4;939:5;935:16;900:65;:::i;:::-;990:29;1012:6;990:29;:::i;:::-;985:3;981:39;974:46;;741:285;649:377;;;;:::o;1032:313::-;1145:4;1183:2;1172:9;1168:18;1160:26;;1232:9;1226:4;1222:20;1218:1;1207:9;1203:17;1196:47;1260:78;1333:4;1324:6;1260:78;:::i;:::-;1252:86;;1032:313;;;;:::o;1351:75::-;1384:6;1417:2;1411:9;1401:19;;1351:75;:::o;1432:117::-;1541:1;1538;1531:12;1555:117;1664:1;1661;1654:12;1678:126;1715:7;1755:42;1748:5;1744:54;1733:65;;1678:126;;;:::o;1810:96::-;1847:7;1876:24;1894:5;1876:24;:::i;:::-;1865:35;;1810:96;;;:::o;1912:122::-;1985:24;2003:5;1985:24;:::i;:::-;1978:5;1975:35;1965:63;;2024:1;2021;2014:12;1965:63;1912:122;:::o;2040:139::-;2086:5;2124:6;2111:20;2102:29;;2140:33;2167:5;2140:33;:::i;:::-;2040:139;;;;:::o;2185:77::-;2222:7;2251:5;2240:16;;2185:77;;;:::o;2268:122::-;2341:24;2359:5;2341:24;:::i;:::-;2334:5;2331:35;2321:63;;2380:1;2377;2370:12;2321:63;2268:122;:::o;2396:139::-;2442:5;2480:6;2467:20;2458:29;;2496:33;2523:5;2496:33;:::i;:::-;2396:139;;;;:::o;2541:474::-;2609:6;2617;2666:2;2654:9;2645:7;2641:23;2637:32;2634:119;;;2672:79;;:::i;:::-;2634:119;2792:1;2817:53;2862:7;2853:6;2842:9;2838:22;2817:53;:::i;:::-;2807:63;;2763:117;2919:2;2945:53;2990:7;2981:6;2970:9;2966:22;2945:53;:::i;:::-;2935:63;;2890:118;2541:474;;;;;:::o;3021:90::-;3055:7;3098:5;3091:13;3084:21;3073:32;;3021:90;;;:::o;3117:109::-;3198:21;3213:5;3198:21;:::i;:::-;3193:3;3186:34;3117:109;;:::o;3232:210::-;3319:4;3357:2;3346:9;3342:18;3334:26;;3370:65;3432:1;3421:9;3417:17;3408:6;3370:65;:::i;:::-;3232:210;;;;:::o;3448:118::-;3535:24;3553:5;3535:24;:::i;:::-;3530:3;3523:37;3448:118;;:::o;3572:222::-;3665:4;3703:2;3692:9;3688:18;3680:26;;3716:71;3784:1;3773:9;3769:17;3760:6;3716:71;:::i;:::-;3572:222;;;;:::o;3800:474::-;3868:6;3876;3925:2;3913:9;3904:7;3900:23;3896:32;3893:119;;;3931:79;;:::i;:::-;3893:119;4051:1;4076:53;4121:7;4112:6;4101:9;4097:22;4076:53;:::i;:::-;4066:63;;4022:117;4178:2;4204:53;4249:7;4240:6;4229:9;4225:22;4204:53;:::i;:::-;4194:63;;4149:118;3800:474;;;;;:::o;4280:619::-;4357:6;4365;4373;4422:2;4410:9;4401:7;4397:23;4393:32;4390:119;;;4428:79;;:::i;:::-;4390:119;4548:1;4573:53;4618:7;4609:6;4598:9;4594:22;4573:53;:::i;:::-;4563:63;;4519:117;4675:2;4701:53;4746:7;4737:6;4726:9;4722:22;4701:53;:::i;:::-;4691:63;;4646:118;4803:2;4829:53;4874:7;4865:6;4854:9;4850:22;4829:53;:::i;:::-;4819:63;;4774:118;4280:619;;;;;:::o;4905:86::-;4940:7;4980:4;4973:5;4969:16;4958:27;;4905:86;;;:::o;4997:112::-;5080:22;5096:5;5080:22;:::i;:::-;5075:3;5068:35;4997:112;;:::o;5115:214::-;5204:4;5242:2;5231:9;5227:18;5219:26;;5255:67;5319:1;5308:9;5304:17;5295:6;5255:67;:::i;:::-;5115:214;;;;:::o;5335:474::-;5403:6;5411;5460:2;5448:9;5439:7;5435:23;5431:32;5428:119;;;5466:79;;:::i;:::-;5428:119;5586:1;5611:53;5656:7;5647:6;5636:9;5632:22;5611:53;:::i;:::-;5601:63;;5557:117;5713:2;5739:53;5784:7;5775:6;5764:9;5760:22;5739:53;:::i;:::-;5729:63;;5684:118;5335:474;;;;;:::o;5815:117::-;5924:1;5921;5914:12;5938:180;5986:77;5983:1;5976:88;6083:4;6080:1;6073:15;6107:4;6104:1;6097:15;6124:281;6207:27;6229:4;6207:27;:::i;:::-;6199:6;6195:40;6337:6;6325:10;6322:22;6301:18;6289:10;6286:34;6283:62;6280:88;;;6348:18;;:::i;:::-;6280:88;6388:10;6384:2;6377:22;6167:238;6124:281;;:::o;6411:129::-;6445:6;6472:20;;:::i;:::-;6462:30;;6501:33;6529:4;6521:6;6501:33;:::i;:::-;6411:129;;;:::o;6546:311::-;6623:4;6713:18;6705:6;6702:30;6699:56;;;6735:18;;:::i;:::-;6699:56;6785:4;6777:6;6773:17;6765:25;;6845:4;6839;6835:15;6827:23;;6546:311;;;:::o;6863:117::-;6972:1;6969;6962:12;7003:710;7099:5;7124:81;7140:64;7197:6;7140:64;:::i;:::-;7124:81;:::i;:::-;7115:90;;7225:5;7254:6;7247:5;7240:21;7288:4;7281:5;7277:16;7270:23;;7341:4;7333:6;7329:17;7321:6;7317:30;7370:3;7362:6;7359:15;7356:122;;;7389:79;;:::i;:::-;7356:122;7504:6;7487:220;7521:6;7516:3;7513:15;7487:220;;;7596:3;7625:37;7658:3;7646:10;7625:37;:::i;:::-;7620:3;7613:50;7692:4;7687:3;7683:14;7676:21;;7563:144;7547:4;7542:3;7538:14;7531:21;;7487:220;;;7491:21;7105:608;;7003:710;;;;;:::o;7736:370::-;7807:5;7856:3;7849:4;7841:6;7837:17;7833:27;7823:122;;7864:79;;:::i;:::-;7823:122;7981:6;7968:20;8006:94;8096:3;8088:6;8081:4;8073:6;8069:17;8006:94;:::i;:::-;7997:103;;7813:293;7736:370;;;;:::o;8112:311::-;8189:4;8279:18;8271:6;8268:30;8265:56;;;8301:18;;:::i;:::-;8265:56;8351:4;8343:6;8339:17;8331:25;;8411:4;8405;8401:15;8393:23;;8112:311;;;:::o;8446:710::-;8542:5;8567:81;8583:64;8640:6;8583:64;:::i;:::-;8567:81;:::i;:::-;8558:90;;8668:5;8697:6;8690:5;8683:21;8731:4;8724:5;8720:16;8713:23;;8784:4;8776:6;8772:17;8764:6;8760:30;8813:3;8805:6;8802:15;8799:122;;;8832:79;;:::i;:::-;8799:122;8947:6;8930:220;8964:6;8959:3;8956:15;8930:220;;;9039:3;9068:37;9101:3;9089:10;9068:37;:::i;:::-;9063:3;9056:50;9135:4;9130:3;9126:14;9119:21;;9006:144;8990:4;8985:3;8981:14;8974:21;;8930:220;;;8934:21;8548:608;;8446:710;;;;;:::o;9179:370::-;9250:5;9299:3;9292:4;9284:6;9280:17;9276:27;9266:122;;9307:79;;:::i;:::-;9266:122;9424:6;9411:20;9449:94;9539:3;9531:6;9524:4;9516:6;9512:17;9449:94;:::i;:::-;9440:103;;9256:293;9179:370;;;;:::o;9555:894::-;9673:6;9681;9730:2;9718:9;9709:7;9705:23;9701:32;9698:119;;;9736:79;;:::i;:::-;9698:119;9884:1;9873:9;9869:17;9856:31;9914:18;9906:6;9903:30;9900:117;;;9936:79;;:::i;:::-;9900:117;10041:78;10111:7;10102:6;10091:9;10087:22;10041:78;:::i;:::-;10031:88;;9827:302;10196:2;10185:9;10181:18;10168:32;10227:18;10219:6;10216:30;10213:117;;;10249:79;;:::i;:::-;10213:117;10354:78;10424:7;10415:6;10404:9;10400:22;10354:78;:::i;:::-;10344:88;;10139:303;9555:894;;;;;:::o;10455:329::-;10514:6;10563:2;10551:9;10542:7;10538:23;10534:32;10531:119;;;10569:79;;:::i;:::-;10531:119;10689:1;10714:53;10759:7;10750:6;10739:9;10735:22;10714:53;:::i;:::-;10704:63;;10660:117;10455:329;;;;:::o;10790:118::-;10877:24;10895:5;10877:24;:::i;:::-;10872:3;10865:37;10790:118;;:::o;10914:222::-;11007:4;11045:2;11034:9;11030:18;11022:26;;11058:71;11126:1;11115:9;11111:17;11102:6;11058:71;:::i;:::-;10914:222;;;;:::o;11142:329::-;11201:6;11250:2;11238:9;11229:7;11225:23;11221:32;11218:119;;;11256:79;;:::i;:::-;11218:119;11376:1;11401:53;11446:7;11437:6;11426:9;11422:22;11401:53;:::i;:::-;11391:63;;11347:117;11142:329;;;;:::o;11477:474::-;11545:6;11553;11602:2;11590:9;11581:7;11577:23;11573:32;11570:119;;;11608:79;;:::i;:::-;11570:119;11728:1;11753:53;11798:7;11789:6;11778:9;11774:22;11753:53;:::i;:::-;11743:63;;11699:117;11855:2;11881:53;11926:7;11917:6;11906:9;11902:22;11881:53;:::i;:::-;11871:63;;11826:118;11477:474;;;;;:::o;11957:180::-;12005:77;12002:1;11995:88;12102:4;12099:1;12092:15;12126:4;12123:1;12116:15;12143:320;12187:6;12224:1;12218:4;12214:12;12204:22;;12271:1;12265:4;12261:12;12292:18;12282:81;;12348:4;12340:6;12336:17;12326:27;;12282:81;12410:2;12402:6;12399:14;12379:18;12376:38;12373:84;;12429:18;;:::i;:::-;12373:84;12194:269;12143:320;;;:::o;12469:180::-;12517:77;12514:1;12507:88;12614:4;12611:1;12604:15;12638:4;12635:1;12628:15;12655:191;12695:3;12714:20;12732:1;12714:20;:::i;:::-;12709:25;;12748:20;12766:1;12748:20;:::i;:::-;12743:25;;12791:1;12788;12784:9;12777:16;;12812:3;12809:1;12806:10;12803:36;;;12819:18;;:::i;:::-;12803:36;12655:191;;;;:::o;12852:332::-;12973:4;13011:2;13000:9;12996:18;12988:26;;13024:71;13092:1;13081:9;13077:17;13068:6;13024:71;:::i;:::-;13105:72;13173:2;13162:9;13158:18;13149:6;13105:72;:::i;:::-;12852:332;;;;;:::o;13190:147::-;13291:11;13328:3;13313:18;;13190:147;;;;:::o;13343:114::-;;:::o;13463:398::-;13622:3;13643:83;13724:1;13719:3;13643:83;:::i;:::-;13636:90;;13735:93;13824:3;13735:93;:::i;:::-;13853:1;13848:3;13844:11;13837:18;;13463:398;;;:::o;13867:379::-;14051:3;14073:147;14216:3;14073:147;:::i;:::-;14066:154;;14237:3;14230:10;;13867:379;;;:::o;14252:410::-;14292:7;14315:20;14333:1;14315:20;:::i;:::-;14310:25;;14349:20;14367:1;14349:20;:::i;:::-;14344:25;;14404:1;14401;14397:9;14426:30;14444:11;14426:30;:::i;:::-;14415:41;;14605:1;14596:7;14592:15;14589:1;14586:22;14566:1;14559:9;14539:83;14516:139;;14635:18;;:::i;:::-;14516:139;14300:362;14252:410;;;;:::o;14668:180::-;14716:77;14713:1;14706:88;14813:4;14810:1;14803:15;14837:4;14834:1;14827:15;14854:185;14894:1;14911:20;14929:1;14911:20;:::i;:::-;14906:25;;14945:20;14963:1;14945:20;:::i;:::-;14940:25;;14984:1;14974:35;;14989:18;;:::i;:::-;14974:35;15031:1;15028;15024:9;15019:14;;14854:185;;;;:::o;15045:180::-;15093:77;15090:1;15083:88;15190:4;15187:1;15180:15;15214:4;15211:1;15204:15;15231:442;15380:4;15418:2;15407:9;15403:18;15395:26;;15431:71;15499:1;15488:9;15484:17;15475:6;15431:71;:::i;:::-;15512:72;15580:2;15569:9;15565:18;15556:6;15512:72;:::i;:::-;15594;15662:2;15651:9;15647:18;15638:6;15594:72;:::i;:::-;15231:442;;;;;;:::o
Swarm Source
ipfs://1cb63f73817089e94525b8085448a1f69fa3e53e615efed2389f807242e77185
Loading...
Loading
Loading...
Loading
OVERVIEW
Einstein Lab's mission is to develop crypto projects that are not only user-friendly but also immensely rewarding. The inception of Einstein Lab and the launch of our token, $EIN, stand as testaments to our dedication.Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.