Source Code
Latest 25 from a total of 11,595 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Purchase Bundle | 144357824 | 829 days ago | IN | 0.0035 ETH | 0.00002211 | ||||
| Purchase Bundle | 144357457 | 829 days ago | IN | 0.0035 ETH | 0.00002211 | ||||
| Purchase Bundle | 144354395 | 829 days ago | IN | 0.0035 ETH | 0.00002381 | ||||
| Purchase Bundle | 144354258 | 829 days ago | IN | 0.0035 ETH | 0.00002983 | ||||
| Purchase Bundle | 123093144 | 897 days ago | IN | 0.0035 ETH | 0.00002139 | ||||
| Purchase Bundle | 123093019 | 897 days ago | IN | 0.0035 ETH | 0.00002152 | ||||
| Purchase Bundle | 110325490 | 936 days ago | IN | 0.0035 ETH | 0.00002227 | ||||
| Purchase Bundle | 103892706 | 956 days ago | IN | 0.0035 ETH | 0.00002758 | ||||
| Purchase Bundle | 103890749 | 956 days ago | IN | 0.0035 ETH | 0.00002812 | ||||
| Purchase Bundle | 103889819 | 956 days ago | IN | 0.0035 ETH | 0.00002496 | ||||
| Purchase Bundle | 103889151 | 956 days ago | IN | 0.0035 ETH | 0.00002496 | ||||
| Purchase Bundle | 103826494 | 956 days ago | IN | 0.0035 ETH | 0.00003003 | ||||
| Purchase Bundle | 103825745 | 956 days ago | IN | 0.0035 ETH | 0.00002665 | ||||
| Purchase Bundle | 103825643 | 956 days ago | IN | 0.0035 ETH | 0.00002665 | ||||
| Purchase Bundle | 103824866 | 956 days ago | IN | 0.0035 ETH | 0.00002665 | ||||
| Purchase Bundle | 103813738 | 956 days ago | IN | 0.0035 ETH | 0.0000372 | ||||
| Purchase Bundle | 103800828 | 956 days ago | IN | 0.0035 ETH | 0.000039 | ||||
| Purchase Bundle | 103799736 | 956 days ago | IN | 0.0035 ETH | 0.00002773 | ||||
| Purchase Bundle | 103799583 | 956 days ago | IN | 0.0035 ETH | 0.00002773 | ||||
| Purchase Bundle | 103799470 | 956 days ago | IN | 0.0035 ETH | 0.00002773 | ||||
| Purchase Bundle | 103798913 | 956 days ago | IN | 0.0035 ETH | 0.00002773 | ||||
| Purchase Bundle | 103798774 | 956 days ago | IN | 0.0035 ETH | 0.00002773 | ||||
| Purchase Bundle | 92861498 | 988 days ago | IN | 0.0035 ETH | 0.00003772 | ||||
| Purchase Bundle | 92861283 | 988 days ago | IN | 0.0035 ETH | 0.00003772 | ||||
| Purchase Bundle | 90806523 | 994 days ago | IN | 0.0035 ETH | 0.00005204 |
Latest 25 internal transactions (View All)
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 89174552 | 999 days ago | 0.2555 ETH | ||||
| 72030614 | 1049 days ago | 0 ETH | ||||
| 72030614 | 1049 days ago | 0 ETH | ||||
| 72030614 | 1049 days ago | 0 ETH | ||||
| 72030614 | 1049 days ago | 0 ETH | ||||
| 72030614 | 1049 days ago | 0 ETH | ||||
| 72030614 | 1049 days ago | 0 ETH | ||||
| 72030614 | 1049 days ago | 0 ETH | ||||
| 72030614 | 1049 days ago | 0 ETH | ||||
| 72030614 | 1049 days ago | 0 ETH | ||||
| 72030614 | 1049 days ago | 0 ETH | ||||
| 72030614 | 1049 days ago | 0 ETH | ||||
| 72030614 | 1049 days ago | 0 ETH | ||||
| 72030614 | 1049 days ago | 0 ETH | ||||
| 72030614 | 1049 days ago | 0 ETH | ||||
| 72030614 | 1049 days ago | 0 ETH | ||||
| 72030614 | 1049 days ago | 0 ETH | ||||
| 72030614 | 1049 days ago | 0 ETH | ||||
| 72030540 | 1049 days ago | 0 ETH | ||||
| 72030540 | 1049 days ago | 0 ETH | ||||
| 72030540 | 1049 days ago | 0 ETH | ||||
| 72030540 | 1049 days ago | 0 ETH | ||||
| 72030540 | 1049 days ago | 0 ETH | ||||
| 72030540 | 1049 days ago | 0 ETH | ||||
| 72030540 | 1049 days ago | 0 ETH |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ArbitrumGuildRolesTool
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/**
*Submitted for verification at Arbiscan.io on 2022-10-28
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
// OpenZeppelin Contracts (last updated v4.7.0) (utils/Address.sol)
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*
* [IMPORTANT]
* ====
* You shouldn't rely on `isContract` to protect against flash loan attacks!
*
* Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
* like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
* constructor.
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies on extcodesize/address.code.length, which returns 0
// for contracts in construction, since the code is only stored at the end
// of the constructor execution.
return account.code.length > 0;
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{value: amount}("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain `call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value
) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value,
string memory errorMessage
) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResultFromTarget(target, success, returndata, errorMessage);
}
/**
* @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
* the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
*
* _Available since v4.8._
*/
function verifyCallResultFromTarget(
address target,
bool success,
bytes memory returndata,
string memory errorMessage
) internal view returns (bytes memory) {
if (success) {
if (returndata.length == 0) {
// only check isContract if the call was successful and the return data is empty
// otherwise we already know that it was a contract
require(isContract(target), "Address: call to non-contract");
}
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
/**
* @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
* revert reason or using the provided one.
*
* _Available since v4.3._
*/
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
function _revert(bytes memory returndata, string memory errorMessage) private pure {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
/// @solidity memory-safe-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
/**
* @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);
}
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
/**
* @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;
}
}
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
// OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol)
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*/
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
// pointer aliasing, and it cannot be disabled.
// The values being non-zero value makes deployment a bit more expensive,
// but in exchange the refund on every call to nonReentrant will be lower in
// amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to
// increase the likelihood of the full refund coming into effect.
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
constructor() {
_status = _NOT_ENTERED;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and making it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
_nonReentrantBefore();
_;
_nonReentrantAfter();
}
function _nonReentrantBefore() private {
// On the first call to nonReentrant, _status will be _NOT_ENTERED
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_status = _ENTERED;
}
function _nonReentrantAfter() private {
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = _NOT_ENTERED;
}
}
error IncorrectPrice();
/**
* @notice Purchase a bundle of tokens required for all Arbitrum guild.xyz roles
* @notice https://guild.xyz/arbitrum
* @notice Disclaimer: PURCHASE DOES NOT GAURANTEE ARBITRUM AIRDROP
*/
contract ArbitrumGuildRolesTool is Ownable, ReentrancyGuard {
using Address for address;
IERC20[] public tokens;
uint256[] public amounts;
uint256 public price = 0.005 ether;
constructor() {
// DBL
tokens.push(IERC20(0xd3f1Da62CAFB7E7BC6531FF1ceF6F414291F03D3));
amounts.push(0.01 ether);
// DPX
tokens.push(IERC20(0x6C2C06790b3E3E3c38e12Ee22F8183b37a13EE55));
amounts.push(0.0001 ether);
// LPT
tokens.push(IERC20(0x289ba1701C2F088cf0faf8B3705246331cB8A839));
amounts.push(0.001 ether);
// PLS
tokens.push(IERC20(0x51318B7D00db7ACc4026C88c3952B66278B6A67F));
amounts.push(0.001 ether);
// MAGIC
tokens.push(IERC20(0x539bdE0d7Dbd336b79148AA742883198BBF60342));
amounts.push(0.001 ether);
// LINK
tokens.push(IERC20(0xf97f4df75117a78c1A5a0DBb814Af92458539FB4));
amounts.push(0.001 ether);
// UMAMI (Decimals:9)
tokens.push(IERC20(0x1622bF67e6e5747b81866fE0b85178a93C7F86e3));
amounts.push(1000000);
// MYC
tokens.push(IERC20(0xC74fE4c715510Ec2F8C61d70D397B32043F55Abe));
amounts.push(0.01 ether);
// VSTA
tokens.push(IERC20(0xa684cd057951541187f288294a1e1C2646aA2d24));
amounts.push(0.01 ether);
// JONES
tokens.push(IERC20(0x10393c20975cF177a3513071bC110f7962CD67da));
amounts.push(0.001 ether);
// SPA
tokens.push(IERC20(0x5575552988A3A80504bBaeB1311674fCFd40aD4B));
amounts.push(0.01 ether);
// GMX
tokens.push(IERC20(0xfc5A1A6EB076a2C7aD06eD22C90d7E710E35ad0a));
amounts.push(0.001 ether);
// SYN
tokens.push(IERC20(0x080F6AEd32Fc474DD5717105Dba5ea57268F46eb));
amounts.push(0.01 ether);
// HOP-LP-USDC
tokens.push(IERC20(0xB67c014FA700E69681a673876eb8BAFAA36BFf71));
amounts.push(0.01 ether);
// BRC
tokens.push(IERC20(0xB5de3f06aF62D8428a8BF7b4400Ea42aD2E0bc53));
amounts.push(0.01 ether);
// ELK
tokens.push(IERC20(0xeEeEEb57642040bE42185f49C52F7E9B38f8eeeE));
amounts.push(0.01 ether);
// SWPR
tokens.push(IERC20(0xdE903E2712288A1dA82942DDdF2c20529565aC30));
amounts.push(0.01 ether);
}
/**
* @notice In case there's a need to add more tokens
* @param token New token to add to bundle
* @param amount Amount required for guild role
*/
function addToken(IERC20 token, uint256 amount) external onlyOwner {
tokens.push(token);
amounts.push(amount);
}
function removeToken(IERC20 token) external onlyOwner {
uint256 tokensLength = tokens.length;
for (uint256 i; i < tokensLength; ) {
if (tokens[i] == token) {
tokens[i] = tokens[tokensLength - 1];
amounts[i] = amounts[tokensLength - 1];
tokens.pop();
amounts.pop();
break;
}
unchecked {
++i;
}
}
}
/**
* @notice Set the price of the bundle incase prices change wildly
* @param _price Price to purchase a bundle of tokens
*/
function setPrice(uint256 _price) external onlyOwner {
price = _price;
}
/**
* @notice Purchase a bundle of tokens required for all Arbitrum guild.xyz roles
*/
function purchaseBundle() external payable nonReentrant {
if (msg.value != price) revert IncorrectPrice();
uint256 tokensLength = tokens.length;
for (uint256 i; i < tokensLength; ) {
tokens[i].transfer(msg.sender, amounts[i]);
unchecked {
++i;
}
}
}
/**
* @notice Withdraw all tokens from the contract
*/
function withdrawAllTokens() external onlyOwner {
uint256 tokensLength = tokens.length;
for (uint256 i; i < tokensLength; ) {
tokens[i].transfer(msg.sender, tokens[i].balanceOf(address(this)));
unchecked {
++i;
}
}
}
/**
* @notice Withdraw all ETH from the contract
*/
function withdrawETH() external onlyOwner {
Address.sendValue(payable(msg.sender), address(this).balance);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"IncorrectPrice","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"addToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"amounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"purchaseBundle","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"removeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokens","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAllTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60806040526611c37937e0800060045534801561001b57600080fd5b5061003861002d610b5660201b60201c565b610b5e60201b60201c565b60018081905550600273d3f1da62cafb7e7bc6531ff1cef6f414291f03d39080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003662386f26fc1000090806001815401808255809150506001900390600052602060002001600090919091909150556002736c2c06790b3e3e3c38e12ee22f8183b37a13ee559080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003655af3107a40009080600181540180825580915050600190039060005260206000200160009091909190915055600273289ba1701c2f088cf0faf8b3705246331cb8a8399080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600366038d7ea4c68000908060018154018082558091505060019003906000526020600020016000909190919091505560027351318b7d00db7acc4026c88c3952b66278b6a67f9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600366038d7ea4c680009080600181540180825580915050600190039060005260206000200160009091909190915055600273539bde0d7dbd336b79148aa742883198bbf603429080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600366038d7ea4c680009080600181540180825580915050600190039060005260206000200160009091909190915055600273f97f4df75117a78c1a5a0dbb814af92458539fb49080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600366038d7ea4c6800090806001815401808255809150506001900390600052602060002001600090919091909150556002731622bf67e6e5747b81866fe0b85178a93c7f86e39080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003620f42409080600181540180825580915050600190039060005260206000200160009091909190915055600273c74fe4c715510ec2f8c61d70d397b32043f55abe9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003662386f26fc100009080600181540180825580915050600190039060005260206000200160009091909190915055600273a684cd057951541187f288294a1e1c2646aa2d249080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003662386f26fc10000908060018154018082558091505060019003906000526020600020016000909190919091505560027310393c20975cf177a3513071bc110f7962cd67da9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600366038d7ea4c6800090806001815401808255809150506001900390600052602060002001600090919091909150556002735575552988a3a80504bbaeb1311674fcfd40ad4b9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003662386f26fc100009080600181540180825580915050600190039060005260206000200160009091909190915055600273fc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600366038d7ea4c680009080600181540180825580915050600190039060005260206000200160009091909190915055600273080f6aed32fc474dd5717105dba5ea57268f46eb9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003662386f26fc100009080600181540180825580915050600190039060005260206000200160009091909190915055600273b67c014fa700e69681a673876eb8bafaa36bff719080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003662386f26fc100009080600181540180825580915050600190039060005260206000200160009091909190915055600273b5de3f06af62d8428a8bf7b4400ea42ad2e0bc539080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003662386f26fc100009080600181540180825580915050600190039060005260206000200160009091909190915055600273eeeeeb57642040be42185f49c52f7e9b38f8eeee9080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003662386f26fc100009080600181540180825580915050600190039060005260206000200160009091909190915055600273de903e2712288a1da82942dddf2c20529565ac309080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003662386f26fc100009080600181540180825580915050600190039060005260206000200160009091909190915055610c22565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6112ce80610c316000396000f3fe6080604052600436106100a75760003560e01c806391b7f5ed1161006457806391b7f5ed146101a8578063a035b1fe146101d1578063af81c5b9146101fc578063b1e9f25f14610225578063e086e5ec1461022f578063f2fde38b14610246576100a7565b8063280da6fa146100ac57806345f0a44f146100c35780634f64b2be146101005780635fa7b5841461013d578063715018a6146101665780638da5cb5b1461017d575b600080fd5b3480156100b857600080fd5b506100c161026f565b005b3480156100cf57600080fd5b506100ea60048036038101906100e59190610c17565b61040f565b6040516100f79190610c53565b60405180910390f35b34801561010c57600080fd5b5061012760048036038101906101229190610c17565b610433565b6040516101349190610ced565b60405180910390f35b34801561014957600080fd5b50610164600480360381019061015f9190610d58565b610472565b005b34801561017257600080fd5b5061017b610678565b005b34801561018957600080fd5b5061019261068c565b60405161019f9190610d94565b60405180910390f35b3480156101b457600080fd5b506101cf60048036038101906101ca9190610c17565b6106b5565b005b3480156101dd57600080fd5b506101e66106c7565b6040516101f39190610c53565b60405180910390f35b34801561020857600080fd5b50610223600480360381019061021e9190610daf565b6106cd565b005b61022d610765565b005b34801561023b57600080fd5b506102446108af565b005b34801561025257600080fd5b5061026d60048036038101906102689190610e1b565b6108c3565b005b610277610946565b6000600280549050905060005b8181101561040b57600281815481106102a05761029f610e48565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600284815481106102fb576102fa610e48565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161035e9190610d94565b602060405180830381865afa15801561037b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039f9190610e8c565b6040518363ffffffff1660e01b81526004016103bc929190610eb9565b6020604051808303816000875af11580156103db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ff9190610f1a565b50806001019050610284565b5050565b6003818154811061041f57600080fd5b906000526020600020016000915090505481565b6002818154811061044357600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61047a610946565b6000600280549050905060005b81811015610673578273ffffffffffffffffffffffffffffffffffffffff16600282815481106104ba576104b9610e48565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361066857600260018361050f9190610f76565b815481106105205761051f610e48565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002828154811061055f5761055e610e48565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060036001836105b69190610f76565b815481106105c7576105c6610e48565b5b9060005260206000200154600382815481106105e6576105e5610e48565b5b9060005260206000200181905550600280548061060657610605610faa565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055600380548061064d5761064c610faa565b5b60019003818190600052602060002001600090559055610673565b806001019050610487565b505050565b610680610946565b61068a60006109c4565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6106bd610946565b8060048190555050565b60045481565b6106d5610946565b6002829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060038190806001815401808255809150506001900390600052602060002001600090919091909150555050565b61076d610a88565b60045434146107a8576040517f99b5cb1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600280549050905060005b818110156108a357600281815481106107d1576107d0610e48565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb336003848154811061082c5761082b610e48565b5b90600052602060002001546040518363ffffffff1660e01b8152600401610854929190610eb9565b6020604051808303816000875af1158015610873573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108979190610f1a565b508060010190506107b5565b50506108ad610ad7565b565b6108b7610946565b6108c13347610ae0565b565b6108cb610946565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361093a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109319061105c565b60405180910390fd5b610943816109c4565b50565b61094e610bd4565b73ffffffffffffffffffffffffffffffffffffffff1661096c61068c565b73ffffffffffffffffffffffffffffffffffffffff16146109c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b9906110c8565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600260015403610acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac490611134565b60405180910390fd5b6002600181905550565b60018081905550565b80471015610b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1a906111a0565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051610b49906111f1565b60006040518083038185875af1925050503d8060008114610b86576040519150601f19603f3d011682016040523d82523d6000602084013e610b8b565b606091505b5050905080610bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc690611278565b60405180910390fd5b505050565b600033905090565b600080fd5b6000819050919050565b610bf481610be1565b8114610bff57600080fd5b50565b600081359050610c1181610beb565b92915050565b600060208284031215610c2d57610c2c610bdc565b5b6000610c3b84828501610c02565b91505092915050565b610c4d81610be1565b82525050565b6000602082019050610c686000830184610c44565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610cb3610cae610ca984610c6e565b610c8e565b610c6e565b9050919050565b6000610cc582610c98565b9050919050565b6000610cd782610cba565b9050919050565b610ce781610ccc565b82525050565b6000602082019050610d026000830184610cde565b92915050565b6000610d1382610c6e565b9050919050565b6000610d2582610d08565b9050919050565b610d3581610d1a565b8114610d4057600080fd5b50565b600081359050610d5281610d2c565b92915050565b600060208284031215610d6e57610d6d610bdc565b5b6000610d7c84828501610d43565b91505092915050565b610d8e81610d08565b82525050565b6000602082019050610da96000830184610d85565b92915050565b60008060408385031215610dc657610dc5610bdc565b5b6000610dd485828601610d43565b9250506020610de585828601610c02565b9150509250929050565b610df881610d08565b8114610e0357600080fd5b50565b600081359050610e1581610def565b92915050565b600060208284031215610e3157610e30610bdc565b5b6000610e3f84828501610e06565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050610e8681610beb565b92915050565b600060208284031215610ea257610ea1610bdc565b5b6000610eb084828501610e77565b91505092915050565b6000604082019050610ece6000830185610d85565b610edb6020830184610c44565b9392505050565b60008115159050919050565b610ef781610ee2565b8114610f0257600080fd5b50565b600081519050610f1481610eee565b92915050565b600060208284031215610f3057610f2f610bdc565b5b6000610f3e84828501610f05565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610f8182610be1565b9150610f8c83610be1565b9250828203905081811115610fa457610fa3610f47565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600082825260208201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611046602683610fd9565b915061105182610fea565b604082019050919050565b6000602082019050818103600083015261107581611039565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006110b2602083610fd9565b91506110bd8261107c565b602082019050919050565b600060208201905081810360008301526110e1816110a5565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b600061111e601f83610fd9565b9150611129826110e8565b602082019050919050565b6000602082019050818103600083015261114d81611111565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061118a601d83610fd9565b915061119582611154565b602082019050919050565b600060208201905081810360008301526111b98161117d565b9050919050565b600081905092915050565b50565b60006111db6000836111c0565b91506111e6826111cb565b600082019050919050565b60006111fc826111ce565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000611262603a83610fd9565b915061126d82611206565b604082019050919050565b6000602082019050818103600083015261129181611255565b905091905056fea26469706673582212204d4f9919a88261dd9adb1a366f1a7dad1b8cac7cb1fdefd54aa08cd03bcc357e64736f6c63430008110033
Deployed Bytecode
0x6080604052600436106100a75760003560e01c806391b7f5ed1161006457806391b7f5ed146101a8578063a035b1fe146101d1578063af81c5b9146101fc578063b1e9f25f14610225578063e086e5ec1461022f578063f2fde38b14610246576100a7565b8063280da6fa146100ac57806345f0a44f146100c35780634f64b2be146101005780635fa7b5841461013d578063715018a6146101665780638da5cb5b1461017d575b600080fd5b3480156100b857600080fd5b506100c161026f565b005b3480156100cf57600080fd5b506100ea60048036038101906100e59190610c17565b61040f565b6040516100f79190610c53565b60405180910390f35b34801561010c57600080fd5b5061012760048036038101906101229190610c17565b610433565b6040516101349190610ced565b60405180910390f35b34801561014957600080fd5b50610164600480360381019061015f9190610d58565b610472565b005b34801561017257600080fd5b5061017b610678565b005b34801561018957600080fd5b5061019261068c565b60405161019f9190610d94565b60405180910390f35b3480156101b457600080fd5b506101cf60048036038101906101ca9190610c17565b6106b5565b005b3480156101dd57600080fd5b506101e66106c7565b6040516101f39190610c53565b60405180910390f35b34801561020857600080fd5b50610223600480360381019061021e9190610daf565b6106cd565b005b61022d610765565b005b34801561023b57600080fd5b506102446108af565b005b34801561025257600080fd5b5061026d60048036038101906102689190610e1b565b6108c3565b005b610277610946565b6000600280549050905060005b8181101561040b57600281815481106102a05761029f610e48565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33600284815481106102fb576102fa610e48565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161035e9190610d94565b602060405180830381865afa15801561037b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039f9190610e8c565b6040518363ffffffff1660e01b81526004016103bc929190610eb9565b6020604051808303816000875af11580156103db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ff9190610f1a565b50806001019050610284565b5050565b6003818154811061041f57600080fd5b906000526020600020016000915090505481565b6002818154811061044357600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61047a610946565b6000600280549050905060005b81811015610673578273ffffffffffffffffffffffffffffffffffffffff16600282815481106104ba576104b9610e48565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361066857600260018361050f9190610f76565b815481106105205761051f610e48565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002828154811061055f5761055e610e48565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060036001836105b69190610f76565b815481106105c7576105c6610e48565b5b9060005260206000200154600382815481106105e6576105e5610e48565b5b9060005260206000200181905550600280548061060657610605610faa565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055600380548061064d5761064c610faa565b5b60019003818190600052602060002001600090559055610673565b806001019050610487565b505050565b610680610946565b61068a60006109c4565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6106bd610946565b8060048190555050565b60045481565b6106d5610946565b6002829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060038190806001815401808255809150506001900390600052602060002001600090919091909150555050565b61076d610a88565b60045434146107a8576040517f99b5cb1d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600280549050905060005b818110156108a357600281815481106107d1576107d0610e48565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb336003848154811061082c5761082b610e48565b5b90600052602060002001546040518363ffffffff1660e01b8152600401610854929190610eb9565b6020604051808303816000875af1158015610873573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108979190610f1a565b508060010190506107b5565b50506108ad610ad7565b565b6108b7610946565b6108c13347610ae0565b565b6108cb610946565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361093a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109319061105c565b60405180910390fd5b610943816109c4565b50565b61094e610bd4565b73ffffffffffffffffffffffffffffffffffffffff1661096c61068c565b73ffffffffffffffffffffffffffffffffffffffff16146109c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b9906110c8565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600260015403610acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac490611134565b60405180910390fd5b6002600181905550565b60018081905550565b80471015610b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1a906111a0565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051610b49906111f1565b60006040518083038185875af1925050503d8060008114610b86576040519150601f19603f3d011682016040523d82523d6000602084013e610b8b565b606091505b5050905080610bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc690611278565b60405180910390fd5b505050565b600033905090565b600080fd5b6000819050919050565b610bf481610be1565b8114610bff57600080fd5b50565b600081359050610c1181610beb565b92915050565b600060208284031215610c2d57610c2c610bdc565b5b6000610c3b84828501610c02565b91505092915050565b610c4d81610be1565b82525050565b6000602082019050610c686000830184610c44565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610cb3610cae610ca984610c6e565b610c8e565b610c6e565b9050919050565b6000610cc582610c98565b9050919050565b6000610cd782610cba565b9050919050565b610ce781610ccc565b82525050565b6000602082019050610d026000830184610cde565b92915050565b6000610d1382610c6e565b9050919050565b6000610d2582610d08565b9050919050565b610d3581610d1a565b8114610d4057600080fd5b50565b600081359050610d5281610d2c565b92915050565b600060208284031215610d6e57610d6d610bdc565b5b6000610d7c84828501610d43565b91505092915050565b610d8e81610d08565b82525050565b6000602082019050610da96000830184610d85565b92915050565b60008060408385031215610dc657610dc5610bdc565b5b6000610dd485828601610d43565b9250506020610de585828601610c02565b9150509250929050565b610df881610d08565b8114610e0357600080fd5b50565b600081359050610e1581610def565b92915050565b600060208284031215610e3157610e30610bdc565b5b6000610e3f84828501610e06565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050610e8681610beb565b92915050565b600060208284031215610ea257610ea1610bdc565b5b6000610eb084828501610e77565b91505092915050565b6000604082019050610ece6000830185610d85565b610edb6020830184610c44565b9392505050565b60008115159050919050565b610ef781610ee2565b8114610f0257600080fd5b50565b600081519050610f1481610eee565b92915050565b600060208284031215610f3057610f2f610bdc565b5b6000610f3e84828501610f05565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610f8182610be1565b9150610f8c83610be1565b9250828203905081811115610fa457610fa3610f47565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600082825260208201905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611046602683610fd9565b915061105182610fea565b604082019050919050565b6000602082019050818103600083015261107581611039565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006110b2602083610fd9565b91506110bd8261107c565b602082019050919050565b600060208201905081810360008301526110e1816110a5565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b600061111e601f83610fd9565b9150611129826110e8565b602082019050919050565b6000602082019050818103600083015261114d81611111565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061118a601d83610fd9565b915061119582611154565b602082019050919050565b600060208201905081810360008301526111b98161117d565b9050919050565b600081905092915050565b50565b60006111db6000836111c0565b91506111e6826111cb565b600082019050919050565b60006111fc826111ce565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000611262603a83610fd9565b915061126d82611206565b604082019050919050565b6000602082019050818103600083015261129181611255565b905091905056fea26469706673582212204d4f9919a88261dd9adb1a366f1a7dad1b8cac7cb1fdefd54aa08cd03bcc357e64736f6c63430008110033
Deployed Bytecode Sourcemap
18686:4483:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22663:304;;;;;;;;;;;;;:::i;:::-;;18816:24;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18787:22;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21400:482;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14805:103;;;;;;;;;;;;;:::i;:::-;;14157:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22039:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18847:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21257:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22237:346;;;:::i;:::-;;23044:122;;;;;;;;;;;;;:::i;:::-;;15063:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22663:304;14043:13;:11;:13::i;:::-;22722:20:::1;22745:6;:13;;;;22722:36;;22774:9;22769:191;22789:12;22785:1;:16;22769:191;;;22820:6;22827:1;22820:9;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:18;;;22839:10;22851:6;22858:1;22851:9;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:19;;;22879:4;22851:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22820:66;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22930:3;;;;;22769:191;;;;22711:256;22663:304::o:0;18816:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18787:22::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21400:482::-;14043:13;:11;:13::i;:::-;21465:20:::1;21488:6;:13;;;;21465:36;;21517:9;21512:363;21532:12;21528:1;:16;21512:363;;;21580:5;21567:18;;:6;21574:1;21567:9;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:18;;::::0;21563:239:::1;;21618:6;21640:1;21625:12;:16;;;;:::i;:::-;21618:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21606:6;21613:1;21606:9;;;;;;;;:::i;:::-;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;21674:7;21697:1;21682:12;:16;;;;:::i;:::-;21674:25;;;;;;;;:::i;:::-;;;;;;;;;;21661:7;21669:1;21661:10;;;;;;;;:::i;:::-;;;;;;;;;:38;;;;21718:6;:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;21749:7;:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21781:5;;21563:239;21845:3;;;;;21512:363;;;;21454:428;21400:482:::0;:::o;14805:103::-;14043:13;:11;:13::i;:::-;14870:30:::1;14897:1;14870:18;:30::i;:::-;14805:103::o:0;14157:87::-;14203:7;14230:6;;;;;;;;;;;14223:13;;14157:87;:::o;22039:86::-;14043:13;:11;:13::i;:::-;22111:6:::1;22103:5;:14;;;;22039:86:::0;:::o;18847:34::-;;;;:::o;21257:135::-;14043:13;:11;:13::i;:::-;21335:6:::1;21347:5;21335:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21364:7;21377:6;21364:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21257:135:::0;;:::o;22237:346::-;17858:21;:19;:21::i;:::-;22321:5:::1;;22308:9;:18;22304:47;;22335:16;;;;;;;;;;;;;;22304:47;22362:20;22385:6;:13;;;;22362:36;;22414:9;22409:167;22429:12;22425:1;:16;22409:167;;;22460:6;22467:1;22460:9;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:18;;;22479:10;22491:7;22499:1;22491:10;;;;;;;;:::i;:::-;;;;;;;;;;22460:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22546:3;;;;;22409:167;;;;22293:290;17902:20:::0;:18;:20::i;:::-;22237:346::o;23044:122::-;14043:13;:11;:13::i;:::-;23097:61:::1;23123:10;23136:21;23097:17;:61::i;:::-;23044:122::o:0;15063:201::-;14043:13;:11;:13::i;:::-;15172:1:::1;15152:22;;:8;:22;;::::0;15144:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15228:28;15247:8;15228:18;:28::i;:::-;15063:201:::0;:::o;14322:132::-;14397:12;:10;:12::i;:::-;14386:23;;:7;:5;:7::i;:::-;:23;;;14378:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14322:132::o;15424:191::-;15498:16;15517:6;;;;;;;;;;;15498:25;;15543:8;15534:6;;:17;;;;;;;;;;;;;;;;;;15598:8;15567:40;;15588:8;15567:40;;;;;;;;;;;;15487:128;15424:191;:::o;17938:293::-;17340:1;18072:7;;:19;18064:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;17340:1;18205:7;:18;;;;17938:293::o;18239:213::-;17296:1;18422:7;:22;;;;18239:213::o;2473:317::-;2588:6;2563:21;:31;;2555:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2642:12;2660:9;:14;;2682:6;2660:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2641:52;;;2712:7;2704:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;2544:246;2473:317;;:::o;12866:98::-;12919:7;12946:10;12939:17;;12866:98;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:118::-;1112:24;1130:5;1112:24;:::i;:::-;1107:3;1100:37;1025:118;;:::o;1149:222::-;1242:4;1280:2;1269:9;1265:18;1257:26;;1293:71;1361:1;1350:9;1346:17;1337:6;1293:71;:::i;:::-;1149:222;;;;:::o;1377:126::-;1414:7;1454:42;1447:5;1443:54;1432:65;;1377:126;;;:::o;1509:60::-;1537:3;1558:5;1551:12;;1509:60;;;:::o;1575:142::-;1625:9;1658:53;1676:34;1685:24;1703:5;1685:24;:::i;:::-;1676:34;:::i;:::-;1658:53;:::i;:::-;1645:66;;1575:142;;;:::o;1723:126::-;1773:9;1806:37;1837:5;1806:37;:::i;:::-;1793:50;;1723:126;;;:::o;1855:140::-;1919:9;1952:37;1983:5;1952:37;:::i;:::-;1939:50;;1855:140;;;:::o;2001:159::-;2102:51;2147:5;2102:51;:::i;:::-;2097:3;2090:64;2001:159;;:::o;2166:250::-;2273:4;2311:2;2300:9;2296:18;2288:26;;2324:85;2406:1;2395:9;2391:17;2382:6;2324:85;:::i;:::-;2166:250;;;;:::o;2422:96::-;2459:7;2488:24;2506:5;2488:24;:::i;:::-;2477:35;;2422:96;;;:::o;2524:110::-;2575:7;2604:24;2622:5;2604:24;:::i;:::-;2593:35;;2524:110;;;:::o;2640:150::-;2727:38;2759:5;2727:38;:::i;:::-;2720:5;2717:49;2707:77;;2780:1;2777;2770:12;2707:77;2640:150;:::o;2796:167::-;2856:5;2894:6;2881:20;2872:29;;2910:47;2951:5;2910:47;:::i;:::-;2796:167;;;;:::o;2969:357::-;3042:6;3091:2;3079:9;3070:7;3066:23;3062:32;3059:119;;;3097:79;;:::i;:::-;3059:119;3217:1;3242:67;3301:7;3292:6;3281:9;3277:22;3242:67;:::i;:::-;3232:77;;3188:131;2969:357;;;;:::o;3332:118::-;3419:24;3437:5;3419:24;:::i;:::-;3414:3;3407:37;3332:118;;:::o;3456:222::-;3549:4;3587:2;3576:9;3572:18;3564:26;;3600:71;3668:1;3657:9;3653:17;3644:6;3600:71;:::i;:::-;3456:222;;;;:::o;3684:502::-;3766:6;3774;3823:2;3811:9;3802:7;3798:23;3794:32;3791:119;;;3829:79;;:::i;:::-;3791:119;3949:1;3974:67;4033:7;4024:6;4013:9;4009:22;3974:67;:::i;:::-;3964:77;;3920:131;4090:2;4116:53;4161:7;4152:6;4141:9;4137:22;4116:53;:::i;:::-;4106:63;;4061:118;3684:502;;;;;:::o;4192:122::-;4265:24;4283:5;4265:24;:::i;:::-;4258:5;4255:35;4245:63;;4304:1;4301;4294:12;4245:63;4192:122;:::o;4320:139::-;4366:5;4404:6;4391:20;4382:29;;4420:33;4447:5;4420:33;:::i;:::-;4320:139;;;;:::o;4465:329::-;4524:6;4573:2;4561:9;4552:7;4548:23;4544:32;4541:119;;;4579:79;;:::i;:::-;4541:119;4699:1;4724:53;4769:7;4760:6;4749:9;4745:22;4724:53;:::i;:::-;4714:63;;4670:117;4465:329;;;;:::o;4800:180::-;4848:77;4845:1;4838:88;4945:4;4942:1;4935:15;4969:4;4966:1;4959:15;4986:143;5043:5;5074:6;5068:13;5059:22;;5090:33;5117:5;5090:33;:::i;:::-;4986:143;;;;:::o;5135:351::-;5205:6;5254:2;5242:9;5233:7;5229:23;5225:32;5222:119;;;5260:79;;:::i;:::-;5222:119;5380:1;5405:64;5461:7;5452:6;5441:9;5437:22;5405:64;:::i;:::-;5395:74;;5351:128;5135:351;;;;:::o;5492:332::-;5613:4;5651:2;5640:9;5636:18;5628:26;;5664:71;5732:1;5721:9;5717:17;5708:6;5664:71;:::i;:::-;5745:72;5813:2;5802:9;5798:18;5789:6;5745:72;:::i;:::-;5492:332;;;;;:::o;5830:90::-;5864:7;5907:5;5900:13;5893:21;5882:32;;5830:90;;;:::o;5926:116::-;5996:21;6011:5;5996:21;:::i;:::-;5989:5;5986:32;5976:60;;6032:1;6029;6022:12;5976:60;5926:116;:::o;6048:137::-;6102:5;6133:6;6127:13;6118:22;;6149:30;6173:5;6149:30;:::i;:::-;6048:137;;;;:::o;6191:345::-;6258:6;6307:2;6295:9;6286:7;6282:23;6278:32;6275:119;;;6313:79;;:::i;:::-;6275:119;6433:1;6458:61;6511:7;6502:6;6491:9;6487:22;6458:61;:::i;:::-;6448:71;;6404:125;6191:345;;;;:::o;6542:180::-;6590:77;6587:1;6580:88;6687:4;6684:1;6677:15;6711:4;6708:1;6701:15;6728:194;6768:4;6788:20;6806:1;6788:20;:::i;:::-;6783:25;;6822:20;6840:1;6822:20;:::i;:::-;6817:25;;6866:1;6863;6859:9;6851:17;;6890:1;6884:4;6881:11;6878:37;;;6895:18;;:::i;:::-;6878:37;6728:194;;;;:::o;6928:180::-;6976:77;6973:1;6966:88;7073:4;7070:1;7063:15;7097:4;7094:1;7087:15;7114:169;7198:11;7232:6;7227:3;7220:19;7272:4;7267:3;7263:14;7248:29;;7114:169;;;;:::o;7289:225::-;7429:34;7425:1;7417:6;7413:14;7406:58;7498:8;7493:2;7485:6;7481:15;7474:33;7289:225;:::o;7520:366::-;7662:3;7683:67;7747:2;7742:3;7683:67;:::i;:::-;7676:74;;7759:93;7848:3;7759:93;:::i;:::-;7877:2;7872:3;7868:12;7861:19;;7520:366;;;:::o;7892:419::-;8058:4;8096:2;8085:9;8081:18;8073:26;;8145:9;8139:4;8135:20;8131:1;8120:9;8116:17;8109:47;8173:131;8299:4;8173:131;:::i;:::-;8165:139;;7892:419;;;:::o;8317:182::-;8457:34;8453:1;8445:6;8441:14;8434:58;8317:182;:::o;8505:366::-;8647:3;8668:67;8732:2;8727:3;8668:67;:::i;:::-;8661:74;;8744:93;8833:3;8744:93;:::i;:::-;8862:2;8857:3;8853:12;8846:19;;8505:366;;;:::o;8877:419::-;9043:4;9081:2;9070:9;9066:18;9058:26;;9130:9;9124:4;9120:20;9116:1;9105:9;9101:17;9094:47;9158:131;9284:4;9158:131;:::i;:::-;9150:139;;8877:419;;;:::o;9302:181::-;9442:33;9438:1;9430:6;9426:14;9419:57;9302:181;:::o;9489:366::-;9631:3;9652:67;9716:2;9711:3;9652:67;:::i;:::-;9645:74;;9728:93;9817:3;9728:93;:::i;:::-;9846:2;9841:3;9837:12;9830:19;;9489:366;;;:::o;9861:419::-;10027:4;10065:2;10054:9;10050:18;10042:26;;10114:9;10108:4;10104:20;10100:1;10089:9;10085:17;10078:47;10142:131;10268:4;10142:131;:::i;:::-;10134:139;;9861:419;;;:::o;10286:179::-;10426:31;10422:1;10414:6;10410:14;10403:55;10286:179;:::o;10471:366::-;10613:3;10634:67;10698:2;10693:3;10634:67;:::i;:::-;10627:74;;10710:93;10799:3;10710:93;:::i;:::-;10828:2;10823:3;10819:12;10812:19;;10471:366;;;:::o;10843:419::-;11009:4;11047:2;11036:9;11032:18;11024:26;;11096:9;11090:4;11086:20;11082:1;11071:9;11067:17;11060:47;11124:131;11250:4;11124:131;:::i;:::-;11116:139;;10843:419;;;:::o;11268:147::-;11369:11;11406:3;11391:18;;11268:147;;;;:::o;11421:114::-;;:::o;11541:398::-;11700:3;11721:83;11802:1;11797:3;11721:83;:::i;:::-;11714:90;;11813:93;11902:3;11813:93;:::i;:::-;11931:1;11926:3;11922:11;11915:18;;11541:398;;;:::o;11945:379::-;12129:3;12151:147;12294:3;12151:147;:::i;:::-;12144:154;;12315:3;12308:10;;11945:379;;;:::o;12330:245::-;12470:34;12466:1;12458:6;12454:14;12447:58;12539:28;12534:2;12526:6;12522:15;12515:53;12330:245;:::o;12581:366::-;12723:3;12744:67;12808:2;12803:3;12744:67;:::i;:::-;12737:74;;12820:93;12909:3;12820:93;:::i;:::-;12938:2;12933:3;12929:12;12922:19;;12581:366;;;:::o;12953:419::-;13119:4;13157:2;13146:9;13142:18;13134:26;;13206:9;13200:4;13196:20;13192:1;13181:9;13177:17;13170:47;13234:131;13360:4;13234:131;:::i;:::-;13226:139;;12953:419;;;:::o
Swarm Source
ipfs://4d4f9919a88261dd9adb1a366f1a7dad1b8cac7cb1fdefd54aa08cd03bcc357e
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$21.99
Net Worth in ETH
0.0094
Token Allocations
ETH
100.00%
XDAI
0.00%
AVAX
0.00%
Multichain Portfolio | 35 Chains
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ 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.