Source Code
Overview
GLMR Balance
GLMR Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 138 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer | 5233012 | 756 days ago | IN | 0 GLMR | 0.00636126 | ||||
| Transfer | 5233009 | 756 days ago | IN | 0 GLMR | 0.0063433 | ||||
| Transfer | 5233008 | 756 days ago | IN | 0 GLMR | 0.00634904 | ||||
| Transfer | 5233006 | 756 days ago | IN | 0 GLMR | 0.00710966 | ||||
| Transfer | 5233005 | 756 days ago | IN | 0 GLMR | 0.0083588 | ||||
| Transfer | 5233003 | 756 days ago | IN | 0 GLMR | 0.00745941 | ||||
| Transfer | 5233002 | 756 days ago | IN | 0 GLMR | 0.00834117 | ||||
| Transfer | 5233001 | 756 days ago | IN | 0 GLMR | 0.00691367 | ||||
| Transfer | 5232999 | 756 days ago | IN | 0 GLMR | 0.00632875 | ||||
| Transfer | 5232966 | 756 days ago | IN | 0 GLMR | 0.0062951 | ||||
| Transfer | 5232964 | 756 days ago | IN | 0 GLMR | 0.00628899 | ||||
| Transfer | 5232961 | 756 days ago | IN | 0 GLMR | 0.006287 | ||||
| Transfer | 5232958 | 756 days ago | IN | 0 GLMR | 0.00629046 | ||||
| Transfer | 5232956 | 756 days ago | IN | 0 GLMR | 0.00629388 | ||||
| Transfer | 5232953 | 756 days ago | IN | 0 GLMR | 0.00628924 | ||||
| Transfer | 5232951 | 756 days ago | IN | 0 GLMR | 0.00703521 | ||||
| Transfer | 5232949 | 756 days ago | IN | 0 GLMR | 0.00628916 | ||||
| Transfer | 5232884 | 756 days ago | IN | 0 GLMR | 0.00733688 | ||||
| Transfer | 5220037 | 758 days ago | IN | 0 GLMR | 0.00761567 | ||||
| Transfer | 5220031 | 758 days ago | IN | 0 GLMR | 0.00757 | ||||
| Transfer | 5220026 | 758 days ago | IN | 0 GLMR | 0.00690653 | ||||
| Transfer | 4832049 | 813 days ago | IN | 0 GLMR | 0.00740884 | ||||
| Transfer | 4832046 | 813 days ago | IN | 0 GLMR | 0.00740878 | ||||
| Transfer | 4832041 | 813 days ago | IN | 0 GLMR | 0.00663929 | ||||
| Transfer | 4832040 | 813 days ago | IN | 0 GLMR | 0.0074274 |
View more zero value Internal Transactions in Advanced View mode
Cross-Chain Transactions
Loading...
Loading
Contract Name:
QEV
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/**
*Submitted for verification at moonbeam.moonscan.io on 2023-03-09
*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.9;
/// @title $QEV
/// @author André Costa @ TQOE
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `from` to `to` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address from,
address to,
uint256 amount
) external returns (bool);
}
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface for the optional metadata functions from the ERC20 standard.
*
* _Available since v4.1._
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)
pragma solidity ^0.8.0;
/**
* @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 (last updated v4.7.0) (token/ERC20/ERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
* For a generic mechanism see {ERC20PresetMinterPauser}.
*
* TIP: For a detailed writeup see our guide
* https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* We have followed general OpenZeppelin Contracts guidelines: functions revert
* instead returning `false` on failure. This behavior is nonetheless
* conventional and does not conflict with the expectations of ERC20
* applications.
*
* Additionally, an {Approval} event is emitted on calls to {transferFrom}.
* This allows applications to reconstruct the allowance for all accounts just
* by listening to said events. Other implementations of the EIP may not emit
* these events, as it isn't required by the specification.
*
* Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
* functions have been added to mitigate the well-known issues around setting
* allowances. See {IERC20-approve}.
*/
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
/**
* @dev Sets the values for {name} and {symbol}.
*
* The default value of {decimals} is 18. To select a different value for
* {decimals} you should overload it.
*
* All two of these values are immutable: they can only be set once during
* construction.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual override returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5.05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the value {ERC20} uses, unless this function is
* overridden;
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual override returns (uint8) {
return 18;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address to, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_transfer(owner, to, amount);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
* `transferFrom`. This is semantically equivalent to an infinite approval.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_approve(owner, spender, amount);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Emits an {Approval} event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of {ERC20}.
*
* NOTE: Does not update the allowance if the current allowance
* is the maximum `uint256`.
*
* Requirements:
*
* - `from` and `to` cannot be the zero address.
* - `from` must have a balance of at least `amount`.
* - the caller must have allowance for ``from``'s tokens of at least
* `amount`.
*/
function transferFrom(
address from,
address to,
uint256 amount
) public virtual override returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, amount);
_transfer(from, to, amount);
return true;
}
/**
* @dev Atomically increases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, allowance(owner, spender) + addedValue);
return true;
}
/**
* @dev Atomically decreases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `spender` must have allowance for the caller of at least
* `subtractedValue`.
*/
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
address owner = _msgSender();
uint256 currentAllowance = allowance(owner, spender);
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(owner, spender, currentAllowance - subtractedValue);
}
return true;
}
/**
* @dev Moves `amount` of tokens from `from` to `to`.
*
* This internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `from` must have a balance of at least `amount`.
*/
function _transfer(
address from,
address to,
uint256 amount
) internal virtual {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(from, to, amount);
uint256 fromBalance = _balances[from];
require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[from] = fromBalance - amount;
// Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
// decrementing then incrementing.
_balances[to] += amount;
}
emit Transfer(from, to, amount);
_afterTokenTransfer(from, to, amount);
}
/** @dev Creates `amount` tokens and assigns them to `account`, increasing
* the total supply.
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply += amount;
unchecked {
// Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
_balances[account] += amount;
}
emit Transfer(address(0), account, amount);
_afterTokenTransfer(address(0), account, amount);
}
/**
* @dev Destroys `amount` tokens from `account`, reducing the
* total supply.
*
* Emits a {Transfer} event with `to` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
* - `account` must have at least `amount` tokens.
*/
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
uint256 accountBalance = _balances[account];
require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
unchecked {
_balances[account] = accountBalance - amount;
// Overflow not possible: amount <= accountBalance <= totalSupply.
_totalSupply -= amount;
}
emit Transfer(account, address(0), amount);
_afterTokenTransfer(account, address(0), amount);
}
/**
* @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
*
* This internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*/
function _approve(
address owner,
address spender,
uint256 amount
) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
/**
* @dev Updates `owner` s allowance for `spender` based on spent `amount`.
*
* Does not update the allowance amount in case of infinite allowance.
* Revert if not enough allowance is available.
*
* Might emit an {Approval} event.
*/
function _spendAllowance(
address owner,
address spender,
uint256 amount
) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= amount, "ERC20: insufficient allowance");
unchecked {
_approve(owner, spender, currentAllowance - amount);
}
}
}
/**
* @dev Hook that is called before any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* will be transferred to `to`.
* - when `from` is zero, `amount` tokens will be minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens will be burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
/**
* @dev Hook that is called after any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* has been transferred to `to`.
* - when `from` is zero, `amount` tokens have been minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens have been burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _afterTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
}
// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)
pragma solidity ^0.8.0;
/**
* @dev Contract module which allows children to implement an emergency stop
* mechanism that can be triggered by an authorized account.
*
* This module is used through inheritance. It will make available the
* modifiers `whenNotPaused` and `whenPaused`, which can be applied to
* the functions of your contract. Note that they will not be pausable by
* simply including this module, only once the modifiers are put in place.
*/
abstract contract Pausable is Context {
/**
* @dev Emitted when the pause is triggered by `account`.
*/
event Paused(address account);
/**
* @dev Emitted when the pause is lifted by `account`.
*/
event Unpaused(address account);
bool private _paused;
/**
* @dev Initializes the contract in unpaused state.
*/
constructor() {
_paused = false;
}
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*
* Requirements:
*
* - The contract must not be paused.
*/
modifier whenNotPaused() {
_requireNotPaused();
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*
* Requirements:
*
* - The contract must be paused.
*/
modifier whenPaused() {
_requirePaused();
_;
}
/**
* @dev Returns true if the contract is paused, and false otherwise.
*/
function paused() public view virtual returns (bool) {
return _paused;
}
/**
* @dev Throws if the contract is paused.
*/
function _requireNotPaused() internal view virtual {
require(!paused(), "Pausable: paused");
}
/**
* @dev Throws if the contract is not paused.
*/
function _requirePaused() internal view virtual {
require(paused(), "Pausable: not paused");
}
/**
* @dev Triggers stopped state.
*
* Requirements:
*
* - The contract must not be paused.
*/
function _pause() internal virtual whenNotPaused {
_paused = true;
emit Paused(_msgSender());
}
/**
* @dev Returns to normal state.
*
* Requirements:
*
* - The contract must be paused.
*/
function _unpause() internal virtual whenPaused {
_paused = false;
emit Unpaused(_msgSender());
}
}
contract QEV is ERC20, Ownable, Pausable {
struct VestingSchedule {
uint256[] tokensPerCliff;
uint256[] cliffs;
uint lastCliffClaimed;
}
mapping(address => VestingSchedule) private vestingSchedules;
uint256 public maxSupply = 10000000000000000000000000;
constructor() ERC20('QEV', 'QEV') {
/*
Minting the initial token supply and distributing between different holders,
the tokens that are vested have a VestingSchedule Instance created
*/
_mint(0xaA86B13a40779F154e87Acaa9707E11d9D67E544, 250000000000000000000000); /// Join Incentives (Wallet To Be Created)
_mint(0x318cBF186eB13C74533943b054959867eE44eFFE, 500000000000000000000000); /// ICO (Wallet To Be Created)
_mint(0x3dAf0e998C2c084674f4ef5cb4d689D3a59514b1, 250000000000000000000000); /// Liquidity (Wallet To Be Created)
_mint(0xFd8c4e71B190020a301Ec2e1a4358eC19d9833E5, 3500000000000000000000000); /// Company/LTD (Wallet To Be Created)
_mint(0xaa4e93c6a45E682875ED332FC2f0CBB2a4200ad6, 1500000000000000000000000); /// Platform Treasury (Wallet To Be Created)
}
/// PAUSABLE
/**
* @dev See {ERC20-_beforeTokenTransfer}.
*
* Requirements:
*
* - the contract must not be paused.
*/
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual override {
super._beforeTokenTransfer(from, to, amount);
require(!paused(), "ERC20Pausable: token transfer while paused");
}
/// BURN
/**
* @dev Destroys `amount` tokens from the caller.
*
* See {ERC20-_burn}.
*/
function burn(uint256 amount) public virtual {
_burn(_msgSender(), amount);
}
/**
* @dev Destroys `amount` tokens from `account`, deducting from the caller's
* allowance.
*
* See {ERC20-_burn} and {ERC20-allowance}.
*
* Requirements:
*
* - the caller must have allowance for ``accounts``'s tokens of at least
* `amount`.
*/
function burnFrom(address account, uint256 amount) public virtual {
_spendAllowance(account, _msgSender(), amount);
_burn(account, amount);
}
//VESTING
function getVestingSchedule(address beneficiary) external view returns(VestingSchedule memory) {
return vestingSchedules[beneficiary];
}
function addVestingSchedule(address receiver, uint256[] memory tokens, uint256[] memory cliffs) external onlyOwner {
require(tokens.length == cliffs.length, "Array sizes do not match!");
require(vestingSchedules[receiver].tokensPerCliff.length == 0 || vestingSchedules[receiver].lastCliffClaimed == vestingSchedules[receiver].cliffs.length , "Vesting Schedule already active!");
require(getSum(tokens) + totalSupply() <= maxSupply, "Not enough tokens!");
vestingSchedules[receiver].tokensPerCliff = tokens;
vestingSchedules[receiver].cliffs = cliffs;
}
function vestedTokensAvailable(address beneficiary) external view returns(uint256) {
(uint256 availableTokens, ) = vestedTokensAvailable_(beneficiary);
return availableTokens;
}
function vestedTokensAvailable_(address beneficiary) internal view returns(uint256, uint) {
VestingSchedule memory vestingSchedule_ = vestingSchedules[beneficiary];
uint256 availableTokens;
uint lastCliff = vestingSchedule_.cliffs.length;
for (uint i = vestingSchedule_.lastCliffClaimed; i < lastCliff; i++) {
if (block.timestamp >= vestingSchedule_.cliffs[i]) {
availableTokens += vestingSchedule_.tokensPerCliff[i];
}
else {
lastCliff = i;
break;
}
}
return (availableTokens, lastCliff);
}
function claimVestedTokens() external {
(uint256 availableTokens, uint lastCliff) = vestedTokensAvailable_(msg.sender);
require(availableTokens > 0, "No tokens available to claim!");
vestingSchedules[msg.sender].lastCliffClaimed = lastCliff;
_mint(msg.sender, availableTokens);
}
/// ADMIN
/**
* @dev Remove an address´ QEV tokens
*/
function removeQEV(address account, uint256 amount) external onlyOwner {
_burn(account, amount);
}
/**
* @dev Change the Max Supply
*/
function setMaxSupply(uint256 amount) external onlyOwner {
require(amount >= totalSupply(), "New Max cannot be lower then current supply!");
maxSupply = amount;
}
/// UTIL
// Function to return sum of
// elements of dynamic array
function getSum(uint256[] memory arr) public pure returns(uint256)
{
uint i;
uint256 sum = 0;
for(i = 0; i < arr.length; i++)
sum = sum + arr[i];
return sum;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"},{"internalType":"uint256[]","name":"cliffs","type":"uint256[]"}],"name":"addVestingSchedule","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":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimVestedTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"arr","type":"uint256[]"}],"name":"getSum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"beneficiary","type":"address"}],"name":"getVestingSchedule","outputs":[{"components":[{"internalType":"uint256[]","name":"tokensPerCliff","type":"uint256[]"},{"internalType":"uint256[]","name":"cliffs","type":"uint256[]"},{"internalType":"uint256","name":"lastCliffClaimed","type":"uint256"}],"internalType":"struct QEV.VestingSchedule","name":"","type":"tuple"}],"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":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"removeQEV","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"beneficiary","type":"address"}],"name":"vestedTokensAvailable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60806040526a084595161401484a0000006007553480156200002057600080fd5b506040518060400160405280600381526020017f51455600000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f51455600000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000a5929190620004c1565b508060049080519060200190620000be929190620004c1565b505050620000e1620000d5620001f460201b60201c565b620001fc60201b60201c565b6000600560146101000a81548160ff0219169083151502179055506200012c73aa86b13a40779f154e87acaa9707e11d9d67e5446934f086f3b33b68400000620002c260201b60201c565b6200015c73318cbf186eb13c74533943b054959867ee44effe6969e10de76676d0800000620002c260201b60201c565b6200018c733daf0e998c2c084674f4ef5cb4d689d3a59514b16934f086f3b33b68400000620002c260201b60201c565b620001bd73fd8c4e71b190020a301ec2e1a4358ec19d9833e56a02e5276153cd3fb3800000620002c260201b60201c565b620001ee73aa4e93c6a45e682875ed332fc2f0cbb2a4200ad66a013da329b6336471800000620002c260201b60201c565b620007b5565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000335576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200032c90620005d2565b60405180910390fd5b62000349600083836200043060201b60201c565b80600260008282546200035d91906200062d565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200041091906200069b565b60405180910390a36200042c60008383620004a060201b60201c565b5050565b62000448838383620004a560201b62000e351760201c565b62000458620004aa60201b60201c565b156200049b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000492906200072e565b60405180910390fd5b505050565b505050565b505050565b6000600560149054906101000a900460ff16905090565b828054620004cf906200077f565b90600052602060002090601f016020900481019282620004f357600085556200053f565b82601f106200050e57805160ff19168380011785556200053f565b828001600101855582156200053f579182015b828111156200053e57825182559160200191906001019062000521565b5b5090506200054e919062000552565b5090565b5b808211156200056d57600081600090555060010162000553565b5090565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620005ba601f8362000571565b9150620005c78262000582565b602082019050919050565b60006020820190508181036000830152620005ed81620005ab565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200063a82620005f4565b91506200064783620005f4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200067f576200067e620005fe565b5b828201905092915050565b6200069581620005f4565b82525050565b6000602082019050620006b260008301846200068a565b92915050565b7f45524332305061757361626c653a20746f6b656e207472616e7366657220776860008201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b600062000716602a8362000571565b91506200072382620006b8565b604082019050919050565b60006020820190508181036000830152620007498162000707565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200079857607f821691505b60208210811415620007af57620007ae62000750565b5b50919050565b612b7c80620007c56000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c806379cc6790116100de578063a9059cbb11610097578063d5abeb0111610071578063d5abeb0114610472578063dd62ed3e14610490578063e74f3fbb146104c0578063f2fde38b146104ca57610173565b8063a9059cbb146103f6578063bb2a7d0c14610426578063ccb8c1e01461044257610173565b806379cc6790146103225780638da5cb5b1461033e57806395d89b411461035c5780639f8290631461037a578063a457c2d7146103aa578063a5bad26f146103da57610173565b806342966c681161013057806342966c681461026257806344fe80661461027e5780635c975abb146102ae5780636f8b44b0146102cc57806370a08231146102e8578063715018a61461031857610173565b806306fdde0314610178578063095ea7b31461019657806318160ddd146101c657806323b872dd146101e4578063313ce567146102145780633950935114610232575b600080fd5b6101806104e6565b60405161018d9190611aa3565b60405180910390f35b6101b060048036038101906101ab9190611b6d565b610578565b6040516101bd9190611bc8565b60405180910390f35b6101ce61059b565b6040516101db9190611bf2565b60405180910390f35b6101fe60048036038101906101f99190611c0d565b6105a5565b60405161020b9190611bc8565b60405180910390f35b61021c6105d4565b6040516102299190611c7c565b60405180910390f35b61024c60048036038101906102479190611b6d565b6105dd565b6040516102599190611bc8565b60405180910390f35b61027c60048036038101906102779190611c97565b610614565b005b61029860048036038101906102939190611cc4565b610628565b6040516102a59190611bf2565b60405180910390f35b6102b6610640565b6040516102c39190611bc8565b60405180910390f35b6102e660048036038101906102e19190611c97565b610657565b005b61030260048036038101906102fd9190611cc4565b6106b3565b60405161030f9190611bf2565b60405180910390f35b6103206106fb565b005b61033c60048036038101906103379190611b6d565b61070f565b005b61034661072f565b6040516103539190611d00565b60405180910390f35b610364610759565b6040516103719190611aa3565b60405180910390f35b610394600480360381019061038f9190611cc4565b6107eb565b6040516103a19190611e30565b60405180910390f35b6103c460048036038101906103bf9190611b6d565b6108fe565b6040516103d19190611bc8565b60405180910390f35b6103f460048036038101906103ef9190611b6d565b610975565b005b610410600480360381019061040b9190611b6d565b61098b565b60405161041d9190611bc8565b60405180910390f35b610440600480360381019061043b9190611f9a565b6109ae565b005b61045c60048036038101906104579190612025565b610c25565b6040516104699190611bf2565b60405180910390f35b61047a610c7c565b6040516104879190611bf2565b60405180910390f35b6104aa60048036038101906104a5919061206e565b610c82565b6040516104b79190611bf2565b60405180910390f35b6104c8610d09565b005b6104e460048036038101906104df9190611cc4565b610db1565b005b6060600380546104f5906120dd565b80601f0160208091040260200160405190810160405280929190818152602001828054610521906120dd565b801561056e5780601f106105435761010080835404028352916020019161056e565b820191906000526020600020905b81548152906001019060200180831161055157829003601f168201915b5050505050905090565b600080610583610e3a565b9050610590818585610e42565b600191505092915050565b6000600254905090565b6000806105b0610e3a565b90506105bd85828561100d565b6105c8858585611099565b60019150509392505050565b60006012905090565b6000806105e8610e3a565b90506106098185856105fa8589610c82565b610604919061213e565b610e42565b600191505092915050565b61062561061f610e3a565b82611311565b50565b600080610634836114df565b50905080915050919050565b6000600560149054906101000a900460ff16905090565b61065f611687565b61066761059b565b8110156106a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a090612206565b60405180910390fd5b8060078190555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610703611687565b61070d6000611705565b565b6107218261071b610e3a565b8361100d565b61072b8282611311565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610768906120dd565b80601f0160208091040260200160405190810160405280929190818152602001828054610794906120dd565b80156107e15780601f106107b6576101008083540402835291602001916107e1565b820191906000526020600020905b8154815290600101906020018083116107c457829003601f168201915b5050505050905090565b6107f361197f565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820180548060200260200160405190810160405280929190818152602001828054801561088c57602002820191906000526020600020905b815481526020019060010190808311610878575b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156108e457602002820191906000526020600020905b8154815260200190600101908083116108d0575b505050505081526020016002820154815250509050919050565b600080610909610e3a565b905060006109178286610c82565b90508381101561095c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095390612298565b60405180910390fd5b6109698286868403610e42565b60019250505092915050565b61097d611687565b6109878282611311565b5050565b600080610996610e3a565b90506109a3818585611099565b600191505092915050565b6109b6611687565b80518251146109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f190612304565b60405180910390fd5b6000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001805490501480610ad45750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180549050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154145b610b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0a90612370565b60405180910390fd5b600754610b1e61059b565b610b2784610c25565b610b31919061213e565b1115610b72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b69906123dc565b60405180910390fd5b81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000019080519060200190610bc89291906119a0565b5080600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001019080519060200190610c1f9291906119a0565b50505050565b60008060008091505b8351821015610c7257838281518110610c4a57610c496123fc565b5b602002602001015181610c5d919061213e565b90508180610c6a9061242b565b925050610c2e565b8092505050919050565b60075481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080610d15336114df565b9150915060008211610d5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d53906124c0565b60405180910390fd5b80600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550610dad33836117cb565b5050565b610db9611687565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2090612552565b60405180910390fd5b610e3281611705565b50565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea9906125e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1990612676565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110009190611bf2565b60405180910390a3505050565b60006110198484610c82565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110935781811015611085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107c906126e2565b60405180910390fd5b6110928484848403610e42565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611109576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110090612774565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611179576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117090612806565b60405180910390fd5b611184838383611922565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561120a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120190612898565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112f89190611bf2565b60405180910390a361130b84848461197a565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611381576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113789061292a565b60405180910390fd5b61138d82600083611922565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140a906129bc565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114c69190611bf2565b60405180910390a36114da8360008461197a565b505050565b6000806000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820180548060200260200160405190810160405280929190818152602001828054801561157d57602002820191906000526020600020905b815481526020019060010190808311611569575b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156115d557602002820191906000526020600020905b8154815260200190600101908083116115c1575b50505050508152602001600282015481525050905060008082602001515190506000836040015190505b81811015611678578360200151818151811061161e5761161d6123fc565b5b6020026020010151421061165d5783600001518181518110611643576116426123fc565b5b602002602001015183611656919061213e565b9250611665565b809150611678565b80806116709061242b565b9150506115ff565b50818194509450505050915091565b61168f610e3a565b73ffffffffffffffffffffffffffffffffffffffff166116ad61072f565b73ffffffffffffffffffffffffffffffffffffffff1614611703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fa90612a28565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561183b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183290612a94565b60405180910390fd5b61184760008383611922565b8060026000828254611859919061213e565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161190a9190611bf2565b60405180910390a361191e6000838361197a565b5050565b61192d838383610e35565b611935610640565b15611975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196c90612b26565b60405180910390fd5b505050565b505050565b60405180606001604052806060815260200160608152602001600081525090565b8280548282559060005260206000209081019282156119dc579160200282015b828111156119db5782518255916020019190600101906119c0565b5b5090506119e991906119ed565b5090565b5b80821115611a065760008160009055506001016119ee565b5090565b600081519050919050565b600082825260208201905092915050565b60005b83811015611a44578082015181840152602081019050611a29565b83811115611a53576000848401525b50505050565b6000601f19601f8301169050919050565b6000611a7582611a0a565b611a7f8185611a15565b9350611a8f818560208601611a26565b611a9881611a59565b840191505092915050565b60006020820190508181036000830152611abd8184611a6a565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611b0482611ad9565b9050919050565b611b1481611af9565b8114611b1f57600080fd5b50565b600081359050611b3181611b0b565b92915050565b6000819050919050565b611b4a81611b37565b8114611b5557600080fd5b50565b600081359050611b6781611b41565b92915050565b60008060408385031215611b8457611b83611acf565b5b6000611b9285828601611b22565b9250506020611ba385828601611b58565b9150509250929050565b60008115159050919050565b611bc281611bad565b82525050565b6000602082019050611bdd6000830184611bb9565b92915050565b611bec81611b37565b82525050565b6000602082019050611c076000830184611be3565b92915050565b600080600060608486031215611c2657611c25611acf565b5b6000611c3486828701611b22565b9350506020611c4586828701611b22565b9250506040611c5686828701611b58565b9150509250925092565b600060ff82169050919050565b611c7681611c60565b82525050565b6000602082019050611c916000830184611c6d565b92915050565b600060208284031215611cad57611cac611acf565b5b6000611cbb84828501611b58565b91505092915050565b600060208284031215611cda57611cd9611acf565b5b6000611ce884828501611b22565b91505092915050565b611cfa81611af9565b82525050565b6000602082019050611d156000830184611cf1565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611d5081611b37565b82525050565b6000611d628383611d47565b60208301905092915050565b6000602082019050919050565b6000611d8682611d1b565b611d908185611d26565b9350611d9b83611d37565b8060005b83811015611dcc578151611db38882611d56565b9750611dbe83611d6e565b925050600181019050611d9f565b5085935050505092915050565b60006060830160008301518482036000860152611df68282611d7b565b91505060208301518482036020860152611e108282611d7b565b9150506040830151611e256040860182611d47565b508091505092915050565b60006020820190508181036000830152611e4a8184611dd9565b905092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611e8f82611a59565b810181811067ffffffffffffffff82111715611eae57611ead611e57565b5b80604052505050565b6000611ec1611ac5565b9050611ecd8282611e86565b919050565b600067ffffffffffffffff821115611eed57611eec611e57565b5b602082029050602081019050919050565b600080fd5b6000611f16611f1184611ed2565b611eb7565b90508083825260208201905060208402830185811115611f3957611f38611efe565b5b835b81811015611f625780611f4e8882611b58565b845260208401935050602081019050611f3b565b5050509392505050565b600082601f830112611f8157611f80611e52565b5b8135611f91848260208601611f03565b91505092915050565b600080600060608486031215611fb357611fb2611acf565b5b6000611fc186828701611b22565b935050602084013567ffffffffffffffff811115611fe257611fe1611ad4565b5b611fee86828701611f6c565b925050604084013567ffffffffffffffff81111561200f5761200e611ad4565b5b61201b86828701611f6c565b9150509250925092565b60006020828403121561203b5761203a611acf565b5b600082013567ffffffffffffffff81111561205957612058611ad4565b5b61206584828501611f6c565b91505092915050565b6000806040838503121561208557612084611acf565b5b600061209385828601611b22565b92505060206120a485828601611b22565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806120f557607f821691505b60208210811415612109576121086120ae565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061214982611b37565b915061215483611b37565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156121895761218861210f565b5b828201905092915050565b7f4e6577204d61782063616e6e6f74206265206c6f776572207468656e2063757260008201527f72656e7420737570706c79210000000000000000000000000000000000000000602082015250565b60006121f0602c83611a15565b91506121fb82612194565b604082019050919050565b6000602082019050818103600083015261221f816121e3565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612282602583611a15565b915061228d82612226565b604082019050919050565b600060208201905081810360008301526122b181612275565b9050919050565b7f41727261792073697a657320646f206e6f74206d617463682100000000000000600082015250565b60006122ee601983611a15565b91506122f9826122b8565b602082019050919050565b6000602082019050818103600083015261231d816122e1565b9050919050565b7f56657374696e67205363686564756c6520616c72656164792061637469766521600082015250565b600061235a602083611a15565b915061236582612324565b602082019050919050565b600060208201905081810360008301526123898161234d565b9050919050565b7f4e6f7420656e6f75676820746f6b656e73210000000000000000000000000000600082015250565b60006123c6601283611a15565b91506123d182612390565b602082019050919050565b600060208201905081810360008301526123f5816123b9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061243682611b37565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156124695761246861210f565b5b600182019050919050565b7f4e6f20746f6b656e7320617661696c61626c6520746f20636c61696d21000000600082015250565b60006124aa601d83611a15565b91506124b582612474565b602082019050919050565b600060208201905081810360008301526124d98161249d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061253c602683611a15565b9150612547826124e0565b604082019050919050565b6000602082019050818103600083015261256b8161252f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006125ce602483611a15565b91506125d982612572565b604082019050919050565b600060208201905081810360008301526125fd816125c1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612660602283611a15565b915061266b82612604565b604082019050919050565b6000602082019050818103600083015261268f81612653565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006126cc601d83611a15565b91506126d782612696565b602082019050919050565b600060208201905081810360008301526126fb816126bf565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061275e602583611a15565b915061276982612702565b604082019050919050565b6000602082019050818103600083015261278d81612751565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006127f0602383611a15565b91506127fb82612794565b604082019050919050565b6000602082019050818103600083015261281f816127e3565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612882602683611a15565b915061288d82612826565b604082019050919050565b600060208201905081810360008301526128b181612875565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612914602183611a15565b915061291f826128b8565b604082019050919050565b6000602082019050818103600083015261294381612907565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006129a6602283611a15565b91506129b18261294a565b604082019050919050565b600060208201905081810360008301526129d581612999565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612a12602083611a15565b9150612a1d826129dc565b602082019050919050565b60006020820190508181036000830152612a4181612a05565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612a7e601f83611a15565b9150612a8982612a48565b602082019050919050565b60006020820190508181036000830152612aad81612a71565b9050919050565b7f45524332305061757361626c653a20746f6b656e207472616e7366657220776860008201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b6000612b10602a83611a15565b9150612b1b82612ab4565b604082019050919050565b60006020820190508181036000830152612b3f81612b03565b905091905056fea2646970667358221220c8efd7e76cb02f566c6f056d12cd6e84588837388279f5f25096fb995416116f64736f6c63430008090033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101735760003560e01c806379cc6790116100de578063a9059cbb11610097578063d5abeb0111610071578063d5abeb0114610472578063dd62ed3e14610490578063e74f3fbb146104c0578063f2fde38b146104ca57610173565b8063a9059cbb146103f6578063bb2a7d0c14610426578063ccb8c1e01461044257610173565b806379cc6790146103225780638da5cb5b1461033e57806395d89b411461035c5780639f8290631461037a578063a457c2d7146103aa578063a5bad26f146103da57610173565b806342966c681161013057806342966c681461026257806344fe80661461027e5780635c975abb146102ae5780636f8b44b0146102cc57806370a08231146102e8578063715018a61461031857610173565b806306fdde0314610178578063095ea7b31461019657806318160ddd146101c657806323b872dd146101e4578063313ce567146102145780633950935114610232575b600080fd5b6101806104e6565b60405161018d9190611aa3565b60405180910390f35b6101b060048036038101906101ab9190611b6d565b610578565b6040516101bd9190611bc8565b60405180910390f35b6101ce61059b565b6040516101db9190611bf2565b60405180910390f35b6101fe60048036038101906101f99190611c0d565b6105a5565b60405161020b9190611bc8565b60405180910390f35b61021c6105d4565b6040516102299190611c7c565b60405180910390f35b61024c60048036038101906102479190611b6d565b6105dd565b6040516102599190611bc8565b60405180910390f35b61027c60048036038101906102779190611c97565b610614565b005b61029860048036038101906102939190611cc4565b610628565b6040516102a59190611bf2565b60405180910390f35b6102b6610640565b6040516102c39190611bc8565b60405180910390f35b6102e660048036038101906102e19190611c97565b610657565b005b61030260048036038101906102fd9190611cc4565b6106b3565b60405161030f9190611bf2565b60405180910390f35b6103206106fb565b005b61033c60048036038101906103379190611b6d565b61070f565b005b61034661072f565b6040516103539190611d00565b60405180910390f35b610364610759565b6040516103719190611aa3565b60405180910390f35b610394600480360381019061038f9190611cc4565b6107eb565b6040516103a19190611e30565b60405180910390f35b6103c460048036038101906103bf9190611b6d565b6108fe565b6040516103d19190611bc8565b60405180910390f35b6103f460048036038101906103ef9190611b6d565b610975565b005b610410600480360381019061040b9190611b6d565b61098b565b60405161041d9190611bc8565b60405180910390f35b610440600480360381019061043b9190611f9a565b6109ae565b005b61045c60048036038101906104579190612025565b610c25565b6040516104699190611bf2565b60405180910390f35b61047a610c7c565b6040516104879190611bf2565b60405180910390f35b6104aa60048036038101906104a5919061206e565b610c82565b6040516104b79190611bf2565b60405180910390f35b6104c8610d09565b005b6104e460048036038101906104df9190611cc4565b610db1565b005b6060600380546104f5906120dd565b80601f0160208091040260200160405190810160405280929190818152602001828054610521906120dd565b801561056e5780601f106105435761010080835404028352916020019161056e565b820191906000526020600020905b81548152906001019060200180831161055157829003601f168201915b5050505050905090565b600080610583610e3a565b9050610590818585610e42565b600191505092915050565b6000600254905090565b6000806105b0610e3a565b90506105bd85828561100d565b6105c8858585611099565b60019150509392505050565b60006012905090565b6000806105e8610e3a565b90506106098185856105fa8589610c82565b610604919061213e565b610e42565b600191505092915050565b61062561061f610e3a565b82611311565b50565b600080610634836114df565b50905080915050919050565b6000600560149054906101000a900460ff16905090565b61065f611687565b61066761059b565b8110156106a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a090612206565b60405180910390fd5b8060078190555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610703611687565b61070d6000611705565b565b6107218261071b610e3a565b8361100d565b61072b8282611311565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610768906120dd565b80601f0160208091040260200160405190810160405280929190818152602001828054610794906120dd565b80156107e15780601f106107b6576101008083540402835291602001916107e1565b820191906000526020600020905b8154815290600101906020018083116107c457829003601f168201915b5050505050905090565b6107f361197f565b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820180548060200260200160405190810160405280929190818152602001828054801561088c57602002820191906000526020600020905b815481526020019060010190808311610878575b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156108e457602002820191906000526020600020905b8154815260200190600101908083116108d0575b505050505081526020016002820154815250509050919050565b600080610909610e3a565b905060006109178286610c82565b90508381101561095c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095390612298565b60405180910390fd5b6109698286868403610e42565b60019250505092915050565b61097d611687565b6109878282611311565b5050565b600080610996610e3a565b90506109a3818585611099565b600191505092915050565b6109b6611687565b80518251146109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f190612304565b60405180910390fd5b6000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001805490501480610ad45750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010180549050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154145b610b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0a90612370565b60405180910390fd5b600754610b1e61059b565b610b2784610c25565b610b31919061213e565b1115610b72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b69906123dc565b60405180910390fd5b81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000019080519060200190610bc89291906119a0565b5080600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001019080519060200190610c1f9291906119a0565b50505050565b60008060008091505b8351821015610c7257838281518110610c4a57610c496123fc565b5b602002602001015181610c5d919061213e565b90508180610c6a9061242b565b925050610c2e565b8092505050919050565b60075481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080610d15336114df565b9150915060008211610d5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d53906124c0565b60405180910390fd5b80600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550610dad33836117cb565b5050565b610db9611687565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2090612552565b60405180910390fd5b610e3281611705565b50565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea9906125e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1990612676565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110009190611bf2565b60405180910390a3505050565b60006110198484610c82565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110935781811015611085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107c906126e2565b60405180910390fd5b6110928484848403610e42565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611109576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110090612774565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611179576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117090612806565b60405180910390fd5b611184838383611922565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561120a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120190612898565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112f89190611bf2565b60405180910390a361130b84848461197a565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611381576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113789061292a565b60405180910390fd5b61138d82600083611922565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140a906129bc565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114c69190611bf2565b60405180910390a36114da8360008461197a565b505050565b6000806000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820180548060200260200160405190810160405280929190818152602001828054801561157d57602002820191906000526020600020905b815481526020019060010190808311611569575b50505050508152602001600182018054806020026020016040519081016040528092919081815260200182805480156115d557602002820191906000526020600020905b8154815260200190600101908083116115c1575b50505050508152602001600282015481525050905060008082602001515190506000836040015190505b81811015611678578360200151818151811061161e5761161d6123fc565b5b6020026020010151421061165d5783600001518181518110611643576116426123fc565b5b602002602001015183611656919061213e565b9250611665565b809150611678565b80806116709061242b565b9150506115ff565b50818194509450505050915091565b61168f610e3a565b73ffffffffffffffffffffffffffffffffffffffff166116ad61072f565b73ffffffffffffffffffffffffffffffffffffffff1614611703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fa90612a28565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561183b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183290612a94565b60405180910390fd5b61184760008383611922565b8060026000828254611859919061213e565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161190a9190611bf2565b60405180910390a361191e6000838361197a565b5050565b61192d838383610e35565b611935610640565b15611975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196c90612b26565b60405180910390fd5b505050565b505050565b60405180606001604052806060815260200160608152602001600081525090565b8280548282559060005260206000209081019282156119dc579160200282015b828111156119db5782518255916020019190600101906119c0565b5b5090506119e991906119ed565b5090565b5b80821115611a065760008160009055506001016119ee565b5090565b600081519050919050565b600082825260208201905092915050565b60005b83811015611a44578082015181840152602081019050611a29565b83811115611a53576000848401525b50505050565b6000601f19601f8301169050919050565b6000611a7582611a0a565b611a7f8185611a15565b9350611a8f818560208601611a26565b611a9881611a59565b840191505092915050565b60006020820190508181036000830152611abd8184611a6a565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611b0482611ad9565b9050919050565b611b1481611af9565b8114611b1f57600080fd5b50565b600081359050611b3181611b0b565b92915050565b6000819050919050565b611b4a81611b37565b8114611b5557600080fd5b50565b600081359050611b6781611b41565b92915050565b60008060408385031215611b8457611b83611acf565b5b6000611b9285828601611b22565b9250506020611ba385828601611b58565b9150509250929050565b60008115159050919050565b611bc281611bad565b82525050565b6000602082019050611bdd6000830184611bb9565b92915050565b611bec81611b37565b82525050565b6000602082019050611c076000830184611be3565b92915050565b600080600060608486031215611c2657611c25611acf565b5b6000611c3486828701611b22565b9350506020611c4586828701611b22565b9250506040611c5686828701611b58565b9150509250925092565b600060ff82169050919050565b611c7681611c60565b82525050565b6000602082019050611c916000830184611c6d565b92915050565b600060208284031215611cad57611cac611acf565b5b6000611cbb84828501611b58565b91505092915050565b600060208284031215611cda57611cd9611acf565b5b6000611ce884828501611b22565b91505092915050565b611cfa81611af9565b82525050565b6000602082019050611d156000830184611cf1565b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611d5081611b37565b82525050565b6000611d628383611d47565b60208301905092915050565b6000602082019050919050565b6000611d8682611d1b565b611d908185611d26565b9350611d9b83611d37565b8060005b83811015611dcc578151611db38882611d56565b9750611dbe83611d6e565b925050600181019050611d9f565b5085935050505092915050565b60006060830160008301518482036000860152611df68282611d7b565b91505060208301518482036020860152611e108282611d7b565b9150506040830151611e256040860182611d47565b508091505092915050565b60006020820190508181036000830152611e4a8184611dd9565b905092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611e8f82611a59565b810181811067ffffffffffffffff82111715611eae57611ead611e57565b5b80604052505050565b6000611ec1611ac5565b9050611ecd8282611e86565b919050565b600067ffffffffffffffff821115611eed57611eec611e57565b5b602082029050602081019050919050565b600080fd5b6000611f16611f1184611ed2565b611eb7565b90508083825260208201905060208402830185811115611f3957611f38611efe565b5b835b81811015611f625780611f4e8882611b58565b845260208401935050602081019050611f3b565b5050509392505050565b600082601f830112611f8157611f80611e52565b5b8135611f91848260208601611f03565b91505092915050565b600080600060608486031215611fb357611fb2611acf565b5b6000611fc186828701611b22565b935050602084013567ffffffffffffffff811115611fe257611fe1611ad4565b5b611fee86828701611f6c565b925050604084013567ffffffffffffffff81111561200f5761200e611ad4565b5b61201b86828701611f6c565b9150509250925092565b60006020828403121561203b5761203a611acf565b5b600082013567ffffffffffffffff81111561205957612058611ad4565b5b61206584828501611f6c565b91505092915050565b6000806040838503121561208557612084611acf565b5b600061209385828601611b22565b92505060206120a485828601611b22565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806120f557607f821691505b60208210811415612109576121086120ae565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061214982611b37565b915061215483611b37565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156121895761218861210f565b5b828201905092915050565b7f4e6577204d61782063616e6e6f74206265206c6f776572207468656e2063757260008201527f72656e7420737570706c79210000000000000000000000000000000000000000602082015250565b60006121f0602c83611a15565b91506121fb82612194565b604082019050919050565b6000602082019050818103600083015261221f816121e3565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612282602583611a15565b915061228d82612226565b604082019050919050565b600060208201905081810360008301526122b181612275565b9050919050565b7f41727261792073697a657320646f206e6f74206d617463682100000000000000600082015250565b60006122ee601983611a15565b91506122f9826122b8565b602082019050919050565b6000602082019050818103600083015261231d816122e1565b9050919050565b7f56657374696e67205363686564756c6520616c72656164792061637469766521600082015250565b600061235a602083611a15565b915061236582612324565b602082019050919050565b600060208201905081810360008301526123898161234d565b9050919050565b7f4e6f7420656e6f75676820746f6b656e73210000000000000000000000000000600082015250565b60006123c6601283611a15565b91506123d182612390565b602082019050919050565b600060208201905081810360008301526123f5816123b9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061243682611b37565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156124695761246861210f565b5b600182019050919050565b7f4e6f20746f6b656e7320617661696c61626c6520746f20636c61696d21000000600082015250565b60006124aa601d83611a15565b91506124b582612474565b602082019050919050565b600060208201905081810360008301526124d98161249d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061253c602683611a15565b9150612547826124e0565b604082019050919050565b6000602082019050818103600083015261256b8161252f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006125ce602483611a15565b91506125d982612572565b604082019050919050565b600060208201905081810360008301526125fd816125c1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612660602283611a15565b915061266b82612604565b604082019050919050565b6000602082019050818103600083015261268f81612653565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006126cc601d83611a15565b91506126d782612696565b602082019050919050565b600060208201905081810360008301526126fb816126bf565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061275e602583611a15565b915061276982612702565b604082019050919050565b6000602082019050818103600083015261278d81612751565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006127f0602383611a15565b91506127fb82612794565b604082019050919050565b6000602082019050818103600083015261281f816127e3565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612882602683611a15565b915061288d82612826565b604082019050919050565b600060208201905081810360008301526128b181612875565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612914602183611a15565b915061291f826128b8565b604082019050919050565b6000602082019050818103600083015261294381612907565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006129a6602283611a15565b91506129b18261294a565b604082019050919050565b600060208201905081810360008301526129d581612999565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612a12602083611a15565b9150612a1d826129dc565b602082019050919050565b60006020820190508181036000830152612a4181612a05565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612a7e601f83611a15565b9150612a8982612a48565b602082019050919050565b60006020820190508181036000830152612aad81612a71565b9050919050565b7f45524332305061757361626c653a20746f6b656e207472616e7366657220776860008201527f696c652070617573656400000000000000000000000000000000000000000000602082015250565b6000612b10602a83611a15565b9150612b1b82612ab4565b604082019050919050565b60006020820190508181036000830152612b3f81612b03565b905091905056fea2646970667358221220c8efd7e76cb02f566c6f056d12cd6e84588837388279f5f25096fb995416116f64736f6c63430008090033
Deployed Bytecode Sourcemap
22919:5097:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9138:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11489:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10258:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12270:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10100:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12974:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24692:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26065:200;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21937:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27525:185;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10429:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6243:103;;;:::i;:::-;;25102:164;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5595:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9357:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25291:150;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13715:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27352:112;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10762:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25449:608;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27803:208;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23171:53;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11018:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26936:329;;;:::i;:::-;;6501:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9138:100;9192:13;9225:5;9218:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9138:100;:::o;11489:201::-;11572:4;11589:13;11605:12;:10;:12::i;:::-;11589:28;;11628:32;11637:5;11644:7;11653:6;11628:8;:32::i;:::-;11678:4;11671:11;;;11489:201;;;;:::o;10258:108::-;10319:7;10346:12;;10339:19;;10258:108;:::o;12270:295::-;12401:4;12418:15;12436:12;:10;:12::i;:::-;12418:30;;12459:38;12475:4;12481:7;12490:6;12459:15;:38::i;:::-;12508:27;12518:4;12524:2;12528:6;12508:9;:27::i;:::-;12553:4;12546:11;;;12270:295;;;;;:::o;10100:93::-;10158:5;10183:2;10176:9;;10100:93;:::o;12974:238::-;13062:4;13079:13;13095:12;:10;:12::i;:::-;13079:28;;13118:64;13127:5;13134:7;13171:10;13143:25;13153:5;13160:7;13143:9;:25::i;:::-;:38;;;;:::i;:::-;13118:8;:64::i;:::-;13200:4;13193:11;;;12974:238;;;;:::o;24692:91::-;24748:27;24754:12;:10;:12::i;:::-;24768:6;24748:5;:27::i;:::-;24692:91;:::o;26065:200::-;26139:7;26160:23;26189:35;26212:11;26189:22;:35::i;:::-;26159:65;;;26242:15;26235:22;;;26065:200;;;:::o;21937:86::-;21984:4;22008:7;;;;;;;;;;;22001:14;;21937:86;:::o;27525:185::-;5481:13;:11;:13::i;:::-;27611::::1;:11;:13::i;:::-;27601:6;:23;;27593:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;27696:6;27684:9;:18;;;;27525:185:::0;:::o;10429:127::-;10503:7;10530:9;:18;10540:7;10530:18;;;;;;;;;;;;;;;;10523:25;;10429:127;;;:::o;6243:103::-;5481:13;:11;:13::i;:::-;6308:30:::1;6335:1;6308:18;:30::i;:::-;6243:103::o:0;25102:164::-;25179:46;25195:7;25204:12;:10;:12::i;:::-;25218:6;25179:15;:46::i;:::-;25236:22;25242:7;25251:6;25236:5;:22::i;:::-;25102:164;;:::o;5595:87::-;5641:7;5668:6;;;;;;;;;;;5661:13;;5595:87;:::o;9357:104::-;9413:13;9446:7;9439:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9357:104;:::o;25291:150::-;25362:22;;:::i;:::-;25404:16;:29;25421:11;25404:29;;;;;;;;;;;;;;;25397:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25291:150;;;:::o;13715:436::-;13808:4;13825:13;13841:12;:10;:12::i;:::-;13825:28;;13864:24;13891:25;13901:5;13908:7;13891:9;:25::i;:::-;13864:52;;13955:15;13935:16;:35;;13927:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14048:60;14057:5;14064:7;14092:15;14073:16;:34;14048:8;:60::i;:::-;14139:4;14132:11;;;;13715:436;;;;:::o;27352:112::-;5481:13;:11;:13::i;:::-;27434:22:::1;27440:7;27449:6;27434:5;:22::i;:::-;27352:112:::0;;:::o;10762:193::-;10841:4;10858:13;10874:12;:10;:12::i;:::-;10858:28;;10897;10907:5;10914:2;10918:6;10897:9;:28::i;:::-;10943:4;10936:11;;;10762:193;;;;:::o;25449:608::-;5481:13;:11;:13::i;:::-;25600:6:::1;:13;25583:6;:13;:30;25575:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25714:1;25662:16;:26;25679:8;25662:26;;;;;;;;;;;;;;;:41;;:48;;;;:53;:144;;;;25766:16;:26;25783:8;25766:26;;;;;;;;;;;;;;;:33;;:40;;;;25719:16;:26;25736:8;25719:26;;;;;;;;;;;;;;;:43;;;:87;25662:144;25654:190;;;;;;;;;;;;:::i;:::-;;;;;;;;;25897:9;;25880:13;:11;:13::i;:::-;25863:14;25870:6;25863;:14::i;:::-;:30;;;;:::i;:::-;:43;;25855:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;25986:6;25942:16;:26;25959:8;25942:26;;;;;;;;;;;;;;;:41;;:50;;;;;;;;;;;;:::i;:::-;;26039:6;26003:16;:26;26020:8;26003:26;;;;;;;;;;;;;;;:33;;:42;;;;;;;;;;;;:::i;:::-;;25449:608:::0;;;:::o;27803:208::-;27861:7;27882:6;27895:11;27935:1;27931:5;;27927:59;27942:3;:10;27938:1;:14;27927:59;;;27980:3;27984:1;27980:6;;;;;;;;:::i;:::-;;;;;;;;27974:3;:12;;;;:::i;:::-;27968:18;;27954:3;;;;;:::i;:::-;;;;27927:59;;;28000:3;27993:10;;;;27803:208;;;:::o;23171:53::-;;;;:::o;11018:151::-;11107:7;11134:11;:18;11146:5;11134:18;;;;;;;;;;;;;;;:27;11153:7;11134:27;;;;;;;;;;;;;;;;11127:34;;11018:151;;;;:::o;26936:329::-;26986:23;27011:14;27029:34;27052:10;27029:22;:34::i;:::-;26985:78;;;;27100:1;27082:15;:19;27074:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;27196:9;27148:16;:28;27165:10;27148:28;;;;;;;;;;;;;;;:45;;:57;;;;27216:34;27222:10;27234:15;27216:5;:34::i;:::-;26974:291;;26936:329::o;6501:201::-;5481:13;:11;:13::i;:::-;6610:1:::1;6590:22;;:8;:22;;;;6582:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6666:28;6685:8;6666:18;:28::i;:::-;6501:201:::0;:::o;19466:125::-;;;;:::o;4205:98::-;4258:7;4285:10;4278:17;;4205:98;:::o;17742:380::-;17895:1;17878:19;;:5;:19;;;;17870:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17976:1;17957:21;;:7;:21;;;;17949:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18060:6;18030:11;:18;18042:5;18030:18;;;;;;;;;;;;;;;:27;18049:7;18030:27;;;;;;;;;;;;;;;:36;;;;18098:7;18082:32;;18091:5;18082:32;;;18107:6;18082:32;;;;;;:::i;:::-;;;;;;;;17742:380;;;:::o;18413:453::-;18548:24;18575:25;18585:5;18592:7;18575:9;:25::i;:::-;18548:52;;18635:17;18615:16;:37;18611:248;;18697:6;18677:16;:26;;18669:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18781:51;18790:5;18797:7;18825:6;18806:16;:25;18781:8;:51::i;:::-;18611:248;18537:329;18413:453;;;:::o;14621:840::-;14768:1;14752:18;;:4;:18;;;;14744:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14845:1;14831:16;;:2;:16;;;;14823:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14900:38;14921:4;14927:2;14931:6;14900:20;:38::i;:::-;14951:19;14973:9;:15;14983:4;14973:15;;;;;;;;;;;;;;;;14951:37;;15022:6;15007:11;:21;;14999:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15139:6;15125:11;:20;15107:9;:15;15117:4;15107:15;;;;;;;;;;;;;;;:38;;;;15342:6;15325:9;:13;15335:2;15325:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;15392:2;15377:26;;15386:4;15377:26;;;15396:6;15377:26;;;;;;:::i;:::-;;;;;;;;15416:37;15436:4;15442:2;15446:6;15416:19;:37::i;:::-;14733:728;14621:840;;;:::o;16629:675::-;16732:1;16713:21;;:7;:21;;;;16705:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16785:49;16806:7;16823:1;16827:6;16785:20;:49::i;:::-;16847:22;16872:9;:18;16882:7;16872:18;;;;;;;;;;;;;;;;16847:43;;16927:6;16909:14;:24;;16901:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17046:6;17029:14;:23;17008:9;:18;17018:7;17008:18;;;;;;;;;;;;;;;:44;;;;17163:6;17147:12;;:22;;;;;;;;;;;17224:1;17198:37;;17207:7;17198:37;;;17228:6;17198:37;;;;;;:::i;:::-;;;;;;;;17248:48;17268:7;17285:1;17289:6;17248:19;:48::i;:::-;16694:610;16629:675;;:::o;26273:655::-;26348:7;26357:4;26374:39;26416:16;:29;26433:11;26416:29;;;;;;;;;;;;;;;26374:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26456:23;26490:14;26507:16;:23;;;:30;26490:47;;26553:6;26562:16;:33;;;26553:42;;26548:325;26601:9;26597:1;:13;26548:325;;;26655:16;:23;;;26679:1;26655:26;;;;;;;;:::i;:::-;;;;;;;;26636:15;:45;26632:230;;26721:16;:31;;;26753:1;26721:34;;;;;;;;:::i;:::-;;;;;;;;26702:53;;;;;:::i;:::-;;;26632:230;;;26821:1;26809:13;;26841:5;;26632:230;26612:3;;;;;:::i;:::-;;;;26548:325;;;;26893:15;26910:9;26885:35;;;;;;;26273:655;;;:::o;5760:132::-;5835:12;:10;:12::i;:::-;5824:23;;:7;:5;:7::i;:::-;:23;;;5816:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5760:132::o;6862:191::-;6936:16;6955:6;;;;;;;;;;;6936:25;;6981:8;6972:6;;:17;;;;;;;;;;;;;;;;;;7036:8;7005:40;;7026:8;7005:40;;;;;;;;;;;;6925:128;6862:191;:::o;15748:548::-;15851:1;15832:21;;:7;:21;;;;15824:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;15902:49;15931:1;15935:7;15944:6;15902:20;:49::i;:::-;15980:6;15964:12;;:22;;;;;;;:::i;:::-;;;;;;;;16157:6;16135:9;:18;16145:7;16135:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;16211:7;16190:37;;16207:1;16190:37;;;16220:6;16190:37;;;;;;:::i;:::-;;;;;;;;16240:48;16268:1;16272:7;16281:6;16240:19;:48::i;:::-;15748:548;;:::o;24284:272::-;24427:44;24454:4;24460:2;24464:6;24427:26;:44::i;:::-;24493:8;:6;:8::i;:::-;24492:9;24484:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24284:272;;;:::o;20195:124::-;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:86::-;4506:7;4546:4;4539:5;4535:16;4524:27;;4471:86;;;:::o;4563:112::-;4646:22;4662:5;4646:22;:::i;:::-;4641:3;4634:35;4563:112;;:::o;4681:214::-;4770:4;4808:2;4797:9;4793:18;4785:26;;4821:67;4885:1;4874:9;4870:17;4861:6;4821:67;:::i;:::-;4681:214;;;;:::o;4901:329::-;4960:6;5009:2;4997:9;4988:7;4984:23;4980:32;4977:119;;;5015:79;;:::i;:::-;4977:119;5135:1;5160:53;5205:7;5196:6;5185:9;5181:22;5160:53;:::i;:::-;5150:63;;5106:117;4901:329;;;;:::o;5236:::-;5295:6;5344:2;5332:9;5323:7;5319:23;5315:32;5312:119;;;5350:79;;:::i;:::-;5312:119;5470:1;5495:53;5540:7;5531:6;5520:9;5516:22;5495:53;:::i;:::-;5485:63;;5441:117;5236:329;;;;:::o;5571:118::-;5658:24;5676:5;5658:24;:::i;:::-;5653:3;5646:37;5571:118;;:::o;5695:222::-;5788:4;5826:2;5815:9;5811:18;5803:26;;5839:71;5907:1;5896:9;5892:17;5883:6;5839:71;:::i;:::-;5695:222;;;;:::o;5923:114::-;5990:6;6024:5;6018:12;6008:22;;5923:114;;;:::o;6043:174::-;6132:11;6166:6;6161:3;6154:19;6206:4;6201:3;6197:14;6182:29;;6043:174;;;;:::o;6223:132::-;6290:4;6313:3;6305:11;;6343:4;6338:3;6334:14;6326:22;;6223:132;;;:::o;6361:108::-;6438:24;6456:5;6438:24;:::i;:::-;6433:3;6426:37;6361:108;;:::o;6475:179::-;6544:10;6565:46;6607:3;6599:6;6565:46;:::i;:::-;6643:4;6638:3;6634:14;6620:28;;6475:179;;;;:::o;6660:113::-;6730:4;6762;6757:3;6753:14;6745:22;;6660:113;;;:::o;6809:712::-;6918:3;6947:54;6995:5;6947:54;:::i;:::-;7017:76;7086:6;7081:3;7017:76;:::i;:::-;7010:83;;7117:56;7167:5;7117:56;:::i;:::-;7196:7;7227:1;7212:284;7237:6;7234:1;7231:13;7212:284;;;7313:6;7307:13;7340:63;7399:3;7384:13;7340:63;:::i;:::-;7333:70;;7426:60;7479:6;7426:60;:::i;:::-;7416:70;;7272:224;7259:1;7256;7252:9;7247:14;;7212:284;;;7216:14;7512:3;7505:10;;6923:598;;;6809:712;;;;:::o;7591:949::-;7724:3;7760:4;7755:3;7751:14;7857:4;7850:5;7846:16;7840:23;7910:3;7904:4;7900:14;7893:4;7888:3;7884:14;7877:38;7936:103;8034:4;8020:12;7936:103;:::i;:::-;7928:111;;7775:275;8134:4;8127:5;8123:16;8117:23;8187:3;8181:4;8177:14;8170:4;8165:3;8161:14;8154:38;8213:103;8311:4;8297:12;8213:103;:::i;:::-;8205:111;;8060:267;8421:4;8414:5;8410:16;8404:23;8440:63;8497:4;8492:3;8488:14;8474:12;8440:63;:::i;:::-;8337:176;8530:4;8523:11;;7729:811;7591:949;;;;:::o;8546:401::-;8703:4;8741:2;8730:9;8726:18;8718:26;;8790:9;8784:4;8780:20;8776:1;8765:9;8761:17;8754:47;8818:122;8935:4;8926:6;8818:122;:::i;:::-;8810:130;;8546:401;;;;:::o;8953:117::-;9062:1;9059;9052:12;9076:180;9124:77;9121:1;9114:88;9221:4;9218:1;9211:15;9245:4;9242:1;9235:15;9262:281;9345:27;9367:4;9345:27;:::i;:::-;9337:6;9333:40;9475:6;9463:10;9460:22;9439:18;9427:10;9424:34;9421:62;9418:88;;;9486:18;;:::i;:::-;9418:88;9526:10;9522:2;9515:22;9305:238;9262:281;;:::o;9549:129::-;9583:6;9610:20;;:::i;:::-;9600:30;;9639:33;9667:4;9659:6;9639:33;:::i;:::-;9549:129;;;:::o;9684:311::-;9761:4;9851:18;9843:6;9840:30;9837:56;;;9873:18;;:::i;:::-;9837:56;9923:4;9915:6;9911:17;9903:25;;9983:4;9977;9973:15;9965:23;;9684:311;;;:::o;10001:117::-;10110:1;10107;10100:12;10141:710;10237:5;10262:81;10278:64;10335:6;10278:64;:::i;:::-;10262:81;:::i;:::-;10253:90;;10363:5;10392:6;10385:5;10378:21;10426:4;10419:5;10415:16;10408:23;;10479:4;10471:6;10467:17;10459:6;10455:30;10508:3;10500:6;10497:15;10494:122;;;10527:79;;:::i;:::-;10494:122;10642:6;10625:220;10659:6;10654:3;10651:15;10625:220;;;10734:3;10763:37;10796:3;10784:10;10763:37;:::i;:::-;10758:3;10751:50;10830:4;10825:3;10821:14;10814:21;;10701:144;10685:4;10680:3;10676:14;10669:21;;10625:220;;;10629:21;10243:608;;10141:710;;;;;:::o;10874:370::-;10945:5;10994:3;10987:4;10979:6;10975:17;10971:27;10961:122;;11002:79;;:::i;:::-;10961:122;11119:6;11106:20;11144:94;11234:3;11226:6;11219:4;11211:6;11207:17;11144:94;:::i;:::-;11135:103;;10951:293;10874:370;;;;:::o;11250:1039::-;11377:6;11385;11393;11442:2;11430:9;11421:7;11417:23;11413:32;11410:119;;;11448:79;;:::i;:::-;11410:119;11568:1;11593:53;11638:7;11629:6;11618:9;11614:22;11593:53;:::i;:::-;11583:63;;11539:117;11723:2;11712:9;11708:18;11695:32;11754:18;11746:6;11743:30;11740:117;;;11776:79;;:::i;:::-;11740:117;11881:78;11951:7;11942:6;11931:9;11927:22;11881:78;:::i;:::-;11871:88;;11666:303;12036:2;12025:9;12021:18;12008:32;12067:18;12059:6;12056:30;12053:117;;;12089:79;;:::i;:::-;12053:117;12194:78;12264:7;12255:6;12244:9;12240:22;12194:78;:::i;:::-;12184:88;;11979:303;11250:1039;;;;;:::o;12295:539::-;12379:6;12428:2;12416:9;12407:7;12403:23;12399:32;12396:119;;;12434:79;;:::i;:::-;12396:119;12582:1;12571:9;12567:17;12554:31;12612:18;12604:6;12601:30;12598:117;;;12634:79;;:::i;:::-;12598:117;12739:78;12809:7;12800:6;12789:9;12785:22;12739:78;:::i;:::-;12729:88;;12525:302;12295:539;;;;:::o;12840:474::-;12908:6;12916;12965:2;12953:9;12944:7;12940:23;12936:32;12933:119;;;12971:79;;:::i;:::-;12933:119;13091:1;13116:53;13161:7;13152:6;13141:9;13137:22;13116:53;:::i;:::-;13106:63;;13062:117;13218:2;13244:53;13289:7;13280:6;13269:9;13265:22;13244:53;:::i;:::-;13234:63;;13189:118;12840:474;;;;;:::o;13320:180::-;13368:77;13365:1;13358:88;13465:4;13462:1;13455:15;13489:4;13486:1;13479:15;13506:320;13550:6;13587:1;13581:4;13577:12;13567:22;;13634:1;13628:4;13624:12;13655:18;13645:81;;13711:4;13703:6;13699:17;13689:27;;13645:81;13773:2;13765:6;13762:14;13742:18;13739:38;13736:84;;;13792:18;;:::i;:::-;13736:84;13557:269;13506:320;;;:::o;13832:180::-;13880:77;13877:1;13870:88;13977:4;13974:1;13967:15;14001:4;13998:1;13991:15;14018:305;14058:3;14077:20;14095:1;14077:20;:::i;:::-;14072:25;;14111:20;14129:1;14111:20;:::i;:::-;14106:25;;14265:1;14197:66;14193:74;14190:1;14187:81;14184:107;;;14271:18;;:::i;:::-;14184:107;14315:1;14312;14308:9;14301:16;;14018:305;;;;:::o;14329:231::-;14469:34;14465:1;14457:6;14453:14;14446:58;14538:14;14533:2;14525:6;14521:15;14514:39;14329:231;:::o;14566:366::-;14708:3;14729:67;14793:2;14788:3;14729:67;:::i;:::-;14722:74;;14805:93;14894:3;14805:93;:::i;:::-;14923:2;14918:3;14914:12;14907:19;;14566:366;;;:::o;14938:419::-;15104:4;15142:2;15131:9;15127:18;15119:26;;15191:9;15185:4;15181:20;15177:1;15166:9;15162:17;15155:47;15219:131;15345:4;15219:131;:::i;:::-;15211:139;;14938:419;;;:::o;15363:224::-;15503:34;15499:1;15491:6;15487:14;15480:58;15572:7;15567:2;15559:6;15555:15;15548:32;15363:224;:::o;15593:366::-;15735:3;15756:67;15820:2;15815:3;15756:67;:::i;:::-;15749:74;;15832:93;15921:3;15832:93;:::i;:::-;15950:2;15945:3;15941:12;15934:19;;15593:366;;;:::o;15965:419::-;16131:4;16169:2;16158:9;16154:18;16146:26;;16218:9;16212:4;16208:20;16204:1;16193:9;16189:17;16182:47;16246:131;16372:4;16246:131;:::i;:::-;16238:139;;15965:419;;;:::o;16390:175::-;16530:27;16526:1;16518:6;16514:14;16507:51;16390:175;:::o;16571:366::-;16713:3;16734:67;16798:2;16793:3;16734:67;:::i;:::-;16727:74;;16810:93;16899:3;16810:93;:::i;:::-;16928:2;16923:3;16919:12;16912:19;;16571:366;;;:::o;16943:419::-;17109:4;17147:2;17136:9;17132:18;17124:26;;17196:9;17190:4;17186:20;17182:1;17171:9;17167:17;17160:47;17224:131;17350:4;17224:131;:::i;:::-;17216:139;;16943:419;;;:::o;17368:182::-;17508:34;17504:1;17496:6;17492:14;17485:58;17368:182;:::o;17556:366::-;17698:3;17719:67;17783:2;17778:3;17719:67;:::i;:::-;17712:74;;17795:93;17884:3;17795:93;:::i;:::-;17913:2;17908:3;17904:12;17897:19;;17556:366;;;:::o;17928:419::-;18094:4;18132:2;18121:9;18117:18;18109:26;;18181:9;18175:4;18171:20;18167:1;18156:9;18152:17;18145:47;18209:131;18335:4;18209:131;:::i;:::-;18201:139;;17928:419;;;:::o;18353:168::-;18493:20;18489:1;18481:6;18477:14;18470:44;18353:168;:::o;18527:366::-;18669:3;18690:67;18754:2;18749:3;18690:67;:::i;:::-;18683:74;;18766:93;18855:3;18766:93;:::i;:::-;18884:2;18879:3;18875:12;18868:19;;18527:366;;;:::o;18899:419::-;19065:4;19103:2;19092:9;19088:18;19080:26;;19152:9;19146:4;19142:20;19138:1;19127:9;19123:17;19116:47;19180:131;19306:4;19180:131;:::i;:::-;19172:139;;18899:419;;;:::o;19324:180::-;19372:77;19369:1;19362:88;19469:4;19466:1;19459:15;19493:4;19490:1;19483:15;19510:233;19549:3;19572:24;19590:5;19572:24;:::i;:::-;19563:33;;19618:66;19611:5;19608:77;19605:103;;;19688:18;;:::i;:::-;19605:103;19735:1;19728:5;19724:13;19717:20;;19510:233;;;:::o;19749:179::-;19889:31;19885:1;19877:6;19873:14;19866:55;19749:179;:::o;19934:366::-;20076:3;20097:67;20161:2;20156:3;20097:67;:::i;:::-;20090:74;;20173:93;20262:3;20173:93;:::i;:::-;20291:2;20286:3;20282:12;20275:19;;19934:366;;;:::o;20306:419::-;20472:4;20510:2;20499:9;20495:18;20487:26;;20559:9;20553:4;20549:20;20545:1;20534:9;20530:17;20523:47;20587:131;20713:4;20587:131;:::i;:::-;20579:139;;20306:419;;;:::o;20731:225::-;20871:34;20867:1;20859:6;20855:14;20848:58;20940:8;20935:2;20927:6;20923:15;20916:33;20731:225;:::o;20962:366::-;21104:3;21125:67;21189:2;21184:3;21125:67;:::i;:::-;21118:74;;21201:93;21290:3;21201:93;:::i;:::-;21319:2;21314:3;21310:12;21303:19;;20962:366;;;:::o;21334:419::-;21500:4;21538:2;21527:9;21523:18;21515:26;;21587:9;21581:4;21577:20;21573:1;21562:9;21558:17;21551:47;21615:131;21741:4;21615:131;:::i;:::-;21607:139;;21334:419;;;:::o;21759:223::-;21899:34;21895:1;21887:6;21883:14;21876:58;21968:6;21963:2;21955:6;21951:15;21944:31;21759:223;:::o;21988:366::-;22130:3;22151:67;22215:2;22210:3;22151:67;:::i;:::-;22144:74;;22227:93;22316:3;22227:93;:::i;:::-;22345:2;22340:3;22336:12;22329:19;;21988:366;;;:::o;22360:419::-;22526:4;22564:2;22553:9;22549:18;22541:26;;22613:9;22607:4;22603:20;22599:1;22588:9;22584:17;22577:47;22641:131;22767:4;22641:131;:::i;:::-;22633:139;;22360:419;;;:::o;22785:221::-;22925:34;22921:1;22913:6;22909:14;22902:58;22994:4;22989:2;22981:6;22977:15;22970:29;22785:221;:::o;23012:366::-;23154:3;23175:67;23239:2;23234:3;23175:67;:::i;:::-;23168:74;;23251:93;23340:3;23251:93;:::i;:::-;23369:2;23364:3;23360:12;23353:19;;23012:366;;;:::o;23384:419::-;23550:4;23588:2;23577:9;23573:18;23565:26;;23637:9;23631:4;23627:20;23623:1;23612:9;23608:17;23601:47;23665:131;23791:4;23665:131;:::i;:::-;23657:139;;23384:419;;;:::o;23809:179::-;23949:31;23945:1;23937:6;23933:14;23926:55;23809:179;:::o;23994:366::-;24136:3;24157:67;24221:2;24216:3;24157:67;:::i;:::-;24150:74;;24233:93;24322:3;24233:93;:::i;:::-;24351:2;24346:3;24342:12;24335:19;;23994:366;;;:::o;24366:419::-;24532:4;24570:2;24559:9;24555:18;24547:26;;24619:9;24613:4;24609:20;24605:1;24594:9;24590:17;24583:47;24647:131;24773:4;24647:131;:::i;:::-;24639:139;;24366:419;;;:::o;24791:224::-;24931:34;24927:1;24919:6;24915:14;24908:58;25000:7;24995:2;24987:6;24983:15;24976:32;24791:224;:::o;25021:366::-;25163:3;25184:67;25248:2;25243:3;25184:67;:::i;:::-;25177:74;;25260:93;25349:3;25260:93;:::i;:::-;25378:2;25373:3;25369:12;25362:19;;25021:366;;;:::o;25393:419::-;25559:4;25597:2;25586:9;25582:18;25574:26;;25646:9;25640:4;25636:20;25632:1;25621:9;25617:17;25610:47;25674:131;25800:4;25674:131;:::i;:::-;25666:139;;25393:419;;;:::o;25818:222::-;25958:34;25954:1;25946:6;25942:14;25935:58;26027:5;26022:2;26014:6;26010:15;26003:30;25818:222;:::o;26046:366::-;26188:3;26209:67;26273:2;26268:3;26209:67;:::i;:::-;26202:74;;26285:93;26374:3;26285:93;:::i;:::-;26403:2;26398:3;26394:12;26387:19;;26046:366;;;:::o;26418:419::-;26584:4;26622:2;26611:9;26607:18;26599:26;;26671:9;26665:4;26661:20;26657:1;26646:9;26642:17;26635:47;26699:131;26825:4;26699:131;:::i;:::-;26691:139;;26418:419;;;:::o;26843:225::-;26983:34;26979:1;26971:6;26967:14;26960:58;27052:8;27047:2;27039:6;27035:15;27028:33;26843:225;:::o;27074:366::-;27216:3;27237:67;27301:2;27296:3;27237:67;:::i;:::-;27230:74;;27313:93;27402:3;27313:93;:::i;:::-;27431:2;27426:3;27422:12;27415:19;;27074:366;;;:::o;27446:419::-;27612:4;27650:2;27639:9;27635:18;27627:26;;27699:9;27693:4;27689:20;27685:1;27674:9;27670:17;27663:47;27727:131;27853:4;27727:131;:::i;:::-;27719:139;;27446:419;;;:::o;27871:220::-;28011:34;28007:1;27999:6;27995:14;27988:58;28080:3;28075:2;28067:6;28063:15;28056:28;27871:220;:::o;28097:366::-;28239:3;28260:67;28324:2;28319:3;28260:67;:::i;:::-;28253:74;;28336:93;28425:3;28336:93;:::i;:::-;28454:2;28449:3;28445:12;28438:19;;28097:366;;;:::o;28469:419::-;28635:4;28673:2;28662:9;28658:18;28650:26;;28722:9;28716:4;28712:20;28708:1;28697:9;28693:17;28686:47;28750:131;28876:4;28750:131;:::i;:::-;28742:139;;28469:419;;;:::o;28894:221::-;29034:34;29030:1;29022:6;29018:14;29011:58;29103:4;29098:2;29090:6;29086:15;29079:29;28894:221;:::o;29121:366::-;29263:3;29284:67;29348:2;29343:3;29284:67;:::i;:::-;29277:74;;29360:93;29449:3;29360:93;:::i;:::-;29478:2;29473:3;29469:12;29462:19;;29121:366;;;:::o;29493:419::-;29659:4;29697:2;29686:9;29682:18;29674:26;;29746:9;29740:4;29736:20;29732:1;29721:9;29717:17;29710:47;29774:131;29900:4;29774:131;:::i;:::-;29766:139;;29493:419;;;:::o;29918:182::-;30058:34;30054:1;30046:6;30042:14;30035:58;29918:182;:::o;30106:366::-;30248:3;30269:67;30333:2;30328:3;30269:67;:::i;:::-;30262:74;;30345:93;30434:3;30345:93;:::i;:::-;30463:2;30458:3;30454:12;30447:19;;30106:366;;;:::o;30478:419::-;30644:4;30682:2;30671:9;30667:18;30659:26;;30731:9;30725:4;30721:20;30717:1;30706:9;30702:17;30695:47;30759:131;30885:4;30759:131;:::i;:::-;30751:139;;30478:419;;;:::o;30903:181::-;31043:33;31039:1;31031:6;31027:14;31020:57;30903:181;:::o;31090:366::-;31232:3;31253:67;31317:2;31312:3;31253:67;:::i;:::-;31246:74;;31329:93;31418:3;31329:93;:::i;:::-;31447:2;31442:3;31438:12;31431:19;;31090:366;;;:::o;31462:419::-;31628:4;31666:2;31655:9;31651:18;31643:26;;31715:9;31709:4;31705:20;31701:1;31690:9;31686:17;31679:47;31743:131;31869:4;31743:131;:::i;:::-;31735:139;;31462:419;;;:::o;31887:229::-;32027:34;32023:1;32015:6;32011:14;32004:58;32096:12;32091:2;32083:6;32079:15;32072:37;31887:229;:::o;32122:366::-;32264:3;32285:67;32349:2;32344:3;32285:67;:::i;:::-;32278:74;;32361:93;32450:3;32361:93;:::i;:::-;32479:2;32474:3;32470:12;32463:19;;32122:366;;;:::o;32494:419::-;32660:4;32698:2;32687:9;32683:18;32675:26;;32747:9;32741:4;32737:20;32733:1;32722:9;32718:17;32711:47;32775:131;32901:4;32775:131;:::i;:::-;32767:139;;32494:419;;;:::o
Swarm Source
ipfs://c8efd7e76cb02f566c6f056d12cd6e84588837388279f5f25096fb995416116f
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in GLMR
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.