More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 2,040 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 24165581 | 59 days ago | IN | 0 ETH | 0.00000658 | ||||
| Approve | 24165567 | 59 days ago | IN | 0 ETH | 0.00000169 | ||||
| Approve | 23991962 | 84 days ago | IN | 0 ETH | 0.00000541 | ||||
| Approve | 23653199 | 131 days ago | IN | 0 ETH | 0.00005001 | ||||
| Approve | 23352293 | 173 days ago | IN | 0 ETH | 0.00001152 | ||||
| Approve | 23297803 | 181 days ago | IN | 0 ETH | 0.00005352 | ||||
| Transfer | 23297499 | 181 days ago | IN | 0 ETH | 0.00021342 | ||||
| Transfer | 23297009 | 181 days ago | IN | 0 ETH | 0.00010866 | ||||
| Transfer | 23235786 | 190 days ago | IN | 0 ETH | 0.00012582 | ||||
| Approve | 23093243 | 209 days ago | IN | 0 ETH | 0.00001146 | ||||
| Approve | 23081748 | 211 days ago | IN | 0 ETH | 0.00002157 | ||||
| Transfer | 23074445 | 212 days ago | IN | 0 ETH | 0.00004174 | ||||
| Transfer | 22992176 | 224 days ago | IN | 0 ETH | 0.00006049 | ||||
| Approve | 22944642 | 230 days ago | IN | 0 ETH | 0.00086636 | ||||
| Approve | 22942868 | 230 days ago | IN | 0 ETH | 0.00025491 | ||||
| Approve | 22915602 | 234 days ago | IN | 0 ETH | 0.00017796 | ||||
| Transfer | 22915573 | 234 days ago | IN | 0 ETH | 0.00051549 | ||||
| Approve | 21801328 | 390 days ago | IN | 0 ETH | 0.00003458 | ||||
| Approve | 21728507 | 400 days ago | IN | 0 ETH | 0.00008055 | ||||
| Approve | 21475903 | 436 days ago | IN | 0 ETH | 0.00008546 | ||||
| Transfer | 21456368 | 438 days ago | IN | 0 ETH | 0.00060355 | ||||
| Approve | 21194993 | 475 days ago | IN | 0 ETH | 0.00088194 | ||||
| Approve | 21194974 | 475 days ago | IN | 0 ETH | 0.0008249 | ||||
| Approve | 20829905 | 526 days ago | IN | 0 ETH | 0.00050132 | ||||
| Approve | 20443767 | 580 days ago | IN | 0 ETH | 0.00015097 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 15594164 | 1259 days ago | 0.00000207 ETH | ||||
| Transfer | 15594164 | 1259 days ago | 0.00000207 ETH | ||||
| Transfer | 15594164 | 1259 days ago | 0.00000623 ETH | ||||
| - | 14691881 | 1404 days ago | 0 ETH | ||||
| - | 14691881 | 1404 days ago | 0 ETH | ||||
| - | 14691881 | 1404 days ago | 0.00000002 ETH | ||||
| - | 14326523 | 1461 days ago | 0.00128084 ETH | ||||
| - | 14093935 | 1497 days ago | 0.01202777 ETH | ||||
| - | 14042241 | 1505 days ago | 0.01218755 ETH | ||||
| - | 14026854 | 1507 days ago | 0.01234944 ETH | ||||
| - | 14003282 | 1511 days ago | 0.01251349 ETH | ||||
| - | 13984025 | 1514 days ago | 0.01267972 ETH | ||||
| - | 13951614 | 1519 days ago | 0.01284815 ETH | ||||
| - | 13932994 | 1522 days ago | 0.01301882 ETH | ||||
| - | 13910424 | 1525 days ago | 0.00065207 ETH | ||||
| - | 13910424 | 1525 days ago | 0.00065207 ETH | ||||
| - | 13910424 | 1525 days ago | 0.00195621 ETH | ||||
| - | 13903670 | 1527 days ago | 0.01291833 ETH | ||||
| - | 13870607 | 1532 days ago | 0.01308706 ETH | ||||
| - | 13855572 | 1534 days ago | 0.01325778 ETH | ||||
| - | 13832386 | 1538 days ago | 0.01343037 ETH | ||||
| - | 13816642 | 1540 days ago | 0.01360521 ETH | ||||
| - | 13797814 | 1543 days ago | 0.01378232 ETH | ||||
| - | 13775239 | 1546 days ago | 0.01396174 ETH | ||||
| - | 13756393 | 1549 days ago | 0.01414349 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ClienteleCoin
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2021-07-18
*/
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.4;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
contract Ownable is Context {
address private _owner;
address private _previousOwner;
uint256 private _lockTime;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
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 {
emit OwnershipTransferred(_owner, address(0));
_owner = 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");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
function getUnlockTime() public view returns (uint256) {
return _lockTime;
}
//Added function
// 1 minute = 60
// 1h 3600
// 24h 86400
// 1w 604800
function getTime() public view returns (uint256) {
return block.timestamp;
}
function lock(uint256 time) public virtual onlyOwner {
_previousOwner = _owner;
_owner = address(0);
_lockTime = block.timestamp + time;
emit OwnershipTransferred(_owner, address(0));
}
function unlock() public virtual {
require(_previousOwner == msg.sender, "You don't have permission to unlock");
require(block.timestamp > _lockTime, "Contract is locked until 7 days");
emit OwnershipTransferred(_owner, _previousOwner);
_owner = _previousOwner;
}
}
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
// pointer aliasing, and it cannot be disabled.
// The values being non-zero value makes deployment a bit more expensive,
// but in exchange the refund on every call to nonReentrant will be lower in
// amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to
// increase the likelihood of the full refund coming into effect.
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
constructor() internal {
_status = _NOT_ENTERED;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and make it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
// On the first call to nonReentrant, _notEntered will be true
require(_status != _ENTERED, "nonReentrant:: reentrant call");
// Any calls to nonReentrant after this point will fail
_status = _ENTERED;
_;
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = _NOT_ENTERED;
}
modifier isHuman() {
require(tx.origin == msg.sender, "isHuman:: sorry humans only");
_;
}
}
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
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);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
using SafeMath for uint256;
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 9;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `recipient` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Emits an {Approval} event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of {ERC20}.
*
* Requirements:
*
* - `sender` and `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
* - the caller must have allowance for ``sender``'s tokens of at least
* `amount`.
*/
function transferFrom(
address sender,
address recipient,
uint256 amount
) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
/**
* @dev Atomically increases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(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) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
/**
* @dev Moves tokens `amount` from `sender` to `recipient`.
*
* This is internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* Requirements:
*
* - `sender` cannot be the zero address.
* - `recipient` cannot be the zero address.
* - `sender` must have a balance of at least `amount`.
*/
function _transfer(
address sender,
address recipient,
uint256 amount
) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(sender, recipient, amount);
_balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
}
/** @dev Creates `amount` tokens and assigns them to `account`, increasing
* the total supply.
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply = _totalSupply.add(amount);
_balances[account] = _balances[account].add(amount);
emit Transfer(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);
_balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
_totalSupply = _totalSupply.sub(amount);
emit Transfer(account, address(0), amount);
}
/**
* @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
*
* This internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*/
function _approve(
address owner,
address spender,
uint256 amount
) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
/**
* @dev Hook that is called before any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* will be to 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 {}
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
return c;
}
}
interface IUniswapV2Factory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint256);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB) external view returns (address pair);
function allPairs(uint256) external view returns (address pair);
function allPairsLength() external view returns (uint256);
function createPair(address tokenA, address tokenB) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint256 value);
event Transfer(address indexed from, address indexed to, uint256 value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint256);
function balanceOf(address owner) external view returns (uint256);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 value) external returns (bool);
function transfer(address to, uint256 value) external returns (bool);
function transferFrom(
address from,
address to,
uint256 value
) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint256);
function permit(
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) external;
event Mint(address indexed sender, uint256 amount0, uint256 amount1);
event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to);
event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint256);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves()
external
view
returns (
uint112 reserve0,
uint112 reserve1,
uint32 blockTimestampLast
);
function price0CumulativeLast() external view returns (uint256);
function price1CumulativeLast() external view returns (uint256);
function kLast() external view returns (uint256);
function mint(address to) external returns (uint256 liquidity);
function burn(address to) external returns (uint256 amount0, uint256 amount1);
function swap(
uint256 amount0Out,
uint256 amount1Out,
address to,
bytes calldata data
) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint256 amountADesired,
uint256 amountBDesired,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline
)
external
returns (
uint256 amountA,
uint256 amountB,
uint256 liquidity
);
function addLiquidityETH(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
)
external
payable
returns (
uint256 amountToken,
uint256 amountETH,
uint256 liquidity
);
function removeLiquidity(
address tokenA,
address tokenB,
uint256 liquidity,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline
) external returns (uint256 amountA, uint256 amountB);
function removeLiquidityETH(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
) external returns (uint256 amountToken, uint256 amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint256 liquidity,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline,
bool approveMax,
uint8 v,
bytes32 r,
bytes32 s
) external returns (uint256 amountA, uint256 amountB);
function removeLiquidityETHWithPermit(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline,
bool approveMax,
uint8 v,
bytes32 r,
bytes32 s
) external returns (uint256 amountToken, uint256 amountETH);
function swapExactTokensForTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function swapTokensForExactTokens(
uint256 amountOut,
uint256 amountInMax,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function swapExactETHForTokens(
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external payable returns (uint256[] memory amounts);
function swapTokensForExactETH(
uint256 amountOut,
uint256 amountInMax,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function swapExactTokensForETH(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function swapETHForExactTokens(
uint256 amountOut,
address[] calldata path,
address to,
uint256 deadline
) external payable returns (uint256[] memory amounts);
function quote(
uint256 amountA,
uint256 reserveA,
uint256 reserveB
) external pure returns (uint256 amountB);
function getAmountOut(
uint256 amountIn,
uint256 reserveIn,
uint256 reserveOut
) external pure returns (uint256 amountOut);
function getAmountIn(
uint256 amountOut,
uint256 reserveIn,
uint256 reserveOut
) external pure returns (uint256 amountIn);
function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts);
function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
) external returns (uint256 amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline,
bool approveMax,
uint8 v,
bytes32 r,
bytes32 s
) external returns (uint256 amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
}
contract ClienteleCoin is ERC20, Ownable, ReentrancyGuard {
using SafeMath for uint256;
//AMM swap settings
IUniswapV2Router02 public uniswapV2Router;
address public immutable uniswapV2Pair;
uint256 public liquidateTokensAtAmount = 1000 * (10**9);
//Token info
uint256 public constant TOTAL_SUPPLY = 137000000000000 * (10**9);
//Transfer delay info
bool public TDEnabled = false;
uint256 public TD = 30 minutes;
mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
mapping(address => uint256) private _soldTimes;
mapping(address => uint256) private _boughtTimes;
//Tax info
bool _feesEnabled = true;
uint256 public constant ETH_REWARDS_FEE = 25;
uint256 public constant MARKETING_FEE = 25;
uint256 public constant DEV_FEE = 25;
uint256 public impactFee = 200;
uint256 public constant TOTAL_FEES = ETH_REWARDS_FEE + MARKETING_FEE + DEV_FEE;
address public devWallet = 0x395DA634618C39675b560Aa5d321966672D6DC71;
address public marketingWallet = 0xD7F7e7C412824C6f4F107453068e7c8062B0B488;
address private _airdropAddress = 0xAcfE101cA7E2bc9Ee6a76Deaa9Bc6C9DAb0b5481;
mapping(address => bool) private _isExcludedFromFees;
uint256 public impactThreshold = 50;
bool public priceImpactFeeDisabled = true;
// Claiming info
mapping(address => uint256) public nextAvailableClaimDate;
uint256 public rewardCycleBlock = 2 days;
uint256 threshHoldTopUpRate = 2;
bool private liquidating = false;
event UpdatedUniswapV2Router(address indexed newAddress, address indexed oldAddress);
event CycleBlockUpdated(uint256 indexed newBlock, uint256 indexed OldBlock);
event ImpactFeeUpdated(uint256 indexed newFee, uint256 indexed oldFee);
event ThresholdFeeUpdated(uint256 indexed newThreshold, uint256 indexed oldThreshold);
event ImpactFeeDisableUpdated(bool indexed value);
event LiquidationThresholdUpdated(uint256 indexed newValue, uint256 indexed oldValue);
event TaxDistributed(uint256 tokensSwapped, uint256 ethReceived, uint256 rewardPoolGot, uint256 devGot, uint256 marketingGot);
event ClaimSuccessfully(address recipient, uint256 ethReceived, uint256 nextAvailableClaimDate);
constructor(address routerAddress) ERC20("ClienteleCoin", "CLT") {
//set amm info
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(routerAddress);
address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
uniswapV2Router = _uniswapV2Router;
uniswapV2Pair = _uniswapV2Pair;
// exclude from paying fees or having max transaction amount
excludeFromFees(owner());
excludeFromFees(address(this));
// mint tokens
_mint(owner(), TOTAL_SUPPLY);
}
receive() external payable {}
function updateUniswapV2Router(address newAddress) public onlyOwner {
require(newAddress != address(uniswapV2Router), "CLT: The router already has that address");
emit UpdatedUniswapV2Router(newAddress, address(uniswapV2Router));
uniswapV2Router = IUniswapV2Router02(newAddress);
}
function enableFees() public onlyOwner {
_feesEnabled = true;
}
function disableFees() public onlyOwner {
_feesEnabled = false;
}
function updateliquidateTokensAtAmount(uint256 newValue) public onlyOwner {
liquidateTokensAtAmount = newValue;
}
function updateAirdropAddress(address airdropAddress) public onlyOwner {
_airdropAddress = airdropAddress;
}
function updateRewardCycleBlock(uint256 newBlock) public onlyOwner {
emit CycleBlockUpdated(newBlock, rewardCycleBlock);
rewardCycleBlock = newBlock;
}
function updateImpactThreshold(uint256 newValue) public onlyOwner {
emit ThresholdFeeUpdated(newValue, impactThreshold);
impactThreshold = newValue;
}
function updateImpactFee(uint256 newValue) public onlyOwner {
emit ImpactFeeUpdated(newValue, impactFee);
impactFee = newValue;
}
function updateImpactFeeDisabled(bool newValue) public onlyOwner {
emit ImpactFeeDisableUpdated(newValue);
priceImpactFeeDisabled = newValue;
}
function excludeFromFees(address account) public onlyOwner {
_isExcludedFromFees[account] = true;
}
function includeToFees(address account) public onlyOwner {
_isExcludedFromFees[account] = false;
}
function updateLiquidationThreshold(uint256 newValue) external onlyOwner {
emit LiquidationThresholdUpdated(newValue, liquidateTokensAtAmount);
liquidateTokensAtAmount = newValue;
}
function activateTD() external onlyOwner {
TDEnabled = true;
}
function DisableTD() external onlyOwner {
TDEnabled = false;
}
function setTDTime(uint256 delay) public onlyOwner returns (bool) {
TD = delay; // in seconds
return true;
}
function getPriceImpactFee(uint256 amount) public view returns (uint256) {
if (priceImpactFeeDisabled) return 0;
IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
address token0 = pair.token0();
address token1 = pair.token1();
uint256 reserve0;
uint256 reserve1;
if (token0 == address(this)) {
(reserve1, reserve0, ) = pair.getReserves();
} else if (token1 == address(this)) {
(reserve0, reserve1, ) = pair.getReserves();
}
if (reserve0 == 0 && reserve1 == 0) {
// check liquidity has ever been added or not. if not, the function will return zero impact
return 0;
}
uint256 amountB = uniswapV2Router.getAmountIn(amount, reserve0, reserve1);
uint256 priceImpact = reserve0.sub(reserve0.sub(amountB)).mul(10000) / reserve0;
if (priceImpact >= impactThreshold) {
return impactFee;
}
return 0;
}
function _transfer(
address from,
address to,
uint256 amount
) internal override {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
if (amount == 0) {
super._transfer(from, to, 0);
return;
}
//check if tx delay enabled, the sender should wait until the delay passess
if (TDEnabled && !liquidating) {
if (from == address(uniswapV2Pair)) {
uint256 multiplier = _boughtTimes[to] == 1 ? 2 : 1;
require(
(_holderLastTransferTimestamp[to].add(TD.mul(multiplier)) <= block.timestamp) || _isExcludedFromFees[to],
"_transfer:: Transfer Delay enabled. Please try again after the tx block passess"
);
_holderLastTransferTimestamp[to] = block.timestamp;
_boughtTimes[to] = _boughtTimes[to] + 1;
} else if (to == address(uniswapV2Pair)) {
uint256 multiplier = _soldTimes[from] == 1 ? 2 : 1;
require(
(_holderLastTransferTimestamp[from].add(TD.mul(multiplier)) <= block.timestamp) || _isExcludedFromFees[from],
"_transfer:: Transfer Delay enabled. Please try again after the tx block passess"
);
_holderLastTransferTimestamp[from] = block.timestamp;
_soldTimes[to] = _soldTimes[to] + 1;
} else {
require(
(_holderLastTransferTimestamp[from].add(TD.mul(2)) <= block.timestamp) || _isExcludedFromFees[from],
"_transfer:: Transfer Delay enabled. Please try again after the tx block passess"
);
_holderLastTransferTimestamp[from] = block.timestamp;
}
}
//if tokens came from airdrop wallet, then add anti-dump transfer delay for recepients
if (from == _airdropAddress) {
_holderLastTransferTimestamp[to] = block.timestamp + 2 hours;
}
//check the contract balance > swap amount threshold,
//then do it and distribute rewards to the reward pool, dev, markting wallet
//distribution won't work in case a transfer is from uni
uint256 contractTokenBalance = balanceOf(address(this));
bool canSwap = contractTokenBalance >= liquidateTokensAtAmount;
if (canSwap && from != address(uniswapV2Pair)) swapAndDistributeRewards(contractTokenBalance);
//fee is being taken only from buy/sells
//also avoid fees on liquidation
bool takeFee = false;
if ((to == address(uniswapV2Pair) && !_isExcludedFromFees[from]) || (from == address(uniswapV2Pair) && !_isExcludedFromFees[to])) {
takeFee = true;
}
if (liquidating) takeFee = false;
//main fee taking logic
if (takeFee && _feesEnabled) {
//calculate fees and send amount
uint256 rewardPoolAmount = amount.mul(ETH_REWARDS_FEE).div(1000);
uint256 marketingAmount = amount.mul(MARKETING_FEE).div(1000);
uint256 devAmount = amount.mul(DEV_FEE).div(1000);
uint256 priceFee = getPriceImpactFee(amount.sub(rewardPoolAmount).sub(marketingAmount).sub(devAmount));
uint256 impactFeeAmount = amount.mul(priceFee).div(1000);
uint256 sendAmount = amount.sub(rewardPoolAmount).sub(marketingAmount).sub(devAmount);
//avoid stack problem
sendAmount = sendAmount.sub(impactFeeAmount);
uint256 taxAmount = amount.sub(sendAmount);
//check if fees and send amount are correct
require(amount == sendAmount.add(taxAmount), "CLT::transfer: Tax value invalid");
//transfer tax to the contract wallet
super._transfer(from, address(this), taxAmount);
//remained tokens will be transferred to the recipient
amount = sendAmount;
}
//block
topUpClaimCycleAfterTransfer(to, amount);
super._transfer(from, to, amount);
}
function swapAndDistributeRewards(uint256 tokens) private {
//NOTE: do smth with the correct part management
// capture the contract's current ETH balance.
// this is so that we can capture exactly the amount of ETH that the
// swap creates, and not make the liquidity event include any ETH that
// has been manually sent to the contract
uint256 initialBalance = address(this).balance;
if (!liquidating) {
liquidating = true;
swapTokensForEth(tokens);
// how much eth should we distribute
uint256 newBalance = address(this).balance.sub(initialBalance);
//split the contract balance into three parts
uint256 toRewardPool = newBalance.div(3);
uint256 toDevWallet = toRewardPool;
uint256 toMarketingWallet = newBalance.sub(toDevWallet).sub(toRewardPool);
//reward pool eth stay on the contract
address(marketingWallet).call{value: toMarketingWallet}("");
address(devWallet).call{value: toDevWallet}("");
liquidating = false;
emit TaxDistributed(tokens, newBalance, toRewardPool, toDevWallet, toMarketingWallet);
}
}
function swapTokensForEth(uint256 tokenAmount) private {
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
// make the swap
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this),
block.timestamp
);
}
//to do add to claim cycle after receiving
function calculateReward(address ofAddress) public view returns (uint256) {
uint256 totalSupply = totalSupply().sub(balanceOf(address(0))).sub(balanceOf(0x000000000000000000000000000000000000dEaD)).sub(balanceOf(address(uniswapV2Pair))); // exclude burned wallets //and uni pair
uint256 poolValue = address(this).balance;
uint256 currentBalance = balanceOf(address(ofAddress));
uint256 reward = poolValue.mul(currentBalance).div(totalSupply);
return reward;
}
function claimReward() public isHuman nonReentrant {
require(nextAvailableClaimDate[msg.sender] <= block.timestamp, "Error: next available not reached");
require(balanceOf(msg.sender) >= 0, "Error: must own token to claim reward");
uint256 reward = calculateReward(msg.sender);
// update rewardCycleBlock
nextAvailableClaimDate[msg.sender] = block.timestamp + rewardCycleBlock;
emit ClaimSuccessfully(msg.sender, reward, nextAvailableClaimDate[msg.sender]);
(bool sent, ) = address(msg.sender).call{value: reward}("");
require(sent, "Error: Cannot withdraw reward");
}
function topUpClaimCycleAfterTransfer(address recipient, uint256 amount) private {
uint256 currentRecipientBalance = balanceOf(recipient);
uint256 additionalBlock = 0;
if (nextAvailableClaimDate[recipient] + rewardCycleBlock < block.timestamp) nextAvailableClaimDate[recipient] = block.timestamp;
//if a user has zero balance, just regular rewardCycleBlock will be applied
if (currentRecipientBalance > 0) {
uint256 rate = amount.mul(100).div(currentRecipientBalance);
if (uint256(rate) >= threshHoldTopUpRate) {
uint256 incurCycleBlock = rewardCycleBlock.mul(uint256(rate)).div(100);
if (incurCycleBlock >= rewardCycleBlock) {
incurCycleBlock = rewardCycleBlock;
}
additionalBlock = incurCycleBlock;
}
} else {
nextAvailableClaimDate[recipient] = nextAvailableClaimDate[recipient] + rewardCycleBlock;
}
nextAvailableClaimDate[recipient] = nextAvailableClaimDate[recipient] + additionalBlock;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"nextAvailableClaimDate","type":"uint256"}],"name":"ClaimSuccessfully","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newBlock","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"OldBlock","type":"uint256"}],"name":"CycleBlockUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"ImpactFeeDisableUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldFee","type":"uint256"}],"name":"ImpactFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"LiquidationThresholdUpdated","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":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"rewardPoolGot","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"devGot","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketingGot","type":"uint256"}],"name":"TaxDistributed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newThreshold","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldThreshold","type":"uint256"}],"name":"ThresholdFeeUpdated","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":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdatedUniswapV2Router","type":"event"},{"inputs":[],"name":"DEV_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DisableTD","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ETH_REWARDS_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MARKETING_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TDEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOTAL_FEES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOTAL_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activateTD","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":"address","name":"ofAddress","type":"address"}],"name":"calculateReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimReward","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":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getPriceImpactFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"impactFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"impactThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeToFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidateTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nextAvailableClaimDate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceImpactFeeDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardCycleBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"delay","type":"uint256"}],"name":"setTDTime","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"airdropAddress","type":"address"}],"name":"updateAirdropAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"updateImpactFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"updateImpactFeeDisabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"updateImpactThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"updateLiquidationThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBlock","type":"uint256"}],"name":"updateRewardCycleBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateUniswapV2Router","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"updateliquidateTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60a060405264e8d4a51000600a55600b805460ff19908116909155610708600c55601080548216600190811790915560c8601155601280546001600160a01b031990811673395da634618c39675b560aa5d321966672d6dc711790915560138054821673d7f7e7c412824c6f4f107453068e7c8062b0b4881790556014805490911673acfe101ca7e2bc9ee6a76deaa9bc6c9dab0b5481179055603260165560178054831690911790556202a3006019556002601a55601b80549091169055348015620000cb57600080fd5b50604051620033cc380380620033cc833981016040819052620000ee9162000669565b6040518060400160405280600d81526020016c21b634b2b73a32b632a1b7b4b760991b8152506040518060400160405280600381526020016210d31560ea1b815250816003908051906020019062000148929190620005c3565b5080516200015e906004906020840190620005c3565b505050600062000173620003d560201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600160088190555060008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200020a57600080fd5b505afa1580156200021f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000245919062000669565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200028e57600080fd5b505afa158015620002a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c9919062000669565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200031257600080fd5b505af115801562000327573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034d919062000669565b600980546001600160a01b0319166001600160a01b038516179055606081901b6001600160601b031916608052905062000399620003936005546001600160a01b031690565b620003d9565b620003a430620003d9565b620003cc620003bb6005546001600160a01b031690565b691d02c8edfee423a000006200045d565b505050620006f4565b3390565b6005546001600160a01b03163314620004395760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03166000908152601560205260409020805460ff19166001179055565b6001600160a01b038216620004b55760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000430565b620004d1816002546200055960201b620019521790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620005049183906200195262000559821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60008062000568838562000692565b905083811015620005bc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000430565b9392505050565b828054620005d190620006b7565b90600052602060002090601f016020900481019282620005f5576000855562000640565b82601f106200061057805160ff191683800117855562000640565b8280016001018555821562000640579182015b828111156200064057825182559160200191906001019062000623565b506200064e92915062000652565b5090565b5b808211156200064e576000815560010162000653565b6000602082840312156200067b578081fd5b81516001600160a01b0381168114620005bc578182fd5b60008219821115620006b257634e487b7160e01b81526011600452602481fd5b500190565b600181811c90821680620006cc57607f821691505b60208210811415620006ee57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160601c612c8862000744600039600081816104ec01528181610e6f0152818161172d01528181611b5b01528181611c8d01528181611e9301528181611eda0152611f3a0152612c886000f3fe60806040526004361061031e5760003560e01c806375722434116101ab578063a457c2d7116100f7578063ce404b2311610095578063dd4670641161006f578063dd46706414610893578063dd62ed3e146108b3578063e57f14e1146108f9578063f2fde38b1461091957600080fd5b8063ce404b231461083e578063d3b5be1a14610853578063d82e39621461087357600080fd5b8063af3e2122116100d1578063af3e212214610454578063b47fd563146107e6578063b88a802f14610813578063c816e4b61461082857600080fd5b8063a457c2d714610791578063a69df4b5146107b1578063a9059cbb146107c657600080fd5b80638da5cb5b1161016457806392ca1e8d1161013e57806392ca1e8d1461073157806395d89b4114610746578063966f41a21461075b5780639c21a9b81461077b57600080fd5b80638da5cb5b146106d55780638ea5220f146106f3578063902d55a51461071357600080fd5b8063757224341461063057806375f0a8741461064a5780637b5db6611461066a5780637cd09f921461068a5780638263a8d61461069f57806389b6e25e146106b557600080fd5b8063436a88c11161026a578063602bc62b1161022357806370a08231116101fd57806370a08231146105c5578063715018a6146105e55780637217f4bc146105fa57806372ba4df51461061057600080fd5b8063602bc62b1461057057806365b8dbc0146105855780636b292d37146105a557600080fd5b8063436a88c11461045457806349bd5a5e146104da5780635007de651461050e57806353adf85c14610528578063557ed1ba1461053d5780635907bd191461055057600080fd5b80632116a4ae116102d7578063313ce567116102b1578063313ce56714610469578063368f5bd514610485578063395093511461049a5780634116d15d146104ba57600080fd5b80632116a4ae1461041457806323b872dd146104345780632d17f2691461045457600080fd5b80630496a34d1461032a57806306fdde031461034c578063095ea7b3146103775780631694505e146103a757806318160ddd146103df5780631faaddf3146103fe57600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061034a6103453660046128c2565b610939565b005b34801561035857600080fd5b5061036161099f565b60405161036e91906128f2565b60405180910390f35b34801561038357600080fd5b50610397610392366004612829565b610a31565b604051901515815260200161036e565b3480156103b357600080fd5b506009546103c7906001600160a01b031681565b6040516001600160a01b03909116815260200161036e565b3480156103eb57600080fd5b506002545b60405190815260200161036e565b34801561040a57600080fd5b506103f060115481565b34801561042057600080fd5b5061039761042f3660046128c2565b610a48565b34801561044057600080fd5b5061039761044f3660046127e9565b610a83565b34801561046057600080fd5b506103f0601981565b34801561047557600080fd5b506040516009815260200161036e565b34801561049157600080fd5b5061034a610aec565b3480156104a657600080fd5b506103976104b5366004612829565b610b25565b3480156104c657600080fd5b5061034a6104d53660046128c2565b610b5b565b3480156104e657600080fd5b506103c77f000000000000000000000000000000000000000000000000000000000000000081565b34801561051a57600080fd5b50600b546103979060ff1681565b34801561053457600080fd5b5061034a610bb8565b34801561054957600080fd5b50426103f0565b34801561055c57600080fd5b5061034a61056b3660046128c2565b610bee565b34801561057c57600080fd5b506007546103f0565b34801561059157600080fd5b5061034a6105a0366004612779565b610c4b565b3480156105b157600080fd5b5061034a6105c0366004612779565b610d41565b3480156105d157600080fd5b506103f06105e0366004612779565b610d8d565b3480156105f157600080fd5b5061034a610da8565b34801561060657600080fd5b506103f060195481565b34801561061c57600080fd5b5061034a61062b366004612779565b610e0a565b34801561063c57600080fd5b506017546103979060ff1681565b34801561065657600080fd5b506013546103c7906001600160a01b031681565b34801561067657600080fd5b506103f06106853660046128c2565b610e55565b34801561069657600080fd5b5061034a6111ab565b3480156106ab57600080fd5b506103f060165481565b3480156106c157600080fd5b5061034a6106d03660046128c2565b6111e4565b3480156106e157600080fd5b506005546001600160a01b03166103c7565b3480156106ff57600080fd5b506012546103c7906001600160a01b031681565b34801561071f57600080fd5b506103f0691d02c8edfee423a0000081565b34801561073d57600080fd5b506103f0611213565b34801561075257600080fd5b5061036161122c565b34801561076757600080fd5b5061034a610776366004612854565b61123b565b34801561078757600080fd5b506103f0600c5481565b34801561079d57600080fd5b506103976107ac366004612829565b6112a5565b3480156107bd57600080fd5b5061034a6112f4565b3480156107d257600080fd5b506103976107e1366004612829565b6113fc565b3480156107f257600080fd5b506103f0610801366004612779565b60186020526000908152604090205481565b34801561081f57600080fd5b5061034a611409565b34801561083457600080fd5b506103f0600a5481565b34801561084a57600080fd5b5061034a61168f565b34801561085f57600080fd5b5061034a61086e3660046128c2565b6116c5565b34801561087f57600080fd5b506103f061088e366004612779565b611722565b34801561089f57600080fd5b5061034a6108ae3660046128c2565b6117a6565b3480156108bf57600080fd5b506103f06108ce3660046127b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561090557600080fd5b5061034a610914366004612779565b61182b565b34801561092557600080fd5b5061034a610934366004612779565b611879565b6005546001600160a01b0316331461096c5760405162461bcd60e51b815260040161096390612988565b60405180910390fd5b60165460405182907f45f855674a81ee4a043e3eadaffb44a6e1f0df2ef0c510f52ff5d2cc7dbc969490600090a3601655565b6060600380546109ae90612b56565b80601f01602080910402602001604051908101604052809291908181526020018280546109da90612b56565b8015610a275780601f106109fc57610100808354040283529160200191610a27565b820191906000526020600020905b815481529060010190602001808311610a0a57829003601f168201915b5050505050905090565b6000610a3e3384846119b8565b5060015b92915050565b6005546000906001600160a01b03163314610a755760405162461bcd60e51b815260040161096390612988565b50600c81905560015b919050565b6000610a90848484611add565b610ae28433610add85604051806060016040528060288152602001612be6602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906120df565b6119b8565b5060019392505050565b6005546001600160a01b03163314610b165760405162461bcd60e51b815260040161096390612988565b6010805460ff19166001179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a3e918590610add9086611952565b6005546001600160a01b03163314610b855760405162461bcd60e51b815260040161096390612988565b60115460405182907f3e598abbf839fb9f42cbf366b55a140e583506553980c23c68379f3566c5859d90600090a3601155565b6005546001600160a01b03163314610be25760405162461bcd60e51b815260040161096390612988565b600b805460ff19169055565b6005546001600160a01b03163314610c185760405162461bcd60e51b815260040161096390612988565b60195460405182907fe7cda9606ff2f769167fdf0eb6c612cddb2317d2808071755beebedd723cd3a690600090a3601955565b6005546001600160a01b03163314610c755760405162461bcd60e51b815260040161096390612988565b6009546001600160a01b0382811691161415610ce45760405162461bcd60e51b815260206004820152602860248201527f434c543a2054686520726f7574657220616c7265616479206861732074686174604482015267206164647265737360c01b6064820152608401610963565b6009546040516001600160a01b03918216918316907fcd2acde3ae4de754da8074077404027fae40be67d89638ee1ceca2427883da7d90600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d6b5760405162461bcd60e51b815260040161096390612988565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610dd25760405162461bcd60e51b815260040161096390612988565b6005546040516000916001600160a01b031690600080516020612c0e833981519152908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610e345760405162461bcd60e51b815260040161096390612988565b6001600160a01b03166000908152601560205260409020805460ff19169055565b60175460009060ff1615610e6b57506000919050565b60007f000000000000000000000000000000000000000000000000000000000000000090506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610ecb57600080fd5b505afa158015610edf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f039190612795565b90506000826001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015610f4057600080fd5b505afa158015610f54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f789190612795565b90506000806001600160a01b03841630141561101557846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610fc757600080fd5b505afa158015610fdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fff9190612874565b506001600160701b0390811693501690506110a9565b6001600160a01b0383163014156110a957846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561105f57600080fd5b505afa158015611073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110979190612874565b506001600160701b0391821693501690505b811580156110b5575080155b156110c7575060009695505050505050565b6009546040516385f8c25960e01b81526004810189905260248101849052604481018390526000916001600160a01b0316906385f8c2599060640160206040518083038186803b15801561111a57600080fd5b505afa15801561112e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115291906128da565b905060008361117761271061117161116a8487612119565b8890612119565b9061215b565b6111819190612b00565b9050601654811061119c575050601154979650505050505050565b50600098975050505050505050565b6005546001600160a01b031633146111d55760405162461bcd60e51b815260040161096390612988565b600b805460ff19166001179055565b6005546001600160a01b0316331461120e5760405162461bcd60e51b815260040161096390612988565b600a55565b601961121f8180612ae8565b6112299190612ae8565b81565b6060600480546109ae90612b56565b6005546001600160a01b031633146112655760405162461bcd60e51b815260040161096390612988565b604051811515907f55c19e5f01f19b1320171e8b80e3926c38efd7f66c3ef89f45defdf6c2122b7b90600090a26017805460ff1916911515919091179055565b6000610a3e3384610add85604051806060016040528060258152602001612c2e602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906120df565b6006546001600160a01b0316331461135a5760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610963565b60075442116113ab5760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610963565b6006546005546040516001600160a01b039283169290911690600080516020612c0e83398151915290600090a3600654600580546001600160a01b0319166001600160a01b03909216919091179055565b6000610a3e338484611add565b3233146114585760405162461bcd60e51b815260206004820152601b60248201527f697348756d616e3a3a20736f7272792068756d616e73206f6e6c7900000000006044820152606401610963565b600260085414156114ab5760405162461bcd60e51b815260206004820152601d60248201527f6e6f6e5265656e7472616e743a3a207265656e7472616e742063616c6c0000006044820152606401610963565b6002600855336000908152601860205260409020544210156115195760405162461bcd60e51b815260206004820152602160248201527f4572726f723a206e65787420617661696c61626c65206e6f74207265616368656044820152601960fa1b6064820152608401610963565b600061152433610d8d565b10156115805760405162461bcd60e51b815260206004820152602560248201527f4572726f723a206d757374206f776e20746f6b656e20746f20636c61696d2072604482015264195dd85c9960da1b6064820152608401610963565b600061158b33611722565b90506019544261159b9190612ae8565b33600081815260186020908152604091829020849055815192835282018490528101919091527f25aee98a65c97a4eccb09abe48315f60cd987890080434e094a7fca39a3d84689060600160405180910390a1604051600090339083908381818185875af1925050503d8060008114611630576040519150601f19603f3d011682016040523d82523d6000602084013e611635565b606091505b50509050806116865760405162461bcd60e51b815260206004820152601d60248201527f4572726f723a2043616e6e6f74207769746864726177207265776172640000006044820152606401610963565b50506001600855565b6005546001600160a01b031633146116b95760405162461bcd60e51b815260040161096390612988565b6010805460ff19169055565b6005546001600160a01b031633146116ef5760405162461bcd60e51b815260040161096390612988565b600a5460405182907fcdadd717dc9ee3550a289071d1af75e229726888d51e3a31c9e3dfc693d4852b90600090a3600a55565b6000806117766117517f0000000000000000000000000000000000000000000000000000000000000000610d8d565b61177061175f61dead610d8d565b61177061176c6000610d8d565b6002545b90612119565b905047600061178485610d8d565b9050600061179c84611796858561215b565b906121da565b9695505050505050565b6005546001600160a01b031633146117d05760405162461bcd60e51b815260040161096390612988565b60058054600680546001600160a01b03199081166001600160a01b038416179091551690556117ff8142612ae8565b6007556005546040516000916001600160a01b031690600080516020612c0e833981519152908390a350565b6005546001600160a01b031633146118555760405162461bcd60e51b815260040161096390612988565b6001600160a01b03166000908152601560205260409020805460ff19166001179055565b6005546001600160a01b031633146118a35760405162461bcd60e51b815260040161096390612988565b6001600160a01b0381166119085760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610963565b6005546040516001600160a01b03808416921690600080516020612c0e83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b60008061195f8385612ae8565b9050838110156119b15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610963565b9392505050565b6001600160a01b038316611a1a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610963565b6001600160a01b038216611a7b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610963565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611b035760405162461bcd60e51b8152600401610963906129bd565b6001600160a01b038216611b295760405162461bcd60e51b815260040161096390612945565b80611b3f57611b3a8383600061221c565b505050565b600b5460ff168015611b545750601b5460ff16155b15611e38577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161415611c8b576001600160a01b0382166000908152600f6020526040812054600114611bba576001611bbd565b60025b60ff16905042611bfa611bdb83600c5461215b90919063ffffffff16565b6001600160a01b0386166000908152600d602052604090205490611952565b111580611c1f57506001600160a01b03831660009081526015602052604090205460ff165b611c3b5760405162461bcd60e51b815260040161096390612a02565b6001600160a01b0383166000908152600d60209081526040808320429055600f909152902054611c6c906001612ae8565b6001600160a01b0384166000908152600f602052604090205550611e38565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611dc1576001600160a01b0383166000908152600e6020526040812054600114611cec576001611cef565b60025b60ff16905042611d2c611d0d83600c5461215b90919063ffffffff16565b6001600160a01b0387166000908152600d602052604090205490611952565b111580611d5157506001600160a01b03841660009081526015602052604090205460ff165b611d6d5760405162461bcd60e51b815260040161096390612a02565b6001600160a01b038085166000908152600d602090815260408083204290559286168252600e90522054611da2906001612ae8565b6001600160a01b0384166000908152600e602052604090205550611e38565b42611ddb611bdb6002600c5461215b90919063ffffffff16565b111580611e0057506001600160a01b03831660009081526015602052604090205460ff165b611e1c5760405162461bcd60e51b815260040161096390612a02565b6001600160a01b0383166000908152600d602052604090204290555b6014546001600160a01b0384811691161415611e7457611e5a42611c20612ae8565b6001600160a01b0383166000908152600d60205260409020555b6000611e7f30610d8d565b600a5490915081108015908190611ec857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b15611ed657611ed682612325565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316148015611f3257506001600160a01b03861660009081526015602052604090205460ff16155b80611f9257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b0316148015611f9257506001600160a01b03851660009081526015602052604090205460ff16155b15611f9b575060015b601b5460ff1615611faa575060005b808015611fb9575060105460ff165b156120c2576000611fd16103e861179687601961215b565b90506000611fe66103e861179688601961215b565b90506000611ffb6103e861179689601961215b565b905060006120126106858361177086818d8a612119565b905060006120266103e86117968b8561215b565b9050600061203a8461177087818e8b612119565b90506120468183612119565b905060006120548b83612119565b90506120608282611952565b8b146120ae5760405162461bcd60e51b815260206004820181905260248201527f434c543a3a7472616e736665723a205461782076616c756520696e76616c69646044820152606401610963565b6120b98d308361221c565b50985050505050505b6120cc8585612482565b6120d786868661221c565b505050505050565b600081848411156121035760405162461bcd60e51b815260040161096391906128f2565b5060006121108486612b3f565b95945050505050565b60006119b183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120df565b60008261216a57506000610a42565b60006121768385612b20565b9050826121838583612b00565b146119b15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610963565b60006119b183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125b7565b6001600160a01b0383166122425760405162461bcd60e51b8152600401610963906129bd565b6001600160a01b0382166122685760405162461bcd60e51b815260040161096390612945565b6122a581604051806060016040528060268152602001612bc0602691396001600160a01b03861660009081526020819052604090205491906120df565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546122d49082611952565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611ad0565b601b54479060ff1661247e57601b805460ff19166001179055612347826125e5565b60006123534783612119565b905060006123628260036121da565b9050806000612375826117708682612119565b6013546040519192506001600160a01b0316908290600081818185875af1925050503d80600081146123c3576040519150601f19603f3d011682016040523d82523d6000602084013e6123c8565b606091505b50506012546040516001600160a01b0390911691508390600081818185875af1925050503d8060008114612418576040519150601f19603f3d011682016040523d82523d6000602084013e61241d565b606091505b5050601b805460ff1916905550604080518781526020810186905290810184905260608101839052608081018290527f1f9c80ba93be7c925dc5b9f8017795013223f7f7ba4681e7b91c2e8a108b838f9060a00160405180910390a1505050505b5050565b600061248d83610d8d565b6019546001600160a01b0385166000908152601860205260408120549293509142916124b891612ae8565b10156124da576001600160a01b03841660009081526018602052604090204290555b81156125315760006124f18361179686606461215b565b9050601a54811061252b57600061251860646117968460195461215b90919063ffffffff16565b9050601954811061252857506019545b91505b50612571565b6019546001600160a01b0385166000908152601860205260409020546125579190612ae8565b6001600160a01b0385166000908152601860205260409020555b6001600160a01b038416600090815260186020526040902054612595908290612ae8565b6001600160a01b03909416600090815260186020526040902093909355505050565b600081836125d85760405162461bcd60e51b815260040161096391906128f2565b5060006121108486612b00565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061262857634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561267c57600080fd5b505afa158015612690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b49190612795565b816001815181106126d557634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526009546126fb91309116846119b8565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790612734908590600090869030904290600401612a78565b600060405180830381600087803b15801561274e57600080fd5b505af11580156120d7573d6000803e3d6000fd5b80516001600160701b0381168114610a7e57600080fd5b60006020828403121561278a578081fd5b81356119b181612ba7565b6000602082840312156127a6578081fd5b81516119b181612ba7565b600080604083850312156127c3578081fd5b82356127ce81612ba7565b915060208301356127de81612ba7565b809150509250929050565b6000806000606084860312156127fd578081fd5b833561280881612ba7565b9250602084013561281881612ba7565b929592945050506040919091013590565b6000806040838503121561283b578182fd5b823561284681612ba7565b946020939093013593505050565b600060208284031215612865578081fd5b813580151581146119b1578182fd5b600080600060608486031215612888578283fd5b61289184612762565b925061289f60208501612762565b9150604084015163ffffffff811681146128b7578182fd5b809150509250925092565b6000602082840312156128d3578081fd5b5035919050565b6000602082840312156128eb578081fd5b5051919050565b6000602080835283518082850152825b8181101561291e57858101830151858201604001528201612902565b8181111561292f5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526050908201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60408201527f65642e2020506c656173652074727920616761696e206166746572207468652060608201526f747820626c6f636b207061737365737360801b608082015260a00190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015612ac75784516001600160a01b031683529383019391830191600101612aa2565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612afb57612afb612b91565b500190565b600082612b1b57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612b3a57612b3a612b91565b500290565b600082821015612b5157612b51612b91565b500390565b600181811c90821680612b6a57607f821691505b60208210811415612b8b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114612bbc57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122009d7f201f4f649d7fee978dc4ab1b4ef788146f808bf441d96aa56e2a0c2b6b764736f6c634300080400330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Deployed Bytecode
0x60806040526004361061031e5760003560e01c806375722434116101ab578063a457c2d7116100f7578063ce404b2311610095578063dd4670641161006f578063dd46706414610893578063dd62ed3e146108b3578063e57f14e1146108f9578063f2fde38b1461091957600080fd5b8063ce404b231461083e578063d3b5be1a14610853578063d82e39621461087357600080fd5b8063af3e2122116100d1578063af3e212214610454578063b47fd563146107e6578063b88a802f14610813578063c816e4b61461082857600080fd5b8063a457c2d714610791578063a69df4b5146107b1578063a9059cbb146107c657600080fd5b80638da5cb5b1161016457806392ca1e8d1161013e57806392ca1e8d1461073157806395d89b4114610746578063966f41a21461075b5780639c21a9b81461077b57600080fd5b80638da5cb5b146106d55780638ea5220f146106f3578063902d55a51461071357600080fd5b8063757224341461063057806375f0a8741461064a5780637b5db6611461066a5780637cd09f921461068a5780638263a8d61461069f57806389b6e25e146106b557600080fd5b8063436a88c11161026a578063602bc62b1161022357806370a08231116101fd57806370a08231146105c5578063715018a6146105e55780637217f4bc146105fa57806372ba4df51461061057600080fd5b8063602bc62b1461057057806365b8dbc0146105855780636b292d37146105a557600080fd5b8063436a88c11461045457806349bd5a5e146104da5780635007de651461050e57806353adf85c14610528578063557ed1ba1461053d5780635907bd191461055057600080fd5b80632116a4ae116102d7578063313ce567116102b1578063313ce56714610469578063368f5bd514610485578063395093511461049a5780634116d15d146104ba57600080fd5b80632116a4ae1461041457806323b872dd146104345780632d17f2691461045457600080fd5b80630496a34d1461032a57806306fdde031461034c578063095ea7b3146103775780631694505e146103a757806318160ddd146103df5780631faaddf3146103fe57600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061034a6103453660046128c2565b610939565b005b34801561035857600080fd5b5061036161099f565b60405161036e91906128f2565b60405180910390f35b34801561038357600080fd5b50610397610392366004612829565b610a31565b604051901515815260200161036e565b3480156103b357600080fd5b506009546103c7906001600160a01b031681565b6040516001600160a01b03909116815260200161036e565b3480156103eb57600080fd5b506002545b60405190815260200161036e565b34801561040a57600080fd5b506103f060115481565b34801561042057600080fd5b5061039761042f3660046128c2565b610a48565b34801561044057600080fd5b5061039761044f3660046127e9565b610a83565b34801561046057600080fd5b506103f0601981565b34801561047557600080fd5b506040516009815260200161036e565b34801561049157600080fd5b5061034a610aec565b3480156104a657600080fd5b506103976104b5366004612829565b610b25565b3480156104c657600080fd5b5061034a6104d53660046128c2565b610b5b565b3480156104e657600080fd5b506103c77f00000000000000000000000057cd855ff9106bcf8a0943156cc43b1075ec0c8181565b34801561051a57600080fd5b50600b546103979060ff1681565b34801561053457600080fd5b5061034a610bb8565b34801561054957600080fd5b50426103f0565b34801561055c57600080fd5b5061034a61056b3660046128c2565b610bee565b34801561057c57600080fd5b506007546103f0565b34801561059157600080fd5b5061034a6105a0366004612779565b610c4b565b3480156105b157600080fd5b5061034a6105c0366004612779565b610d41565b3480156105d157600080fd5b506103f06105e0366004612779565b610d8d565b3480156105f157600080fd5b5061034a610da8565b34801561060657600080fd5b506103f060195481565b34801561061c57600080fd5b5061034a61062b366004612779565b610e0a565b34801561063c57600080fd5b506017546103979060ff1681565b34801561065657600080fd5b506013546103c7906001600160a01b031681565b34801561067657600080fd5b506103f06106853660046128c2565b610e55565b34801561069657600080fd5b5061034a6111ab565b3480156106ab57600080fd5b506103f060165481565b3480156106c157600080fd5b5061034a6106d03660046128c2565b6111e4565b3480156106e157600080fd5b506005546001600160a01b03166103c7565b3480156106ff57600080fd5b506012546103c7906001600160a01b031681565b34801561071f57600080fd5b506103f0691d02c8edfee423a0000081565b34801561073d57600080fd5b506103f0611213565b34801561075257600080fd5b5061036161122c565b34801561076757600080fd5b5061034a610776366004612854565b61123b565b34801561078757600080fd5b506103f0600c5481565b34801561079d57600080fd5b506103976107ac366004612829565b6112a5565b3480156107bd57600080fd5b5061034a6112f4565b3480156107d257600080fd5b506103976107e1366004612829565b6113fc565b3480156107f257600080fd5b506103f0610801366004612779565b60186020526000908152604090205481565b34801561081f57600080fd5b5061034a611409565b34801561083457600080fd5b506103f0600a5481565b34801561084a57600080fd5b5061034a61168f565b34801561085f57600080fd5b5061034a61086e3660046128c2565b6116c5565b34801561087f57600080fd5b506103f061088e366004612779565b611722565b34801561089f57600080fd5b5061034a6108ae3660046128c2565b6117a6565b3480156108bf57600080fd5b506103f06108ce3660046127b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561090557600080fd5b5061034a610914366004612779565b61182b565b34801561092557600080fd5b5061034a610934366004612779565b611879565b6005546001600160a01b0316331461096c5760405162461bcd60e51b815260040161096390612988565b60405180910390fd5b60165460405182907f45f855674a81ee4a043e3eadaffb44a6e1f0df2ef0c510f52ff5d2cc7dbc969490600090a3601655565b6060600380546109ae90612b56565b80601f01602080910402602001604051908101604052809291908181526020018280546109da90612b56565b8015610a275780601f106109fc57610100808354040283529160200191610a27565b820191906000526020600020905b815481529060010190602001808311610a0a57829003601f168201915b5050505050905090565b6000610a3e3384846119b8565b5060015b92915050565b6005546000906001600160a01b03163314610a755760405162461bcd60e51b815260040161096390612988565b50600c81905560015b919050565b6000610a90848484611add565b610ae28433610add85604051806060016040528060288152602001612be6602891396001600160a01b038a16600090815260016020908152604080832033845290915290205491906120df565b6119b8565b5060019392505050565b6005546001600160a01b03163314610b165760405162461bcd60e51b815260040161096390612988565b6010805460ff19166001179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610a3e918590610add9086611952565b6005546001600160a01b03163314610b855760405162461bcd60e51b815260040161096390612988565b60115460405182907f3e598abbf839fb9f42cbf366b55a140e583506553980c23c68379f3566c5859d90600090a3601155565b6005546001600160a01b03163314610be25760405162461bcd60e51b815260040161096390612988565b600b805460ff19169055565b6005546001600160a01b03163314610c185760405162461bcd60e51b815260040161096390612988565b60195460405182907fe7cda9606ff2f769167fdf0eb6c612cddb2317d2808071755beebedd723cd3a690600090a3601955565b6005546001600160a01b03163314610c755760405162461bcd60e51b815260040161096390612988565b6009546001600160a01b0382811691161415610ce45760405162461bcd60e51b815260206004820152602860248201527f434c543a2054686520726f7574657220616c7265616479206861732074686174604482015267206164647265737360c01b6064820152608401610963565b6009546040516001600160a01b03918216918316907fcd2acde3ae4de754da8074077404027fae40be67d89638ee1ceca2427883da7d90600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d6b5760405162461bcd60e51b815260040161096390612988565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610dd25760405162461bcd60e51b815260040161096390612988565b6005546040516000916001600160a01b031690600080516020612c0e833981519152908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610e345760405162461bcd60e51b815260040161096390612988565b6001600160a01b03166000908152601560205260409020805460ff19169055565b60175460009060ff1615610e6b57506000919050565b60007f00000000000000000000000057cd855ff9106bcf8a0943156cc43b1075ec0c8190506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610ecb57600080fd5b505afa158015610edf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f039190612795565b90506000826001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015610f4057600080fd5b505afa158015610f54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f789190612795565b90506000806001600160a01b03841630141561101557846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610fc757600080fd5b505afa158015610fdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fff9190612874565b506001600160701b0390811693501690506110a9565b6001600160a01b0383163014156110a957846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561105f57600080fd5b505afa158015611073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110979190612874565b506001600160701b0391821693501690505b811580156110b5575080155b156110c7575060009695505050505050565b6009546040516385f8c25960e01b81526004810189905260248101849052604481018390526000916001600160a01b0316906385f8c2599060640160206040518083038186803b15801561111a57600080fd5b505afa15801561112e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115291906128da565b905060008361117761271061117161116a8487612119565b8890612119565b9061215b565b6111819190612b00565b9050601654811061119c575050601154979650505050505050565b50600098975050505050505050565b6005546001600160a01b031633146111d55760405162461bcd60e51b815260040161096390612988565b600b805460ff19166001179055565b6005546001600160a01b0316331461120e5760405162461bcd60e51b815260040161096390612988565b600a55565b601961121f8180612ae8565b6112299190612ae8565b81565b6060600480546109ae90612b56565b6005546001600160a01b031633146112655760405162461bcd60e51b815260040161096390612988565b604051811515907f55c19e5f01f19b1320171e8b80e3926c38efd7f66c3ef89f45defdf6c2122b7b90600090a26017805460ff1916911515919091179055565b6000610a3e3384610add85604051806060016040528060258152602001612c2e602591393360009081526001602090815260408083206001600160a01b038d16845290915290205491906120df565b6006546001600160a01b0316331461135a5760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610963565b60075442116113ab5760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610963565b6006546005546040516001600160a01b039283169290911690600080516020612c0e83398151915290600090a3600654600580546001600160a01b0319166001600160a01b03909216919091179055565b6000610a3e338484611add565b3233146114585760405162461bcd60e51b815260206004820152601b60248201527f697348756d616e3a3a20736f7272792068756d616e73206f6e6c7900000000006044820152606401610963565b600260085414156114ab5760405162461bcd60e51b815260206004820152601d60248201527f6e6f6e5265656e7472616e743a3a207265656e7472616e742063616c6c0000006044820152606401610963565b6002600855336000908152601860205260409020544210156115195760405162461bcd60e51b815260206004820152602160248201527f4572726f723a206e65787420617661696c61626c65206e6f74207265616368656044820152601960fa1b6064820152608401610963565b600061152433610d8d565b10156115805760405162461bcd60e51b815260206004820152602560248201527f4572726f723a206d757374206f776e20746f6b656e20746f20636c61696d2072604482015264195dd85c9960da1b6064820152608401610963565b600061158b33611722565b90506019544261159b9190612ae8565b33600081815260186020908152604091829020849055815192835282018490528101919091527f25aee98a65c97a4eccb09abe48315f60cd987890080434e094a7fca39a3d84689060600160405180910390a1604051600090339083908381818185875af1925050503d8060008114611630576040519150601f19603f3d011682016040523d82523d6000602084013e611635565b606091505b50509050806116865760405162461bcd60e51b815260206004820152601d60248201527f4572726f723a2043616e6e6f74207769746864726177207265776172640000006044820152606401610963565b50506001600855565b6005546001600160a01b031633146116b95760405162461bcd60e51b815260040161096390612988565b6010805460ff19169055565b6005546001600160a01b031633146116ef5760405162461bcd60e51b815260040161096390612988565b600a5460405182907fcdadd717dc9ee3550a289071d1af75e229726888d51e3a31c9e3dfc693d4852b90600090a3600a55565b6000806117766117517f00000000000000000000000057cd855ff9106bcf8a0943156cc43b1075ec0c81610d8d565b61177061175f61dead610d8d565b61177061176c6000610d8d565b6002545b90612119565b905047600061178485610d8d565b9050600061179c84611796858561215b565b906121da565b9695505050505050565b6005546001600160a01b031633146117d05760405162461bcd60e51b815260040161096390612988565b60058054600680546001600160a01b03199081166001600160a01b038416179091551690556117ff8142612ae8565b6007556005546040516000916001600160a01b031690600080516020612c0e833981519152908390a350565b6005546001600160a01b031633146118555760405162461bcd60e51b815260040161096390612988565b6001600160a01b03166000908152601560205260409020805460ff19166001179055565b6005546001600160a01b031633146118a35760405162461bcd60e51b815260040161096390612988565b6001600160a01b0381166119085760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610963565b6005546040516001600160a01b03808416921690600080516020612c0e83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b60008061195f8385612ae8565b9050838110156119b15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610963565b9392505050565b6001600160a01b038316611a1a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610963565b6001600160a01b038216611a7b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610963565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611b035760405162461bcd60e51b8152600401610963906129bd565b6001600160a01b038216611b295760405162461bcd60e51b815260040161096390612945565b80611b3f57611b3a8383600061221c565b505050565b600b5460ff168015611b545750601b5460ff16155b15611e38577f00000000000000000000000057cd855ff9106bcf8a0943156cc43b1075ec0c816001600160a01b0316836001600160a01b03161415611c8b576001600160a01b0382166000908152600f6020526040812054600114611bba576001611bbd565b60025b60ff16905042611bfa611bdb83600c5461215b90919063ffffffff16565b6001600160a01b0386166000908152600d602052604090205490611952565b111580611c1f57506001600160a01b03831660009081526015602052604090205460ff165b611c3b5760405162461bcd60e51b815260040161096390612a02565b6001600160a01b0383166000908152600d60209081526040808320429055600f909152902054611c6c906001612ae8565b6001600160a01b0384166000908152600f602052604090205550611e38565b7f00000000000000000000000057cd855ff9106bcf8a0943156cc43b1075ec0c816001600160a01b0316826001600160a01b03161415611dc1576001600160a01b0383166000908152600e6020526040812054600114611cec576001611cef565b60025b60ff16905042611d2c611d0d83600c5461215b90919063ffffffff16565b6001600160a01b0387166000908152600d602052604090205490611952565b111580611d5157506001600160a01b03841660009081526015602052604090205460ff165b611d6d5760405162461bcd60e51b815260040161096390612a02565b6001600160a01b038085166000908152600d602090815260408083204290559286168252600e90522054611da2906001612ae8565b6001600160a01b0384166000908152600e602052604090205550611e38565b42611ddb611bdb6002600c5461215b90919063ffffffff16565b111580611e0057506001600160a01b03831660009081526015602052604090205460ff165b611e1c5760405162461bcd60e51b815260040161096390612a02565b6001600160a01b0383166000908152600d602052604090204290555b6014546001600160a01b0384811691161415611e7457611e5a42611c20612ae8565b6001600160a01b0383166000908152600d60205260409020555b6000611e7f30610d8d565b600a5490915081108015908190611ec857507f00000000000000000000000057cd855ff9106bcf8a0943156cc43b1075ec0c816001600160a01b0316856001600160a01b031614155b15611ed657611ed682612325565b60007f00000000000000000000000057cd855ff9106bcf8a0943156cc43b1075ec0c816001600160a01b0316856001600160a01b0316148015611f3257506001600160a01b03861660009081526015602052604090205460ff16155b80611f9257507f00000000000000000000000057cd855ff9106bcf8a0943156cc43b1075ec0c816001600160a01b0316866001600160a01b0316148015611f9257506001600160a01b03851660009081526015602052604090205460ff16155b15611f9b575060015b601b5460ff1615611faa575060005b808015611fb9575060105460ff165b156120c2576000611fd16103e861179687601961215b565b90506000611fe66103e861179688601961215b565b90506000611ffb6103e861179689601961215b565b905060006120126106858361177086818d8a612119565b905060006120266103e86117968b8561215b565b9050600061203a8461177087818e8b612119565b90506120468183612119565b905060006120548b83612119565b90506120608282611952565b8b146120ae5760405162461bcd60e51b815260206004820181905260248201527f434c543a3a7472616e736665723a205461782076616c756520696e76616c69646044820152606401610963565b6120b98d308361221c565b50985050505050505b6120cc8585612482565b6120d786868661221c565b505050505050565b600081848411156121035760405162461bcd60e51b815260040161096391906128f2565b5060006121108486612b3f565b95945050505050565b60006119b183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120df565b60008261216a57506000610a42565b60006121768385612b20565b9050826121838583612b00565b146119b15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610963565b60006119b183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125b7565b6001600160a01b0383166122425760405162461bcd60e51b8152600401610963906129bd565b6001600160a01b0382166122685760405162461bcd60e51b815260040161096390612945565b6122a581604051806060016040528060268152602001612bc0602691396001600160a01b03861660009081526020819052604090205491906120df565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546122d49082611952565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611ad0565b601b54479060ff1661247e57601b805460ff19166001179055612347826125e5565b60006123534783612119565b905060006123628260036121da565b9050806000612375826117708682612119565b6013546040519192506001600160a01b0316908290600081818185875af1925050503d80600081146123c3576040519150601f19603f3d011682016040523d82523d6000602084013e6123c8565b606091505b50506012546040516001600160a01b0390911691508390600081818185875af1925050503d8060008114612418576040519150601f19603f3d011682016040523d82523d6000602084013e61241d565b606091505b5050601b805460ff1916905550604080518781526020810186905290810184905260608101839052608081018290527f1f9c80ba93be7c925dc5b9f8017795013223f7f7ba4681e7b91c2e8a108b838f9060a00160405180910390a1505050505b5050565b600061248d83610d8d565b6019546001600160a01b0385166000908152601860205260408120549293509142916124b891612ae8565b10156124da576001600160a01b03841660009081526018602052604090204290555b81156125315760006124f18361179686606461215b565b9050601a54811061252b57600061251860646117968460195461215b90919063ffffffff16565b9050601954811061252857506019545b91505b50612571565b6019546001600160a01b0385166000908152601860205260409020546125579190612ae8565b6001600160a01b0385166000908152601860205260409020555b6001600160a01b038416600090815260186020526040902054612595908290612ae8565b6001600160a01b03909416600090815260186020526040902093909355505050565b600081836125d85760405162461bcd60e51b815260040161096391906128f2565b5060006121108486612b00565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061262857634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561267c57600080fd5b505afa158015612690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b49190612795565b816001815181106126d557634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526009546126fb91309116846119b8565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac94790612734908590600090869030904290600401612a78565b600060405180830381600087803b15801561274e57600080fd5b505af11580156120d7573d6000803e3d6000fd5b80516001600160701b0381168114610a7e57600080fd5b60006020828403121561278a578081fd5b81356119b181612ba7565b6000602082840312156127a6578081fd5b81516119b181612ba7565b600080604083850312156127c3578081fd5b82356127ce81612ba7565b915060208301356127de81612ba7565b809150509250929050565b6000806000606084860312156127fd578081fd5b833561280881612ba7565b9250602084013561281881612ba7565b929592945050506040919091013590565b6000806040838503121561283b578182fd5b823561284681612ba7565b946020939093013593505050565b600060208284031215612865578081fd5b813580151581146119b1578182fd5b600080600060608486031215612888578283fd5b61289184612762565b925061289f60208501612762565b9150604084015163ffffffff811681146128b7578182fd5b809150509250925092565b6000602082840312156128d3578081fd5b5035919050565b6000602082840312156128eb578081fd5b5051919050565b6000602080835283518082850152825b8181101561291e57858101830151858201604001528201612902565b8181111561292f5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526050908201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60408201527f65642e2020506c656173652074727920616761696e206166746572207468652060608201526f747820626c6f636b207061737365737360801b608082015260a00190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015612ac75784516001600160a01b031683529383019391830191600101612aa2565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612afb57612afb612b91565b500190565b600082612b1b57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612b3a57612b3a612b91565b500290565b600082821015612b5157612b51612b91565b500390565b600181811c90821680612b6a57607f821691505b60208210811415612b8b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114612bbc57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122009d7f201f4f649d7fee978dc4ab1b4ef788146f808bf441d96aa56e2a0c2b6b764736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
-----Decoded View---------------
Arg [0] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Deployed Bytecode Sourcemap
27608:14757:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31559:173;;;;;;;;;;-1:-1:-1;31559:173:0;;;;;:::i;:::-;;:::i;:::-;;8776:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10942:169;;;;;;;;;;-1:-1:-1;10942:169:0;;;;;:::i;:::-;;:::i;:::-;;;4039:14:1;;4032:22;4014:41;;4002:2;3987:18;10942:169:0;3969:92:1;27733:41:0;;;;;;;;;;-1:-1:-1;27733:41:0;;;;-1:-1:-1;;;;;27733:41:0;;;;;;-1:-1:-1;;;;;3480:32:1;;;3462:51;;3450:2;3435:18;27733:41:0;3417:102:1;9895:108:0;;;;;;;;;;-1:-1:-1;9983:12:0;;9895:108;;;12102:25:1;;;12090:2;12075:18;9895:108:0;12057:76:1;28504:30:0;;;;;;;;;;;;;;;;32695:131;;;;;;;;;;-1:-1:-1;32695:131:0;;;;;:::i;:::-;;:::i;11593:355::-;;;;;;;;;;-1:-1:-1;11593:355:0;;;;;:::i;:::-;;:::i;28361:44::-;;;;;;;;;;;;28403:2;28361:44;;9738:92;;;;;;;;;;-1:-1:-1;9738:92:0;;9821:1;14060:36:1;;14048:2;14033:18;9738:92:0;14015:87:1;30940:77:0;;;;;;;;;;;;;:::i;12357:218::-;;;;;;;;;;-1:-1:-1;12357:218:0;;;;;:::i;:::-;;:::i;31740:152::-;;;;;;;;;;-1:-1:-1;31740:152:0;;;;;:::i;:::-;;:::i;27781:38::-;;;;;;;;;;;;;;;28008:29;;;;;;;;;;-1:-1:-1;28008:29:0;;;;;;;;32611:76;;;;;;;;;;;;;:::i;2264:90::-;;;;;;;;;;-1:-1:-1;2331:15:0;2264:90;;31377:174;;;;;;;;;;-1:-1:-1;31377:174:0;;;;;:::i;:::-;;:::i;2068:90::-;;;;;;;;;;-1:-1:-1;2141:9:0;;2068:90;;30619:313;;;;;;;;;;-1:-1:-1;30619:313:0;;;;;:::i;:::-;;:::i;31247:122::-;;;;;;;;;;-1:-1:-1;31247:122:0;;;;;:::i;:::-;;:::i;10066:127::-;;;;;;;;;;-1:-1:-1;10066:127:0;;;;;:::i;:::-;;:::i;1513:148::-;;;;;;;;;;;;;:::i;29106:40::-;;;;;;;;;;;;;;;;32195:112;;;;;;;;;;-1:-1:-1;32195:112:0;;;;;:::i;:::-;;:::i;28970:41::-;;;;;;;;;;-1:-1:-1;28970:41:0;;;;;;;;28702:75;;;;;;;;;;-1:-1:-1;28702:75:0;;;;-1:-1:-1;;;;;28702:75:0;;;32834:1020;;;;;;;;;;-1:-1:-1;32834:1020:0;;;;;:::i;:::-;;:::i;32527:76::-;;;;;;;;;;;;;:::i;28928:35::-;;;;;;;;;;;;;;;;31112:127;;;;;;;;;;-1:-1:-1;31112:127:0;;;;;:::i;:::-;;:::i;871:79::-;;;;;;;;;;-1:-1:-1;936:6:0;;-1:-1:-1;;;;;936:6:0;871:79;;28626:69;;;;;;;;;;-1:-1:-1;28626:69:0;;;;-1:-1:-1;;;;;28626:69:0;;;27908:64;;;;;;;;;;;;27947:25;27908:64;;28541:78;;;;;;;;;;;;;:::i;8995:104::-;;;;;;;;;;;;;:::i;31900:166::-;;;;;;;;;;-1:-1:-1;31900:166:0;;;;;:::i;:::-;;:::i;28044:30::-;;;;;;;;;;;;;;;;13078:269;;;;;;;;;;-1:-1:-1;13078:269:0;;;;;:::i;:::-;;:::i;2596:304::-;;;;;;;;;;;;;:::i;10406:175::-;;;;;;;;;;-1:-1:-1;10406:175:0;;;;;:::i;:::-;;:::i;29042:57::-;;;;;;;;;;-1:-1:-1;29042:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;40589:651;;;;;;;;;;;;;:::i;27826:55::-;;;;;;;;;;;;;;;;31025:79;;;;;;;;;;;;;:::i;32315:204::-;;;;;;;;;;-1:-1:-1;32315:204:0;;;;;:::i;:::-;;:::i;40068:513::-;;;;;;;;;;-1:-1:-1;40068:513:0;;;;;:::i;:::-;;:::i;2362:226::-;;;;;;;;;;-1:-1:-1;2362:226:0;;;;;:::i;:::-;;:::i;10644:151::-;;;;;;;;;;-1:-1:-1;10644:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;10760:18:0;;;10733:7;10760:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10644:151;32074:113;;;;;;;;;;-1:-1:-1;32074:113:0;;;;;:::i;:::-;;:::i;1816:244::-;;;;;;;;;;-1:-1:-1;1816:244:0;;;;;:::i;:::-;;:::i;31559:173::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;;;;;;;;;31671:15:::1;::::0;31641:46:::1;::::0;31661:8;;31641:46:::1;::::0;;;::::1;31698:15;:26:::0;31559:173::o;8776:100::-;8830:13;8863:5;8856:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8776:100;:::o;10942:169::-;11025:4;11042:39;177:10;11065:7;11074:6;11042:8;:39::i;:::-;-1:-1:-1;11099:4:0;10942:169;;;;;:::o;32695:131::-;1083:6;;32755:4;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;-1:-1:-1;32772:2:0::1;:10:::0;;;32814:4:::1;1153:1;32695:131:::0;;;:::o;11593:355::-;11733:4;11750:36;11760:6;11768:9;11779:6;11750:9;:36::i;:::-;11797:121;11806:6;177:10;11828:89;11866:6;11828:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11828:19:0;;;;;;:11;:19;;;;;;;;177:10;11828:33;;;;;;;;;;:37;:89::i;:::-;11797:8;:121::i;:::-;-1:-1:-1;11936:4:0;11593:355;;;;;:::o;30940:77::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;30990:12:::1;:19:::0;;-1:-1:-1;;30990:19:0::1;31005:4;30990:19;::::0;;30940:77::o;12357:218::-;177:10;12445:4;12494:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12494:34:0;;;;;;;;;;12445:4;;12462:83;;12485:7;;12494:50;;12533:10;12494:38;:50::i;31740:152::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;31843:9:::1;::::0;31816:37:::1;::::0;31833:8;;31816:37:::1;::::0;;;::::1;31864:9;:20:::0;31740:152::o;32611:76::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;32662:9:::1;:17:::0;;-1:-1:-1;;32662:17:0::1;::::0;;32611:76::o;31377:174::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;31488:16:::1;::::0;31460:45:::1;::::0;31478:8;;31460:45:::1;::::0;;;::::1;31516:16;:27:::0;31377:174::o;30619:313::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;30728:15:::1;::::0;-1:-1:-1;;;;;30706:38:0;;::::1;30728:15:::0;::::1;30706:38;;30698:91;;;::::0;-1:-1:-1;;;30698:91:0;;11345:2:1;30698:91:0::1;::::0;::::1;11327:21:1::0;11384:2;11364:18;;;11357:30;11423:34;11403:18;;;11396:62;-1:-1:-1;;;11474:18:1;;;11467:38;11522:19;;30698:91:0::1;11317:230:1::0;30698:91:0::1;30848:15;::::0;30805:60:::1;::::0;-1:-1:-1;;;;;30848:15:0;;::::1;::::0;30805:60;::::1;::::0;::::1;::::0;30848:15:::1;::::0;30805:60:::1;30876:15;:48:::0;;-1:-1:-1;;;;;;30876:48:0::1;-1:-1:-1::0;;;;;30876:48:0;;;::::1;::::0;;;::::1;::::0;;30619:313::o;31247:122::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;31329:15:::1;:32:::0;;-1:-1:-1;;;;;;31329:32:0::1;-1:-1:-1::0;;;;;31329:32:0;;;::::1;::::0;;;::::1;::::0;;31247:122::o;10066:127::-;-1:-1:-1;;;;;10167:18:0;10140:7;10167:18;;;;;;;;;;;;10066:127::o;1513:148::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;1604:6:::1;::::0;1583:40:::1;::::0;1620:1:::1;::::0;-1:-1:-1;;;;;1604:6:0::1;::::0;-1:-1:-1;;;;;;;;;;;1583:40:0;1620:1;;1583:40:::1;1634:6;:19:::0;;-1:-1:-1;;;;;;1634:19:0::1;::::0;;1513:148::o;32195:112::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32263:28:0::1;32294:5;32263:28:::0;;;:19:::1;:28;::::0;;;;:36;;-1:-1:-1;;32263:36:0::1;::::0;;32195:112::o;32834:1020::-;32922:22;;32898:7;;32922:22;;32918:36;;;-1:-1:-1;32953:1:0;;32834:1020;-1:-1:-1;32834:1020:0:o;32918:36::-;32967:19;33004:13;32967:51;;33029:14;33046:4;-1:-1:-1;;;;;33046:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33029:30;;33070:14;33087:4;-1:-1:-1;;;;;33087:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33070:30;-1:-1:-1;33111:16:0;;-1:-1:-1;;;;;33171:23:0;;33189:4;33171:23;33167:204;;;33236:4;-1:-1:-1;;;;;33236:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;33211:43:0;;;;-1:-1:-1;33211:43:0;;-1:-1:-1;33167:204:0;;;-1:-1:-1;;;;;33276:23:0;;33294:4;33276:23;33272:99;;;33341:4;-1:-1:-1;;;;;33341:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;33316:43:0;;;;-1:-1:-1;33316:43:0;;-1:-1:-1;33272:99:0;33387:13;;:30;;;;-1:-1:-1;33404:13:0;;33387:30;33383:176;;;-1:-1:-1;33546:1:0;;32834:1020;-1:-1:-1;;;;;;32834:1020:0:o;33383:176::-;33589:15;;:55;;-1:-1:-1;;;33589:55:0;;;;;13328:25:1;;;13369:18;;;13362:34;;;13412:18;;;13405:34;;;33571:15:0;;-1:-1:-1;;;;;33589:15:0;;:27;;13301:18:1;;33589:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33571:73;-1:-1:-1;33655:19:0;33726:8;33677:46;33717:5;33677:35;33690:21;33726:8;33571:73;33690:12;:21::i;:::-;33677:8;;:12;:35::i;:::-;:39;;:46::i;:::-;:57;;;;:::i;:::-;33655:79;;33766:15;;33751:11;:30;33747:79;;-1:-1:-1;;33805:9:0;;;32834:1020;-1:-1:-1;;;;;;;32834:1020:0:o;33747:79::-;-1:-1:-1;33845:1:0;;32834:1020;-1:-1:-1;;;;;;;;32834:1020:0:o;32527:76::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;32579:9:::1;:16:::0;;-1:-1:-1;;32579:16:0::1;32591:4;32579:16;::::0;;32527:76::o;31112:127::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;31197:23:::1;:34:::0;31112:127::o;28541:78::-;28495:2;28578:31;28495:2;;28578:31;:::i;:::-;:41;;;;:::i;:::-;28541:78;:::o;8995:104::-;9051:13;9084:7;9077:14;;;;;:::i;31900:166::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;31981:33:::1;::::0;;::::1;;::::0;::::1;::::0;;;::::1;32025:22;:33:::0;;-1:-1:-1;;32025:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;31900:166::o;13078:269::-;13171:4;13188:129;177:10;13211:7;13220:96;13259:15;13220:96;;;;;;;;;;;;;;;;;177:10;13220:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13220:34:0;;;;;;;;;;;;:38;:96::i;2596:304::-;2648:14;;-1:-1:-1;;;;;2648:14:0;2666:10;2648:28;2640:76;;;;-1:-1:-1;;;2640:76:0;;11754:2:1;2640:76:0;;;11736:21:1;11793:2;11773:18;;;11766:30;11832:34;11812:18;;;11805:62;-1:-1:-1;;;11883:18:1;;;11876:33;11926:19;;2640:76:0;11726:225:1;2640:76:0;2753:9;;2735:15;:27;2727:71;;;;-1:-1:-1;;;2727:71:0;;10496:2:1;2727:71:0;;;10478:21:1;10535:2;10515:18;;;10508:30;10574:33;10554:18;;;10547:61;10625:18;;2727:71:0;10468:181:1;2727:71:0;2843:14;;2835:6;;2814:44;;-1:-1:-1;;;;;2843:14:0;;;;2835:6;;;;-1:-1:-1;;;;;;;;;;;2814:44:0;2843:14;;2814:44;2878:14;;2869:6;:23;;-1:-1:-1;;;;;;2869:23:0;-1:-1:-1;;;;;2878:14:0;;;2869:23;;;;;;2596:304::o;10406:175::-;10492:4;10509:42;177:10;10533:9;10544:6;10509:9;:42::i;40589:651::-;4782:9;4795:10;4782:23;4774:63;;;;-1:-1:-1;;;4774:63:0;;7850:2:1;4774:63:0;;;7832:21:1;7889:2;7869:18;;;7862:30;7928:29;7908:18;;;7901:57;7975:18;;4774:63:0;7822:177:1;4774:63:0;3791:1:::1;4396:7;;:19;;4388:61;;;::::0;-1:-1:-1;;;4388:61:0;;8969:2:1;4388:61:0::1;::::0;::::1;8951:21:1::0;9008:2;8988:18;;;8981:30;9047:31;9027:18;;;9020:59;9096:18;;4388:61:0::1;8941:179:1::0;4388:61:0::1;3791:1;4527:7;:18:::0;40682:10:::2;40659:34;::::0;;;:22:::2;:34;::::0;;;;;40697:15:::2;-1:-1:-1::0;40659:53:0::2;40651:99;;;::::0;-1:-1:-1;;;40651:99:0;;5111:2:1;40651:99:0::2;::::0;::::2;5093:21:1::0;5150:2;5130:18;;;5123:30;5189:34;5169:18;;;5162:62;-1:-1:-1;;;5240:18:1;;;5233:31;5281:19;;40651:99:0::2;5083:223:1::0;40651:99:0::2;40794:1;40769:21;40779:10;40769:9;:21::i;:::-;:26;;40761:76;;;::::0;-1:-1:-1;;;40761:76:0;;7444:2:1;40761:76:0::2;::::0;::::2;7426:21:1::0;7483:2;7463:18;;;7456:30;7522:34;7502:18;;;7495:62;-1:-1:-1;;;7573:18:1;;;7566:35;7618:19;;40761:76:0::2;7416:227:1::0;40761:76:0::2;40850:14;40867:27;40883:10;40867:15;:27::i;:::-;40850:44;;40998:16;;40980:15;:34;;;;:::i;:::-;40966:10;40943:34;::::0;;;:22:::2;:34;::::0;;;;;;;;:71;;;41030:73;;3726:51:1;;;3793:18;;3786:34;;;3836:18;;3829:34;;;;41030:73:0::2;::::0;3714:2:1;3699:18;41030:73:0::2;;;;;;;41132:43;::::0;41117:9:::2;::::0;41140:10:::2;::::0;41164:6;;41117:9;41132:43;41117:9;41132:43;41164:6;41140:10;41132:43:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41116:59;;;41194:4;41186:46;;;::::0;-1:-1:-1;;;41186:46:0;;9733:2:1;41186:46:0::2;::::0;::::2;9715:21:1::0;9772:2;9752:18;;;9745:30;9811:31;9791:18;;;9784:59;9860:18;;41186:46:0::2;9705:179:1::0;41186:46:0::2;-1:-1:-1::0;;3747:1:0::1;4706:7;:22:::0;40589:651::o;31025:79::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;31076:12:::1;:20:::0;;-1:-1:-1;;31076:20:0::1;::::0;;31025:79::o;32315:204::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;32442:23:::1;::::0;32404:62:::1;::::0;32432:8;;32404:62:::1;::::0;;;::::1;32477:23;:34:::0;32315:204::o;40068:513::-;40133:7;40153:19;40175:138;40279:33;40297:13;40279:9;:33::i;:::-;40175:99;40220:53;40230:42;40220:9;:53::i;:::-;40175:40;40193:21;40211:1;40193:9;:21::i;:::-;9983:12;;40175:13;:17;;:40::i;:138::-;40153:160;-1:-1:-1;40387:21:0;40367:17;40444:29;40462:9;40444;:29::i;:::-;40419:54;-1:-1:-1;40484:14:0;40501:46;40535:11;40501:29;:9;40419:54;40501:13;:29::i;:::-;:33;;:46::i;:::-;40484:63;40068:513;-1:-1:-1;;;;;;40068:513:0:o;2362:226::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;2443:6:::1;::::0;;2426:14:::1;:23:::0;;-1:-1:-1;;;;;;2426:23:0;;::::1;-1:-1:-1::0;;;;;2443:6:0;::::1;2426:23;::::0;;;2460:19:::1;::::0;;2502:22:::1;2520:4:::0;2502:15:::1;:22;:::i;:::-;2490:9;:34:::0;2561:6:::1;::::0;2540:40:::1;::::0;2577:1:::1;::::0;-1:-1:-1;;;;;2561:6:0::1;::::0;-1:-1:-1;;;;;;;;;;;2540:40:0;2577:1;;2540:40:::1;2362:226:::0;:::o;32074:113::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32144:28:0::1;;::::0;;;:19:::1;:28;::::0;;;;:35;;-1:-1:-1;;32144:35:0::1;32175:4;32144:35;::::0;;32074:113::o;1816:244::-;1083:6;;-1:-1:-1;;;;;1083:6:0;177:10;1083:22;1075:67;;;;-1:-1:-1;;;1075:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1905:22:0;::::1;1897:73;;;::::0;-1:-1:-1;;;1897:73:0;;6278:2:1;1897:73:0::1;::::0;::::1;6260:21:1::0;6317:2;6297:18;;;6290:30;6356:34;6336:18;;;6329:62;-1:-1:-1;;;6407:18:1;;;6400:36;6453:19;;1897:73:0::1;6250:228:1::0;1897:73:0::1;2007:6;::::0;1986:38:::1;::::0;-1:-1:-1;;;;;1986:38:0;;::::1;::::0;2007:6:::1;::::0;-1:-1:-1;;;;;;;;;;;1986:38:0;2007:6:::1;::::0;1986:38:::1;2035:6;:17:::0;;-1:-1:-1;;;;;;2035:17:0::1;-1:-1:-1::0;;;;;2035:17:0;;;::::1;::::0;;;::::1;::::0;;1816:244::o;17403:179::-;17461:7;;17493:5;17497:1;17493;:5;:::i;:::-;17481:17;;17522:1;17517;:6;;17509:46;;;;-1:-1:-1;;;17509:46:0;;7088:2:1;17509:46:0;;;7070:21:1;7127:2;7107:18;;;7100:30;7166:29;7146:18;;;7139:57;7213:18;;17509:46:0;7060:177:1;17509:46:0;17573:1;17403:179;-1:-1:-1;;;17403:179:0:o;16264:380::-;-1:-1:-1;;;;;16400:19:0;;16392:68;;;;-1:-1:-1;;;16392:68:0;;10091:2:1;16392:68:0;;;10073:21:1;10130:2;10110:18;;;10103:30;10169:34;10149:18;;;10142:62;-1:-1:-1;;;10220:18:1;;;10213:34;10264:19;;16392:68:0;10063:226:1;16392:68:0;-1:-1:-1;;;;;16479:21:0;;16471:68;;;;-1:-1:-1;;;16471:68:0;;6685:2:1;16471:68:0;;;6667:21:1;6724:2;6704:18;;;6697:30;6763:34;6743:18;;;6736:62;-1:-1:-1;;;6814:18:1;;;6807:32;6856:19;;16471:68:0;6657:224:1;16471:68:0;-1:-1:-1;;;;;16552:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16604:32;;12102:25:1;;;16604:32:0;;12075:18:1;16604:32:0;;;;;;;;16264:380;;;:::o;33862:4271::-;-1:-1:-1;;;;;33994:18:0;;33986:68;;;;-1:-1:-1;;;33986:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34073:16:0;;34065:64;;;;-1:-1:-1;;;34065:64:0;;;;;;;:::i;:::-;34146:11;34142:93;;34174:28;34190:4;34196:2;34200:1;34174:15;:28::i;:::-;33862:4271;;;:::o;34142:93::-;34336:9;;;;:25;;;;-1:-1:-1;34350:11:0;;;;34349:12;34336:25;34332:1478;;;34398:13;-1:-1:-1;;;;;34382:30:0;:4;-1:-1:-1;;;;;34382:30:0;;34378:1421;;;-1:-1:-1;;;;;34454:16:0;;34433:18;34454:16;;;:12;:16;;;;;;34474:1;34454:21;:29;;34482:1;34454:29;;;34478:1;34454:29;34433:50;;;;34593:15;34533:56;34570:18;34577:10;34570:2;;:6;;:18;;;;:::i;:::-;-1:-1:-1;;;;;34533:32:0;;;;;;:28;:32;;;;;;;:36;:56::i;:::-;:75;;34532:104;;;-1:-1:-1;;;;;;34613:23:0;;;;;;:19;:23;;;;;;;;34532:104;34502:258;;;;-1:-1:-1;;;34502:258:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34779:32:0;;;;;;:28;:32;;;;;;;;34814:15;34779:50;;34867:12;:16;;;;;;:20;;34886:1;34867:20;:::i;:::-;-1:-1:-1;;;;;34848:16:0;;;;;;:12;:16;;;;;:39;-1:-1:-1;34378:1421:0;;;34927:13;-1:-1:-1;;;;;34913:28:0;:2;-1:-1:-1;;;;;34913:28:0;;34909:890;;;-1:-1:-1;;;;;34983:16:0;;34962:18;34983:16;;;:10;:16;;;;;;35003:1;34983:21;:29;;35011:1;34983:29;;;35007:1;34983:29;34962:50;;;;35124:15;35062:58;35101:18;35108:10;35101:2;;:6;;:18;;;;:::i;:::-;-1:-1:-1;;;;;35062:34:0;;;;;;:28;:34;;;;;;;:38;:58::i;:::-;:77;;35061:108;;;-1:-1:-1;;;;;;35144:25:0;;;;;;:19;:25;;;;;;;;35061:108;35031:262;;;;-1:-1:-1;;;35031:262:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35312:34:0;;;;;;;:28;:34;;;;;;;;35349:15;35312:52;;35400:14;;;;;:10;:14;;;;:18;;35417:1;35400:18;:::i;:::-;-1:-1:-1;;;;;35383:14:0;;;;;;:10;:14;;;;;:35;-1:-1:-1;34909:890:0;;;35543:15;35490:49;35529:9;35536:1;35529:2;;:6;;:9;;;;:::i;35490:49::-;:68;;35489:99;;;-1:-1:-1;;;;;;35563:25:0;;;;;;:19;:25;;;;;;;;35489:99;35459:253;;;;-1:-1:-1;;;35459:253:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35731:34:0;;;;;;:28;:34;;;;;35768:15;35731:52;;34909:890;35930:15;;-1:-1:-1;;;;;35922:23:0;;;35930:15;;35922:23;35918:116;;;35997:25;:15;36015:7;35997:25;:::i;:::-;-1:-1:-1;;;;;35962:32:0;;;;;;:28;:32;;;;;:60;35918:116;36261:28;36292:24;36310:4;36292:9;:24::i;:::-;36366:23;;36261:55;;-1:-1:-1;36342:47:0;;;;;;;36404:41;;;36431:13;-1:-1:-1;;;;;36415:30:0;:4;-1:-1:-1;;;;;36415:30:0;;;36404:41;36400:93;;;36447:46;36472:20;36447:24;:46::i;:::-;36598:12;36648:13;-1:-1:-1;;;;;36634:28:0;:2;-1:-1:-1;;;;;36634:28:0;;:58;;;;-1:-1:-1;;;;;;36667:25:0;;;;;;:19;:25;;;;;;;;36666:26;36634:58;36633:124;;;;36714:13;-1:-1:-1;;;;;36698:30:0;:4;-1:-1:-1;;;;;36698:30:0;;:58;;;;-1:-1:-1;;;;;;36733:23:0;;;;;;:19;:23;;;;;;;;36732:24;36698:58;36629:171;;;-1:-1:-1;36784:4:0;36629:171;36816:11;;;;36812:32;;;-1:-1:-1;36839:5:0;36812:32;36894:7;:23;;;;-1:-1:-1;36905:12:0;;;;36894:23;36890:1120;;;36980:24;37007:37;37039:4;37007:27;:6;28403:2;37007:10;:27::i;:37::-;36980:64;-1:-1:-1;37059:23:0;37085:35;37115:4;37085:25;:6;28452:2;37085:10;:25::i;:35::-;37059:61;-1:-1:-1;37135:17:0;37155:29;37179:4;37155:19;:6;28495:2;37155:10;:19::i;:29::-;37135:49;-1:-1:-1;37199:16:0;37218:83;37236:64;37135:49;37236;37269:15;37236:49;:6;37247:16;37236:10;:28::i;37218:83::-;37199:102;-1:-1:-1;37316:23:0;37342:30;37367:4;37342:20;:6;37199:102;37342:10;:20::i;:30::-;37316:56;-1:-1:-1;37387:18:0;37408:64;37462:9;37408:49;37441:15;37408:49;:6;37419:16;37408:10;:28::i;:64::-;37387:85;-1:-1:-1;37537:31:0;37387:85;37552:15;37537:14;:31::i;:::-;37524:44;-1:-1:-1;37583:17:0;37603:22;:6;37524:44;37603:10;:22::i;:::-;37583:42;-1:-1:-1;37717:25:0;:10;37583:42;37717:14;:25::i;:::-;37707:6;:35;37699:80;;;;-1:-1:-1;;;37699:80:0;;5917:2:1;37699:80:0;;;5899:21:1;;;5936:18;;;5929:30;5995:34;5975:18;;;5968:62;6047:18;;37699:80:0;5889:182:1;37699:80:0;37847:47;37863:4;37877;37884:9;37847:15;:47::i;:::-;-1:-1:-1;37988:10:0;-1:-1:-1;;;;;;36890:1120:0;38039:40;38068:2;38072:6;38039:28;:40::i;:::-;38092:33;38108:4;38114:2;38118:6;38092:15;:33::i;:::-;33862:4271;;;;;;:::o;17734:224::-;17854:7;17890:12;17882:6;;;;17874:29;;;;-1:-1:-1;;;17874:29:0;;;;;;;;:::i;:::-;-1:-1:-1;17914:9:0;17926:5;17930:1;17926;:5;:::i;:::-;17914:17;17734:224;-1:-1:-1;;;;;17734:224:0:o;17590:136::-;17648:7;17675:43;17679:1;17682;17675:43;;;;;;;;;;;;;;;;;:3;:43::i;17966:246::-;18024:7;18048:6;18044:47;;-1:-1:-1;18078:1:0;18071:8;;18044:47;18101:9;18113:5;18117:1;18113;:5;:::i;:::-;18101:17;-1:-1:-1;18146:1:0;18137:5;18141:1;18101:17;18137:5;:::i;:::-;:10;18129:56;;;;-1:-1:-1;;;18129:56:0;;8206:2:1;18129:56:0;;;8188:21:1;8245:2;8225:18;;;8218:30;8284:34;8264:18;;;8257:62;-1:-1:-1;;;8335:18:1;;;8328:31;8376:19;;18129:56:0;8178:223:1;18220:132:0;18278:7;18305:39;18309:1;18312;18305:39;;;;;;;;;;;;;;;;;:3;:39::i;13837:573::-;-1:-1:-1;;;;;13977:20:0;;13969:70;;;;-1:-1:-1;;;13969:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14058:23:0;;14050:71;;;;-1:-1:-1;;;14050:71:0;;;;;;;:::i;:::-;14214;14236:6;14214:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14214:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;14194:17:0;;;:9;:17;;;;;;;;;;;:91;;;;14319:20;;;;;;;:32;;14344:6;14319:24;:32::i;:::-;-1:-1:-1;;;;;14296:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;14367:35;12102:25:1;;;14296:20:0;;14367:35;;;;;;12075:18:1;14367:35:0;12057:76:1;38141:1272:0;38599:11;;38560:21;;38599:11;;38594:812;;38627:11;:18;;-1:-1:-1;;38627:18:0;38641:4;38627:18;;;38662:24;38679:6;38662:16;:24::i;:::-;38753:18;38774:41;:21;38800:14;38774:25;:41::i;:::-;38753:62;-1:-1:-1;38891:20:0;38914:17;38753:62;38929:1;38914:14;:17::i;:::-;38891:40;-1:-1:-1;38891:40:0;38946:19;39023:45;38891:40;39023:27;:10;38891:40;39023:14;:27::i;:45::-;39145:15;;39137:59;;38995:73;;-1:-1:-1;;;;;;39145:15:0;;38995:73;;39137:59;;;;38995:73;39145:15;39137:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;39219:9:0;;39211:47;;-1:-1:-1;;;;;39219:9:0;;;;-1:-1:-1;39242:11:0;;39211:47;;;;39242:11;39219:9;39211:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;39275:11:0;:19;;-1:-1:-1;;39275:19:0;;;-1:-1:-1;39314:80:0;;;13709:25:1;;;13765:2;13750:18;;13743:34;;;13793:18;;;13786:34;;;13851:2;13836:18;;13829:34;;;13894:3;13879:19;;13872:35;;;39314:80:0;;13696:3:1;13681:19;39314:80:0;;;;;;;38594:812;;;;;38141:1272;;:::o;41248:1114::-;41340:31;41374:20;41384:9;41374;:20::i;:::-;41483:16;;-1:-1:-1;;;;;41447:33:0;;41405:23;41447:33;;;:22;:33;;;;;;41340:54;;-1:-1:-1;41405:23:0;41502:15;;41447:52;;;:::i;:::-;:70;41443:127;;;-1:-1:-1;;;;;41519:33:0;;;;;;:22;:33;;;;;41555:15;41519:51;;41443:127;41672:27;;41668:589;;41716:12;41731:44;41751:23;41731:15;:6;41742:3;41731:10;:15::i;:44::-;41716:59;;41811:19;;41802:4;41794:36;41790:335;;41851:23;41877:44;41917:3;41877:35;41906:4;41877:16;;:20;;:35;;;;:::i;:44::-;41851:70;;41963:16;;41944:15;:35;41940:118;;-1:-1:-1;42022:16:0;;41940:118;42094:15;-1:-1:-1;41790:335:0;41668:589;;;;42229:16;;-1:-1:-1;;;;;42193:33:0;;;;;;:22;:33;;;;;;:52;;42229:16;42193:52;:::i;:::-;-1:-1:-1;;;;;42157:33:0;;;;;;:22;:33;;;;;:88;41668:589;-1:-1:-1;;;;;42303:33:0;;;;;;:22;:33;;;;;;:51;;42339:15;;42303:51;:::i;:::-;-1:-1:-1;;;;;42267:33:0;;;;;;;:22;:33;;;;;:87;;;;-1:-1:-1;;;41248:1114:0:o;18360:223::-;18480:7;18515:12;18508:5;18500:28;;;;-1:-1:-1;;;18500:28:0;;;;;;;;:::i;:::-;-1:-1:-1;18539:9:0;18551:5;18555:1;18551;:5;:::i;39421:589::-;39571:16;;;39585:1;39571:16;;;;;;;;39547:21;;39571:16;;;;;;;;;;-1:-1:-1;39571:16:0;39547:40;;39616:4;39598;39603:1;39598:7;;;;;;-1:-1:-1;;;39598:7:0;;;;;;;;;-1:-1:-1;;;;;39598:23:0;;;:7;;;;;;;;;;:23;;;;39642:15;;:22;;;-1:-1:-1;;;39642:22:0;;;;:15;;;;;:20;;:22;;;;;39598:7;;39642:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39632:4;39637:1;39632:7;;;;;;-1:-1:-1;;;39632:7:0;;;;;;;;;-1:-1:-1;;;;;39632:32:0;;;:7;;;;;;;;;:32;39709:15;;39677:62;;39694:4;;39709:15;39727:11;39677:8;:62::i;:::-;39778:15;;:224;;-1:-1:-1;;;39778:224:0;;-1:-1:-1;;;;;39778:15:0;;;;:66;;:224;;39859:11;;39778:15;;39929:4;;39956;;39976:15;;39778:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:188:1;93:13;;-1:-1:-1;;;;;135:42:1;;125:53;;115:2;;192:1;189;182:12;207:257;266:6;319:2;307:9;298:7;294:23;290:32;287:2;;;340:6;332;325:22;287:2;384:9;371:23;403:31;428:5;403:31;:::i;469:261::-;539:6;592:2;580:9;571:7;567:23;563:32;560:2;;;613:6;605;598:22;560:2;650:9;644:16;669:31;694:5;669:31;:::i;735:398::-;803:6;811;864:2;852:9;843:7;839:23;835:32;832:2;;;885:6;877;870:22;832:2;929:9;916:23;948:31;973:5;948:31;:::i;:::-;998:5;-1:-1:-1;1055:2:1;1040:18;;1027:32;1068:33;1027:32;1068:33;:::i;:::-;1120:7;1110:17;;;822:311;;;;;:::o;1138:466::-;1215:6;1223;1231;1284:2;1272:9;1263:7;1259:23;1255:32;1252:2;;;1305:6;1297;1290:22;1252:2;1349:9;1336:23;1368:31;1393:5;1368:31;:::i;:::-;1418:5;-1:-1:-1;1475:2:1;1460:18;;1447:32;1488:33;1447:32;1488:33;:::i;:::-;1242:362;;1540:7;;-1:-1:-1;;;1594:2:1;1579:18;;;;1566:32;;1242:362::o;1609:325::-;1677:6;1685;1738:2;1726:9;1717:7;1713:23;1709:32;1706:2;;;1759:6;1751;1744:22;1706:2;1803:9;1790:23;1822:31;1847:5;1822:31;:::i;:::-;1872:5;1924:2;1909:18;;;;1896:32;;-1:-1:-1;;;1696:238:1:o;1939:293::-;1995:6;2048:2;2036:9;2027:7;2023:23;2019:32;2016:2;;;2069:6;2061;2054:22;2016:2;2113:9;2100:23;2166:5;2159:13;2152:21;2145:5;2142:32;2132:2;;2193:6;2185;2178:22;2237:470;2324:6;2332;2340;2393:2;2381:9;2372:7;2368:23;2364:32;2361:2;;;2414:6;2406;2399:22;2361:2;2442:40;2472:9;2442:40;:::i;:::-;2432:50;;2501:49;2546:2;2535:9;2531:18;2501:49;:::i;:::-;2491:59;;2593:2;2582:9;2578:18;2572:25;2637:10;2630:5;2626:22;2619:5;2616:33;2606:2;;2668:6;2660;2653:22;2606:2;2696:5;2686:15;;;2351:356;;;;;:::o;2712:190::-;2771:6;2824:2;2812:9;2803:7;2799:23;2795:32;2792:2;;;2845:6;2837;2830:22;2792:2;-1:-1:-1;2873:23:1;;2782:120;-1:-1:-1;2782:120:1:o;2907:194::-;2977:6;3030:2;3018:9;3009:7;3005:23;3001:32;2998:2;;;3051:6;3043;3036:22;2998:2;-1:-1:-1;3079:16:1;;2988:113;-1:-1:-1;2988:113:1:o;4301:603::-;4413:4;4442:2;4471;4460:9;4453:21;4503:6;4497:13;4546:6;4541:2;4530:9;4526:18;4519:34;4571:4;4584:140;4598:6;4595:1;4592:13;4584:140;;;4693:14;;;4689:23;;4683:30;4659:17;;;4678:2;4655:26;4648:66;4613:10;;4584:140;;;4742:6;4739:1;4736:13;4733:2;;;4812:4;4807:2;4798:6;4787:9;4783:22;4779:31;4772:45;4733:2;-1:-1:-1;4888:2:1;4867:15;-1:-1:-1;;4863:29:1;4848:45;;;;4895:2;4844:54;;4422:482;-1:-1:-1;;;4422:482:1:o;5311:399::-;5513:2;5495:21;;;5552:2;5532:18;;;5525:30;5591:34;5586:2;5571:18;;5564:62;-1:-1:-1;;;5657:2:1;5642:18;;5635:33;5700:3;5685:19;;5485:225::o;8406:356::-;8608:2;8590:21;;;8627:18;;;8620:30;8686:34;8681:2;8666:18;;8659:62;8753:2;8738:18;;8580:182::o;9125:401::-;9327:2;9309:21;;;9366:2;9346:18;;;9339:30;9405:34;9400:2;9385:18;;9378:62;-1:-1:-1;;;9471:2:1;9456:18;;9449:35;9516:3;9501:19;;9299:227::o;10654:484::-;10856:2;10838:21;;;10895:2;10875:18;;;10868:30;10934:34;10929:2;10914:18;;10907:62;11005:34;11000:2;10985:18;;10978:62;-1:-1:-1;;;11071:3:1;11056:19;;11049:47;11128:3;11113:19;;10828:310::o;12138:983::-;12400:4;12448:3;12437:9;12433:19;12479:6;12468:9;12461:25;12505:2;12543:6;12538:2;12527:9;12523:18;12516:34;12586:3;12581:2;12570:9;12566:18;12559:31;12610:6;12645;12639:13;12676:6;12668;12661:22;12714:3;12703:9;12699:19;12692:26;;12753:2;12745:6;12741:15;12727:29;;12774:4;12787:195;12801:6;12798:1;12795:13;12787:195;;;12866:13;;-1:-1:-1;;;;;12862:39:1;12850:52;;12957:15;;;;12922:12;;;;12898:1;12816:9;12787:195;;;-1:-1:-1;;;;;;;13038:32:1;;;;13033:2;13018:18;;13011:60;-1:-1:-1;;;13102:3:1;13087:19;13080:35;12999:3;12409:712;-1:-1:-1;;;12409:712:1:o;14107:128::-;14147:3;14178:1;14174:6;14171:1;14168:13;14165:2;;;14184:18;;:::i;:::-;-1:-1:-1;14220:9:1;;14155:80::o;14240:217::-;14280:1;14306;14296:2;;-1:-1:-1;;;14331:31:1;;14385:4;14382:1;14375:15;14413:4;14338:1;14403:15;14296:2;-1:-1:-1;14442:9:1;;14286:171::o;14462:168::-;14502:7;14568:1;14564;14560:6;14556:14;14553:1;14550:21;14545:1;14538:9;14531:17;14527:45;14524:2;;;14575:18;;:::i;:::-;-1:-1:-1;14615:9:1;;14514:116::o;14635:125::-;14675:4;14703:1;14700;14697:8;14694:2;;;14708:18;;:::i;:::-;-1:-1:-1;14745:9:1;;14684:76::o;14765:380::-;14844:1;14840:12;;;;14887;;;14908:2;;14962:4;14954:6;14950:17;14940:27;;14908:2;15015;15007:6;15004:14;14984:18;14981:38;14978:2;;;15061:10;15056:3;15052:20;15049:1;15042:31;15096:4;15093:1;15086:15;15124:4;15121:1;15114:15;14978:2;;14820:325;;;:::o;15150:127::-;15211:10;15206:3;15202:20;15199:1;15192:31;15242:4;15239:1;15232:15;15266:4;15263:1;15256:15;15282:131;-1:-1:-1;;;;;15357:31:1;;15347:42;;15337:2;;15403:1;15400;15393:12;15337:2;15327:86;:::o
Swarm Source
ipfs://09d7f201f4f649d7fee978dc4ab1b4ef788146f808bf441d96aa56e2a0c2b6b7
Loading...
Loading
Loading...
Loading
OVERVIEW
ClienteleCoin aims to bridge the gap between digital currency and physical goods. ClienteleCoin was launched by the founders of Clientele, a high-end clothing boutique with 3 store locations. ClienteleCoin is accepted in-store and online for all transactions and products.Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.