Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 270 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 29243948 | 26 days ago | IN | 0 ETH | 0.00000104 | ||||
| Approve | 19063159 | 262 days ago | IN | 0 ETH | 0.00000001 | ||||
| Transfer | 17219800 | 305 days ago | IN | 0 ETH | 0.00000008 | ||||
| Approve | 15836864 | 337 days ago | IN | 0 ETH | 0.00000046 | ||||
| Approve | 14720115 | 362 days ago | IN | 0 ETH | 0.0000001 | ||||
| Approve | 14665575 | 364 days ago | IN | 0 ETH | 0.00000001 | ||||
| Approve | 14665395 | 364 days ago | IN | 0 ETH | 0.00000001 | ||||
| Approve | 14448037 | 369 days ago | IN | 0 ETH | 0.00000079 | ||||
| Approve | 13949219 | 380 days ago | IN | 0 ETH | 0.00000803 | ||||
| Approve | 13229059 | 397 days ago | IN | 0 ETH | 0.00000105 | ||||
| Approve | 13228754 | 397 days ago | IN | 0 ETH | 0.00000078 | ||||
| Approve | 12073526 | 424 days ago | IN | 0 ETH | 0.00000021 | ||||
| Approve | 12072938 | 424 days ago | IN | 0 ETH | 0.00000027 | ||||
| Approve | 10724561 | 455 days ago | IN | 0 ETH | 0.00000037 | ||||
| Approve | 10004832 | 472 days ago | IN | 0 ETH | 0.00000015 | ||||
| Approve | 7727926 | 524 days ago | IN | 0 ETH | 0.0000006 | ||||
| Approve | 7555904 | 528 days ago | IN | 0 ETH | 0.00000024 | ||||
| Transfer | 7555884 | 528 days ago | IN | 0 ETH | 0.00000024 | ||||
| Transfer | 7555861 | 528 days ago | IN | 0 ETH | 0.00000025 | ||||
| Approve | 6900265 | 543 days ago | IN | 0 ETH | 0.00000024 | ||||
| Approve | 6597696 | 550 days ago | IN | 0 ETH | 0.0000002 | ||||
| Approve | 6597654 | 550 days ago | IN | 0 ETH | 0.00000033 | ||||
| Approve | 6597479 | 550 days ago | IN | 0 ETH | 0.00000022 | ||||
| Approve | 6596718 | 550 days ago | IN | 0 ETH | 0.0000003 | ||||
| Approve | 5834081 | 568 days ago | IN | 0 ETH | 0.00000018 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Contract Name:
DogPac
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import { BlastGasRefunder } from "../../../Blast/BlastGasRefunder.sol";
import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import { Context } from "@openzeppelin/contracts/utils/Context.sol";
import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol";
/**
* web: Dogpac.io
* x: https://x.com/DogpacBlastL2
* tg: https://t.me/dogpac_commchat
*/
contract DogPac is Context, ERC20, Ownable, BlastGasRefunder {
uint8 internal immutable _decimals;
constructor() ERC20(
"dogpac",
"dogpac"
) {
_mint(msg.sender, 1_000_000_000 * (10 ** 9));
_decimals = 9;
setBlastOwnerInt(msg.sender);
_transferOwnership(msg.sender);
}
function decimals() public view override returns(uint8) {
return _decimals;
}
receive() external payable {}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. 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 {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
// 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;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)
pragma solidity ^0.8.0;
import "./IERC20.sol";
import "./extensions/IERC20Metadata.sol";
import "../../utils/Context.sol";
/**
* @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.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.
*
* 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}.
*
* 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 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 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:
*
* - `to` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address to, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_transfer(owner, to, 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}.
*
* NOTE: If `amount` 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 amount) public virtual override returns (bool) {
address owner = _msgSender();
_approve(owner, 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}.
*
* 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 `amount`.
* - the caller must have allowance for ``from``'s tokens of at least
* `amount`.
*/
function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, amount);
_transfer(from, to, 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) {
address owner = _msgSender();
_approve(owner, spender, allowance(owner, 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) {
address owner = _msgSender();
uint256 currentAllowance = allowance(owner, spender);
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(owner, spender, currentAllowance - subtractedValue);
}
return true;
}
/**
* @dev Moves `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.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `from` must have a balance of at least `amount`.
*/
function _transfer(address from, address to, uint256 amount) internal virtual {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(from, to, amount);
uint256 fromBalance = _balances[from];
require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[from] = fromBalance - amount;
// Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
// decrementing then incrementing.
_balances[to] += amount;
}
emit Transfer(from, to, amount);
_afterTokenTransfer(from, to, 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;
unchecked {
// Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
_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;
// Overflow not possible: amount <= accountBalance <= totalSupply.
_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 Updates `owner` s allowance for `spender` based on spent `amount`.
*
* Does not update the allowance amount in case of infinite allowance.
* Revert if not enough allowance is available.
*
* Might emit an {Approval} event.
*/
function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= amount, "ERC20: insufficient allowance");
unchecked {
_approve(owner, spender, currentAllowance - 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 {}
}//import { console } from "hardhat/console.sol";
interface IBlast {
function configureClaimableGas() external;
function configureGovernor(address _governor) external;
function claimMaxGas(address contractAddress, address recipientOfGas) external returns (uint256);
function claimAllGas(address contractAddress, address recipientOfGas) external returns (uint256);
}
/**
* @title BlastGasRefunder
* @author HyperBlast team
* @notice Contract to refund gas to users automatically
* @dev CAREFUL, if you copy and use this contract you are doing that under you own responsability,
* we are not responsible of any losses you could suffer from bad implementations or bugs
*/
contract BlastGasRefunder {
IBlast private iBlast = IBlast(0x4300000000000000000000000000000000000002);
bytes4 private constant FSIGN_CLAIM_MAX_GAS = bytes4(keccak256("claimMaxGas(address,address)"));
bytes4 private constant FSIGN_CLAIM_ALL_GAS = bytes4(keccak256("claimAllGas(address,address)"));
/**
* @notice refundmentPercentage has to be bigger or equal to this
*/
uint8 public minRefundmentPercentage = 0;
/**
* @notice Percentage of claimed gas for refundments
*/
uint8 public refundmentPercentage = 0;
/**
* @notice We claim the gas 1 time per day
*/
uint24 public dayCounter = 0;
/**
* @notice Claim max / claim all gas available
*/
bool public claimMax = true;
/**
* @notice The address that can trigger the custom gas functions from this contract
*/
address public blastOwner;
/**
* @notice refundmentPercentage gets locked and can not be changed
*/
bool public renounceUpdateRefundment = false;
/**
* @notice Max gas for calling gas refund functions
*/
uint256 public maxGasForCall = 300000;
/**
* @notice Max amount that router can refund automatically
*/
uint256 public maxRefund = 0.01 ether;
modifier onlyBlastOwner() {
require(msg.sender == blastOwner, "Only blast contract owner can manage blast features");
_;
}
modifier gasRefunder() {
uint256 gasStart = gasleft();
_;
//1 execution per day
uint24 currentDayCounter = uint24(block.timestamp / 1 days);
if(currentDayCounter != dayCounter) {
claimGas(true);
dayCounter = currentDayCounter;
}
//Refund if possible
uint256 gasLeft = gasleft();
uint256 gasToRefund = (gasLeft < gasStart ? gasStart - gasLeft : 0) * tx.gasprice;
uint256 gasToRefundCap = gasToRefund <= maxRefund ? gasToRefund : maxRefund;
uint256 refunmentsBal = address(this).balance;
if(refundmentPercentage > 0 && refunmentsBal >= gasToRefundCap && gasToRefundCap > 0) {
payable(tx.origin).send(gasToRefundCap);
}
}
constructor() public {
blastOwner = address(this);
iBlast.configureGovernor(address(this)); //default governor
iBlast.configureClaimableGas();
}
/**
* This function is used to claim pending gas, will run on 'safe mode' for automatic gas refunding call
* @param lowLevel If we need a low level call (to prevent crashes on any case)
*/
function claimGas(bool lowLevel) internal returns(uint256) {
uint256 prevBal = address(this).balance;
if(lowLevel) {
bytes memory encodedCall = abi.encodeWithSelector(claimMax ? FSIGN_CLAIM_MAX_GAS : FSIGN_CLAIM_ALL_GAS, address(this), address(this));
address(iBlast).call{ gas: maxGasForCall }(encodedCall);
} else {
if(claimMax) {
iBlast.claimMaxGas(address(this), address(this));
} else {
iBlast.claimAllGas(address(this), address(this));
}
}
uint256 afterBal = address(this).balance;
if(refundmentPercentage < 100 && afterBal > prevBal) {
uint256 refundAmount = (afterBal - prevBal) * (100 - refundmentPercentage) / 100;
payable(blastOwner).send(refundAmount);
return refundAmount;
}
return 0;
}
//#region Ownership
function setBlastOwnerInt(address _blastOwner) internal {
blastOwner = _blastOwner;
}
function setBlastOwner(address _blastOwner) public onlyBlastOwner {
blastOwner = _blastOwner;
}
function unstuckETH() external onlyBlastOwner {
payable(blastOwner).transfer(address(this).balance);
}
function setMaxGasForCall(uint256 _maxGas) external onlyBlastOwner {
maxGasForCall = _maxGas;
}
function setMaxRefund(uint256 _maxRefund) external onlyBlastOwner {
require(_maxRefund <= 0.5 ether, "Invalid max refund");
maxRefund = _maxRefund;
}
function claimMode(bool _claimMax) external onlyBlastOwner {
claimMax = _claimMax;
}
function updateRefundmentPercentage(uint8 newRFPC) external onlyBlastOwner {
require(!renounceUpdateRefundment, "UPDATES NOT ALLOWED");
require(newRFPC >= minRefundmentPercentage, "Min. gas for refundment has to be bigger tan minimal");
require(newRFPC <= 100, "Max. gas for refundment is 100%");
refundmentPercentage = newRFPC;
}
function renounceOwnerUpdateRefundment() external onlyBlastOwner {
require(!renounceUpdateRefundment, "Already renounced");
renounceUpdateRefundment = true;
}
/**
* @notice Can be used to claim the pending gas and to check the gas pending to claim by simulation
*/
function claim() external onlyBlastOwner returns(uint256) {
return claimGas(false);
}
//#endregion
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity ^0.8.0;
import "../IERC20.sol";
/**
* @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);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `from` to `to` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 amount) external returns (bool);
}{
"optimizer": {
"enabled": true,
"runs": 999
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
}
},
"remappings": [],
"evmVersion": "istanbul"
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"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":"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"},{"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":[],"name":"blastOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_claimMax","type":"bool"}],"name":"claimMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dayCounter","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","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":[{"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":[],"name":"maxGasForCall","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxRefund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minRefundmentPercentage","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","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":"refundmentPercentage","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnerUpdateRefundment","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceUpdateRefundment","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_blastOwner","type":"address"}],"name":"setBlastOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxGas","type":"uint256"}],"name":"setMaxGasForCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxRefund","type":"uint256"}],"name":"setMaxRefund","outputs":[],"stateMutability":"nonpayable","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":"to","type":"address"},{"internalType":"uint256","name":"amount","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":"amount","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":[],"name":"unstuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newRFPC","type":"uint8"}],"name":"updateRefundmentPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60a0604052600680546001600160d01b0319167901000000000043000000000000000000000000000000000000021790556007805460ff60a01b19169055620493e0600855662386f26fc100006009553480156200005c57600080fd5b50604080518082018252600680825265646f6770616360d01b60208084018290528451808601909552918452908301529060036200009b8382620003ac565b506004620000aa8282620003ac565b505050620000c7620000c1620001e760201b60201c565b620001eb565b600780546001600160a01b03191630908117909155600654604051631d70c8d360e31b815260048101929092526001600160a01b03169063eb86469890602401600060405180830381600087803b1580156200012257600080fd5b505af115801562000137573d6000803e3d6000fd5b50505050600660009054906101000a90046001600160a01b03166001600160a01b0316634e606c476040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200018c57600080fd5b505af1158015620001a1573d6000803e3d6000fd5b50505050620001bf33670de0b6b3a76400006200023d60201b60201c565b6009608052600780546001600160a01b03191633179055620001e133620001eb565b620004a0565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620002985760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620002ac919062000478565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200033357607f821691505b6020821081036200035457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200030357600081815260208120601f850160051c81016020861015620003835750805b601f850160051c820191505b81811015620003a4578281556001016200038f565b505050505050565b81516001600160401b03811115620003c857620003c862000308565b620003e081620003d984546200031e565b846200035a565b602080601f831160018114620004185760008415620003ff5750858301515b600019600386901b1c1916600185901b178555620003a4565b600085815260208120601f198616915b82811015620004495788860151825594840194600190910190840162000428565b5085821015620004685787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200049a57634e487b7160e01b600052601160045260246000fd5b92915050565b6080516119af620004bc60003960006102be01526119af6000f3fe6080604052600436106101d15760003560e01c80638da5cb5b116100f7578063ac7c19ed11610095578063dd62ed3e11610064578063dd62ed3e14610564578063e0f2a4ce146105aa578063f2fde38b146105cb578063fcdebcce146105eb57600080fd5b8063ac7c19ed146104e2578063b2c1f98714610502578063cc08c09314610523578063d077c79f1461054357600080fd5b8063a4473c7d116100d1578063a4473c7d14610462578063a457c2d714610482578063a6142112146104a2578063a9059cbb146104c257600080fd5b80638da5cb5b146103d157806395d89b411461040357806399332c5e1461041857600080fd5b806337c349dc1161016f57806366577a351161013e57806366577a351461035c57806370a0823114610371578063715018a6146103a757806382bcedb5146103bc57600080fd5b806337c349dc146102f057806339509351146103115780634e71d92d146103315780635490822a1461034657600080fd5b80632053f300116101ab5780632053f300146102575780632353464c1461027957806323b872dd1461028f578063313ce567146102af57600080fd5b806306fdde03146101dd578063095ea7b31461020857806318160ddd1461023857600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101f261060b565b6040516101ff9190611714565b60405180910390f35b34801561021457600080fd5b50610228610223366004611763565b61069d565b60405190151581526020016101ff565b34801561024457600080fd5b506002545b6040519081526020016101ff565b34801561026357600080fd5b5061027761027236600461178d565b6106b7565b005b34801561028557600080fd5b5061024960095481565b34801561029b57600080fd5b506102286102aa3660046117b6565b61076b565b3480156102bb57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405160ff90911681526020016101ff565b3480156102fc57600080fd5b5060065461022890600160c81b900460ff1681565b34801561031d57600080fd5b5061022861032c366004611763565b61078f565b34801561033d57600080fd5b506102496107ce565b34801561035257600080fd5b5061024960085481565b34801561036857600080fd5b50610277610856565b34801561037d57600080fd5b5061024961038c3660046117f2565b6001600160a01b031660009081526020819052604090205490565b3480156103b357600080fd5b50610277610956565b3480156103c857600080fd5b5061027761096a565b3480156103dd57600080fd5b506005546001600160a01b03165b6040516001600160a01b0390911681526020016101ff565b34801561040f57600080fd5b506101f2610a1c565b34801561042457600080fd5b5060065461044e90760100000000000000000000000000000000000000000000900462ffffff1681565b60405162ffffff90911681526020016101ff565b34801561046e57600080fd5b5061027761047d36600461180d565b610a2b565b34801561048e57600080fd5b5061022861049d366004611763565b610c10565b3480156104ae57600080fd5b506102776104bd3660046117f2565b610cba565b3480156104ce57600080fd5b506102286104dd366004611763565b610d5f565b3480156104ee57600080fd5b506102776104fd366004611830565b610d6d565b34801561050e57600080fd5b506006546102de90600160a01b900460ff1681565b34801561052f57600080fd5b5061027761053e366004611830565b610e40565b34801561054f57600080fd5b5060075461022890600160a01b900460ff1681565b34801561057057600080fd5b5061024961057f366004611849565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156105b657600080fd5b506006546102de90600160a81b900460ff1681565b3480156105d757600080fd5b506102776105e63660046117f2565b610ebb565b3480156105f757600080fd5b506007546103eb906001600160a01b031681565b60606003805461061a9061187c565b80601f01602080910402602001604051908101604052809291908181526020018280546106469061187c565b80156106935780601f1061066857610100808354040283529160200191610693565b820191906000526020600020905b81548152906001019060200180831161067657829003601f168201915b5050505050905090565b6000336106ab818585610f48565b60019150505b92915050565b6007546001600160a01b031633146107325760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b60648201526084015b60405180910390fd5b60068054911515600160c81b027fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6000336107798582856110a0565b610784858585611132565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906106ab90829086906107c99087906118cc565b610f48565b6007546000906001600160a01b031633146108475760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610729565b610851600061131f565b905090565b6007546001600160a01b031633146108cc5760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610729565b600754600160a01b900460ff16156109265760405162461bcd60e51b815260206004820152601160248201527f416c72656164792072656e6f756e6365640000000000000000000000000000006044820152606401610729565b600780547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055565b61095e611637565b6109686000611691565b565b6007546001600160a01b031633146109e05760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610729565b6007546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610a19573d6000803e3d6000fd5b50565b60606004805461061a9061187c565b6007546001600160a01b03163314610aa15760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610729565b600754600160a01b900460ff1615610afb5760405162461bcd60e51b815260206004820152601360248201527f55504441544553204e4f5420414c4c4f574544000000000000000000000000006044820152606401610729565b60065460ff600160a01b90910481169082161015610b815760405162461bcd60e51b815260206004820152603460248201527f4d696e2e2067617320666f7220726566756e646d656e742068617320746f206260448201527f65206269676765722074616e206d696e696d616c0000000000000000000000006064820152608401610729565b60648160ff161115610bd55760405162461bcd60e51b815260206004820152601f60248201527f4d61782e2067617320666f7220726566756e646d656e742069732031303025006044820152606401610729565b6006805460ff909216600160a81b027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff909216919091179055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610cad5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610729565b6107848286868403610f48565b6007546001600160a01b03163314610d305760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610729565b6007805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000336106ab818585611132565b6007546001600160a01b03163314610de35760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610729565b6706f05b59d3b20000811115610e3b5760405162461bcd60e51b815260206004820152601260248201527f496e76616c6964206d617820726566756e6400000000000000000000000000006044820152606401610729565b600955565b6007546001600160a01b03163314610eb65760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610729565b600855565b610ec3611637565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610729565b610a1981611691565b6001600160a01b038316610fc35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610729565b6001600160a01b03821661103f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610729565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461112c578181101561111f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610729565b61112c8484848403610f48565b50505050565b6001600160a01b0383166111ae5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610729565b6001600160a01b03821661122a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610729565b6001600160a01b038316600090815260208190526040902054818110156112b95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610729565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361112c565b600047821561146357600654600090600160c81b900460ff16611362577f954fa5ee27c88a83eb6bac45faf9bf17dcbde40e107ff03508bd32ccc1f6243f611384565b7f662aa11dd0fb432d1e6c8fbc219a0b95da9ba58f40d5be8cf7968ed00b4f7ab65b6040513060248201819052604482015260640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925260065460085492519193506001600160a01b031691906114179084906118df565b60006040518083038160008787f1925050503d8060008114611455576040519150601f19603f3d011682016040523d82523d6000602084013e61145a565b606091505b50505050611599565b600654600160c81b900460ff1615611509576006546040517f662aa11d000000000000000000000000000000000000000000000000000000008152306004820181905260248201526001600160a01b039091169063662aa11d906044016020604051808303816000875af11580156114df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150391906118fb565b50611599565b6006546040517f954fa5ee000000000000000000000000000000000000000000000000000000008152306004820181905260248201526001600160a01b039091169063954fa5ee906044016020604051808303816000875af1158015611573573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159791906118fb565b505b60065447906064600160a81b90910460ff161080156115b757508181115b1561162d576006546000906064906115d990600160a81b900460ff1682611914565b60ff166115e6858561192d565b6115f09190611940565b6115fa9190611957565b6007546040519192506001600160a01b03169082156108fc029083906000818181858888f1509398975050505050505050565b5060009392505050565b6005546001600160a01b031633146109685760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610729565b600580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60005b8381101561170b5781810151838201526020016116f3565b50506000910152565b60208152600082518060208401526117338160408501602087016116f0565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461175e57600080fd5b919050565b6000806040838503121561177657600080fd5b61177f83611747565b946020939093013593505050565b60006020828403121561179f57600080fd5b813580151581146117af57600080fd5b9392505050565b6000806000606084860312156117cb57600080fd5b6117d484611747565b92506117e260208501611747565b9150604084013590509250925092565b60006020828403121561180457600080fd5b6117af82611747565b60006020828403121561181f57600080fd5b813560ff811681146117af57600080fd5b60006020828403121561184257600080fd5b5035919050565b6000806040838503121561185c57600080fd5b61186583611747565b915061187360208401611747565b90509250929050565b600181811c9082168061189057607f821691505b6020821081036118b057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106b1576106b16118b6565b600082516118f18184602087016116f0565b9190910192915050565b60006020828403121561190d57600080fd5b5051919050565b60ff82811682821603908111156106b1576106b16118b6565b818103818111156106b1576106b16118b6565b80820281158282048414176106b1576106b16118b6565b60008261197457634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220fb596602b14df45c43b371d3bc2dbf04479df57306079f41ada59281f44a39c964736f6c63430008140033
Deployed Bytecode
0x6080604052600436106101d15760003560e01c80638da5cb5b116100f7578063ac7c19ed11610095578063dd62ed3e11610064578063dd62ed3e14610564578063e0f2a4ce146105aa578063f2fde38b146105cb578063fcdebcce146105eb57600080fd5b8063ac7c19ed146104e2578063b2c1f98714610502578063cc08c09314610523578063d077c79f1461054357600080fd5b8063a4473c7d116100d1578063a4473c7d14610462578063a457c2d714610482578063a6142112146104a2578063a9059cbb146104c257600080fd5b80638da5cb5b146103d157806395d89b411461040357806399332c5e1461041857600080fd5b806337c349dc1161016f57806366577a351161013e57806366577a351461035c57806370a0823114610371578063715018a6146103a757806382bcedb5146103bc57600080fd5b806337c349dc146102f057806339509351146103115780634e71d92d146103315780635490822a1461034657600080fd5b80632053f300116101ab5780632053f300146102575780632353464c1461027957806323b872dd1461028f578063313ce567146102af57600080fd5b806306fdde03146101dd578063095ea7b31461020857806318160ddd1461023857600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101f261060b565b6040516101ff9190611714565b60405180910390f35b34801561021457600080fd5b50610228610223366004611763565b61069d565b60405190151581526020016101ff565b34801561024457600080fd5b506002545b6040519081526020016101ff565b34801561026357600080fd5b5061027761027236600461178d565b6106b7565b005b34801561028557600080fd5b5061024960095481565b34801561029b57600080fd5b506102286102aa3660046117b6565b61076b565b3480156102bb57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000095b60405160ff90911681526020016101ff565b3480156102fc57600080fd5b5060065461022890600160c81b900460ff1681565b34801561031d57600080fd5b5061022861032c366004611763565b61078f565b34801561033d57600080fd5b506102496107ce565b34801561035257600080fd5b5061024960085481565b34801561036857600080fd5b50610277610856565b34801561037d57600080fd5b5061024961038c3660046117f2565b6001600160a01b031660009081526020819052604090205490565b3480156103b357600080fd5b50610277610956565b3480156103c857600080fd5b5061027761096a565b3480156103dd57600080fd5b506005546001600160a01b03165b6040516001600160a01b0390911681526020016101ff565b34801561040f57600080fd5b506101f2610a1c565b34801561042457600080fd5b5060065461044e90760100000000000000000000000000000000000000000000900462ffffff1681565b60405162ffffff90911681526020016101ff565b34801561046e57600080fd5b5061027761047d36600461180d565b610a2b565b34801561048e57600080fd5b5061022861049d366004611763565b610c10565b3480156104ae57600080fd5b506102776104bd3660046117f2565b610cba565b3480156104ce57600080fd5b506102286104dd366004611763565b610d5f565b3480156104ee57600080fd5b506102776104fd366004611830565b610d6d565b34801561050e57600080fd5b506006546102de90600160a01b900460ff1681565b34801561052f57600080fd5b5061027761053e366004611830565b610e40565b34801561054f57600080fd5b5060075461022890600160a01b900460ff1681565b34801561057057600080fd5b5061024961057f366004611849565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156105b657600080fd5b506006546102de90600160a81b900460ff1681565b3480156105d757600080fd5b506102776105e63660046117f2565b610ebb565b3480156105f757600080fd5b506007546103eb906001600160a01b031681565b60606003805461061a9061187c565b80601f01602080910402602001604051908101604052809291908181526020018280546106469061187c565b80156106935780601f1061066857610100808354040283529160200191610693565b820191906000526020600020905b81548152906001019060200180831161067657829003601f168201915b5050505050905090565b6000336106ab818585610f48565b60019150505b92915050565b6007546001600160a01b031633146107325760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b60648201526084015b60405180910390fd5b60068054911515600160c81b027fffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b6000336107798582856110a0565b610784858585611132565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906106ab90829086906107c99087906118cc565b610f48565b6007546000906001600160a01b031633146108475760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610729565b610851600061131f565b905090565b6007546001600160a01b031633146108cc5760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610729565b600754600160a01b900460ff16156109265760405162461bcd60e51b815260206004820152601160248201527f416c72656164792072656e6f756e6365640000000000000000000000000000006044820152606401610729565b600780547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055565b61095e611637565b6109686000611691565b565b6007546001600160a01b031633146109e05760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610729565b6007546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610a19573d6000803e3d6000fd5b50565b60606004805461061a9061187c565b6007546001600160a01b03163314610aa15760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610729565b600754600160a01b900460ff1615610afb5760405162461bcd60e51b815260206004820152601360248201527f55504441544553204e4f5420414c4c4f574544000000000000000000000000006044820152606401610729565b60065460ff600160a01b90910481169082161015610b815760405162461bcd60e51b815260206004820152603460248201527f4d696e2e2067617320666f7220726566756e646d656e742068617320746f206260448201527f65206269676765722074616e206d696e696d616c0000000000000000000000006064820152608401610729565b60648160ff161115610bd55760405162461bcd60e51b815260206004820152601f60248201527f4d61782e2067617320666f7220726566756e646d656e742069732031303025006044820152606401610729565b6006805460ff909216600160a81b027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff909216919091179055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610cad5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610729565b6107848286868403610f48565b6007546001600160a01b03163314610d305760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610729565b6007805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000336106ab818585611132565b6007546001600160a01b03163314610de35760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610729565b6706f05b59d3b20000811115610e3b5760405162461bcd60e51b815260206004820152601260248201527f496e76616c6964206d617820726566756e6400000000000000000000000000006044820152606401610729565b600955565b6007546001600160a01b03163314610eb65760405162461bcd60e51b815260206004820152603360248201527f4f6e6c7920626c61737420636f6e7472616374206f776e65722063616e206d616044820152726e61676520626c61737420666561747572657360681b6064820152608401610729565b600855565b610ec3611637565b6001600160a01b038116610f3f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610729565b610a1981611691565b6001600160a01b038316610fc35760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610729565b6001600160a01b03821661103f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610729565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461112c578181101561111f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610729565b61112c8484848403610f48565b50505050565b6001600160a01b0383166111ae5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610729565b6001600160a01b03821661122a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610729565b6001600160a01b038316600090815260208190526040902054818110156112b95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610729565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361112c565b600047821561146357600654600090600160c81b900460ff16611362577f954fa5ee27c88a83eb6bac45faf9bf17dcbde40e107ff03508bd32ccc1f6243f611384565b7f662aa11dd0fb432d1e6c8fbc219a0b95da9ba58f40d5be8cf7968ed00b4f7ab65b6040513060248201819052604482015260640160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925260065460085492519193506001600160a01b031691906114179084906118df565b60006040518083038160008787f1925050503d8060008114611455576040519150601f19603f3d011682016040523d82523d6000602084013e61145a565b606091505b50505050611599565b600654600160c81b900460ff1615611509576006546040517f662aa11d000000000000000000000000000000000000000000000000000000008152306004820181905260248201526001600160a01b039091169063662aa11d906044016020604051808303816000875af11580156114df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150391906118fb565b50611599565b6006546040517f954fa5ee000000000000000000000000000000000000000000000000000000008152306004820181905260248201526001600160a01b039091169063954fa5ee906044016020604051808303816000875af1158015611573573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159791906118fb565b505b60065447906064600160a81b90910460ff161080156115b757508181115b1561162d576006546000906064906115d990600160a81b900460ff1682611914565b60ff166115e6858561192d565b6115f09190611940565b6115fa9190611957565b6007546040519192506001600160a01b03169082156108fc029083906000818181858888f1509398975050505050505050565b5060009392505050565b6005546001600160a01b031633146109685760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610729565b600580546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60005b8381101561170b5781810151838201526020016116f3565b50506000910152565b60208152600082518060208401526117338160408501602087016116f0565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461175e57600080fd5b919050565b6000806040838503121561177657600080fd5b61177f83611747565b946020939093013593505050565b60006020828403121561179f57600080fd5b813580151581146117af57600080fd5b9392505050565b6000806000606084860312156117cb57600080fd5b6117d484611747565b92506117e260208501611747565b9150604084013590509250925092565b60006020828403121561180457600080fd5b6117af82611747565b60006020828403121561181f57600080fd5b813560ff811681146117af57600080fd5b60006020828403121561184257600080fd5b5035919050565b6000806040838503121561185c57600080fd5b61186583611747565b915061187360208401611747565b90509250929050565b600181811c9082168061189057607f821691505b6020821081036118b057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106b1576106b16118b6565b600082516118f18184602087016116f0565b9190910192915050565b60006020828403121561190d57600080fd5b5051919050565b60ff82811682821603908111156106b1576106b16118b6565b818103818111156106b1576106b16118b6565b80820281158282048414176106b1576106b16118b6565b60008261197457634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220fb596602b14df45c43b371d3bc2dbf04479df57306079f41ada59281f44a39c964736f6c63430008140033
Deployed Bytecode Sourcemap
456:501:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4444:197;;;;;;;;;;-1:-1:-1;4444:197:1;;;;;:::i;:::-;;:::i;:::-;;;1295:14:7;;1288:22;1270:41;;1258:2;1243:18;4444:197:1;1130:187:7;3255:106:1;;;;;;;;;;-1:-1:-1;3342:12:1;;3255:106;;;1468:25:7;;;1456:2;1441:18;3255:106:1;1322:177:7;4965:98:5;;;;;;;;;;-1:-1:-1;4965:98:5;;;;;:::i;:::-;;:::i;:::-;;1981:37;;;;;;;;;;;;;;;;5203:256:1;;;;;;;;;;-1:-1:-1;5203:256:1;;;;;:::i;:::-;;:::i;826:91:6:-;;;;;;;;;;-1:-1:-1;900:9:6;826:91;;;2287:4:7;2275:17;;;2257:36;;2245:2;2230:18;826:91:6;2115:184:7;1466:27:5;;;;;;;;;;-1:-1:-1;1466:27:5;;;;-1:-1:-1;;;1466:27:5;;;;;;5854:234:1;;;;;;;;;;-1:-1:-1;5854:234:1;;;;;:::i;:::-;;:::i;5766:99:5:-;;;;;;;;;;;;;:::i;1855:37::-;;;;;;;;;;;;;;;;5450:181;;;;;;;;;;;;;:::i;3419:125:1:-;;;;;;;;;;-1:-1:-1;3419:125:1;;;;;:::i;:::-;-1:-1:-1;;;;;3519:18:1;3493:7;3519:18;;;;;;;;;;;;3419:125;1824:101:0;;;;;;;;;;;;;:::i;4544:116:5:-;;;;;;;;;;;;;:::i;1201:85:0:-;;;;;;;;;;-1:-1:-1;1273:6:0;;-1:-1:-1;;;;;1273:6:0;1201:85;;;-1:-1:-1;;;;;2659:55:7;;;2641:74;;2629:2;2614:18;1201:85:0;2495:226:7;2369:102:1;;;;;;;;;;;;;:::i;1361:28:5:-;;;;;;;;;;-1:-1:-1;1361:28:5;;;;;;;;;;;;;;2900:8:7;2888:21;;;2870:40;;2858:2;2843:18;1361:28:5;2726:190:7;5071:371:5;;;;;;;;;;-1:-1:-1;5071:371:5;;;;;:::i;:::-;;:::i;6575:427:1:-;;;;;;;;;;-1:-1:-1;6575:427:1;;;;;:::i;:::-;;:::i;4427:109:5:-;;;;;;;;;;-1:-1:-1;4427:109:5;;;;;:::i;:::-;;:::i;3740:189:1:-;;;;;;;;;;-1:-1:-1;3740:189:1;;;;;:::i;:::-;;:::i;4785:172:5:-;;;;;;;;;;-1:-1:-1;4785:172:5;;;;;:::i;:::-;;:::i;1128:40::-;;;;;;;;;;-1:-1:-1;1128:40:5;;;;-1:-1:-1;;;1128:40:5;;;;;;4668:109;;;;;;;;;;-1:-1:-1;4668:109:5;;;;;:::i;:::-;;:::i;1729:44::-;;;;;;;;;;-1:-1:-1;1729:44:5;;;;-1:-1:-1;;;1729:44:5;;;;;;3987:149:1;;;;;;;;;;-1:-1:-1;3987:149:1;;;;;:::i;:::-;-1:-1:-1;;;;;4102:18:1;;;4076:7;4102:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3987:149;1251:37:5;;;;;;;;;;-1:-1:-1;1251:37:5;;;;-1:-1:-1;;;1251:37:5;;;;;;2074:198:0;;;;;;;;;;-1:-1:-1;2074:198:0;;;;;:::i;:::-;;:::i;1607:25:5:-;;;;;;;;;;-1:-1:-1;1607:25:5;;;;-1:-1:-1;;;;;1607:25:5;;;2158:98:1;2212:13;2244:5;2237:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2158:98;:::o;4444:197::-;4527:4;719:10:4;4581:32:1;719:10:4;4597:7:1;4606:6;4581:8;:32::i;:::-;4630:4;4623:11;;;4444:197;;;;;:::o;4965:98:5:-;2086:10;;-1:-1:-1;;;;;2086:10:5;2072;:24;2064:88;;;;-1:-1:-1;;;2064:88:5;;4289:2:7;2064:88:5;;;4271:21:7;4328:2;4308:18;;;4301:30;4367:34;4347:18;;;4340:62;-1:-1:-1;;;4418:18:7;;;4411:49;4477:19;;2064:88:5;;;;;;;;;5035:8:::1;:20:::0;;;::::1;;-1:-1:-1::0;;;5035:20:5::1;::::0;;;::::1;::::0;;;::::1;::::0;;4965:98::o;5203:256:1:-;5300:4;719:10:4;5356:38:1;5372:4;719:10:4;5387:6:1;5356:15;:38::i;:::-;5404:27;5414:4;5420:2;5424:6;5404:9;:27::i;:::-;-1:-1:-1;5448:4:1;;5203:256;-1:-1:-1;;;;5203:256:1:o;5854:234::-;719:10:4;5942:4:1;4102:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;4102:27:1;;;;;;;;;;5942:4;;719:10:4;5996:64:1;;719:10:4;;4102:27:1;;6021:38;;6049:10;;6021:38;:::i;:::-;5996:8;:64::i;5766:99:5:-;2086:10;;5815:7;;-1:-1:-1;;;;;2086:10:5;2072;:24;2064:88;;;;-1:-1:-1;;;2064:88:5;;4289:2:7;2064:88:5;;;4271:21:7;4328:2;4308:18;;;4301:30;4367:34;4347:18;;;4340:62;-1:-1:-1;;;4418:18:7;;;4411:49;4477:19;;2064:88:5;4087:415:7;2064:88:5;5842:15:::1;5851:5;5842:8;:15::i;:::-;5835:22;;5766:99:::0;:::o;5450:181::-;2086:10;;-1:-1:-1;;;;;2086:10:5;2072;:24;2064:88;;;;-1:-1:-1;;;2064:88:5;;4289:2:7;2064:88:5;;;4271:21:7;4328:2;4308:18;;;4301:30;4367:34;4347:18;;;4340:62;-1:-1:-1;;;4418:18:7;;;4411:49;4477:19;;2064:88:5;4087:415:7;2064:88:5;5535:24:::1;::::0;-1:-1:-1;;;5535:24:5;::::1;;;5534:25;5526:55;;;::::0;-1:-1:-1;;;5526:55:5;;5028:2:7;5526:55:5::1;::::0;::::1;5010:21:7::0;5067:2;5047:18;;;5040:30;5106:19;5086:18;;;5079:47;5143:18;;5526:55:5::1;4826:341:7::0;5526:55:5::1;5592:24;:31:::0;;;::::1;-1:-1:-1::0;;;5592:31:5::1;::::0;;5450:181::o;1824:101:0:-;1094:13;:11;:13::i;:::-;1888:30:::1;1915:1;1888:18;:30::i;:::-;1824:101::o:0;4544:116:5:-;2086:10;;-1:-1:-1;;;;;2086:10:5;2072;:24;2064:88;;;;-1:-1:-1;;;2064:88:5;;4289:2:7;2064:88:5;;;4271:21:7;4328:2;4308:18;;;4301:30;4367:34;4347:18;;;4340:62;-1:-1:-1;;;4418:18:7;;;4411:49;4477:19;;2064:88:5;4087:415:7;2064:88:5;4609:10:::1;::::0;4601:51:::1;::::0;-1:-1:-1;;;;;4609:10:5;;::::1;::::0;4630:21:::1;4601:51:::0;::::1;;;::::0;4609:10:::1;4601:51:::0;4609:10;4601:51;4630:21;4609:10;4601:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;4544:116::o:0;2369:102:1:-;2425:13;2457:7;2450:14;;;;;:::i;5071:371:5:-;2086:10;;-1:-1:-1;;;;;2086:10:5;2072;:24;2064:88;;;;-1:-1:-1;;;2064:88:5;;4289:2:7;2064:88:5;;;4271:21:7;4328:2;4308:18;;;4301:30;4367:34;4347:18;;;4340:62;-1:-1:-1;;;4418:18:7;;;4411:49;4477:19;;2064:88:5;4087:415:7;2064:88:5;5166:24:::1;::::0;-1:-1:-1;;;5166:24:5;::::1;;;5165:25;5157:57;;;::::0;-1:-1:-1;;;5157:57:5;;5374:2:7;5157:57:5::1;::::0;::::1;5356:21:7::0;5413:2;5393:18;;;5386:30;5452:21;5432:18;;;5425:49;5491:18;;5157:57:5::1;5172:343:7::0;5157:57:5::1;5244:23;::::0;::::1;-1:-1:-1::0;;;5244:23:5;;::::1;::::0;::::1;5233:34:::0;;::::1;;;5225:99;;;::::0;-1:-1:-1;;;5225:99:5;;5722:2:7;5225:99:5::1;::::0;::::1;5704:21:7::0;5761:2;5741:18;;;5734:30;5800:34;5780:18;;;5773:62;5871:22;5851:18;;;5844:50;5911:19;;5225:99:5::1;5520:416:7::0;5225:99:5::1;5354:3;5343:7;:14;;;;5335:58;;;::::0;-1:-1:-1;;;5335:58:5;;6143:2:7;5335:58:5::1;::::0;::::1;6125:21:7::0;6182:2;6162:18;;;6155:30;6221:33;6201:18;;;6194:61;6272:18;;5335:58:5::1;5941:355:7::0;5335:58:5::1;5404:20;:30:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;5404:30:5::1;::::0;;;::::1;::::0;;;::::1;::::0;;5071:371::o;6575:427:1:-;719:10:4;6668:4:1;4102:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;4102:27:1;;;;;;;;;;6668:4;;719:10:4;6812:15:1;6792:16;:35;;6784:85;;;;-1:-1:-1;;;6784:85:1;;6503:2:7;6784:85:1;;;6485:21:7;6542:2;6522:18;;;6515:30;6581:34;6561:18;;;6554:62;6652:7;6632:18;;;6625:35;6677:19;;6784:85:1;6301:401:7;6784:85:1;6903:60;6912:5;6919:7;6947:15;6928:16;:34;6903:8;:60::i;4427:109:5:-;2086:10;;-1:-1:-1;;;;;2086:10:5;2072;:24;2064:88;;;;-1:-1:-1;;;2064:88:5;;4289:2:7;2064:88:5;;;4271:21:7;4328:2;4308:18;;;4301:30;4367:34;4347:18;;;4340:62;-1:-1:-1;;;4418:18:7;;;4411:49;4477:19;;2064:88:5;4087:415:7;2064:88:5;4504:10:::1;:24:::0;;-1:-1:-1;;4504:24:5::1;-1:-1:-1::0;;;;;4504:24:5;;;::::1;::::0;;;::::1;::::0;;4427:109::o;3740:189:1:-;3819:4;719:10:4;3873:28:1;719:10:4;3890:2:1;3894:6;3873:9;:28::i;4785:172:5:-;2086:10;;-1:-1:-1;;;;;2086:10:5;2072;:24;2064:88;;;;-1:-1:-1;;;2064:88:5;;4289:2:7;2064:88:5;;;4271:21:7;4328:2;4308:18;;;4301:30;4367:34;4347:18;;;4340:62;-1:-1:-1;;;4418:18:7;;;4411:49;4477:19;;2064:88:5;4087:415:7;2064:88:5;4884:9:::1;4870:10;:23;;4862:54;;;::::0;-1:-1:-1;;;4862:54:5;;6909:2:7;4862:54:5::1;::::0;::::1;6891:21:7::0;6948:2;6928:18;;;6921:30;6987:20;6967:18;;;6960:48;7025:18;;4862:54:5::1;6707:342:7::0;4862:54:5::1;4927:9;:22:::0;4785:172::o;4668:109::-;2086:10;;-1:-1:-1;;;;;2086:10:5;2072;:24;2064:88;;;;-1:-1:-1;;;2064:88:5;;4289:2:7;2064:88:5;;;4271:21:7;4328:2;4308:18;;;4301:30;4367:34;4347:18;;;4340:62;-1:-1:-1;;;4418:18:7;;;4411:49;4477:19;;2064:88:5;4087:415:7;2064:88:5;4746:13:::1;:23:::0;4668:109::o;2074:198:0:-;1094:13;:11;:13::i;:::-;-1:-1:-1;;;;;2162:22:0;::::1;2154:73;;;::::0;-1:-1:-1;;;2154:73:0;;7256:2:7;2154:73:0::1;::::0;::::1;7238:21:7::0;7295:2;7275:18;;;7268:30;7334:34;7314:18;;;7307:62;7405:8;7385:18;;;7378:36;7431:19;;2154:73:0::1;7054:402:7::0;2154:73:0::1;2237:28;2256:8;2237:18;:28::i;10457:340:1:-:0;-1:-1:-1;;;;;10558:19:1;;10550:68;;;;-1:-1:-1;;;10550:68:1;;7663:2:7;10550:68:1;;;7645:21:7;7702:2;7682:18;;;7675:30;7741:34;7721:18;;;7714:62;7812:6;7792:18;;;7785:34;7836:19;;10550:68:1;7461:400:7;10550:68:1;-1:-1:-1;;;;;10636:21:1;;10628:68;;;;-1:-1:-1;;;10628:68:1;;8068:2:7;10628:68:1;;;8050:21:7;8107:2;8087:18;;;8080:30;8146:34;8126:18;;;8119:62;8217:4;8197:18;;;8190:32;8239:19;;10628:68:1;7866:398:7;10628:68:1;-1:-1:-1;;;;;10707:18:1;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10758:32;;1468:25:7;;;10758:32:1;;1441:18:7;10758:32:1;;;;;;;10457:340;;;:::o;11078:411::-;-1:-1:-1;;;;;4102:18:1;;;11178:24;4102:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;11244:37:1;;11240:243;;11325:6;11305:16;:26;;11297:68;;;;-1:-1:-1;;;11297:68:1;;8471:2:7;11297:68:1;;;8453:21:7;8510:2;8490:18;;;8483:30;8549:31;8529:18;;;8522:59;8598:18;;11297:68:1;8269:353:7;11297:68:1;11407:51;11416:5;11423:7;11451:6;11432:16;:25;11407:8;:51::i;:::-;11168:321;11078:411;;;:::o;7456:788::-;-1:-1:-1;;;;;7552:18:1;;7544:68;;;;-1:-1:-1;;;7544:68:1;;8829:2:7;7544:68:1;;;8811:21:7;8868:2;8848:18;;;8841:30;8907:34;8887:18;;;8880:62;8978:7;8958:18;;;8951:35;9003:19;;7544:68:1;8627:401:7;7544:68:1;-1:-1:-1;;;;;7630:16:1;;7622:64;;;;-1:-1:-1;;;7622:64:1;;9235:2:7;7622:64:1;;;9217:21:7;9274:2;9254:18;;;9247:30;9313:34;9293:18;;;9286:62;9384:5;9364:18;;;9357:33;9407:19;;7622:64:1;9033:399:7;7622:64:1;-1:-1:-1;;;;;7768:15:1;;7746:19;7768:15;;;;;;;;;;;7801:21;;;;7793:72;;;;-1:-1:-1;;;7793:72:1;;9639:2:7;7793:72:1;;;9621:21:7;9678:2;9658:18;;;9651:30;9717:34;9697:18;;;9690:62;9788:8;9768:18;;;9761:36;9814:19;;7793:72:1;9437:402:7;7793:72:1;-1:-1:-1;;;;;7899:15:1;;;:9;:15;;;;;;;;;;;7917:20;;;7899:38;;8114:13;;;;;;;;;;:23;;;;;;8163:26;;1468:25:7;;;8114:13:1;;8163:26;;1441:18:7;8163:26:1;;;;;;;8200:37;12073:91;3371:914:5;3421:7;3459:21;3491:460;;;;3569:8;;3519:24;;-1:-1:-1;;;3569:8:5;;;;:52;;984:41;3569:52;;;882:41;3569:52;3546:106;;3631:4;3546:106;;;10079:34:7;;;10129:18;;;10122:43;9991:18;;3546:106:5;;;-1:-1:-1;;3546:106:5;;;;;;;;;;;;;;;;;;;;;;;;;;;3675:6;;3694:13;;3667:55;;3546:106;;-1:-1:-1;;;;;;3675:6:5;;3694:13;3667:55;;3546:106;;3667:55;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3504:230;3491:460;;;3758:8;;-1:-1:-1;;;3758:8:5;;;;3755:185;;;3787:6;;:48;;;;;3814:4;3787:48;;;10079:34:7;;;10129:18;;;10122:43;-1:-1:-1;;;;;3787:6:5;;;;:18;;9991::7;;3787:48:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3755:185;;;3876:6;;:48;;;;;3903:4;3876:48;;;10079:34:7;;;10129:18;;;10122:43;-1:-1:-1;;;;;3876:6:5;;;;:18;;9991::7;;3876:48:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3755:185;4015:20;;3980:21;;4038:3;-1:-1:-1;;;4015:20:5;;;;;:26;:48;;;;;4056:7;4045:8;:18;4015:48;4012:247;;;4133:20;;4080;;4157:3;;4127:26;;-1:-1:-1;;;4133:20:5;;;;4157:3;4127:26;:::i;:::-;4103:51;;4104:18;4115:7;4104:8;:18;:::i;:::-;4103:51;;;;:::i;:::-;:57;;;;:::i;:::-;4183:10;;4175:38;;4080:80;;-1:-1:-1;;;;;;4183:10:5;;4175:38;;;;;4080:80;;4183:10;4175:38;4183:10;4175:38;4080:80;4183:10;4175:38;;-1:-1:-1;4235:12:5;;3371:914;-1:-1:-1;;;;;;;;3371:914:5:o;4012:247::-;-1:-1:-1;4276:1:5;;3371:914;-1:-1:-1;;;3371:914:5:o;1359:130:0:-;1273:6;;-1:-1:-1;;;;;1273:6:0;719:10:4;1422:23:0;1414:68;;;;-1:-1:-1;;;1414:68:0;;11600:2:7;1414:68:0;;;11582:21:7;;;11619:18;;;11612:30;11678:34;11658:18;;;11651:62;11730:18;;1414:68:0;11398:356:7;2426:187:0;2518:6;;;-1:-1:-1;;;;;2534:17:0;;;-1:-1:-1;;2534:17:0;;;;;;;2566:40;;2518:6;;;2534:17;2518:6;;2566:40;;2499:16;;2566:40;2489:124;2426:187;:::o;14:250:7:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:7;238:16;;231:27;14:250::o;269:396::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;649:2;628:15;-1:-1:-1;;624:29:7;609:45;;;;656:2;605:54;;269:396;-1:-1:-1;;269:396:7:o;670:196::-;738:20;;-1:-1:-1;;;;;787:54:7;;777:65;;767:93;;856:1;853;846:12;767:93;670:196;;;:::o;871:254::-;939:6;947;1000:2;988:9;979:7;975:23;971:32;968:52;;;1016:1;1013;1006:12;968:52;1039:29;1058:9;1039:29;:::i;:::-;1029:39;1115:2;1100:18;;;;1087:32;;-1:-1:-1;;;871:254:7:o;1504:273::-;1560:6;1613:2;1601:9;1592:7;1588:23;1584:32;1581:52;;;1629:1;1626;1619:12;1581:52;1668:9;1655:23;1721:5;1714:13;1707:21;1700:5;1697:32;1687:60;;1743:1;1740;1733:12;1687:60;1766:5;1504:273;-1:-1:-1;;;1504:273:7:o;1782:328::-;1859:6;1867;1875;1928:2;1916:9;1907:7;1903:23;1899:32;1896:52;;;1944:1;1941;1934:12;1896:52;1967:29;1986:9;1967:29;:::i;:::-;1957:39;;2015:38;2049:2;2038:9;2034:18;2015:38;:::i;:::-;2005:48;;2100:2;2089:9;2085:18;2072:32;2062:42;;1782:328;;;;;:::o;2304:186::-;2363:6;2416:2;2404:9;2395:7;2391:23;2387:32;2384:52;;;2432:1;2429;2422:12;2384:52;2455:29;2474:9;2455:29;:::i;2921:269::-;2978:6;3031:2;3019:9;3010:7;3006:23;3002:32;2999:52;;;3047:1;3044;3037:12;2999:52;3086:9;3073:23;3136:4;3129:5;3125:16;3118:5;3115:27;3105:55;;3156:1;3153;3146:12;3195:180;3254:6;3307:2;3295:9;3286:7;3282:23;3278:32;3275:52;;;3323:1;3320;3313:12;3275:52;-1:-1:-1;3346:23:7;;3195:180;-1:-1:-1;3195:180:7:o;3380:260::-;3448:6;3456;3509:2;3497:9;3488:7;3484:23;3480:32;3477:52;;;3525:1;3522;3515:12;3477:52;3548:29;3567:9;3548:29;:::i;:::-;3538:39;;3596:38;3630:2;3619:9;3615:18;3596:38;:::i;:::-;3586:48;;3380:260;;;;;:::o;3645:437::-;3724:1;3720:12;;;;3767;;;3788:61;;3842:4;3834:6;3830:17;3820:27;;3788:61;3895:2;3887:6;3884:14;3864:18;3861:38;3858:218;;-1:-1:-1;;;3929:1:7;3922:88;4033:4;4030:1;4023:15;4061:4;4058:1;4051:15;3858:218;;3645:437;;;:::o;4507:184::-;-1:-1:-1;;;4556:1:7;4549:88;4656:4;4653:1;4646:15;4680:4;4677:1;4670:15;4696:125;4761:9;;;4782:10;;;4779:36;;;4795:18;;:::i;10176:287::-;10305:3;10343:6;10337:13;10359:66;10418:6;10413:3;10406:4;10398:6;10394:17;10359:66;:::i;:::-;10441:16;;;;;10176:287;-1:-1:-1;;10176:287:7:o;10468:184::-;10538:6;10591:2;10579:9;10570:7;10566:23;10562:32;10559:52;;;10607:1;10604;10597:12;10559:52;-1:-1:-1;10630:16:7;;10468:184;-1:-1:-1;10468:184:7:o;10657:151::-;10747:4;10740:12;;;10726;;;10722:31;;10765:14;;10762:40;;;10782:18;;:::i;10813:128::-;10880:9;;;10901:11;;;10898:37;;;10915:18;;:::i;10946:168::-;11019:9;;;11050;;11067:15;;;11061:22;;11047:37;11037:71;;11088:18;;:::i;11119:274::-;11159:1;11185;11175:189;;-1:-1:-1;;;11217:1:7;11210:88;11321:4;11318:1;11311:15;11349:4;11346:1;11339:15;11175:189;-1:-1:-1;11378:9:7;;11119:274::o
Swarm Source
ipfs://fb596602b14df45c43b371d3bc2dbf04479df57306079f41ada59281f44a39c9
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.