ETH Price: $4,519.61 (+1.00%)

Contract

0x28cFE98c33b8A8Bb5F5aC5068A95D9db6bEE5FfD
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
Age
From
To
Approve235146282025-10-05 22:43:113 days ago1759704191IN
The Soup Game: SOUP Token
0 ETH0.000236775.11483238
Approve233613502025-09-14 12:34:3524 days ago1757853275IN
The Soup Game: SOUP Token
0 ETH0.000010790.23305834
Approve233577082025-09-14 0:23:2325 days ago1757809403IN
The Soup Game: SOUP Token
0 ETH0.000026830.58052746
Approve233177432025-09-08 10:21:4730 days ago1757326907IN
The Soup Game: SOUP Token
0 ETH0.000021140.45667069
Approve233135512025-09-07 20:17:5931 days ago1757276279IN
The Soup Game: SOUP Token
0 ETH0.000009830.21251027
Approve232607802025-08-31 11:18:2338 days ago1756639103IN
The Soup Game: SOUP Token
0 ETH0.000006690.14540026
Approve232607732025-08-31 11:16:5938 days ago1756639019IN
The Soup Game: SOUP Token
0 ETH0.000010150.21939846
Approve232330622025-08-27 14:30:2342 days ago1756305023IN
The Soup Game: SOUP Token
0 ETH0.000064421.39345316
Approve231828472025-08-20 14:20:1149 days ago1755699611IN
The Soup Game: SOUP Token
0 ETH0.000050611.09319074
Approve231201592025-08-11 20:21:2358 days ago1754943683IN
The Soup Game: SOUP Token
0 ETH0.000091071.97923
Approve230908712025-08-07 18:07:4762 days ago1754590067IN
The Soup Game: SOUP Token
0 ETH0.000020180.84268015
Approve228613252025-07-06 16:22:3594 days ago1751818955IN
The Soup Game: SOUP Token
0 ETH0.00011972.6
Approve228610712025-07-06 15:31:3594 days ago1751815895IN
The Soup Game: SOUP Token
0 ETH0.000138113
Approve227946352025-06-27 8:38:35103 days ago1751013515IN
The Soup Game: SOUP Token
0 ETH0.000131672.84381804
Approve227165112025-06-16 10:33:59114 days ago1750070039IN
The Soup Game: SOUP Token
0 ETH0.000055932.14007715
Approve227165102025-06-16 10:33:47114 days ago1750070027IN
The Soup Game: SOUP Token
0 ETH0.000093772.03690131
Approve227164342025-06-16 10:18:35114 days ago1750069115IN
The Soup Game: SOUP Token
0 ETH0.000067941.47589211
Transfer227044232025-06-14 17:55:47116 days ago1749923747IN
The Soup Game: SOUP Token
0 ETH0.000050140.9192275
Approve226646022025-06-09 4:21:35121 days ago1749442895IN
The Soup Game: SOUP Token
0 ETH0.000114012.47643163
Approve226645682025-06-09 4:14:35121 days ago1749442475IN
The Soup Game: SOUP Token
0 ETH0.000110942.40981331
Approve226198092025-06-02 21:57:47128 days ago1748901467IN
The Soup Game: SOUP Token
0 ETH0.000133332.9
Approve226137082025-06-02 1:25:47128 days ago1748827547IN
The Soup Game: SOUP Token
0 ETH0.000130942.8449923
Approve226113652025-06-01 17:33:59129 days ago1748799239IN
The Soup Game: SOUP Token
0 ETH0.000104792.26329446
Approve225793362025-05-28 5:59:11133 days ago1748411951IN
The Soup Game: SOUP Token
0 ETH0.000130892.83056569
Approve225726142025-05-27 7:24:11134 days ago1748330651IN
The Soup Game: SOUP Token
0 ETH0.000129282.80806639
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
Age
From
To
Balance Of235273682025-10-07 17:27:5931 hrs ago1759858079
The Soup Game: SOUP Token
0 ETH
Sync235273682025-10-07 17:27:5931 hrs ago1759858079
The Soup Game: SOUP Token
0 ETH
Debase235273682025-10-07 17:27:5931 hrs ago1759858079
The Soup Game: SOUP Token
0 ETH
Soup To Fragment235273682025-10-07 17:27:5931 hrs ago1759858079
The Soup Game: SOUP Token
0 ETH
Transfer Underly...235273682025-10-07 17:27:5931 hrs ago1759858079
The Soup Game: SOUP Token
0 ETH
Balance Of235091792025-10-05 4:27:593 days ago1759638479
The Soup Game: SOUP Token
0 ETH
Sync235091792025-10-05 4:27:593 days ago1759638479
The Soup Game: SOUP Token
0 ETH
Debase235091792025-10-05 4:27:593 days ago1759638479
The Soup Game: SOUP Token
0 ETH
Soup To Fragment235091792025-10-05 4:27:593 days ago1759638479
The Soup Game: SOUP Token
0 ETH
Transfer Underly...235091792025-10-05 4:27:593 days ago1759638479
The Soup Game: SOUP Token
0 ETH
Balance Of235091712025-10-05 4:26:233 days ago1759638383
The Soup Game: SOUP Token
0 ETH
Transfer From235091712025-10-05 4:26:233 days ago1759638383
The Soup Game: SOUP Token
0 ETH
Balance Of235091672025-10-05 4:25:353 days ago1759638335
The Soup Game: SOUP Token
0 ETH
Balance Of235091672025-10-05 4:25:353 days ago1759638335
The Soup Game: SOUP Token
0 ETH
Transfer From235091672025-10-05 4:25:353 days ago1759638335
The Soup Game: SOUP Token
0 ETH
Balance Of235091612025-10-05 4:24:233 days ago1759638263
The Soup Game: SOUP Token
0 ETH
Sync235091612025-10-05 4:24:233 days ago1759638263
The Soup Game: SOUP Token
0 ETH
Debase235091612025-10-05 4:24:233 days ago1759638263
The Soup Game: SOUP Token
0 ETH
Soup To Fragment235091612025-10-05 4:24:233 days ago1759638263
The Soup Game: SOUP Token
0 ETH
Transfer Underly...235091612025-10-05 4:24:233 days ago1759638263
The Soup Game: SOUP Token
0 ETH
Balance Of Under...235091612025-10-05 4:24:233 days ago1759638263
The Soup Game: SOUP Token
0 ETH
Request Rewards235091612025-10-05 4:24:233 days ago1759638263
The Soup Game: SOUP Token
0 ETH
Balance Of234524732025-09-27 6:11:4711 days ago1758953507
The Soup Game: SOUP Token
0 ETH
Sync234524732025-09-27 6:11:4711 days ago1758953507
The Soup Game: SOUP Token
0 ETH
Debase234524732025-09-27 6:11:4711 days ago1758953507
The Soup Game: SOUP Token
0 ETH
View All Internal Transactions
Cross-Chain Transactions

Block Age Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Age Amount
View All Withdrawals

Transaction Hash Block Age Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Soup

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
Yes with 200 runs

