Contract Overview
[ Download CSV Export ]
Contract Name:
InnToken
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2022-01-16 */ // File: contracts/Wallet.sol pragma solidity 0.8.11; // import "./AccessControl.sol"; abstract contract Wallet { // address public constant RESERVES_WALLET_ADDRESS = // address(0x3A528Ca83A9D4e167Dc9c14690349E3b6FC02054); address public COMMISSION_WALLET_ADDRESS ; address public RESERVES_WALLET_ADDRESS ; mapping(address => bytes32) internal _wallets; /** * @dev Modifier that checks that an account must not be any wallet addresses. Reverts * with a ForbiddenError(address account). */ // modifier validateSenderAccount() { // if (_wallets[msg.sender] != 0) revert ForbiddenError(msg.sender); // _; // } constructor(address RESERVE , address COMMISSION) { COMMISSION_WALLET_ADDRESS = COMMISSION ; RESERVES_WALLET_ADDRESS = RESERVE; _wallets[COMMISSION_WALLET_ADDRESS] = keccak256("COMMISSION_WALLET"); _wallets[RESERVES_WALLET_ADDRESS] = keccak256("RESERVES_WALLET"); } } // File: openzeppelin-solidity/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } // File: openzeppelin-solidity/contracts/utils/introspection/ERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File: openzeppelin-solidity/contracts/utils/Strings.sol // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File: openzeppelin-solidity/contracts/access/IAccessControl.sol // OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol) pragma solidity ^0.8.0; /** * @dev External interface of AccessControl declared to support ERC165 detection. */ interface IAccessControl { /** * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` * * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite * {RoleAdminChanged} not being emitted signaling this. * * _Available since v3.1._ */ event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); /** * @dev Emitted when `account` is granted `role`. * * `sender` is the account that originated the contract call, an admin role * bearer except when using {AccessControl-_setupRole}. */ event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Emitted when `account` is revoked `role`. * * `sender` is the account that originated the contract call: * - if using `revokeRole`, it is the admin role bearer * - if using `renounceRole`, it is the role bearer (i.e. `account`) */ event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) external view returns (bool); /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {AccessControl-_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) external view returns (bytes32); /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) external; /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) external; /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been granted `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) external; } // File: openzeppelin-solidity/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: openzeppelin-solidity/contracts/access/AccessControl.sol // OpenZeppelin Contracts v4.4.1 (access/AccessControl.sol) pragma solidity ^0.8.0; /** * @dev Contract module that allows children to implement role-based access * control mechanisms. This is a lightweight version that doesn't allow enumerating role * members except through off-chain means by accessing the contract event logs. Some * applications may benefit from on-chain enumerability, for those cases see * {AccessControlEnumerable}. * * Roles are referred to by their `bytes32` identifier. These should be exposed * in the external API and be unique. The best way to achieve this is by * using `public constant` hash digests: * * ``` * bytes32 public constant MY_ROLE = keccak256("MY_ROLE"); * ``` * * Roles can be used to represent a set of permissions. To restrict access to a * function call, use {hasRole}: * * ``` * function foo() public { * require(hasRole(MY_ROLE, msg.sender)); * ... * } * ``` * * Roles can be granted and revoked dynamically via the {grantRole} and * {revokeRole} functions. Each role has an associated admin role, and only * accounts that have a role's admin role can call {grantRole} and {revokeRole}. * * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means * that only accounts with this role will be able to grant or revoke other * roles. More complex role relationships can be created by using * {_setRoleAdmin}. * * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to * grant and revoke this role. Extra precautions should be taken to secure * accounts that have been granted it. */ abstract contract AccessControl is Context, IAccessControl, ERC165 { struct RoleData { mapping(address => bool) members; bytes32 adminRole; } mapping(bytes32 => RoleData) private _roles; bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; /** * @dev Modifier that checks that an account has a specific role. Reverts * with a standardized message including the required role. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ * * _Available since v4.1._ */ modifier onlyRole(bytes32 role) { _checkRole(role, _msgSender()); _; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId); } /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) public view override returns (bool) { return _roles[role].members[account]; } /** * @dev Revert with a standard message if `account` is missing `role`. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ */ function _checkRole(bytes32 role, address account) internal view { if (!hasRole(role, account)) { revert( string( abi.encodePacked( "AccessControl: account ", Strings.toHexString(uint160(account), 20), " is missing role ", Strings.toHexString(uint256(role), 32) ) ) ); } } /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) public view override returns (bytes32) { return _roles[role].adminRole; } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _grantRole(role, account); } /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _revokeRole(role, account); } /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been revoked `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) public virtual override { require(account == _msgSender(), "AccessControl: can only renounce roles for self"); _revokeRole(role, account); } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. Note that unlike {grantRole}, this function doesn't perform any * checks on the calling account. * * [WARNING] * ==== * This function should only be called from the constructor when setting * up the initial roles for the system. * * Using this function in any other way is effectively circumventing the admin * system imposed by {AccessControl}. * ==== * * NOTE: This function is deprecated in favor of {_grantRole}. */ function _setupRole(bytes32 role, address account) internal virtual { _grantRole(role, account); } /** * @dev Sets `adminRole` as ``role``'s admin role. * * Emits a {RoleAdminChanged} event. */ function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { bytes32 previousAdminRole = getRoleAdmin(role); _roles[role].adminRole = adminRole; emit RoleAdminChanged(role, previousAdminRole, adminRole); } /** * @dev Grants `role` to `account`. * * Internal function without access restriction. */ function _grantRole(bytes32 role, address account) internal virtual { if (!hasRole(role, account)) { _roles[role].members[account] = true; emit RoleGranted(role, account, _msgSender()); } } /** * @dev Revokes `role` from `account`. * * Internal function without access restriction. */ function _revokeRole(bytes32 role, address account) internal virtual { if (hasRole(role, account)) { _roles[role].members[account] = false; emit RoleRevoked(role, account, _msgSender()); } } } // File: openzeppelin-solidity/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts v4.4.1 (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-solidity/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.1 (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-solidity/contracts/token/ERC20/ERC20.sol // OpenZeppelin Contracts v4.4.1 (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-solidity/contracts/token/ERC20/extensions/ERC20Burnable.sol // OpenZeppelin Contracts v4.4.1 (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: contracts/innToken.sol pragma solidity 0.8.11; contract InnToken is ERC20, ERC20Burnable, AccessControl , Wallet { bytes32 public constant CONSENSUS_ROLE = keccak256("CONSENSUS_ROLE"); mapping (address => bool) private frozenAccount; event FrozenFunds(address indexed target, bool frozen); constructor(address RESEVERD , address COMMISION ) ERC20("InnToken", "INN") Wallet(RESEVERD , COMMISION) { _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); _grantRole(CONSENSUS_ROLE, msg.sender); //the `DEFAULT_ADMIN_ROLE` is the admin of himself and `CONSENSUS_ROLE` _setRoleAdmin(DEFAULT_ADMIN_ROLE ,DEFAULT_ADMIN_ROLE ); _setRoleAdmin(CONSENSUS_ROLE ,DEFAULT_ADMIN_ROLE ); _firstInitializeWallet(); } function decimals() public pure override returns (uint8) { return 7; } function mint(address to, uint256 amount) public onlyRole(DEFAULT_ADMIN_ROLE) { _mint(to, amount); } /** * this hook used in burn or burn from that depends on CONSENSUE_ROLE . */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal override(ERC20) { if(from == RESERVES_WALLET_ADDRESS) require(hasRole(CONSENSUS_ROLE, msg.sender) , "INNTOKEN : only CONSENSUS_ROLE can transfer from RESERVES_WALLET_ADDRESS "); else if (from == COMMISSION_WALLET_ADDRESS) require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender)); require(!frozenAccount[msg.sender], "INNToken : already account freezed"); super._beforeTokenTransfer(from , to , amount); } function freezeAccount(address target) public onlyRole(DEFAULT_ADMIN_ROLE) { require(balanceOf(target) > 0, "INNTOKEN : account must has a balance"); frozenAccount[target] = true; emit FrozenFunds(target, true); } function unFreezeAccount(address target) public onlyRole(DEFAULT_ADMIN_ROLE) { require(freezeOf(target), "INNTOKEN : account must be freezed"); frozenAccount[target] = false; emit FrozenFunds(target, false); } function freezeOf(address target) public view returns (bool) { return frozenAccount[target]; } function destroy() onlyRole(DEFAULT_ADMIN_ROLE) public { selfdestruct(payable(msg.sender)); } function destroyAndSend(address _recipient) onlyRole(DEFAULT_ADMIN_ROLE) public { selfdestruct(payable(_recipient)); } function _firstInitializeWallet() private onlyRole(DEFAULT_ADMIN_ROLE){ mint(RESERVES_WALLET_ADDRESS , 1_996_760_000 * 10**7); mint(address(COMMISSION_WALLET_ADDRESS) , 77508 * 10**7 ); mint(address(0x03a64C4DCe2868079bBB1AdE47E13495ED1e1111) , 1000 * 10**7 ); mint(address(0x044815973DC7796357762C87A5dc5e737f4e363A) , 1000 * 10**7 ); mint(address(0x09C5819883cA0b507e3De585b9d17346726839c6) , 1000 * 10**7 ); mint(address(0x0Ca2e38E27D299230AF6290c62065C2125FFDE99) , 1 * 10**7 ); mint(address(0x0D2399cE58eeEf280B15044da6237e151904ab89) , 1500 * 10**7 ); mint(address(0x1856f606Dd40692Ac455726246c1f5afb71a4901) , 1000 * 10**7 ); mint(address(0x1F82A9618741eEe8958e081f261e369B48F18e39) , 600 * 10**7 ); mint(address(0x23438EeCb18f6dFbB8bDDa399c28a2ec33783CC5) , 1000 * 10**7 ); mint(address(0x2d60f692E17Cf5d0B68C131A0D4f0fFa50D5B9EB) , 10619.3* 10**7 ); mint(address(0x31705e75F871F5DA10533a08B68576af3D120c05) , 1000 * 10**7 ); mint(address(0x35C34408C112daC0F25900B7aAe99a9425891B1b) , 1400 * 10**7 ); mint(address(0x411aAb879f792B261B0B2655d5d93012c1551b12) , 1400 * 10**7 ); mint(address(0x4120C5732Ac11343b819EFdEfa51051a61CA2615) , 1000 * 10**7 ); mint(address(0x51BDE05b0fd2d3980E3D859DCC3E285F114Faf68) , 20000 * 10**7 ); mint(address(0x43fb84E0F32eF94C59B44fEa91C76547A7A3eb90) , 1000 * 10**7 ); mint(address(0x4FbAb20644eEd869DdA9258b6F3f5437275b1d65) , 1000 * 10**7 ); mint(address(0x51BDE05b0fd2d3980E3D859DCC3E285F114Faf68) , 500 * 10**7 ); mint(address(0x51CeB6F845bAdC88E0E13A33AaEaE46dc7bccE73) , 1000 * 10**7 ); mint(address(0x555F2d31d931854186049577F9240783Be1abeeB) , 250 * 10**7 ); mint(address(0x5894d1784838C62979b6403AD0d5A273AdDb0c6D) , 1000 * 10**7 ); mint(address(0x58fF07F14BC6Bb643Fc138d92f580f586Cba6672) , 250 * 10**7 ); mint(address(0x5fEd6D7c6d4b78bC94c531aacf10e32572d30522) , 7337.7 * 10**7 ); mint(address(0x61dc996cB036253E80Dfbad887FEDf924F244D4f) , 1000 * 10**7 ); mint(address(0x634c6B7b3C8E0fC4d5c748aeB8B5Ec48571aF753) , 1501 * 10**7 ); mint(address(0x671b18886Aabdbf5dB5ec71A60352C94AFc3b3e0) , 400 * 10**7 ); mint(address(0x6d83f9065326d04b544d7c850506402a313e4863) , 500 * 10**7 ); mint(address(0x6fBD939c01CA47D1Bc475422657B44589516694F) , 1400 * 10**7 ); mint(address(0x7178e85cE66fadE2eD97bcB81B4e955A4ec86eFb) , 1400 * 10**7 ); mint(address(0x745609b8E60A9CABA8CD081d036D710cCe8889fb) , 1000 * 10**7 ); mint(address(0x768014fd191928D94ec6fb886EbC4eCc06388Fa4) , 2000 * 10**7 ); mint(address(0x7CCDa7a010d0f2e40AABe82863c1f55fe1246cE4) , 1000 * 10**7 ); mint(address(0x8B818656C935547656e88D175d4896214E227956) , 1000 * 10**7 ); mint(address(0x90f21641fd1Dd90AdEaed9548eCF8E4c008F7719) , 250 * 10**7 ); mint(address(0x992B5498AB44b0D978C734De2842f8e240dc3363) , 1400 * 10**7 ); mint(address(0xa192B349FB7559096EDd897Ce69152fFFE2601ba) , 2000 * 10**7 ); mint(address(0xa2Dbda7999574BBfB3CF5cdBD8a167e951091b51) , 1000 * 10**7 ); mint(address(0xa68d544CEa02D5f78C8B4ca2B9C962510ec44a49) , 2948990* 10**7 ); mint(address(0xa7D31c7854f5335121b784cd4bb6675b37E649Fe) , 1368 * 10**7 ); mint(address(0xA8C22ed8e39b4d959C808b980f47d8ba3ef3A5Eb) , 1400 * 10**7 ); mint(address(0xaE39104466824555DD079b6Be2dAE559Da834E4F) , 1000 * 10**7 ); mint(address(0xb04D09d8d6a1d421E72c5691d969F95a77FC25c7) , 1400 * 10**7 ); mint(address(0xB38056be1AE9e5e2DC70cEaBd4d1EEeCa616Cb46) , 1000 * 10**7 ); mint(address(0xb493151eE82625E8512aE1e4bBf1A4f08d431187) , 1000 * 10**7 ); mint(address(0xBDbc002fd24080381efDFB53467Bab1Ecd66129B) , 250 * 10**7 ); mint(address(0xD2b3501E9D11a05CCD0d72F4a633F8Fd44E49b37) , 88490 * 10**7 ); mint(address(0xDeAd9D5E9CDE6c9173B2719Fd1F5a551E62ddB43) , 1000 * 10**7 ); mint(address(0xeeD789F989233A88C0234202e0a1807E8a422218) , 1000 * 10**7 ); mint(address(0xF390e83B18820bC5b1b03604d5e543232db7b591) , 2402 * 10**7 ); mint(address(0xf3Cf9744EA50A6f2889358e3C1a2A45Bf2324611) , 1000 * 10**7 ); mint(address(0xF4d66bCDB36113D8B5772f9401C375A73E3c20d1) , 974 * 10**7 ); mint(address(0xf56eFEc91B5741713C55269fB45FAC12bf201897) , 9 * 10**7 ); mint(address(0xFe765dBb4f56BDc239d1E3Dd500A9Fef8A5B7246) , 500 * 10**7 ); mint(address(0xaB9f782067f143E358382d7a4EE12517219363FB) , 20000 * 10**7 ); mint(address(0x5ff9e95946663d2f27833fbF98E96f33C69876DF) , 20000 * 10**7 ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"RESEVERD","type":"address"},{"internalType":"address","name":"COMMISION","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"target","type":"address"},{"indexed":false,"internalType":"bool","name":"frozen","type":"bool"}],"name":"FrozenFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","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"},{"inputs":[],"name":"COMMISSION_WALLET_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CONSENSUS_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESERVES_WALLET_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"amount","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"destroy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"}],"name":"destroyAndSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"freezeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"freezeOf","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"unFreezeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051620029c9380380620029c9833981016040819052620000349162001082565b81816040518060400160405280600881526020016724b7372a37b5b2b760c11b8152506040518060400160405280600381526020016224a72760e91b81525081600390805190602001906200008b92919062000fbf565b508051620000a190600490602084019062000fbf565b5050600680546001600160a01b039384166001600160a01b0319918216811790925560078054958516959091169490941784556000908152600860205260408082207f9e0ed3c31b5df5ce82c490171d751f50cfa67a7c80bf8f82453270204a44cb79905593549092168252509081207f5a119e2346306ccb9f52d3e5a906bf1ba96ed181c6771d2093b112667da53fa8905562000140903362000196565b6200015b600080516020620029a98339815191523362000196565b620001686000806200023b565b62000184600080516020620029a983398151915260006200023b565b6200018e62000286565b505062001271565b60008281526005602090815260408083206001600160a01b038516845290915290205460ff16620002375760008281526005602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620001f63390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600082815260056020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b600062000294813362000a9a565b600754620002b3906001600160a01b03166646f06d2904600062000b40565b600654620002d0906001600160a01b031664b4765e3a0062000b40565b620002f57303a64c4dce2868079bbb1ade47e13495ed1e11116402540be40062000b40565b6200031a73044815973dc7796357762c87a5dc5e737f4e363a6402540be40062000b40565b6200033f7309c5819883ca0b507e3de585b9d17346726839c66402540be40062000b40565b62000362730ca2e38e27d299230af6290c62065c2125ffde996298968062000b40565b62000387730d2399ce58eeef280b15044da6237e151904ab8964037e11d60062000b40565b620003ac731856f606dd40692ac455726246c1f5afb71a49016402540be40062000b40565b620003d1731f82a9618741eee8958e081f261e369b48f18e39640165a0bc0062000b40565b620003f67323438eecb18f6dfbb8bdda399c28a2ec33783cc56402540be40062000b40565b6200041b732d60f692e17cf5d0b68c131a0d4f0ffa50d5b9eb6418b998964062000b40565b620004407331705e75f871f5da10533a08b68576af3d120c056402540be40062000b40565b620004657335c34408c112dac0f25900b7aae99a9425891b1b640342770c0062000b40565b6200048a73411aab879f792b261b0b2655d5d93012c1551b12640342770c0062000b40565b620004af734120c5732ac11343b819efdefa51051a61ca26156402540be40062000b40565b620004d47351bde05b0fd2d3980e3d859dcc3e285f114faf68642e90edd00062000b40565b620004f97343fb84e0f32ef94c59b44fea91c76547a7a3eb906402540be40062000b40565b6200051e734fbab20644eed869dda9258b6f3f5437275b1d656402540be40062000b40565b620005437351bde05b0fd2d3980e3d859dcc3e285f114faf6864012a05f20062000b40565b620005687351ceb6f845badc88e0e13a33aaeae46dc7bcce736402540be40062000b40565b6200058c73555f2d31d931854186049577f9240783be1abeeb639502f90062000b40565b620005b1735894d1784838c62979b6403ad0d5a273addb0c6d6402540be40062000b40565b620005d57358ff07f14bc6bb643fc138d92f580f586cba6672639502f90062000b40565b620005fa735fed6d7c6d4b78bc94c531aacf10e32572d305226411159c2a4062000b40565b6200061f7361dc996cb036253e80dfbad887fedf924f244d4f6402540be40062000b40565b6200064473634c6b7b3c8e0fc4d5c748aeb8b5ec48571af75364037eaa6c8062000b40565b6200066873671b18886aabdbf5db5ec71a60352c94afc3b3e063ee6b280062000b40565b6200068d736d83f9065326d04b544d7c850506402a313e486364012a05f20062000b40565b620006b2736fbd939c01ca47d1bc475422657b44589516694f640342770c0062000b40565b620006d7737178e85ce66fade2ed97bcb81b4e955a4ec86efb640342770c0062000b40565b620006fc73745609b8e60a9caba8cd081d036d710cce8889fb6402540be40062000b40565b6200072173768014fd191928d94ec6fb886ebc4ecc06388fa46404a817c80062000b40565b62000746737ccda7a010d0f2e40aabe82863c1f55fe1246ce46402540be40062000b40565b6200076b738b818656c935547656e88d175d4896214e2279566402540be40062000b40565b6200078f7390f21641fd1dd90adeaed9548ecf8e4c008f7719639502f90062000b40565b620007b473992b5498ab44b0d978c734de2842f8e240dc3363640342770c0062000b40565b620007d973a192b349fb7559096edd897ce69152fffe2601ba6404a817c80062000b40565b620007fe73a2dbda7999574bbfb3cf5cdbd8a167e951091b516402540be40062000b40565b6200082473a68d544cea02d5f78c8b4ca2b9c962510ec44a49651ad22703930062000b40565b6200084973a7d31c7854f5335121b784cd4bb6675b37e649fe64032f643c0062000b40565b6200086e73a8c22ed8e39b4d959c808b980f47d8ba3ef3a5eb640342770c0062000b40565b6200089373ae39104466824555dd079b6be2dae559da834e4f6402540be40062000b40565b620008b873b04d09d8d6a1d421e72c5691d969f95a77fc25c7640342770c0062000b40565b620008dd73b38056be1ae9e5e2dc70ceabd4d1eeeca616cb466402540be40062000b40565b6200090273b493151ee82625e8512ae1e4bbf1a4f08d4311876402540be40062000b40565b6200092673bdbc002fd24080381efdfb53467bab1ecd66129b639502f90062000b40565b6200094b73d2b3501e9d11a05ccd0d72f4a633f8fd44e49b3764ce0826710062000b40565b6200097073dead9d5e9cde6c9173b2719fd1f5a551e62ddb436402540be40062000b40565b6200099573eed789f989233a88c0234202e0a1807e8a4222186402540be40062000b40565b620009ba73f390e83b18820bc5b1b03604d5e543232db7b591640597b41d0062000b40565b620009df73f3cf9744ea50a6f2889358e3c1a2a45bf23246116402540be40062000b40565b62000a0473f4d66bcdb36113d8b5772f9401c375a73e3c20d16402448c9b0062000b40565b62000a2873f56efec91b5741713c55269fb45fac12bf20189763055d4a8062000b40565b62000a4d73fe765dbb4f56bdc239d1e3dd500a9fef8a5b724664012a05f20062000b40565b62000a7273ab9f782067f143e358382d7a4ee12517219363fb642e90edd00062000b40565b62000a97735ff9e95946663d2f27833fbf98e96f33c69876df642e90edd00062000b40565b50565b60008281526005602090815260408083206001600160a01b038516845290915290205460ff16620002375762000ae6816001600160a01b0316601462000b5f60201b62000a701760201c565b62000afc83602062000a7062000b5f821b17811c565b60405160200162000b0f929190620010ed565b60408051601f198184030181529082905262461bcd60e51b825262000b379160040162001166565b60405180910390fd5b600062000b4e813362000a9a565b62000b5a838362000d1f565b505050565b6060600062000b70836002620011b1565b62000b7d906002620011d3565b6001600160401b0381111562000b975762000b97620011ee565b6040519080825280601f01601f19166020018201604052801562000bc2576020820181803683370190505b509050600360fc1b8160008151811062000be05762000be062001204565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811062000c125762000c1262001204565b60200101906001600160f81b031916908160001a905350600062000c38846002620011b1565b62000c45906001620011d3565b90505b600181111562000cc7576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811062000c7d5762000c7d62001204565b1a60f81b82828151811062000c965762000c9662001204565b60200101906001600160f81b031916908160001a90535060049490941c9362000cbf816200121a565b905062000c48565b50831562000d185760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640162000b37565b9392505050565b6001600160a01b03821662000d775760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000b37565b62000d856000838362000e12565b806002600082825462000d999190620011d3565b90915550506001600160a01b0382166000908152602081905260408120805483929062000dc8908490620011d3565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6007546001600160a01b038481169116141562000ee7573360009081527fe5c1de4975af06817aee009d38f903f0e435e54944ecfd71ddcf651a59ab6754602052604090205460ff1662000ee15760405162461bcd60e51b815260206004820152604960248201527f494e4e544f4b454e203a206f6e6c7920434f4e53454e5355535f524f4c45206360448201527f616e207472616e736665722066726f6d2052455345525645535f57414c4c455460648201526802fa0a2222922a9a9960bd1b608482015260a40162000b37565b62000f3a565b6006546001600160a01b038481169116141562000f3a573360009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc602052604090205460ff1662000f3a57600080fd5b3360009081526009602052604090205460ff161562000fa75760405162461bcd60e51b815260206004820152602260248201527f494e4e546f6b656e203a20616c7265616479206163636f756e7420667265657a604482015261195960f21b606482015260840162000b37565b62000b5a83838362000b5a60201b620006331760201c565b82805462000fcd9062001234565b90600052602060002090601f01602090048101928262000ff157600085556200103c565b82601f106200100c57805160ff19168380011785556200103c565b828001600101855582156200103c579182015b828111156200103c5782518255916020019190600101906200101f565b506200104a9291506200104e565b5090565b5b808211156200104a57600081556001016200104f565b80516001600160a01b03811681146200107d57600080fd5b919050565b600080604083850312156200109657600080fd5b620010a18362001065565b9150620010b16020840162001065565b90509250929050565b60005b83811015620010d7578181015183820152602001620010bd565b83811115620010e7576000848401525b50505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835162001127816017850160208801620010ba565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516200115a816028840160208801620010ba565b01602801949350505050565b602081526000825180602084015262001187816040850160208701620010ba565b601f01601f19169190910160400192915050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620011ce57620011ce6200119b565b500290565b60008219821115620011e957620011e96200119b565b500190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000816200122c576200122c6200119b565b506000190190565b600181811c908216806200124957607f821691505b602082108114156200126b57634e487b7160e01b600052602260045260246000fd5b50919050565b61172880620012816000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806379cc679011610104578063b1441e79116100a2578063f26c159f11610071578063f26c159f1461041f578063f5074f4114610432578063f98df5ca14610445578063fa2dabad1461045857600080fd5b8063b1441e791461037c578063cd4217c1146103a7578063d547741f146103d3578063dd62ed3e146103e657600080fd5b806395d89b41116100de57806395d89b4114610346578063a217fddf1461034e578063a457c2d714610356578063a9059cbb1461036957600080fd5b806379cc67901461031857806383197ef01461032b57806391d148541461033357600080fd5b8063313ce5671161017157806340c10f191161014b57806340c10f19146102b657806342966c68146102c957806353cc2fae146102dc57806370a08231146102ef57600080fd5b8063313ce5671461028157806336568abe1461029057806339509351146102a357600080fd5b806318160ddd116101ad57806318160ddd1461022457806323b872dd14610236578063248a9ca3146102495780632f2ff15d1461026c57600080fd5b806301ffc9a7146101d457806306fdde03146101fc578063095ea7b314610211575b600080fd5b6101e76101e2366004611406565b61047f565b60405190151581526020015b60405180910390f35b6102046104b6565b6040516101f3919061145c565b6101e761021f3660046114ab565b610548565b6002545b6040519081526020016101f3565b6101e76102443660046114d5565b61055e565b610228610257366004611511565b60009081526005602052604090206001015490565b61027f61027a36600461152a565b61060d565b005b604051600781526020016101f3565b61027f61029e36600461152a565b610638565b6101e76102b13660046114ab565b6106b6565b61027f6102c43660046114ab565b6106f2565b61027f6102d7366004611511565b610708565b61027f6102ea366004611556565b610715565b6102286102fd366004611556565b6001600160a01b031660009081526020819052604090205490565b61027f6103263660046114ab565b6107eb565b61027f61086c565b6101e761034136600461152a565b61087b565b6102046108a6565b610228600081565b6101e76103643660046114ab565b6108b5565b6101e76103773660046114ab565b61094e565b60065461038f906001600160a01b031681565b6040516001600160a01b0390911681526020016101f3565b6101e76103b5366004611556565b6001600160a01b031660009081526009602052604090205460ff1690565b61027f6103e136600461152a565b61095b565b6102286103f4366004611571565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61027f61042d366004611556565b610981565b61027f610440366004611556565b610a58565b60075461038f906001600160a01b031681565b6102287f36fd43ede163045b10e1f0abd16f62f165fce3fa7b6cde217bcea3bc47663acc81565b60006001600160e01b03198216637965db0b60e01b14806104b057506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600380546104c59061159b565b80601f01602080910402602001604051908101604052809291908181526020018280546104f19061159b565b801561053e5780601f106105135761010080835404028352916020019161053e565b820191906000526020600020905b81548152906001019060200180831161052157829003601f168201915b5050505050905090565b6000610555338484610c13565b50600192915050565b600061056b848484610d37565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156105f55760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6106028533858403610c13565b506001949350505050565b6000828152600560205260409020600101546106298133610f12565b6106338383610f76565b505050565b6001600160a01b03811633146106a85760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105ec565b6106b28282610ffc565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916105559185906106ed9086906115ec565b610c13565b60006106fe8133610f12565b6106338383611063565b610712338261114e565b50565b60006107218133610f12565b6001600160a01b03821660009081526009602052604090205460ff166107945760405162461bcd60e51b815260206004820152602260248201527f494e4e544f4b454e203a206163636f756e74206d75737420626520667265657a604482015261195960f21b60648201526084016105ec565b6001600160a01b0382166000818152600960209081526040808320805460ff19169055519182527f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a591015b60405180910390a25050565b60006107f783336103f4565b9050818110156108555760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016105ec565b6108628333848403610c13565b610633838361114e565b60006108788133610f12565b33ff5b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600480546104c59061159b565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156109375760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105ec565b6109443385858403610c13565b5060019392505050565b6000610555338484610d37565b6000828152600560205260409020600101546109778133610f12565b6106338383610ffc565b600061098d8133610f12565b6001600160a01b03821660009081526020819052604081205411610a015760405162461bcd60e51b815260206004820152602560248201527f494e4e544f4b454e203a206163636f756e74206d7573742068617320612062616044820152646c616e636560d81b60648201526084016105ec565b6001600160a01b038216600081815260096020908152604091829020805460ff1916600190811790915591519182527f48335238b4855f35377ed80f164e8c6f3c366e54ac00b96a6402d4a9814a03a591016107df565b6000610a648133610f12565b816001600160a01b0316ff5b60606000610a7f836002611604565b610a8a9060026115ec565b67ffffffffffffffff811115610aa257610aa2611623565b6040519080825280601f01601f191660200182016040528015610acc576020820181803683370190505b509050600360fc1b81600081518110610ae757610ae7611639565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610b1657610b16611639565b60200101906001600160f81b031916908160001a9053506000610b3a846002611604565b610b459060016115ec565b90505b6001811115610bbd576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110610b7957610b79611639565b1a60f81b828281518110610b8f57610b8f611639565b60200101906001600160f81b031916908160001a90535060049490941c93610bb68161164f565b9050610b48565b508315610c0c5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105ec565b9392505050565b6001600160a01b038316610c755760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105ec565b6001600160a01b038216610cd65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105ec565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d9b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105ec565b6001600160a01b038216610dfd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105ec565b610e088383836112a8565b6001600160a01b03831660009081526020819052604090205481811015610e805760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105ec565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610eb79084906115ec565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f0391815260200190565b60405180910390a35b50505050565b610f1c828261087b565b6106b257610f34816001600160a01b03166014610a70565b610f3f836020610a70565b604051602001610f50929190611666565b60408051601f198184030181529082905262461bcd60e51b82526105ec9160040161145c565b610f80828261087b565b6106b25760008281526005602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610fb83390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b611006828261087b565b156106b25760008281526005602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6001600160a01b0382166110b95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105ec565b6110c5600083836112a8565b80600260008282546110d791906115ec565b90915550506001600160a01b038216600090815260208190526040812080548392906111049084906115ec565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382166111ae5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105ec565b6111ba826000836112a8565b6001600160a01b0382166000908152602081905260409020548181101561122e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105ec565b6001600160a01b038316600090815260208190526040812083830390556002805484929061125d9084906116db565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6007546001600160a01b0384811691161415611371576112e87f36fd43ede163045b10e1f0abd16f62f165fce3fa7b6cde217bcea3bc47663acc3361087b565b61136c5760405162461bcd60e51b815260206004820152604960248201527f494e4e544f4b454e203a206f6e6c7920434f4e53454e5355535f524f4c45206360448201527f616e207472616e736665722066726f6d2052455345525645535f57414c4c455460648201526802fa0a2222922a9a9960bd1b608482015260a4016105ec565b61139b565b6006546001600160a01b038481169116141561139b5761139260003361087b565b61139b57600080fd5b3360009081526009602052604090205460ff16156106335760405162461bcd60e51b815260206004820152602260248201527f494e4e546f6b656e203a20616c7265616479206163636f756e7420667265657a604482015261195960f21b60648201526084016105ec565b60006020828403121561141857600080fd5b81356001600160e01b031981168114610c0c57600080fd5b60005b8381101561144b578181015183820152602001611433565b83811115610f0c5750506000910152565b602081526000825180602084015261147b816040850160208701611430565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146114a657600080fd5b919050565b600080604083850312156114be57600080fd5b6114c78361148f565b946020939093013593505050565b6000806000606084860312156114ea57600080fd5b6114f38461148f565b92506115016020850161148f565b9150604084013590509250925092565b60006020828403121561152357600080fd5b5035919050565b6000806040838503121561153d57600080fd5b8235915061154d6020840161148f565b90509250929050565b60006020828403121561156857600080fd5b610c0c8261148f565b6000806040838503121561158457600080fd5b61158d8361148f565b915061154d6020840161148f565b600181811c908216806115af57607f821691505b602082108114156115d057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156115ff576115ff6115d6565b500190565b600081600019048311821515161561161e5761161e6115d6565b500290565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008161165e5761165e6115d6565b506000190190565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161169e816017850160208801611430565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516116cf816028840160208801611430565b01602801949350505050565b6000828210156116ed576116ed6115d6565b50039056fea264697066735822122057fcff20984130e50ceff4e6072a7d201ff7c10a5f667d7857da3cd70a5fa30164736f6c634300080b003336fd43ede163045b10e1f0abd16f62f165fce3fa7b6cde217bcea3bc47663acc0000000000000000000000007edaa5bec0c1c3c40c473f1247d0b755214cc3ae000000000000000000000000fa9ff88ed5d2e9bd2d33a02362d69dce861a0c2e
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007edaa5bec0c1c3c40c473f1247d0b755214cc3ae000000000000000000000000fa9ff88ed5d2e9bd2d33a02362d69dce861a0c2e
-----Decoded View---------------
Arg [0] : RESEVERD (address): 0x7edaa5bec0c1c3c40c473f1247d0b755214cc3ae
Arg [1] : COMMISION (address): 0xfa9ff88ed5d2e9bd2d33a02362d69dce861a0c2e
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007edaa5bec0c1c3c40c473f1247d0b755214cc3ae
Arg [1] : 000000000000000000000000fa9ff88ed5d2e9bd2d33a02362d69dce861a0c2e
Deployed ByteCode Sourcemap
33802:7607:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11661:204;;;;;;:::i;:::-;;:::i;:::-;;;470:14:1;;463:22;445:41;;433:2;418:18;11661:204:0;;;;;;;;22408:100;;;:::i;:::-;;;;;;;:::i;24575:169::-;;;;;;:::i;:::-;;:::i;23528:108::-;23616:12;;23528:108;;;1731:25:1;;;1719:2;1704:18;23528:108:0;1585:177:1;25226:492:0;;;;;;:::i;:::-;;:::i;13072:123::-;;;;;;:::i;:::-;13138:7;13165:12;;;:6;:12;;;;;:22;;;;13072:123;13457:147;;;;;;:::i;:::-;;:::i;:::-;;34565:84;;;34640:1;2868:36:1;;2856:2;2841:18;34565:84:0;2726:184:1;14505:218:0;;;;;;:::i;:::-;;:::i;26127:215::-;;;;;;:::i;:::-;;:::i;34655:114::-;;;;;;:::i;:::-;;:::i;32945:91::-;;;;;;:::i;:::-;;:::i;35730:239::-;;;;;;:::i;:::-;;:::i;23699:127::-;;;;;;:::i;:::-;-1:-1:-1;;;;;23800:18:0;23773:7;23800:18;;;;;;;;;;;;23699:127;33355:368;;;;;;:::i;:::-;;:::i;36087:101::-;;;:::i;11957:139::-;;;;;;:::i;:::-;;:::i;22627:104::-;;;:::i;11048:49::-;;11093:4;11048:49;;26845:413;;;;;;:::i;:::-;;:::i;24039:175::-;;;;;;:::i;:::-;;:::i;256:40::-;;;;;-1:-1:-1;;;;;256:40:0;;;;;;-1:-1:-1;;;;;3455:32:1;;;3437:51;;3425:2;3410:18;256:40:0;3291:203:1;35977:104:0;;;;;;:::i;:::-;-1:-1:-1;;;;;36054:21:0;36032:4;36054:21;;;:13;:21;;;;;;;;;35977:104;13849:149;;;;;;:::i;:::-;;:::i;24277:151::-;;;;;;:::i;:::-;-1:-1:-1;;;;;24393:18:0;;;24366:7;24393:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;24277:151;35479:243;;;;;;:::i;:::-;;:::i;36194:127::-;;;;;;:::i;:::-;;:::i;304:38::-;;;;;-1:-1:-1;;;;;304:38:0;;;33875:68;;33916:27;33875:68;;11661:204;11746:4;-1:-1:-1;;;;;;11770:47:0;;-1:-1:-1;;;11770:47:0;;:87;;-1:-1:-1;;;;;;;;;;2940:40:0;;;11821:36;11763:94;11661:204;-1:-1:-1;;11661:204:0:o;22408:100::-;22462:13;22495:5;22488:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22408:100;:::o;24575:169::-;24658:4;24675:39;8943:10;24698:7;24707:6;24675:8;:39::i;:::-;-1:-1:-1;24732:4:0;24575:169;;;;:::o;25226:492::-;25366:4;25383:36;25393:6;25401:9;25412:6;25383:9;:36::i;:::-;-1:-1:-1;;;;;25459:19:0;;25432:24;25459:19;;;:11;:19;;;;;;;;8943:10;25459:33;;;;;;;;25511:26;;;;25503:79;;;;-1:-1:-1;;;25503:79:0;;4351:2:1;25503:79:0;;;4333:21:1;4390:2;4370:18;;;4363:30;4429:34;4409:18;;;4402:62;-1:-1:-1;;;4480:18:1;;;4473:38;4528:19;;25503:79:0;;;;;;;;;25618:57;25627:6;8943:10;25668:6;25649:16;:25;25618:8;:57::i;:::-;-1:-1:-1;25706:4:0;;25226:492;-1:-1:-1;;;;25226:492:0:o;13457:147::-;13138:7;13165:12;;;:6;:12;;;;;:22;;;11539:30;11550:4;8943:10;11539;:30::i;:::-;13571:25:::1;13582:4;13588:7;13571:10;:25::i;:::-;13457:147:::0;;;:::o;14505:218::-;-1:-1:-1;;;;;14601:23:0;;8943:10;14601:23;14593:83;;;;-1:-1:-1;;;14593:83:0;;4760:2:1;14593:83:0;;;4742:21:1;4799:2;4779:18;;;4772:30;4838:34;4818:18;;;4811:62;-1:-1:-1;;;4889:18:1;;;4882:45;4944:19;;14593:83:0;4558:411:1;14593:83:0;14689:26;14701:4;14707:7;14689:11;:26::i;:::-;14505:218;;:::o;26127:215::-;8943:10;26215:4;26264:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;26264:34:0;;;;;;;;;;26215:4;;26232:80;;26255:7;;26264:47;;26301:10;;26264:47;:::i;:::-;26232:8;:80::i;34655:114::-;11093:4;11539:30;11093:4;8943:10;11539;:30::i;:::-;34744:17:::1;34750:2;34754:6;34744:5;:17::i;32945:91::-:0;33001:27;8943:10;33021:6;33001:5;:27::i;:::-;32945:91;:::o;35730:239::-;11093:4;11539:30;11093:4;8943:10;11539;:30::i;:::-;-1:-1:-1;;;;;36054:21:0;;36032:4;36054:21;;;:13;:21;;;;;;;;35818:63:::1;;;::::0;-1:-1:-1;;;35818:63:0;;5441:2:1;35818:63:0::1;::::0;::::1;5423:21:1::0;5480:2;5460:18;;;5453:30;5519:34;5499:18;;;5492:62;-1:-1:-1;;;5570:18:1;;;5563:32;5612:19;;35818:63:0::1;5239:398:1::0;35818:63:0::1;-1:-1:-1::0;;;;;35892:21:0;::::1;35916:5;35892:21:::0;;;:13:::1;:21;::::0;;;;;;;:29;;-1:-1:-1;;35892:29:0::1;::::0;;35937:26;445:41:1;;;35937:26:0::1;::::0;418:18:1;35937:26:0::1;;;;;;;;35730:239:::0;;:::o;33355:368::-;33432:24;33459:32;33469:7;8943:10;24277:151;:::i;33459:32::-;33432:59;;33530:6;33510:16;:26;;33502:75;;;;-1:-1:-1;;;33502:75:0;;5844:2:1;33502:75:0;;;5826:21:1;5883:2;5863:18;;;5856:30;5922:34;5902:18;;;5895:62;-1:-1:-1;;;5973:18:1;;;5966:34;6017:19;;33502:75:0;5642:400:1;33502:75:0;33613:58;33622:7;8943:10;33664:6;33645:16;:25;33613:8;:58::i;:::-;33693:22;33699:7;33708:6;33693:5;:22::i;36087:101::-;11093:4;11539:30;11093:4;8943:10;11539;:30::i;:::-;36170:10:::1;36149:33;11957:139:::0;12035:4;12059:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;12059:29:0;;;;;;;;;;;;;;;11957:139::o;22627:104::-;22683:13;22716:7;22709:14;;;;;:::i;26845:413::-;8943:10;26938:4;26982:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;26982:34:0;;;;;;;;;;27035:35;;;;27027:85;;;;-1:-1:-1;;;27027:85:0;;6249:2:1;27027:85:0;;;6231:21:1;6288:2;6268:18;;;6261:30;6327:34;6307:18;;;6300:62;-1:-1:-1;;;6378:18:1;;;6371:35;6423:19;;27027:85:0;6047:401:1;27027:85:0;27148:67;8943:10;27171:7;27199:15;27180:16;:34;27148:8;:67::i;:::-;-1:-1:-1;27246:4:0;;26845:413;-1:-1:-1;;;26845:413:0:o;24039:175::-;24125:4;24142:42;8943:10;24166:9;24177:6;24142:9;:42::i;13849:149::-;13138:7;13165:12;;;:6;:12;;;;;:22;;;11539:30;11550:4;8943:10;11539;:30::i;:::-;13964:26:::1;13976:4;13982:7;13964:11;:26::i;35479:243::-:0;11093:4;11539:30;11093:4;8943:10;11539;:30::i;:::-;-1:-1:-1;;;;;23800:18:0;;35593:1:::1;23800:18:::0;;;;;;;;;;;35573:21:::1;35565:71;;;::::0;-1:-1:-1;;;35565:71:0;;6655:2:1;35565:71:0::1;::::0;::::1;6637:21:1::0;6694:2;6674:18;;;6667:30;6733:34;6713:18;;;6706:62;-1:-1:-1;;;6784:18:1;;;6777:35;6829:19;;35565:71:0::1;6453:401:1::0;35565:71:0::1;-1:-1:-1::0;;;;;35647:21:0;::::1;;::::0;;;:13:::1;:21;::::0;;;;;;;;:28;;-1:-1:-1;;35647:28:0::1;35671:4;35647:28:::0;;::::1;::::0;;;35691:25;;445:41:1;;;35691:25:0::1;::::0;418:18:1;35691:25:0::1;305:187:1::0;36194:127:0;11093:4;11539:30;11093:4;8943:10;11539;:30::i;:::-;36303:10:::1;-1:-1:-1::0;;;;;36282:33:0::1;;4669:451:::0;4744:13;4770:19;4802:10;4806:6;4802:1;:10;:::i;:::-;:14;;4815:1;4802:14;:::i;:::-;4792:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4792:25:0;;4770:47;;-1:-1:-1;;;4828:6:0;4835:1;4828:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;4828:15:0;;;;;;;;;-1:-1:-1;;;4854:6:0;4861:1;4854:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;4854:15:0;;;;;;;;-1:-1:-1;4885:9:0;4897:10;4901:6;4897:1;:10;:::i;:::-;:14;;4910:1;4897:14;:::i;:::-;4885:26;;4880:135;4917:1;4913;:5;4880:135;;;-1:-1:-1;;;4965:5:0;4973:3;4965:11;4952:25;;;;;;;:::i;:::-;;;;4940:6;4947:1;4940:9;;;;;;;;:::i;:::-;;;;:37;-1:-1:-1;;;;;4940:37:0;;;;;;;;-1:-1:-1;5002:1:0;4992:11;;;;;4920:3;;;:::i;:::-;;;4880:135;;;-1:-1:-1;5033:10:0;;5025:55;;;;-1:-1:-1;;;5025:55:0;;7639:2:1;5025:55:0;;;7621:21:1;;;7658:18;;;7651:30;7717:34;7697:18;;;7690:62;7769:18;;5025:55:0;7437:356:1;5025:55:0;5105:6;4669:451;-1:-1:-1;;;4669:451:0:o;30529:380::-;-1:-1:-1;;;;;30665:19:0;;30657:68;;;;-1:-1:-1;;;30657:68:0;;8000:2:1;30657:68:0;;;7982:21:1;8039:2;8019:18;;;8012:30;8078:34;8058:18;;;8051:62;-1:-1:-1;;;8129:18:1;;;8122:34;8173:19;;30657:68:0;7798:400:1;30657:68:0;-1:-1:-1;;;;;30744:21:0;;30736:68;;;;-1:-1:-1;;;30736:68:0;;8405:2:1;30736:68:0;;;8387:21:1;8444:2;8424:18;;;8417:30;8483:34;8463:18;;;8456:62;-1:-1:-1;;;8534:18:1;;;8527:32;8576:19;;30736:68:0;8203:398:1;30736:68:0;-1:-1:-1;;;;;30817:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;30869:32;;1731:25:1;;;30869:32:0;;1704:18:1;30869:32:0;;;;;;;30529:380;;;:::o;27748:733::-;-1:-1:-1;;;;;27888:20:0;;27880:70;;;;-1:-1:-1;;;27880:70:0;;8808:2:1;27880:70:0;;;8790:21:1;8847:2;8827:18;;;8820:30;8886:34;8866:18;;;8859:62;-1:-1:-1;;;8937:18:1;;;8930:35;8982:19;;27880:70:0;8606:401:1;27880:70:0;-1:-1:-1;;;;;27969:23:0;;27961:71;;;;-1:-1:-1;;;27961:71:0;;9214:2:1;27961:71:0;;;9196:21:1;9253:2;9233:18;;;9226:30;9292:34;9272:18;;;9265:62;-1:-1:-1;;;9343:18:1;;;9336:33;9386:19;;27961:71:0;9012:399:1;27961:71:0;28045:47;28066:6;28074:9;28085:6;28045:20;:47::i;:::-;-1:-1:-1;;;;;28129:17:0;;28105:21;28129:17;;;;;;;;;;;28165:23;;;;28157:74;;;;-1:-1:-1;;;28157:74:0;;9618:2:1;28157:74:0;;;9600:21:1;9657:2;9637:18;;;9630:30;9696:34;9676:18;;;9669:62;-1:-1:-1;;;9747:18:1;;;9740:36;9793:19;;28157:74:0;9416:402:1;28157:74:0;-1:-1:-1;;;;;28267:17:0;;;:9;:17;;;;;;;;;;;28287:22;;;28267:42;;28331:20;;;;;;;;:30;;28303:6;;28267:9;28331:30;;28303:6;;28331:30;:::i;:::-;;;;;;;;28396:9;-1:-1:-1;;;;;28379:35:0;28388:6;-1:-1:-1;;;;;28379:35:0;;28407:6;28379:35;;;;1731:25:1;;1719:2;1704:18;;1585:177;28379:35:0;;;;;;;;28427:46;27869:612;27748:733;;;:::o;12386:497::-;12467:22;12475:4;12481:7;12467;:22::i;:::-;12462:414;;12655:41;12683:7;-1:-1:-1;;;;;12655:41:0;12693:2;12655:19;:41::i;:::-;12769:38;12797:4;12804:2;12769:19;:38::i;:::-;12560:270;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;12560:270:0;;;;;;;;;;-1:-1:-1;;;12506:358:0;;;;;;;:::i;16006:238::-;16090:22;16098:4;16104:7;16090;:22::i;:::-;16085:152;;16129:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;16129:29:0;;;;;;;;;:36;;-1:-1:-1;;16129:36:0;16161:4;16129:36;;;16212:12;8943:10;;8863:98;16212:12;-1:-1:-1;;;;;16185:40:0;16203:7;-1:-1:-1;;;;;16185:40:0;16197:4;16185:40;;;;;;;;;;16006:238;;:::o;16376:239::-;16460:22;16468:4;16474:7;16460;:22::i;:::-;16456:152;;;16531:5;16499:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;16499:29:0;;;;;;;;;;:37;;-1:-1:-1;;16499:37:0;;;16556:40;8943:10;;16499:12;;16556:40;;16531:5;16556:40;16376:239;;:::o;28768:399::-;-1:-1:-1;;;;;28852:21:0;;28844:65;;;;-1:-1:-1;;;28844:65:0;;10816:2:1;28844:65:0;;;10798:21:1;10855:2;10835:18;;;10828:30;10894:33;10874:18;;;10867:61;10945:18;;28844:65:0;10614:355:1;28844:65:0;28922:49;28951:1;28955:7;28964:6;28922:20;:49::i;:::-;29000:6;28984:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;29017:18:0;;:9;:18;;;;;;;;;;:28;;29039:6;;29017:9;:28;;29039:6;;29017:28;:::i;:::-;;;;-1:-1:-1;;29061:37:0;;1731:25:1;;;-1:-1:-1;;;;;29061:37:0;;;29078:1;;29061:37;;1719:2:1;1704:18;29061:37:0;;;;;;;14505:218;;:::o;29500:591::-;-1:-1:-1;;;;;29584:21:0;;29576:67;;;;-1:-1:-1;;;29576:67:0;;11176:2:1;29576:67:0;;;11158:21:1;11215:2;11195:18;;;11188:30;11254:34;11234:18;;;11227:62;-1:-1:-1;;;11305:18:1;;;11298:31;11346:19;;29576:67:0;10974:397:1;29576:67:0;29656:49;29677:7;29694:1;29698:6;29656:20;:49::i;:::-;-1:-1:-1;;;;;29743:18:0;;29718:22;29743:18;;;;;;;;;;;29780:24;;;;29772:71;;;;-1:-1:-1;;;29772:71:0;;11578:2:1;29772:71:0;;;11560:21:1;11617:2;11597:18;;;11590:30;11656:34;11636:18;;;11629:62;-1:-1:-1;;;11707:18:1;;;11700:32;11749:19;;29772:71:0;11376:398:1;29772:71:0;-1:-1:-1;;;;;29879:18:0;;:9;:18;;;;;;;;;;29900:23;;;29879:44;;29945:12;:22;;29917:6;;29879:9;29945:22;;29917:6;;29945:22;:::i;:::-;;;;-1:-1:-1;;29985:37:0;;1731:25:1;;;30011:1:0;;-1:-1:-1;;;;;29985:37:0;;;;;1719:2:1;1704:18;29985:37:0;;;;;;;13457:147;;;:::o;34877:596::-;35030:23;;-1:-1:-1;;;;;35022:31:0;;;35030:23;;35022:31;35019:287;;;35076:35;33916:27;35100:10;35076:7;:35::i;:::-;35068:122;;;;-1:-1:-1;;;35068:122:0;;12111:2:1;35068:122:0;;;12093:21:1;12150:2;12130:18;;;12123:30;12189:34;12169:18;;;12162:62;12260:34;12240:18;;;12233:62;-1:-1:-1;;;12311:19:1;;;12304:40;12361:19;;35068:122:0;11909:477:1;35068:122:0;35019:287;;;35218:25;;-1:-1:-1;;;;;35210:33:0;;;35218:25;;35210:33;35206:100;;;35266:39;11093:4;35294:10;35266:7;:39::i;:::-;35258:48;;;;;;35354:10;35340:25;;;;:13;:25;;;;;;;;35339:26;35331:73;;;;-1:-1:-1;;;35331:73:0;;12593:2:1;35331:73:0;;;12575:21:1;12632:2;12612:18;;;12605:30;12671:34;12651:18;;;12644:62;-1:-1:-1;;;12722:18:1;;;12715:32;12764:19;;35331:73:0;12391:398:1;14:286;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:1;;209:43;;199:71;;266:1;263;256:12;497:258;569:1;579:113;593:6;590:1;587:13;579:113;;;669:11;;;663:18;650:11;;;643:39;615:2;608:10;579:113;;;710:6;707:1;704:13;701:48;;;-1:-1:-1;;745:1:1;727:16;;720:27;497:258::o;760:383::-;909:2;898:9;891:21;872:4;941:6;935:13;984:6;979:2;968:9;964:18;957:34;1000:66;1059:6;1054:2;1043:9;1039:18;1034:2;1026:6;1022:15;1000:66;:::i;:::-;1127:2;1106:15;-1:-1:-1;;1102:29:1;1087:45;;;;1134:2;1083:54;;760:383;-1:-1:-1;;760:383:1:o;1148:173::-;1216:20;;-1:-1:-1;;;;;1265:31:1;;1255:42;;1245:70;;1311:1;1308;1301:12;1245:70;1148:173;;;:::o;1326:254::-;1394:6;1402;1455:2;1443:9;1434:7;1430:23;1426:32;1423:52;;;1471:1;1468;1461:12;1423:52;1494:29;1513:9;1494:29;:::i;:::-;1484:39;1570:2;1555:18;;;;1542:32;;-1:-1:-1;;;1326:254:1:o;1767:328::-;1844:6;1852;1860;1913:2;1901:9;1892:7;1888:23;1884:32;1881:52;;;1929:1;1926;1919:12;1881:52;1952:29;1971:9;1952:29;:::i;:::-;1942:39;;2000:38;2034:2;2023:9;2019:18;2000:38;:::i;:::-;1990:48;;2085:2;2074:9;2070:18;2057:32;2047:42;;1767:328;;;;;:::o;2100:180::-;2159:6;2212:2;2200:9;2191:7;2187:23;2183:32;2180:52;;;2228:1;2225;2218:12;2180:52;-1:-1:-1;2251:23:1;;2100:180;-1:-1:-1;2100:180:1:o;2467:254::-;2535:6;2543;2596:2;2584:9;2575:7;2571:23;2567:32;2564:52;;;2612:1;2609;2602:12;2564:52;2648:9;2635:23;2625:33;;2677:38;2711:2;2700:9;2696:18;2677:38;:::i;:::-;2667:48;;2467:254;;;;;:::o;3100:186::-;3159:6;3212:2;3200:9;3191:7;3187:23;3183:32;3180:52;;;3228:1;3225;3218:12;3180:52;3251:29;3270:9;3251:29;:::i;3499:260::-;3567:6;3575;3628:2;3616:9;3607:7;3603:23;3599:32;3596:52;;;3644:1;3641;3634:12;3596:52;3667:29;3686:9;3667:29;:::i;:::-;3657:39;;3715:38;3749:2;3738:9;3734:18;3715:38;:::i;3764:380::-;3843:1;3839:12;;;;3886;;;3907:61;;3961:4;3953:6;3949:17;3939:27;;3907:61;4014:2;4006:6;4003:14;3983:18;3980:38;3977:161;;;4060:10;4055:3;4051:20;4048:1;4041:31;4095:4;4092:1;4085:15;4123:4;4120:1;4113:15;3977:161;;3764:380;;;:::o;4974:127::-;5035:10;5030:3;5026:20;5023:1;5016:31;5066:4;5063:1;5056:15;5090:4;5087:1;5080:15;5106:128;5146:3;5177:1;5173:6;5170:1;5167:13;5164:39;;;5183:18;;:::i;:::-;-1:-1:-1;5219:9:1;;5106:128::o;6859:168::-;6899:7;6965:1;6961;6957:6;6953:14;6950:1;6947:21;6942:1;6935:9;6928:17;6924:45;6921:71;;;6972:18;;:::i;:::-;-1:-1:-1;7012:9:1;;6859:168::o;7032:127::-;7093:10;7088:3;7084:20;7081:1;7074:31;7124:4;7121:1;7114:15;7148:4;7145:1;7138:15;7164:127;7225:10;7220:3;7216:20;7213:1;7206:31;7256:4;7253:1;7246:15;7280:4;7277:1;7270:15;7296:136;7335:3;7363:5;7353:39;;7372:18;;:::i;:::-;-1:-1:-1;;;7408:18:1;;7296:136::o;9823:786::-;10234:25;10229:3;10222:38;10204:3;10289:6;10283:13;10305:62;10360:6;10355:2;10350:3;10346:12;10339:4;10331:6;10327:17;10305:62;:::i;:::-;-1:-1:-1;;;10426:2:1;10386:16;;;10418:11;;;10411:40;10476:13;;10498:63;10476:13;10547:2;10539:11;;10532:4;10520:17;;10498:63;:::i;:::-;10581:17;10600:2;10577:26;;9823:786;-1:-1:-1;;;;9823:786:1:o;11779:125::-;11819:4;11847:1;11844;11841:8;11838:34;;;11852:18;;:::i;:::-;-1:-1:-1;11889:9:1;;11779:125::o
Swarm Source
ipfs://57fcff20984130e50ceff4e6072a7d201ff7c10a5f667d7857da3cd70a5fa301
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.