Other Settings:
cancun EvmVersion
File 1 of 24 : soup.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
pragma solidity ^0.8.22;
import '@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.sol';
import '@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol';
import '@openzeppelin/contracts/access/Ownable.sol';
import "abdk-libraries-solidity/ABDKMath64x64.sol";
import './ERC20PresetMinterRebaser.sol';
import './interfaces/ISoup.sol';
// Welcome to THE SOUP GAME.
// lfg to https://soup.game and play.
//
// Yes, this contract will be renounced once game
// mechanics are proven to be fair and balanced.
//
// SOUP, because... it's what the people want.
// Obviously.
/**
* @title Soup Token Contract
* @dev ERC20 token with deflationary mechanics and reward freezing functionality
*/
contract Soup is ERC20PresetMinterRebaser, Ownable {
using ABDKMath64x64 for int128;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
pragma solidity ^0.8.22;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
interface ISoup is IERC20 {
function debase() external;
function burn(uint256 amount) external;
function freeze(uint256 amount) external;
function mint(address to, uint256 amount) external;
function deflationRate() external returns (int128);
function requestRewards(uint256 rewardBips) external;
function totalLiquidSupply() external view returns (uint256);
function accountForDefrostedDeflation(uint256 leftover) external;
function unfreeze(address to, uint256 amount) external returns (bool);
function soupToFragment(uint256 soup) external view returns (uint256);
function fragmentToSoup(uint256 value) external view returns (uint256);
function balanceOfUnderlying(address who) external view returns (uint256);
function transferUnderlying(address to, uint256 value) external returns (bool);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

File 3 of 24 : ERC20PresetMinterRebaser.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// File: contracts/ERC20PresetMinterRebaser.sol
pragma solidity ^0.8.0;
import '@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol';
import '@openzeppelin/contracts/access/AccessControlEnumerable.sol';
import '@openzeppelin/contracts/utils/Context.sol';
contract ERC20PresetMinterRebaser is
Context,
AccessControlEnumerable,
ERC20Burnable
{
bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");
bytes32 public constant REBASER_ROLE = keccak256("REBASER_ROLE");
constructor(string memory name, string memory symbol) ERC20(name, symbol) {
_setupRole(DEFAULT_ADMIN_ROLE, _msgSender());
_setupRole(MINTER_ROLE, _msgSender());
_setupRole(REBASER_ROLE, _msgSender());
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: BSD-4-Clause
/*
* ABDK Math 64.64 Smart Contract Library. Copyright © 2019 by ABDK Consulting.
* Author: Mikhail Vladimirov <mikhail.vladimirov@gmail.com>
*/
pragma solidity ^0.8.0;
/**
* Smart contract library of mathematical functions operating with signed
* 64.64-bit fixed point numbers. Signed 64.64-bit fixed point number is
* basically a simple fraction whose numerator is signed 128-bit integer and
* denominator is 2^64. As long as denominator is always the same, there is no
* need to store it, thus in Solidity signed 64.64-bit fixed point numbers are
* represented by int128 type holding only the numerator.
*/
library ABDKMath64x64 {
/*
* Minimum value signed 64.64-bit fixed point number may have.
*/
int128 private constant MIN_64x64 = -0x80000000000000000000000000000000;
/*
* Maximum value signed 64.64-bit fixed point number may have.
*/
int128 private constant MAX_64x64 = 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
pragma solidity >=0.5.0;
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
event Mint(address indexed sender, uint amount0, uint amount1);
event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (utils/structs/EnumerableSet.sol)
// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.
pragma solidity ^0.8.0;
/**
* @dev Library for managing
* https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive
* types.
*
* Sets have the following properties:
*
* - Elements are added, removed, and checked for existence in constant time
* (O(1)).
* - Elements are enumerated in O(n). No guarantees are made on the ordering.
*
* ```solidity
* contract Example {
* // Add the library methods
* using EnumerableSet for EnumerableSet.AddressSet;
*
* // Declare a set state variable
* EnumerableSet.AddressSet private mySet;
* }
* ```
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)
pragma solidity ^0.8.0;
/**
* @dev Standard signed math utilities missing in the Solidity language.
*/
library SignedMath {
/**
* @dev Returns the largest of two signed numbers.
*/
function max(int256 a, int256 b) internal pure returns (int256) {
return a > b ? a : b;
}
/**
* @dev Returns the smallest of two signed numbers.
*/
function min(int256 a, int256 b) internal pure returns (int256) {
return a < b ? a : b;
}
/**
* @dev Returns the average of two signed numbers without overflow.
* The result is rounded towards zero.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)
pragma solidity ^0.8.0;
/**
* @dev Standard math utilities missing in the Solidity language.
*/
library Math {
enum Rounding {
Down, // Toward negative infinity
Up, // Toward infinity
Zero // Toward zero
}
/**
* @dev Returns the largest of two numbers.
*/
function max(uint256 a, uint256 b) internal pure returns (uint256) {
return a > b ? a : b;
}
/**
* @dev Returns the smallest of two numbers.
*/
function min(uint256 a, uint256 b) internal pure returns (uint256) {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)
pragma solidity ^0.8.0;
import "./IERC165.sol";
/**
* @dev Implementation of the {IERC165} interface.
*
* Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check
* for the additional interface id that will be supported. For example:
*
* ```solidity
* function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
* return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);
* }
* ```
*
* Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.
*/
abstract contract ERC165 is IERC165 {
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)
pragma solidity ^0.8.0;
import "./math/Math.sol";
import "./math/SignedMath.sol";
/**
* @dev String operations.
*/
library Strings {
bytes16 private constant _SYMBOLS = "0123456789abcdef";
uint8 private constant _ADDRESS_LENGTH = 20;
/**
* @dev Converts a `uint256` to its ASCII `string` decimal representation.
*/
function toString(uint256 value) internal pure returns (string memory) {
unchecked {
uint256 length = Math.log10(value) + 1;
string memory buffer = new string(length);
uint256 ptr;
/// @solidity memory-safe-assembly
assembly {
ptr := add(buffer, add(32, length))
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.4) (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;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)
pragma solidity ^0.8.1;
/**
* @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
*
* Furthermore, `isContract` will also return true if the target contract within
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.3) (token/ERC20/utils/SafeERC20.sol)
pragma solidity ^0.8.0;
import "../IERC20.sol";
import "../extensions/IERC20Permit.sol";
import "../../../utils/Address.sol";
/**
* @title SafeERC20
* @dev Wrappers around ERC20 operations that throw on failure (when the token
* contract returns false). Tokens that return no value (and instead revert or
* throw on failure) are also supported, non-reverting calls are assumed to be
* successful.
* To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
library SafeERC20 {
using Address for address;
/**
* @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,
* non-reverting calls are assumed to be successful.
*/
function safeTransfer(IERC20 token, address to, uint256 value) internal {
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.4) (token/ERC20/extensions/IERC20Permit.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in
* https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].
*
* Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by
* presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't
* need to send a transaction, and thus is not required to hold Ether at all.
*
* ==== Security Considerations
*
* There are two important considerations concerning the use of `permit`. The first is that a valid permit signature
* expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be
* considered as an intention to spend the allowance in any specific way. The second is that because permits have
* built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should
* take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be
* generally recommended is:
*
* ```solidity
* function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {
* try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}
* doThing(..., value);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// 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.
*/
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol)
pragma solidity ^0.8.0;
import "../ERC20.sol";
import "../../../utils/Context.sol";
/**
* @dev Extension of {ERC20} that allows token holders to destroy both their own
* tokens and those that they have an allowance for, in a way that can be
* recognized off-chain (via event analysis).
*/
abstract contract ERC20Burnable is Context, ERC20 {
/**
* @dev Destroys `amount` tokens from the caller.
*
* See {ERC20-_burn}.
*/
function burn(uint256 amount) public virtual {
_burn(_msgSender(), amount);
}
/**
* @dev Destroys `amount` tokens from `account`, deducting from the caller's
* allowance.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// 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.
*/
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// 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
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// 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.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/IAccessControlEnumerable.sol)
pragma solidity ^0.8.0;
import "./IAccessControl.sol";
/**
* @dev External interface of AccessControlEnumerable declared to support ERC165 detection.
*/
interface IAccessControlEnumerable is IAccessControl {
/**
* @dev Returns one of the accounts that have `role`. `index` must be a
* value between 0 and {getRoleMemberCount}, non-inclusive.
*
* Role bearers are not sorted in any particular way, and their ordering may
* change at any point.
*
* WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure
* you perform all queries on the same block. See the following
* https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]
* for more information.
*/
function getRoleMember(bytes32 role, uint256 index) external view returns (address);
/**
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)
pragma solidity ^0.8.0;
/**
* @dev External interface of AccessControl declared to support ERC165 detection.
*/
interface IAccessControl {
/**
* @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`
*
* `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite
* {RoleAdminChanged} not being emitted signaling this.
*
* _Available since v3.1._
*/
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
/**
* @dev Emitted when `account` is granted `role`.
*
* `sender` is the account that originated the contract call, an admin role
* bearer except when using {AccessControl-_setupRole}.
*/
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (access/AccessControlEnumerable.sol)
pragma solidity ^0.8.0;
import "./IAccessControlEnumerable.sol";
import "./AccessControl.sol";
import "../utils/structs/EnumerableSet.sol";
/**
* @dev Extension of {AccessControl} that allows enumerating the members of each role.
*/
abstract contract AccessControlEnumerable is IAccessControlEnumerable, AccessControl {
using EnumerableSet for EnumerableSet.AddressSet;
mapping(bytes32 => EnumerableSet.AddressSet) private _roleMembers;
/**
* @dev See {IERC165-supportsInterface}.
*/
function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
return interfaceId == type(IAccessControlEnumerable).interfaceId || super.supportsInterface(interfaceId);
}
/**
* @dev Returns one of the accounts that have `role`. `index` must be a
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (access/AccessControl.sol)
pragma solidity ^0.8.0;
import "./IAccessControl.sol";
import "../utils/Context.sol";
import "../utils/Strings.sol";
import "../utils/introspection/ERC165.sol";
/**
* @dev Contract module that allows children to implement role-based access
* control mechanisms. This is a lightweight version that doesn't allow enumerating role
* members except through off-chain means by accessing the contract event logs. Some
* applications may benefit from on-chain enumerability, for those cases see
* {AccessControlEnumerable}.
*
* Roles are referred to by their `bytes32` identifier. These should be exposed
* in the external API and be unique. The best way to achieve this is by
* using `public constant` hash digests:
*
* ```solidity
* bytes32 public constant MY_ROLE = keccak256("MY_ROLE");
* ```
*
* Roles can be used to represent a set of permissions. To restrict access to a
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Settings
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
"remappings": [],
"optimizer": {
"enabled": true,
"runs": 200
},
"evmVersion": "cancun",
"viaIR": true,
"libraries": {},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Contract Security Audit

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":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Mint","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":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_SCALE_FACTOR","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REBASER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_debaseStartedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_frozen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_lastDebasedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"leftover","type":"uint256"}],"name":"accountForDefrostedDeflation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOfUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"debase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"debaseDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"debaseStartedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"deflationRate","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"fragmentToSoup","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"freeze","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"frozenForRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"internalDecimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"contract IUniswapV2Pair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxScalingFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintUnderlying","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rewardBips","type":"uint256"}],"name":"requestRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardsRequestedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"scaleFactor","outputs":[{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IUniswapV2Pair","name":"pairAddress","type":"address"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"soupScalingFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"soup","type":"uint256"}],"name":"soupToFragment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startDebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalLiquidSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalUnderlyingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferUnderlying","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unfreeze","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040908082523461046957610015816108c9565b6009815260209068736f75702e67616d6560b81b828201528251610038816108c9565b6004808252630534f55560e41b848301819052835191936001600160401b03939091908484116108b6576005908154946001948587811c971680156108ac575b8a8810146107c4578190601f97888111610860575b508a908883116001146107ff575f926107f4575b50505f19600383901b1c191690851b1782555b8051918683116107e157600654908582811c921680156107d7575b8a8310146107c45790839291878211610775575b50508890868311600114610714575f92610709575b50505f19600383901b1c191690831b176006555b5f80525f8652865f20335f52865260ff875f205416156106d5575b5f805281865261013933885f20610919565b507f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6805f525f8752875f20335f52875260ff885f205416156106a1575b5f5281865261018733885f20610919565b507f5fde63b561377d1441afa201ff619faac2ff8fed70a7fbdbe7a5cb07768c0b75805f525f8752875f20335f52875260ff885f2054161561066d575b5f528186526101d533885f20610919565b5060078054336001600160a01b0319821681179092556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a360018060801b0319928560089264044b82fa098660085416176008556a52b7d2dcc80cd2e4000000601355888a5161024f816108c9565b838152019081522083888a51610264816108c9565b82815201603160f81b815220895190898201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f84528b83015260608201526080964660808301523060a083015260a0825260c08201908282109082111761065a578a5251902060115567fffffaf78282fca084600b54161780600b55600f0b915f905f84129485948596610652575b839495965f1461064c575f03600f0b975b6001600160801b0398600160801b96818b16929068010000000000000000841161050257505050603f9491941b905b6104975750505050861c905b15610491575f03905b60016001607f1b031982121580610480575b156104695760155416911617806015556a39e7139a8c08fa060000008060145560105490810180911161046d57601055600f0b5f811261046957670de0b6b3a764000002831c90811561045657507201586213892965aaa6246b3388b80000000000046103ca81600f546108f8565b600f55335f52600982526103e2835f209182546108f8565b90555f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8351923384527f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885856a18d0bf423c03d8de000000958684820152a184519384523393a35161277e908161098a8239f35b601290634e487b7160e01b5f525260245ffd5b5f80fd5b601183634e487b7160e01b5f525260245ffd5b5060016001607f1b0382131561035b565b90610349565b8383166104f6575b607f908002811c600284166104eb575b8002811c8984166104e0575b8002811c8284166104d5575b92891c928002901c82610334565b809502811c946104c7565b809502811c946104bb565b809502811c946104af565b809402607f1c9361049f565b909291939450603f936c010000000000000000000000008310610632575b5050600160701b8110610624575b600160781b8110610616575b6001607c1b8110610609575b6001607e1b81106105fb575b6001607f1b81106105ef575b5f949294955b61057e575050505050878110156104695787031c90610340565b8c851015610469578383166105c1575b8002607f81901c94841b9290600160801b8610156105b3575b50831c93849294610564565b821c9450918301915f6105a7565b958602607f81901c969585019590600160801b88116105e1575b5061058e565b821c9650948301945f6105db565b831b915f19019161055e565b60021b916001190191610552565b8a1b916003190191610546565b60081b91600719019161053a565b60101b91600f19019161052e565b9093508c1b600160201b600160a01b031690505f80610520565b97610305565b5f95506102f4565b604189634e487b7160e01b5f525260245ffd5b805f525f8752875f20335f528752875f208360ff198254161790553333825f805160206131088339815191525f80a46101c4565b805f525f8752875f20335f528752875f208360ff198254161790553333825f805160206131088339815191525f80a4610176565b5f80525f8652865f20335f528652865f208260ff1982541617905533335f5f805160206131088339815191528180a4610127565b015190505f806100f8565b90859350601f1983169160065f528a5f20925f5b8c82821061075f5750508411610747575b505050811b0160065561010c565b01515f1960f88460031b161c191690555f8080610739565b8385015186558997909501949384019301610728565b9091925060065f52895f209087808601821c8301938c87106107bb575b918695949391899301901c01915b8281106107ad57506100e3565b5f81558594508791016107a0565b93508293610792565b602289634e487b7160e01b5f525260245ffd5b91607f16916100cf565b604188634e487b7160e01b5f525260245ffd5b015190505f806100a1565b5f8681528c8120899550929190601f198516908e5b8282106108495750508411610831575b505050811b0182556100b4565b01515f1960f88460031b161c191690555f8080610824565b8385015186558b979095019493840193018e610814565b909150845f528a5f2088808501871c8201928d86106108a3575b9189918695949301881c01915b82811061089557505061008d565b5f8155859450899101610887565b9250819261087a565b96607f1696610078565b604186634e487b7160e01b5f525260245ffd5b604081019081106001600160401b038211176108e457604052565b634e487b7160e01b5f52604160045260245ffd5b9190820180921161090557565b634e487b7160e01b5f52601160045260245ffd5b6001810190825f528160205260405f2054155f14610982578054680100000000000000008110156108e4576001810180835581101561096e578390825f5260205f20015554915f5260205260405f2055600190565b634e487b7160e01b5f52603260045260245ffd5b5050505f9056fe6080604081815260049182361015610015575f80fd5b5f925f3560e01c91826301ffc9a714611e0b5750816306fdde0314611d17578163095ea7b314611cbc57816311d3e6c414611c81578163143a08d414611c6357816318160ddd14611c355781631a70b99414611c1957816320606b7014611bdf578163236e123114611bbd57816323b872dd14611b01578163248a9ca314611ad8578163275d155414611aba57816328b61bd014611a9c5781632d80edcc14611a7e5781632e1bb86214611a405781632f2ff15d1461199257816330adf81f14611958578163313ce5671461193d578163336d2692146118995781633644e5151461187b57816336568abe146117ea578163378dc3dc146117cc578163395093511461175e5781633af9e6691461172757816340c10f19146116ce57816342966c68146116af578163452ed4f11461168757816346bc4189146116695781636422380a1461132157816364dd48f5146112fe578163683dd191146112dc578163685f59de146112b657816370a082311461127c578163715018a61461121f57816374c0476f1461119957816379cc679014610f4f5781637b46b80b14610f1d5781637ecebe0014610ee55781638005d20614610ec55781638187f51614610e7c57816383eb70e514610e415781638b472c6314610e225781638da5cb5b14610df95781639010d07c14610db8578163917505f414610cc057816391d1485414610c7d57816395d89b4114610b785781639e2dca8314610b59578163a217fddf14610b3e578163a457c2d714610a8b578163a9059cbb146109fc578163acecbd22146109da578163ca15c873146109b2578163cea9d26f14610818578163d505accf146105a7578163d53913931461057f578163d547741f14610541578163d5abeb0114610515578163d7a78db8146104b8578163dd62ed3e1461046b578163dfe6fd0914610441578163ee0b4bee146103d6578163f2fde38b14610306575063fec5eeab146102e2575f80fd5b34610302578160031936011261030257602090600854600f0b9051908152f35b5080fd5b9050346103d25760203660031901126103d257610321611ea1565b9061032a6124aa565b6001600160a01b03918216928315610380575050600754826bffffffffffffffffffffffff60a01b821617600755167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8280fd5b9050346103d25760203660031901126103d25761041860ff61043d935f805160206126e9833981519152865285602052808620335f526020525f205416611f76565b61043461271061042c601454933584612013565b048092611f38565b60145533611fba565b5080f35b828434610468576020366003190112610468575061046160209235612040565b9051908152f35b80fd5b505034610302578060031936011261030257602091610488611ea1565b82610491611eb7565b6001600160a01b039283168452600a8652922091165f908152908352819020549051908152f35b919050346103d25760203660031901126103d2576104fd60ff61050f9335925f805160206126e9833981519152865285602052808620335f526020525f205416611f76565b610507338261243c565b601054611f69565b60105580f35b505034610302578160031936011261030257602090610461610538600f54612087565b60105490611f69565b919050346103d257806003193601126103d25761057c91356105776001610566611eb7565b9383875286602052862001546120a6565b61231f565b80f35b505034610302578160031936011261030257602090515f805160206126e98339815191528152f35b919050346103d25760e03660031901126103d2576105c3611ea1565b906105cc611eb7565b9060443590606435946084359460ff8616809603610814578642116107db576011549660018060a01b0380921696878a5260209660128852858b20998a549a5f198c146107c85760018c019055865193858a8601937f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c985528c8a880152169b8c606087015289608087015260a086015260c085015260c0845260e0840167ffffffffffffffff92858210848311176107b5578189528551902061010086019261190160f01b845261010287015261012286015260428152610160850192818410908411176107a257828852519020928915610765575050608087928b9287519182528482015260a4358782015260c435606082015282805260015afa1561075b5787511685036107245750905f805160206127298339815191529291848752600a8352808720865f52835281815f205551908152a380f35b83606492519162461bcd60e51b8352820152601360248201527214d3d5540bda5b9d985b1a590b5c195c9b5a5d606a1b6044820152fd5b82513d89823e3d90fd5b90750534f55502f696e76616c69642d616464726573732d360541b6101a46064938b62461bcd60e51b855261016482015260166101848201520152fd5b604187634e487b7160e01b5f525260245ffd5b604188634e487b7160e01b5f525260245ffd5b634e487b7160e01b8d526011875260248dfd5b506020606492519162461bcd60e51b8352820152601360248201527214d3d5540bdc195c9b5a5d0b595e1c1a5c9959606a1b6044820152fd5b8780fd5b9050346103d25761082836611ecd565b94916108326124aa565b845163a9059cbb60e01b60208083019182526001600160a01b03948516602484015260448084019990995297825292601f199216610871606483611f02565b86519367ffffffffffffffff928589018481118782101761099f5789528986527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564868b015251869182919082855af1913d1561098f573d9081116107a257906108f7949392916108ea8a8a5195601f8401160185611f02565b83523d868a85013e612657565b80519182159186831561096b575b50505090501561091757505160018152f35b82608492519162461bcd60e51b8352820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b919381809450010312610302578401519081151582036104685750805f8086610905565b50906108f7939250606091612657565b604189634e487b7160e01b5f525260245ffd5b9050346103d25760203660031901126103d25760209282913581526001845220549051908152f35b505034610302578160031936011261030257602090600b54600f0b9051908152f35b505034610302578060031936011261030257610a16611ea1565b6001600160a01b03166024358115610a8757308214610a8757602093610a6784610a3f84612040565b9233815260098852818120610a55858254611f38565b90558581526009885220918254611f69565b905582519081525f80516020612709833981519152843392a35160018152f35b8380fd5b505034610302578060031936011261030257610aa5611ea1565b338352600a60209081528284206001600160a01b039092165f818152928252918390205490938391602435818110610b1d575050338152600a8552818120835f52855280825f20555b338152600a855220815f528352815f205482519081525f80516020612729833981519152843392a35160018152f35b610b2691611f38565b338252600a8652828220845f528652825f2055610aee565b50503461030257816003193601126103025751908152602090f35b505034610302578160031936011261030257602090600c549051908152f35b919050346103d257826003193601126103d25780519183600654906001908260011c92600181168015610c73575b6020958686108214610c605750848852908115610c3e5750600114610be5575b610be18686610bd7828b0383611f02565b5191829182611e77565b0390f35b929550600683527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5b828410610c2b5750505082610be194610bd792820101945f610bc6565b8054868501880152928601928101610c0e565b60ff191687860152505050151560051b8301019250610bd782610be15f610bc6565b634e487b7160e01b845260229052602483fd5b93607f1693610ba6565b9050346103d257816003193601126103d25781602093610c9b611eb7565b92358152808552209060018060a01b03165f52825260ff815f20541690519015158152f35b505034610302578060031936011261030257602091610cdd611ea1565b905f8051602061270983398151915284602435935f805160206126e98339815191528452838252858420335f528252610d1b60ff875f205416611f76565b7f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885670de0b6b3a7640000610d5c610d56601554600f0b612026565b88612013565b048092610d6b88600f54611f69565b600f5560018060a01b0381169788885260098652610d8d8a8920918254611f69565b905588516001600160a01b039190911681526020810191909152604090a18551908152a35160018152f35b9050346103d257816003193601126103d257602092610de39135815260018452826024359120612502565b905491519160018060a01b039160031b1c168152f35b50503461030257816003193601126103025760075490516001600160a01b039091168152602090f35b505034610302578160031936011261030257602090600e549051908152f35b505034610302578160031936011261030257602090517f5fde63b561377d1441afa201ff619faac2ff8fed70a7fbdbe7a5cb07768c0b758152f35b83903461030257602036600319011261030257356001600160a01b0381169081900361030257610eaa6124aa565b6bffffffffffffffffffffffff60a01b601654161760165580f35b505034610302578160031936011261030257602090610461600f54612087565b5050346103025760203660031901126103025760209181906001600160a01b03610f0d611ea1565b1681526012845220549051908152f35b505034610302578060031936011261030257602090610f46610f3d611ea1565b60243590611fba565b90519015158152f35b83915034610302578260031936011261030257610f6a611ea1565b60249384359160018060a01b031692838552602095600a8752828620335f528752825f20545f198103611078575b50841561102e57848652600287528286205490848210610fe257509183915f805160206127098339815191529487989487895260028652038288205582815403905551908152a380f35b6022915087608494519362461bcd60e51b85528401528201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152fd5b60219087608494519362461bcd60e51b85528401528201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152fd5b84811061115857849003851561110c5733156110c05785875260038852838720335f52885280845f20558351908152855f80516020612729833981519152893393a387610f98565b5060229087608494519362461bcd60e51b85528401528201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152fd5b5086608493519262461bcd60e51b8452830152808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152fd5b50601d9087606494519362461bcd60e51b85528401528201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152fd5b919050346103d25760203660031901126103d2575f805160206126e9833981519152835282602052808320335f5260205260ff815f205416156111e4575061050f9035601054611f38565b906020606492519162461bcd60e51b835282015260156024820152744d7573742068617665204d494e5445525f524f4c4560581b6044820152fd5b83346104685780600319360112610468576112386124aa565b600780546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b505034610302576020366003190112610302576020916104619082906001600160a01b036112a8611ea1565b168152600985522054612087565b5050346103025781600319360112610302576020906104616112d6611f59565b42611f38565b505034610302578160031936011261030257602090601554600f0b9051908152f35b50503461030257816003193601126103025760209051670de0b6b3a76400008152f35b91905034611468576003195f3682011261146857600c54151580611654575b611348578380f35b600b54600f0b6113596112d6611f59565b915f8212918280611647575b15611641575f03600f0b925b6001600160801b0393600160801b92829180871691600160401b83116114f8575050603f1b905b61148b575050831c905b15611486575f035b6f7fffffffffffffffffffffffffffffff198112158061146c575b1561146857600854600f0b81600f0b12156113df57508380f35b42600d556001600160801b03196015541691161760155560018060a01b0360165416918261140c575b8380f35b823b15611468575f80938284518096819363fff6cae960e01b83525af1801561145e5715611408579091925067ffffffffffffffff831161144b575052005b604190634e487b7160e01b5f525260245ffd5b82513d5f823e3d90fd5b5f80fd5b506f7fffffffffffffffffffffffffffffff8113156113c5565b6113aa565b600182166114ec575b607f908002811c600283166114e1575b8002811c8783166114d6575b8002811c600883166114cb575b8002901c90861c9081611398565b809302811c926114bd565b809302811c926114b0565b809302811c926114a4565b809202607f1c91611494565b603f91600160601b841061161c575b50600160701b831061160c575b600160781b83106115fc575b6001607c1b83106115f1575b506001607e1b82106115e3575b6001607f1b82106115d6575b90915f935b61156257505050848110156114685784031c906113a2565b87821015611468576001928382166115a7575b80029283607f1c92811b93600160801b841015611598575b509192911c8061154a565b9381019360801c92505f61158d565b948502607f81901c959483019490600160801b87116115c7575b50611575565b60801c9550938301935f6115c1565b9060011b905f1901611545565b9060021b9060011901611539565b91891b91015f61152c565b909160081b916007190190611520565b909160101b91600f190190611514565b60201b73ffffffffffffffffffffffffffffffff00000000169250601f91505f611507565b92611371565b6001858116149350611365565b50603c611663600d5442611f38565b11611340565b34611468575f366003190112611468576116816124aa565b42600c55005b8234611468575f3660031901126114685760165490516001600160a01b039091168152602090f35b34611468576020366003190112611468576116cc9033903561243c565b005b82346114685780600319360112611468576020906117206116ed611ea1565b5f805160206126e98339815191525f525f8452825f20335f52845261171760ff845f205416611f76565b602435906123a8565b5160018152f35b8234611468576020366003190112611468576020906001600160a01b0361174c611ea1565b165f5260098252805f20549051908152f35b8234611468578060031936011261146857611777611ea1565b90335f52602091600a8352815f209060018060a01b031690815f528352602435825f2055335f52600a8352815f20815f528352815f205482519081525f80516020612729833981519152843392a35160018152f35b8234611468575f366003190112611468576020906013549051908152f35b905034611468578160031936011261146857611804611eb7565b90336001600160a01b03831603611820576116cc92503561231f565b608490602084519162461bcd60e51b8352820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152fd5b8234611468575f366003190112611468576020906011549051908152f35b82346114685780600319360112611468576118b2611ea1565b60243591906001600160a01b031680156114685730811461146857670de0b6b3a764000061191e602094335f5260098652845f206118f1828254611f38565b9055835f5260098652845f20611908828254611f69565b9055611918601554600f0b612026565b90612013565b0482519081525f80516020612709833981519152843392a35160018152f35b8234611468575f366003190112611468576020905160128152f35b8234611468575f36600319011261146857602090517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98152f35b82346114685780600319360112611468576116cc91359060016119b3611eb7565b92805f526020905f82526119cb83855f2001546120a6565b805f525f8252835f2094838060a01b031694855f52825260ff845f205416156119f9575b5f52525f20612528565b805f525f8252835f20855f528252835f208360ff198254161790553385827f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a46119ef565b823461146857602036600319011261146857670de0b6b3a7640000611a76602093611a6f601554600f0b612026565b9035612013565b049051908152f35b8234611468575f366003190112611468576020906010549051908152f35b8234611468575f36600319011261146857602090600d549051908152f35b8234611468575f366003190112611468576020906014549051908152f35b823461146857602036600319011261146857602091355f525f82526001815f2001549051908152f35b823461146857611b1036611ecd565b92916001600160a01b0391821691908215611468573083146114685716805f525f8051602061270983398151915260208095600a8252855f20335f528252611b5b81875f2054611f38565b845f52600a8352865f20335f528352865f2055611ba5611b7a82612040565b855f5260098452611b8e81895f2054611f38565b865f5260098552885f2055865f52875f2054611f69565b855f5260098352865f20558551908152a35160018152f35b8234611468575f36600319011261146857602090610461601554600f0b612026565b8234611468575f36600319011261146857602090517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8668152f35b8234611468575f36600319011261146857602090610461611f59565b8234611468575f36600319011261146857602090610461611c5a610538600f54612087565b60145490611f38565b8234611468575f36600319011261146857602090600f549051908152f35b8234611468575f36600319011261146857600f54908115611ca9576020925051905f19048152f35b601283634e487b7160e01b5f525260245ffd5b8234611468578060031936011261146857602090611cd8611ea1565b602435335f52600a8452825f209160018060a01b031691825f52845280835f205582519081525f80516020612729833981519152843392a35160018152f35b8234611468575f366003190112611468578051905f9260055460018160011c91600181168015611e01575b6020948585108214611dee5750838752908115611dce5750600114611d74575b505050610bd782610be1940383611f02565b60055f9081529295507f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b828410611dbb5750505082610be194610bd79282010194611d62565b8054868501880152928601928101611d9f565b60ff1916868501525050151560051b8301019250610bd782610be1611d62565b602290634e487b7160e01b5f525260245ffd5b92607f1692611d42565b903461146857602036600319011261146857359063ffffffff60e01b821680920361146857602091635a05180f60e01b8114908115611e4c575b5015158152f35b637965db0b60e01b811491508115611e66575b5083611e45565b6301ffc9a760e01b14905083611e5f565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361146857565b602435906001600160a01b038216820361146857565b6060906003190112611468576001600160a01b0390600435828116810361146857916024359081168103611468579060443590565b90601f8019910116810190811067ffffffffffffffff821117611f2457604052565b634e487b7160e01b5f52604160045260245ffd5b91908203918211611f4557565b634e487b7160e01b5f52601160045260245ffd5b600c5480611f6657504290565b90565b91908201809211611f4557565b15611f7d57565b60405162461bcd60e51b81526020600482015260156024820152744d7573742068617665206d696e74657220726f6c6560581b6044820152606490fd5b335f9081527f0781d7cac9c378efa22a7481e4d4d29704a680ddf504b3bc50b517700ee11e6c602052604090205461200e929190611ffa9060ff16611f76565b61200682601054611f38565b6010556123a8565b600190565b81810292918115918404141715611f4557565b600f0b5f811261146857670de0b6b3a76400000260401c90565b670de0b6b3a764000090818102918183041490151715611f4557612068601554600f0b612026565b908115612073570490565b634e487b7160e01b5f52601260045260245ffd5b6120a2670de0b6b3a764000091611918601554600f0b612026565b0490565b805f5260205f8152604091825f20335f52825260ff835f205416156120ca57505050565b8251339167ffffffffffffffff916060810183811182821017611f24578652602a81528481019186368437815115612288576030835381519460019560011015612288576078602184015360295b8681116122de575061229c578651936080850190811185821017611f2457875260428452858401946060368737845115612288576030865384516001101561228857607860218601536041905b808211612245575050612203579385936121e9936048937f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000976121ff9951988995860152518091603786015e8301907001034b99036b4b9b9b4b733903937b6329607d1b60378301525180928583015e015f83820152036028810185520183611f02565b5162461bcd60e51b815291829160048301611e77565b0390fd5b60648587519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f81166010811015612288576f181899199a1a9b1b9c1cb0b131b232b360811b901a6122748488612517565b5360041c918015611f45575f190190612165565b634e487b7160e01b5f52603260045260245ffd5b60648688519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b90600f81166010811015612288576f181899199a1a9b1b9c1cb0b131b232b360811b901a61230c8386612517565b5360041c908015611f45575f1901612118565b9061235c91805f525f60205260405f209160018060a01b031691825f5260205260ff60405f20541661235f575b5f52600160205260405f20612592565b50565b805f525f60205260405f20825f5260205260405f2060ff1981541690553382827ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a461234c565b905f8051602061270983398151915260205f927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885816123e681612040565b966123f388600f54611f69565b600f5560018060a01b038116978888526009865261241660408920918254611f69565b9055604080516001600160a01b039290921682526020820192909252a1604051908152a3565b905f8051602061270983398151915260205f937fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58161247a81612040565b9561248787600f54611f38565b600f5560018060a01b038116968789526009865261241660408a20918254611f38565b6007546001600160a01b031633036124be57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b8054821015612288575f5260205f2001905f90565b908151811015612288570160200190565b6001810190825f528160205260405f2054155f1461258b578054600160401b811015611f2457612578612562826001879401855584612502565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b906001820191815f528260205260405f2054908115155f1461264f575f1991808301818111611f4557825490848201918211611f455780820361261a575b50505080548015612606578201916125e88383612502565b909182549160031b1b19169055555f526020525f6040812055600190565b634e487b7160e01b5f52603160045260245ffd5b61263a61262a6125629386612502565b90549060031b1c92839286612502565b90555f528460205260405f20555f80806125d0565b505050505f90565b919290156126b9575081511561266b575090565b3b156126745790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156126cc5750805190602001fd5b60405162461bcd60e51b81529081906121ff9060048301611e7756fe9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a2646970667358221220bc4c773e6c3985f7420c0f28f9dce356d960f8f634d686567e24d45b197fd75264736f6c634300081900332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d

Deployed Bytecode

0x6080604081815260049182361015610015575f80fd5b5f925f3560e01c91826301ffc9a714611e0b5750816306fdde0314611d17578163095ea7b314611cbc57816311d3e6c414611c81578163143a08d414611c6357816318160ddd14611c355781631a70b99414611c1957816320606b7014611bdf578163236e123114611bbd57816323b872dd14611b01578163248a9ca314611ad8578163275d155414611aba57816328b61bd014611a9c5781632d80edcc14611a7e5781632e1bb86214611a405781632f2ff15d1461199257816330adf81f14611958578163313ce5671461193d578163336d2692146118995781633644e5151461187b57816336568abe146117ea578163378dc3dc146117cc578163395093511461175e5781633af9e6691461172757816340c10f19146116ce57816342966c68146116af578163452ed4f11461168757816346bc4189146116695781636422380a1461132157816364dd48f5146112fe578163683dd191146112dc578163685f59de146112b657816370a082311461127c578163715018a61461121f57816374c0476f1461119957816379cc679014610f4f5781637b46b80b14610f1d5781637ecebe0014610ee55781638005d20614610ec55781638187f51614610e7c57816383eb70e514610e415781638b472c6314610e225781638da5cb5b14610df95781639010d07c14610db8578163917505f414610cc057816391d1485414610c7d57816395d89b4114610b785781639e2dca8314610b59578163a217fddf14610b3e578163a457c2d714610a8b578163a9059cbb146109fc578163acecbd22146109da578163ca15c873146109b2578163cea9d26f14610818578163d505accf146105a7578163d53913931461057f578163d547741f14610541578163d5abeb0114610515578163d7a78db8146104b8578163dd62ed3e1461046b578163dfe6fd0914610441578163ee0b4bee146103d6578163f2fde38b14610306575063fec5eeab146102e2575f80fd5b34610302578160031936011261030257602090600854600f0b9051908152f35b5080fd5b9050346103d25760203660031901126103d257610321611ea1565b9061032a6124aa565b6001600160a01b03918216928315610380575050600754826bffffffffffffffffffffffff60a01b821617600755167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8280fd5b9050346103d25760203660031901126103d25761041860ff61043d935f805160206126e9833981519152865285602052808620335f526020525f205416611f76565b61043461271061042c601454933584612013565b048092611f38565b60145533611fba565b5080f35b828434610468576020366003190112610468575061046160209235612040565b9051908152f35b80fd5b505034610302578060031936011261030257602091610488611ea1565b82610491611eb7565b6001600160a01b039283168452600a8652922091165f908152908352819020549051908152f35b919050346103d25760203660031901126103d2576104fd60ff61050f9335925f805160206126e9833981519152865285602052808620335f526020525f205416611f76565b610507338261243c565b601054611f69565b60105580f35b505034610302578160031936011261030257602090610461610538600f54612087565b60105490611f69565b919050346103d257806003193601126103d25761057c91356105776001610566611eb7565b9383875286602052862001546120a6565b61231f565b80f35b505034610302578160031936011261030257602090515f805160206126e98339815191528152f35b919050346103d25760e03660031901126103d2576105c3611ea1565b906105cc611eb7565b9060443590606435946084359460ff8616809603610814578642116107db576011549660018060a01b0380921696878a5260209660128852858b20998a549a5f198c146107c85760018c019055865193858a8601937f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c985528c8a880152169b8c606087015289608087015260a086015260c085015260c0845260e0840167ffffffffffffffff92858210848311176107b5578189528551902061010086019261190160f01b845261010287015261012286015260428152610160850192818410908411176107a257828852519020928915610765575050608087928b9287519182528482015260a4358782015260c435606082015282805260015afa1561075b5787511685036107245750905f805160206127298339815191529291848752600a8352808720865f52835281815f205551908152a380f35b83606492519162461bcd60e51b8352820152601360248201527214d3d5540bda5b9d985b1a590b5c195c9b5a5d606a1b6044820152fd5b82513d89823e3d90fd5b90750534f55502f696e76616c69642d616464726573732d360541b6101a46064938b62461bcd60e51b855261016482015260166101848201520152fd5b604187634e487b7160e01b5f525260245ffd5b604188634e487b7160e01b5f525260245ffd5b634e487b7160e01b8d526011875260248dfd5b506020606492519162461bcd60e51b8352820152601360248201527214d3d5540bdc195c9b5a5d0b595e1c1a5c9959606a1b6044820152fd5b8780fd5b9050346103d25761082836611ecd565b94916108326124aa565b845163a9059cbb60e01b60208083019182526001600160a01b03948516602484015260448084019990995297825292601f199216610871606483611f02565b86519367ffffffffffffffff928589018481118782101761099f5789528986527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564868b015251869182919082855af1913d1561098f573d9081116107a257906108f7949392916108ea8a8a5195601f8401160185611f02565b83523d868a85013e612657565b80519182159186831561096b575b50505090501561091757505160018152f35b82608492519162461bcd60e51b8352820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b919381809450010312610302578401519081151582036104685750805f8086610905565b50906108f7939250606091612657565b604189634e487b7160e01b5f525260245ffd5b9050346103d25760203660031901126103d25760209282913581526001845220549051908152f35b505034610302578160031936011261030257602090600b54600f0b9051908152f35b505034610302578060031936011261030257610a16611ea1565b6001600160a01b03166024358115610a8757308214610a8757602093610a6784610a3f84612040565b9233815260098852818120610a55858254611f38565b90558581526009885220918254611f69565b905582519081525f80516020612709833981519152843392a35160018152f35b8380fd5b505034610302578060031936011261030257610aa5611ea1565b338352600a60209081528284206001600160a01b039092165f818152928252918390205490938391602435818110610b1d575050338152600a8552818120835f52855280825f20555b338152600a855220815f528352815f205482519081525f80516020612729833981519152843392a35160018152f35b610b2691611f38565b338252600a8652828220845f528652825f2055610aee565b50503461030257816003193601126103025751908152602090f35b505034610302578160031936011261030257602090600c549051908152f35b919050346103d257826003193601126103d25780519183600654906001908260011c92600181168015610c73575b6020958686108214610c605750848852908115610c3e5750600114610be5575b610be18686610bd7828b0383611f02565b5191829182611e77565b0390f35b929550600683527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5b828410610c2b5750505082610be194610bd792820101945f610bc6565b8054868501880152928601928101610c0e565b60ff191687860152505050151560051b8301019250610bd782610be15f610bc6565b634e487b7160e01b845260229052602483fd5b93607f1693610ba6565b9050346103d257816003193601126103d25781602093610c9b611eb7565b92358152808552209060018060a01b03165f52825260ff815f20541690519015158152f35b505034610302578060031936011261030257602091610cdd611ea1565b905f8051602061270983398151915284602435935f805160206126e98339815191528452838252858420335f528252610d1b60ff875f205416611f76565b7f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885670de0b6b3a7640000610d5c610d56601554600f0b612026565b88612013565b048092610d6b88600f54611f69565b600f5560018060a01b0381169788885260098652610d8d8a8920918254611f69565b905588516001600160a01b039190911681526020810191909152604090a18551908152a35160018152f35b9050346103d257816003193601126103d257602092610de39135815260018452826024359120612502565b905491519160018060a01b039160031b1c168152f35b50503461030257816003193601126103025760075490516001600160a01b039091168152602090f35b505034610302578160031936011261030257602090600e549051908152f35b505034610302578160031936011261030257602090517f5fde63b561377d1441afa201ff619faac2ff8fed70a7fbdbe7a5cb07768c0b758152f35b83903461030257602036600319011261030257356001600160a01b0381169081900361030257610eaa6124aa565b6bffffffffffffffffffffffff60a01b601654161760165580f35b505034610302578160031936011261030257602090610461600f54612087565b5050346103025760203660031901126103025760209181906001600160a01b03610f0d611ea1565b1681526012845220549051908152f35b505034610302578060031936011261030257602090610f46610f3d611ea1565b60243590611fba565b90519015158152f35b83915034610302578260031936011261030257610f6a611ea1565b60249384359160018060a01b031692838552602095600a8752828620335f528752825f20545f198103611078575b50841561102e57848652600287528286205490848210610fe257509183915f805160206127098339815191529487989487895260028652038288205582815403905551908152a380f35b6022915087608494519362461bcd60e51b85528401528201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152fd5b60219087608494519362461bcd60e51b85528401528201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152fd5b84811061115857849003851561110c5733156110c05785875260038852838720335f52885280845f20558351908152855f80516020612729833981519152893393a387610f98565b5060229087608494519362461bcd60e51b85528401528201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152fd5b5086608493519262461bcd60e51b8452830152808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152fd5b50601d9087606494519362461bcd60e51b85528401528201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152fd5b919050346103d25760203660031901126103d2575f805160206126e9833981519152835282602052808320335f5260205260ff815f205416156111e4575061050f9035601054611f38565b906020606492519162461bcd60e51b835282015260156024820152744d7573742068617665204d494e5445525f524f4c4560581b6044820152fd5b83346104685780600319360112610468576112386124aa565b600780546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b505034610302576020366003190112610302576020916104619082906001600160a01b036112a8611ea1565b168152600985522054612087565b5050346103025781600319360112610302576020906104616112d6611f59565b42611f38565b505034610302578160031936011261030257602090601554600f0b9051908152f35b50503461030257816003193601126103025760209051670de0b6b3a76400008152f35b91905034611468576003195f3682011261146857600c54151580611654575b611348578380f35b600b54600f0b6113596112d6611f59565b915f8212918280611647575b15611641575f03600f0b925b6001600160801b0393600160801b92829180871691600160401b83116114f8575050603f1b905b61148b575050831c905b15611486575f035b6f7fffffffffffffffffffffffffffffff198112158061146c575b1561146857600854600f0b81600f0b12156113df57508380f35b42600d556001600160801b03196015541691161760155560018060a01b0360165416918261140c575b8380f35b823b15611468575f80938284518096819363fff6cae960e01b83525af1801561145e5715611408579091925067ffffffffffffffff831161144b575052005b604190634e487b7160e01b5f525260245ffd5b82513d5f823e3d90fd5b5f80fd5b506f7fffffffffffffffffffffffffffffff8113156113c5565b6113aa565b600182166114ec575b607f908002811c600283166114e1575b8002811c8783166114d6575b8002811c600883166114cb575b8002901c90861c9081611398565b809302811c926114bd565b809302811c926114b0565b809302811c926114a4565b809202607f1c91611494565b603f91600160601b841061161c575b50600160701b831061160c575b600160781b83106115fc575b6001607c1b83106115f1575b506001607e1b82106115e3575b6001607f1b82106115d6575b90915f935b61156257505050848110156114685784031c906113a2565b87821015611468576001928382166115a7575b80029283607f1c92811b93600160801b841015611598575b509192911c8061154a565b9381019360801c92505f61158d565b948502607f81901c959483019490600160801b87116115c7575b50611575565b60801c9550938301935f6115c1565b9060011b905f1901611545565b9060021b9060011901611539565b91891b91015f61152c565b909160081b916007190190611520565b909160101b91600f190190611514565b60201b73ffffffffffffffffffffffffffffffff00000000169250601f91505f611507565b92611371565b6001858116149350611365565b50603c611663600d5442611f38565b11611340565b34611468575f366003190112611468576116816124aa565b42600c55005b8234611468575f3660031901126114685760165490516001600160a01b039091168152602090f35b34611468576020366003190112611468576116cc9033903561243c565b005b82346114685780600319360112611468576020906117206116ed611ea1565b5f805160206126e98339815191525f525f8452825f20335f52845261171760ff845f205416611f76565b602435906123a8565b5160018152f35b8234611468576020366003190112611468576020906001600160a01b0361174c611ea1565b165f5260098252805f20549051908152f35b8234611468578060031936011261146857611777611ea1565b90335f52602091600a8352815f209060018060a01b031690815f528352602435825f2055335f52600a8352815f20815f528352815f205482519081525f80516020612729833981519152843392a35160018152f35b8234611468575f366003190112611468576020906013549051908152f35b905034611468578160031936011261146857611804611eb7565b90336001600160a01b03831603611820576116cc92503561231f565b608490602084519162461bcd60e51b8352820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152fd5b8234611468575f366003190112611468576020906011549051908152f35b82346114685780600319360112611468576118b2611ea1565b60243591906001600160a01b031680156114685730811461146857670de0b6b3a764000061191e602094335f5260098652845f206118f1828254611f38565b9055835f5260098652845f20611908828254611f69565b9055611918601554600f0b612026565b90612013565b0482519081525f80516020612709833981519152843392a35160018152f35b8234611468575f366003190112611468576020905160128152f35b8234611468575f36600319011261146857602090517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98152f35b82346114685780600319360112611468576116cc91359060016119b3611eb7565b92805f526020905f82526119cb83855f2001546120a6565b805f525f8252835f2094838060a01b031694855f52825260ff845f205416156119f9575b5f52525f20612528565b805f525f8252835f20855f528252835f208360ff198254161790553385827f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a46119ef565b823461146857602036600319011261146857670de0b6b3a7640000611a76602093611a6f601554600f0b612026565b9035612013565b049051908152f35b8234611468575f366003190112611468576020906010549051908152f35b8234611468575f36600319011261146857602090600d549051908152f35b8234611468575f366003190112611468576020906014549051908152f35b823461146857602036600319011261146857602091355f525f82526001815f2001549051908152f35b823461146857611b1036611ecd565b92916001600160a01b0391821691908215611468573083146114685716805f525f8051602061270983398151915260208095600a8252855f20335f528252611b5b81875f2054611f38565b845f52600a8352865f20335f528352865f2055611ba5611b7a82612040565b855f5260098452611b8e81895f2054611f38565b865f5260098552885f2055865f52875f2054611f69565b855f5260098352865f20558551908152a35160018152f35b8234611468575f36600319011261146857602090610461601554600f0b612026565b8234611468575f36600319011261146857602090517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8668152f35b8234611468575f36600319011261146857602090610461611f59565b8234611468575f36600319011261146857602090610461611c5a610538600f54612087565b60145490611f38565b8234611468575f36600319011261146857602090600f549051908152f35b8234611468575f36600319011261146857600f54908115611ca9576020925051905f19048152f35b601283634e487b7160e01b5f525260245ffd5b8234611468578060031936011261146857602090611cd8611ea1565b602435335f52600a8452825f209160018060a01b031691825f52845280835f205582519081525f80516020612729833981519152843392a35160018152f35b8234611468575f366003190112611468578051905f9260055460018160011c91600181168015611e01575b6020948585108214611dee5750838752908115611dce5750600114611d74575b505050610bd782610be1940383611f02565b60055f9081529295507f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b828410611dbb5750505082610be194610bd79282010194611d62565b8054868501880152928601928101611d9f565b60ff1916868501525050151560051b8301019250610bd782610be1611d62565b602290634e487b7160e01b5f525260245ffd5b92607f1692611d42565b903461146857602036600319011261146857359063ffffffff60e01b821680920361146857602091635a05180f60e01b8114908115611e4c575b5015158152f35b637965db0b60e01b811491508115611e66575b5083611e45565b6301ffc9a760e01b14905083611e5f565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361146857565b602435906001600160a01b038216820361146857565b6060906003190112611468576001600160a01b0390600435828116810361146857916024359081168103611468579060443590565b90601f8019910116810190811067ffffffffffffffff821117611f2457604052565b634e487b7160e01b5f52604160045260245ffd5b91908203918211611f4557565b634e487b7160e01b5f52601160045260245ffd5b600c5480611f6657504290565b90565b91908201809211611f4557565b15611f7d57565b60405162461bcd60e51b81526020600482015260156024820152744d7573742068617665206d696e74657220726f6c6560581b6044820152606490fd5b335f9081527f0781d7cac9c378efa22a7481e4d4d29704a680ddf504b3bc50b517700ee11e6c602052604090205461200e929190611ffa9060ff16611f76565b61200682601054611f38565b6010556123a8565b600190565b81810292918115918404141715611f4557565b600f0b5f811261146857670de0b6b3a76400000260401c90565b670de0b6b3a764000090818102918183041490151715611f4557612068601554600f0b612026565b908115612073570490565b634e487b7160e01b5f52601260045260245ffd5b6120a2670de0b6b3a764000091611918601554600f0b612026565b0490565b805f5260205f8152604091825f20335f52825260ff835f205416156120ca57505050565b8251339167ffffffffffffffff916060810183811182821017611f24578652602a81528481019186368437815115612288576030835381519460019560011015612288576078602184015360295b8681116122de575061229c578651936080850190811185821017611f2457875260428452858401946060368737845115612288576030865384516001101561228857607860218601536041905b808211612245575050612203579385936121e9936048937f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000976121ff9951988995860152518091603786015e8301907001034b99036b4b9b9b4b733903937b6329607d1b60378301525180928583015e015f83820152036028810185520183611f02565b5162461bcd60e51b815291829160048301611e77565b0390fd5b60648587519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f81166010811015612288576f181899199a1a9b1b9c1cb0b131b232b360811b901a6122748488612517565b5360041c918015611f45575f190190612165565b634e487b7160e01b5f52603260045260245ffd5b60648688519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b90600f81166010811015612288576f181899199a1a9b1b9c1cb0b131b232b360811b901a61230c8386612517565b5360041c908015611f45575f1901612118565b9061235c91805f525f60205260405f209160018060a01b031691825f5260205260ff60405f20541661235f575b5f52600160205260405f20612592565b50565b805f525f60205260405f20825f5260205260405f2060ff1981541690553382827ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a461234c565b905f8051602061270983398151915260205f927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885816123e681612040565b966123f388600f54611f69565b600f5560018060a01b038116978888526009865261241660408920918254611f69565b9055604080516001600160a01b039290921682526020820192909252a1604051908152a3565b905f8051602061270983398151915260205f937fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58161247a81612040565b9561248787600f54611f38565b600f5560018060a01b038116968789526009865261241660408a20918254611f38565b6007546001600160a01b031633036124be57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b8054821015612288575f5260205f2001905f90565b908151811015612288570160200190565b6001810190825f528160205260405f2054155f1461258b578054600160401b811015611f2457612578612562826001879401855584612502565b819391549060031b91821b915f19901b19161790565b905554915f5260205260405f2055600190565b5050505f90565b906001820191815f528260205260405f2054908115155f1461264f575f1991808301818111611f4557825490848201918211611f455780820361261a575b50505080548015612606578201916125e88383612502565b909182549160031b1b19169055555f526020525f6040812055600190565b634e487b7160e01b5f52603160045260245ffd5b61263a61262a6125629386612502565b90549060031b1c92839286612502565b90555f528460205260405f20555f80806125d0565b505050505f90565b919290156126b9575081511561266b575090565b3b156126745790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156126cc5750805190602001fd5b60405162461bcd60e51b81529081906121ff9060048301611e7756fe9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a2646970667358221220bc4c773e6c3985f7420c0f28f9dce356d960f8f634d686567e24d45b197fd75264736f6c63430008190033

Block Age Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

$SOUP is a gaming token. In SOUP island, only the truly greedy goblins can cook, and 1 special ingredient they need - $SOUP.

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.