Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 5 from a total of 5 transactions
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
DRP
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2023-07-23
*/
//https://twitter.com/DerpCoin_ETH
//https://t.me/DerpCoin_ETH
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.19;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(
address recipient,
uint256 amount
) external returns (bool);
function allowance(
address owner,
address spender
) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
}
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*
* [IMPORTANT]
* ====
* You shouldn't rely on `isContract` to protect against flash loan attacks!
*
* Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
* like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
* constructor.
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies on extcodesize/address.code.length, which returns 0
// for contracts in construction, since the code is only stored at the end
// of the constructor execution.
return account.code.length > 0;
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(
address(this).balance >= amount,
"Address: insufficient balance"
);
(bool success, ) = recipient.call{value: amount}("");
require(
success,
"Address: unable to send value, recipient may have reverted"
);
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain `call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(
address target,
bytes memory data
) internal returns (bytes memory) {
return
functionCallWithValue(
target,
data,
0,
"Address: low-level call failed"
);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value
) internal returns (bytes memory) {
return
functionCallWithValue(
target,
data,
value,
"Address: low-level call with value failed"
);
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value,
string memory errorMessage
) internal returns (bytes memory) {
require(
address(this).balance >= value,
"Address: insufficient balance for call"
);
(bool success, bytes memory returndata) = target.call{value: value}(
data
);
return
verifyCallResultFromTarget(
target,
success,
returndata,
errorMessage
);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(
address target,
bytes memory data
) internal view returns (bytes memory) {
return
functionStaticCall(
target,
data,
"Address: low-level static call failed"
);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
(bool success, bytes memory returndata) = target.staticcall(data);
return
verifyCallResultFromTarget(
target,
success,
returndata,
errorMessage
);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(
address target,
bytes memory data
) internal returns (bytes memory) {
return
functionDelegateCall(
target,
data,
"Address: low-level delegate call failed"
);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
(bool success, bytes memory returndata) = target.delegatecall(data);
return
verifyCallResultFromTarget(
target,
success,
returndata,
errorMessage
);
}
/**
* @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
* the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
*
* _Available since v4.8._
*/
function verifyCallResultFromTarget(
address target,
bool success,
bytes memory returndata,
string memory errorMessage
) internal view returns (bytes memory) {
if (success) {
if (returndata.length == 0) {
// only check isContract if the call was successful and the return data is empty
// otherwise we already know that it was a contract
require(isContract(target), "Address: call to non-contract");
}
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
/**
* @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
* revert reason or using the provided one.
*
* _Available since v4.3._
*/
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
_revert(returndata, errorMessage);
}
}
function _revert(
bytes memory returndata,
string memory errorMessage
) private pure {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
/// @solidity memory-safe-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(
newOwner != address(0),
"Ownable: new owner is the zero address"
);
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
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 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 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 DRP is Context, IERC20, Ownable {
using Address for address;
address payable public DerpWallet =
payable(0xC0Da4eD72Cf052cd6530725A916f93A8Ad7c5813);
address payable public cxWallet =
payable(0x4c785d8154405Df5D89D13d85A8271769F7Fbd7b);
address public constant deadWallet =
0x000000000000000000000000000000000000dEaD;
mapping(address => uint256) private _tOwned;
mapping(address => mapping(address => uint256)) private _allowances;
mapping(address => bool) private _isExcludedFromFee;
event Log(string, uint256);
event AuditLog(string, address);
event RewardLiquidityProviders(uint256 tokenAmount);
event SwapAndLiquifyEnabledUpdated(bool enabled);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiqudity
);
event SwapTokensForETH(uint256 amountIn, address[] path);
uint256 private _tTotal = 1_000_000_000 ether;
uint256 private _tFeeTotal;
string public constant name = "Derp Coin";
string public constant symbol = "DERPS";
uint8 public constant decimals = 18;
uint public buyFee = 1;
uint256 public sellFee = 1;
uint256 public marketingTokensCollected = 0;
uint256 public totalMarketingTokensCollected = 0;
uint256 public minimumTokensBeforeSwap = 30_000 ether;
IUniswapV2Router02 public immutable uniswapV2Router;
address public immutable uniswapV2Pair;
address private immutable WETH;
bool public inSwapAndLiquify;
bool public swapAndLiquifyEnabled = false;
modifier lockTheSwap() {
inSwapAndLiquify = true;
_;
inSwapAndLiquify = false;
}
constructor() {
address currentRouter;
if (block.chainid == 56) {
currentRouter = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // PCS Router
_isExcludedFromFee[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true;
} else if (block.chainid == 97) {
currentRouter = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1; // PCS Testnet
_isExcludedFromFee[0x5E5b9bE5fd939c578ABE5800a90C566eeEbA44a5] = true;
} else if (block.chainid == 1 || block.chainid == 4) {
currentRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; //Mainnet
_isExcludedFromFee[0x71B5759d73262FBb223956913ecF4ecC51057641] = true;
} else {
revert("Check Router");
}
//End of Router Variables.
//Owner of balance
_tOwned[cxWallet] = _tTotal;
//Create Pair in the contructor, this may fail on some blockchains and can be done in a separate line if needed.
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(currentRouter);
WETH = _uniswapV2Router.WETH();
uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), WETH);
uniswapV2Router = _uniswapV2Router;
//Approve router to be used.
_approve(msg.sender, address(uniswapV2Router), type(uint256).max);
_approve(address(this), address(uniswapV2Router), type(uint256).max);
//Exclude from fees the owner, contract and SAFU.
_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[address(this)] = true;
_isExcludedFromFee[cxWallet] = true;
emit Transfer(address(0), cxWallet, _tTotal);
_transferOwnership(cxWallet);
}
//Readable Functions.
function totalSupply() public view override returns (uint256) {
return _tTotal;
}
function balanceOf(address account) public view override returns (uint256) {
return _tOwned[account];
}
//ERC 20 Standard Transfer Functions
function transfer(
address recipient,
uint256 amount
) public override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
//ERC 20 Standard Allowance Function
function allowance(
address _owner,
address spender
) public view override returns (uint256) {
return _allowances[_owner][spender];
}
//ERC 20 Standard Approve Function
function approve(
address spender,
uint256 amount
) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
//ERC 20 Standard Transfer From
function transferFrom(
address sender,
address recipient,
uint256 amount
) public override returns (bool) {
uint currentAllowance = _allowances[sender][_msgSender()];
require(
currentAllowance >= amount,
"ERC20: transfer amount exceeds allowance"
);
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), currentAllowance - amount);
return true;
}
//ERC 20 Standard increase Allowance
function increaseAllowance(
address spender,
uint256 addedValue
) public virtual returns (bool) {
_approve(
_msgSender(),
spender,
_allowances[_msgSender()][spender] + addedValue
);
return true;
}
//ERC 20 Standard decrease Allowance
function decreaseAllowance(
address spender,
uint256 subtractedValue
) public virtual returns (bool) {
_approve(
_msgSender(),
spender,
_allowances[_msgSender()][spender] - subtractedValue
);
return true;
}
//Approve Function
function _approve(address _owner, address spender, uint256 amount) private {
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);
}
//Transfer function, validate correct wallet structure, take fees, and other custom taxes are done during the transfer.
function _transfer(address from, address to, uint256 amount) private {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
require(amount > 0, "Transfer amount must be greater than zero");
require(
_tOwned[from] >= amount,
"ERC20: transfer amount exceeds balance"
);
//Adding logic for automatic swap.
uint256 contractTokenBalance = balanceOf(address(this));
bool overMinimumTokenBalance = contractTokenBalance >=
minimumTokensBeforeSwap;
uint fee = 0;
//if any account belongs to _isExcludedFromFee account then remove the fee
if (
!inSwapAndLiquify &&
from != uniswapV2Pair &&
overMinimumTokenBalance &&
swapAndLiquifyEnabled
) {
swapAndLiquify();
}
if (to == uniswapV2Pair && !_isExcludedFromFee[from]) {
fee = (sellFee * amount) / 100;
}
if (from == uniswapV2Pair && !_isExcludedFromFee[to]) {
fee = (buyFee * amount) / 100;
}
amount -= fee;
if (fee > 0) {
_tokenTransfer(from, address(this), fee);
marketingTokensCollected += fee;
totalMarketingTokensCollected += fee;
}
_tokenTransfer(from, to, amount);
}
//Swap Tokens for BNB or to add liquidity either automatically or manual, by default this is set to manual.
//Corrected newBalance bug, it sending bnb to wallet and any remaining is on contract and can be recoverred.
function swapAndLiquify() public lockTheSwap {
uint256 totalTokens = balanceOf(address(this));
swapTokensForEth(totalTokens);
uint ethBalance = address(this).balance;
transferToAddressETH(DerpWallet, ethBalance);
marketingTokensCollected = 0;
}
//swap for eth is to support the converstion of tokens to weth during swapandliquify this is a supporting function
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] = WETH;
_approve(address(this), address(uniswapV2Router), tokenAmount);
// make the swap
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this), // The contract
block.timestamp
);
emit SwapTokensForETH(tokenAmount, path);
}
//ERC 20 standard transfer, only added if taking fees to countup the amount of fees for better tracking and split purpose.
function _tokenTransfer(
address sender,
address recipient,
uint256 amount
) private {
_tOwned[sender] -= amount;
_tOwned[recipient] += amount;
emit Transfer(sender, recipient, amount);
}
function isExcludedFromFee(address account) external view returns (bool) {
return _isExcludedFromFee[account];
}
//exclude wallets from fees, this is needed for launch or other contracts.
function excludeFromFee(address account) external onlyOwner {
require(_isExcludedFromFee[account] != true, "The wallet is already excluded!");
_isExcludedFromFee[account] = true;
emit AuditLog(
"We have excluded the following walled in fees:",
account
);
}
//include wallet back in fees.
function includeInFee(address account) external onlyOwner {
require(_isExcludedFromFee[account] != false, "The wallet is already included!");
_isExcludedFromFee[account] = false;
emit AuditLog(
"We have including the following walled in fees:",
account
);
}
//Automatic Swap Configuration.
function setTokensToSwap(
uint256 _minimumTokensBeforeSwap
) external onlyOwner {
require(
_minimumTokensBeforeSwap >= 100 ether,
"You need to enter more than 100 tokens."
);
minimumTokensBeforeSwap = _minimumTokensBeforeSwap;
emit Log(
"We have updated minimunTokensBeforeSwap to:",
minimumTokensBeforeSwap
);
}
function setSwapAndLiquifyEnabled(bool _enabled) external onlyOwner {
require(swapAndLiquifyEnabled != _enabled, "Value already set");
swapAndLiquifyEnabled = _enabled;
emit SwapAndLiquifyEnabledUpdated(_enabled);
}
//set a new marketing wallet.
function setDerpWallet(address _marketingWallet) external onlyOwner {
require(_marketingWallet != address(0), "setmarketingWallet: ZERO");
DerpWallet = payable(_marketingWallet);
emit AuditLog("We have Updated the MarketingWallet:", DerpWallet);
}
function setBuyFee(uint256 _buyFee) external onlyOwner {
require(_buyFee <= 10, "Buy Fee cannot be more than 10%");
buyFee = _buyFee;
emit Log("We have updated the buy fee to:", buyFee);
}
function setSellFee(uint256 _sellFee) external onlyOwner {
require(_sellFee <= 10, "Sell Fee cannot be more than 10%");
sellFee = _sellFee;
emit Log("We have updated the sell fee to:", sellFee);
}
function transferToAddressETH(
address payable recipient,
uint256 amount
) private {
(bool succ, ) = recipient.call{value: amount}("");
require(succ, "Transfer failed.");
}
//to recieve ETH from uniswapV2Router when swaping
receive() external payable {}
/////---fallback--////
//This cannot be removed as is a fallback to the swapAndLiquify
event SwapETHForTokens(uint256 amountIn, address[] path);
function swapETHForTokens(uint256 amount) private {
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = WETH;
path[1] = address(this);
// make the swap
uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{
value: amount
}(
0, // accept any amount of Tokens
path,
deadWallet, // Burn address
block.timestamp + 300
);
emit SwapETHForTokens(amount, path);
}
// Withdraw ETH that's potentially stuck in the Contract
function recoverETHfromContract() external onlyOwner {
uint ethBalance = address(this).balance;
(bool succ, ) = payable(DerpWallet).call{value: ethBalance}("");
require(succ, "Transfer failed");
emit AuditLog(
"We have recover the stuck eth from contract.",
DerpWallet
);
}
// Withdraw ERC20 tokens that are potentially stuck in Contract
function recoverTokensFromContract(
address _tokenAddress,
uint256 _amount
) external onlyOwner {
require(
_tokenAddress != address(this),
"Owner can't claim contract's balance of its own tokens"
);
bool succ = IERC20(_tokenAddress).transfer(DerpWallet, _amount);
require(succ, "Transfer failed");
emit Log("We have recovered tokens from contract:", _amount);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"","type":"string"},{"indexed":false,"internalType":"address","name":"","type":"address"}],"name":"AuditLog","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"","type":"string"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"Log","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":"tokenAmount","type":"uint256"}],"name":"RewardLiquidityProviders","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":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DerpWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cxWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingTokensCollected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverETHfromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"recoverTokensFromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setDerpWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minimumTokensBeforeSwap","type":"uint256"}],"name":"setTokensToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMarketingTokensCollected","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60e0604052600180546001600160a01b031990811673c0da4ed72cf052cd6530725a916f93a8ad7c581317825560028054909116734c785d8154405df5d89d13d85a8271769f7fbd7b1790556b033b2e3c9fd0803ce800000060065560088190556009556000600a819055600b5569065a4da25d3016c00000600c55600d805461ff00191690553480156200009357600080fd5b506200009f33620004b8565b6000466038036200010f575073407993575c91ce7643a4d4ccacc9a98c36ee1bbe60005260056020527f7e99e1e5c40ec22aa71ab68cea1ae3bb6f232576acb26d0b4e86f2583f2d4e3c805460ff191660011790557310ed43c718714eb63d5aa57b78b54704e256024e62000234565b466061036200017d5750735e5b9be5fd939c578abe5800a90c566eeeba44a560005260056020527ff82f0651e7e607eebff6c1d3d6f3f615f89d88d1b43fa353246ad10804ccc9e3805460ff1916600117905573d99d1c33f9fc3444f8101754abc46c52416550d162000234565b46600114806200018d5750466004145b15620001f857507371b5759d73262fbb223956913ecf4ecc5105764160005260056020527ff98fd0e7f6efd6fe8e448ee8fb48e788882f12aeb1795b18940ee343139f98b6805460ff19166001179055737a250d5630b4cf539739df2c5dacb4c659f2488d62000234565b60405162461bcd60e51b815260206004820152600c60248201526b21b432b1b5902937baba32b960a11b60448201526064015b60405180910390fd5b6006546002546001600160a01b039081166000908152600360209081526040918290209390935580516315ab88c960e31b8152905184939284169263ad5c464892600480820193918290030181865afa15801562000296573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bc919062000630565b6001600160a01b031660c0816001600160a01b031681525050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000314573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033a919062000630565b60c0516040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af11580156200038c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b2919062000630565b6001600160a01b0390811660a05281166080819052620003d790339060001962000508565b620003ee306080516000196200050860201b60201c565b600160056000620004076000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526005845282812080548616600190811790915560028054841683528483208054909716909117909555935460065492519283521692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600254620004b0906001600160a01b0316620004b8565b505062000662565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166200056c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016200022b565b6001600160a01b038216620005cf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016200022b565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000602082840312156200064357600080fd5b81516001600160a01b03811681146200065b57600080fd5b9392505050565b60805160a05160c051611d55620006b560003960006117bc0152600081816104670152818161155e015281816115be015261163a0152600081816102d90152818161181401526118500152611d556000f3fe60806040526004361061021e5760003560e01c806367897cff11610123578063a9059cbb116100ab578063dd62ed3e1161006f578063dd62ed3e14610687578063e6be4a72146106cd578063e780c045146106ed578063ea2f0b371461070d578063f2fde38b1461072d57600080fd5b8063a9059cbb14610607578063b29ad50a14610627578063c49b9a801461063c578063ce831ed51461065c578063d2d7ad831461067157600080fd5b806385141a77116100f257806385141a77146105625780638b4cee08146105785780638da5cb5b1461059857806395d89b41146105b6578063a457c2d7146105e757600080fd5b806367897cff146104e15780636ca60bc61461050157806370a0823114610517578063715018a61461054d57600080fd5b8063313ce567116101a6578063461d947611610175578063461d94761461041f578063470624021461043f57806349bd5a5e146104555780634a74bb02146104895780635342acb4146104a857600080fd5b8063313ce567146103a257806339509351146103c957806340763503146103e9578063437823ec146103ff57600080fd5b806318160ddd116101ed57806318160ddd146103135780631c552c2d14610332578063220f66961461035257806323b872dd1461036c5780632b14ca561461038c57600080fd5b806306fdde031461022a578063095ea7b3146102755780630cc835a3146102a55780631694505e146102c757600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061025f604051806040016040528060098152602001682232b9381021b7b4b760b91b81525081565b60405161026c9190611a2d565b60405180910390f35b34801561028157600080fd5b50610295610290366004611a97565b61074d565b604051901515815260200161026c565b3480156102b157600080fd5b506102c56102c0366004611ac1565b610764565b005b3480156102d357600080fd5b506102fb7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161026c565b34801561031f57600080fd5b506006545b60405190815260200161026c565b34801561033e57600080fd5b506001546102fb906001600160a01b031681565b34801561035e57600080fd5b50600d546102959060ff1681565b34801561037857600080fd5b50610295610387366004611ada565b610823565b34801561039857600080fd5b5061032460095481565b3480156103ae57600080fd5b506103b7601281565b60405160ff909116815260200161026c565b3480156103d557600080fd5b506102956103e4366004611a97565b6108d2565b3480156103f557600080fd5b50610324600b5481565b34801561040b57600080fd5b506102c561041a366004611b16565b610909565b34801561042b57600080fd5b506102c561043a366004611ac1565b610a19565b34801561044b57600080fd5b5061032460085481565b34801561046157600080fd5b506102fb7f000000000000000000000000000000000000000000000000000000000000000081565b34801561049557600080fd5b50600d5461029590610100900460ff1681565b3480156104b457600080fd5b506102956104c3366004611b16565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156104ed57600080fd5b506102c56104fc366004611b16565b610af8565b34801561050d57600080fd5b50610324600a5481565b34801561052357600080fd5b50610324610532366004611b16565b6001600160a01b031660009081526003602052604090205490565b34801561055957600080fd5b506102c5610bd7565b34801561056e57600080fd5b506102fb61dead81565b34801561058457600080fd5b506102c5610593366004611ac1565b610beb565b3480156105a457600080fd5b506000546001600160a01b03166102fb565b3480156105c257600080fd5b5061025f60405180604001604052806005815260200164444552505360d81b81525081565b3480156105f357600080fd5b50610295610602366004611a97565b610c9c565b34801561061357600080fd5b50610295610622366004611a97565b610cd3565b34801561063357600080fd5b506102c5610ce0565b34801561064857600080fd5b506102c5610657366004611b46565b610d33565b34801561066857600080fd5b506102c5610dda565b34801561067d57600080fd5b50610324600c5481565b34801561069357600080fd5b506103246106a2366004611b63565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156106d957600080fd5b506102c56106e8366004611a97565b610ef9565b3480156106f957600080fd5b506002546102fb906001600160a01b031681565b34801561071957600080fd5b506102c5610728366004611b16565b61109b565b34801561073957600080fd5b506102c5610748366004611b16565b61119d565b600061075a338484611216565b5060015b92915050565b61076c61133b565b600a8111156107c25760405162461bcd60e51b815260206004820152601f60248201527f427579204665652063616e6e6f74206265206d6f7265207468616e203130250060448201526064015b60405180910390fd5b600881905560408051818152601f918101919091527f57652068617665207570646174656420746865206275792066656520746f3a00606082015260208101829052600080516020611ce0833981519152906080015b60405180910390a150565b6001600160a01b0383166000908152600460209081526040808320338452909152812054828110156108a85760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107b9565b6108b3858585611395565b6108c785336108c28685611bac565b611216565b506001949350505050565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161075a9185906108c2908690611bbf565b61091161133b565b6001600160a01b03811660009081526005602052604090205460ff16151560010361097e5760405162461bcd60e51b815260206004820152601f60248201527f5468652077616c6c657420697320616c7265616479206578636c75646564210060448201526064016107b9565b6001600160a01b03811660009081526005602052604090819020805460ff1916600117905551600080516020611d00833981519152906108189083906040808252602e908201527f57652068617665206578636c756465642074686520666f6c6c6f77696e67207760608201526d30b63632b21034b7103332b2b99d60911b60808201526001600160a01b0391909116602082015260a00190565b610a2161133b565b68056bc75e2d63100000811015610a8a5760405162461bcd60e51b815260206004820152602760248201527f596f75206e65656420746f20656e746572206d6f7265207468616e20313030206044820152663a37b5b2b7399760c91b60648201526084016107b9565b600c81905560408051818152602b918101919091527f576520686176652075706461746564206d696e696d756e546f6b656e7342656660608201526a37b932a9bbb0b8103a379d60a91b608082015260208101829052600080516020611ce08339815191529060a001610818565b610b0061133b565b6001600160a01b038116610b565760405162461bcd60e51b815260206004820152601860248201527f7365746d61726b6574696e6757616c6c65743a205a45524f000000000000000060448201526064016107b9565b600180546001600160a01b0319166001600160a01b038316908117909155604080518181526024918101919091527f57652068617665205570646174656420746865204d61726b6574696e6757616c6060820152633632ba1d60e11b60808201526020810191909152600080516020611d008339815191529060a001610818565b610bdf61133b565b610be96000611715565b565b610bf361133b565b600a811115610c445760405162461bcd60e51b815260206004820181905260248201527f53656c6c204665652063616e6e6f74206265206d6f7265207468616e2031302560448201526064016107b9565b60098190556040805181815260209181018290527f576520686176652075706461746564207468652073656c6c2066656520746f3a6060820152908101829052600080516020611ce083398151915290608001610818565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161075a9185906108c2908690611bac565b600061075a338484611395565b600d805460ff19166001179055306000908152600360205260408120549050610d0881611765565b6001544790610d20906001600160a01b0316826118f1565b50506000600a55600d805460ff19169055565b610d3b61133b565b801515600d60019054906101000a900460ff16151503610d915760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b60448201526064016107b9565b600d80548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061081890831515815260200190565b610de261133b565b60015460405147916000916001600160a01b039091169083908381818185875af1925050503d8060008114610e33576040519150601f19603f3d011682016040523d82523d6000602084013e610e38565b606091505b5050905080610e7b5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016107b9565b60015460408051818152602c918101919091527f57652068617665207265636f7665722074686520737475636b2065746820667260608201526b37b69031b7b73a3930b1ba1760a11b60808201526001600160a01b039091166020820152600080516020611d008339815191529060a0015b60405180910390a15050565b610f0161133b565b306001600160a01b03831603610f785760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b60648201526084016107b9565b60015460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905260009184169063a9059cbb906044016020604051808303816000875af1158015610fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff19190611bd2565b9050806110325760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016107b9565b604080518181526027818301527f57652068617665207265636f766572656420746f6b656e732066726f6d20636f606082015266373a3930b1ba1d60c91b6080820152602081018490529051600080516020611ce08339815191529181900360a00190a1505050565b6110a361133b565b6001600160a01b03811660009081526005602052604081205460ff161515900361110f5760405162461bcd60e51b815260206004820152601f60248201527f5468652077616c6c657420697320616c726561647920696e636c75646564210060448201526064016107b9565b6001600160a01b038116600081815260056020908152604091829020805460ff191690558151828152602f928101929092527f5765206861766520696e636c7564696e672074686520666f6c6c6f77696e672060608301526e3bb0b63632b21034b7103332b2b99d60891b6080830152810191909152600080516020611d008339815191529060a001610818565b6111a561133b565b6001600160a01b03811661120a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107b9565b61121381611715565b50565b6001600160a01b0383166112785760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107b9565b6001600160a01b0382166112d95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107b9565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000546001600160a01b03163314610be95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107b9565b6001600160a01b0383166113f95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107b9565b6001600160a01b03821661145b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107b9565b600081116114bd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107b9565b6001600160a01b0383166000908152600360205260409020548111156115345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107b9565b30600090815260036020526040812054600c54600d549192908310159160ff1615801561159357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031614155b801561159c5750815b80156115af5750600d54610100900460ff165b156115bc576115bc610ce0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614801561161657506001600160a01b03861660009081526005602052604090205460ff16155b156116385760648460095461162b9190611bef565b6116359190611c06565b90505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031614801561169257506001600160a01b03851660009081526005602052604090205460ff16155b156116b4576064846008546116a79190611bef565b6116b19190611c06565b90505b6116be8185611bac565b93508015611702576116d186308361198c565b80600a60008282546116e39190611bbf565b9250508190555080600b60008282546116fc9190611bbf565b90915550505b61170d86868661198c565b505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061179a5761179a611c28565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106117ee576117ee611c28565b60200260200101906001600160a01b031690816001600160a01b031681525050611839307f000000000000000000000000000000000000000000000000000000000000000084611216565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061188e908590600090869030904290600401611c82565b600060405180830381600087803b1580156118a857600080fd5b505af11580156118bc573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051610eed929190611cbe565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461193e576040519150601f19603f3d011682016040523d82523d6000602084013e611943565b606091505b50509050806119875760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b60448201526064016107b9565b505050565b6001600160a01b038316600090815260036020526040812080548392906119b4908490611bac565b90915550506001600160a01b038216600090815260036020526040812080548392906119e1908490611bbf565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161132e91815260200190565b600060208083528351808285015260005b81811015611a5a57858101830151858201604001528201611a3e565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611a9257600080fd5b919050565b60008060408385031215611aaa57600080fd5b611ab383611a7b565b946020939093013593505050565b600060208284031215611ad357600080fd5b5035919050565b600080600060608486031215611aef57600080fd5b611af884611a7b565b9250611b0660208501611a7b565b9150604084013590509250925092565b600060208284031215611b2857600080fd5b611b3182611a7b565b9392505050565b801515811461121357600080fd5b600060208284031215611b5857600080fd5b8135611b3181611b38565b60008060408385031215611b7657600080fd5b611b7f83611a7b565b9150611b8d60208401611a7b565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561075e5761075e611b96565b8082018082111561075e5761075e611b96565b600060208284031215611be457600080fd5b8151611b3181611b38565b808202811582820484141761075e5761075e611b96565b600082611c2357634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015611c775781516001600160a01b031687529582019590820190600101611c52565b509495945050505050565b85815284602082015260a060408201526000611ca160a0830186611c3e565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000611cd76040830184611c3e565b94935050505056fedd970dd9b5bfe707922155b058a407655cb18288b807e2216442bca8ad83d6b5025dbd6ad989fe1a64db7dc049e29723ff9d35a97d84ae9aab96196f00ec1a00a26469706673582212207909c8f4867a70d4de12b908249b84a19eb836a2d3e19dd45abbe566b32f0c6664736f6c63430008130033
Deployed Bytecode
0x60806040526004361061021e5760003560e01c806367897cff11610123578063a9059cbb116100ab578063dd62ed3e1161006f578063dd62ed3e14610687578063e6be4a72146106cd578063e780c045146106ed578063ea2f0b371461070d578063f2fde38b1461072d57600080fd5b8063a9059cbb14610607578063b29ad50a14610627578063c49b9a801461063c578063ce831ed51461065c578063d2d7ad831461067157600080fd5b806385141a77116100f257806385141a77146105625780638b4cee08146105785780638da5cb5b1461059857806395d89b41146105b6578063a457c2d7146105e757600080fd5b806367897cff146104e15780636ca60bc61461050157806370a0823114610517578063715018a61461054d57600080fd5b8063313ce567116101a6578063461d947611610175578063461d94761461041f578063470624021461043f57806349bd5a5e146104555780634a74bb02146104895780635342acb4146104a857600080fd5b8063313ce567146103a257806339509351146103c957806340763503146103e9578063437823ec146103ff57600080fd5b806318160ddd116101ed57806318160ddd146103135780631c552c2d14610332578063220f66961461035257806323b872dd1461036c5780632b14ca561461038c57600080fd5b806306fdde031461022a578063095ea7b3146102755780630cc835a3146102a55780631694505e146102c757600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061025f604051806040016040528060098152602001682232b9381021b7b4b760b91b81525081565b60405161026c9190611a2d565b60405180910390f35b34801561028157600080fd5b50610295610290366004611a97565b61074d565b604051901515815260200161026c565b3480156102b157600080fd5b506102c56102c0366004611ac1565b610764565b005b3480156102d357600080fd5b506102fb7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161026c565b34801561031f57600080fd5b506006545b60405190815260200161026c565b34801561033e57600080fd5b506001546102fb906001600160a01b031681565b34801561035e57600080fd5b50600d546102959060ff1681565b34801561037857600080fd5b50610295610387366004611ada565b610823565b34801561039857600080fd5b5061032460095481565b3480156103ae57600080fd5b506103b7601281565b60405160ff909116815260200161026c565b3480156103d557600080fd5b506102956103e4366004611a97565b6108d2565b3480156103f557600080fd5b50610324600b5481565b34801561040b57600080fd5b506102c561041a366004611b16565b610909565b34801561042b57600080fd5b506102c561043a366004611ac1565b610a19565b34801561044b57600080fd5b5061032460085481565b34801561046157600080fd5b506102fb7f0000000000000000000000009ca16611b7bc15498666470e6b76f4fcaba97f1081565b34801561049557600080fd5b50600d5461029590610100900460ff1681565b3480156104b457600080fd5b506102956104c3366004611b16565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156104ed57600080fd5b506102c56104fc366004611b16565b610af8565b34801561050d57600080fd5b50610324600a5481565b34801561052357600080fd5b50610324610532366004611b16565b6001600160a01b031660009081526003602052604090205490565b34801561055957600080fd5b506102c5610bd7565b34801561056e57600080fd5b506102fb61dead81565b34801561058457600080fd5b506102c5610593366004611ac1565b610beb565b3480156105a457600080fd5b506000546001600160a01b03166102fb565b3480156105c257600080fd5b5061025f60405180604001604052806005815260200164444552505360d81b81525081565b3480156105f357600080fd5b50610295610602366004611a97565b610c9c565b34801561061357600080fd5b50610295610622366004611a97565b610cd3565b34801561063357600080fd5b506102c5610ce0565b34801561064857600080fd5b506102c5610657366004611b46565b610d33565b34801561066857600080fd5b506102c5610dda565b34801561067d57600080fd5b50610324600c5481565b34801561069357600080fd5b506103246106a2366004611b63565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156106d957600080fd5b506102c56106e8366004611a97565b610ef9565b3480156106f957600080fd5b506002546102fb906001600160a01b031681565b34801561071957600080fd5b506102c5610728366004611b16565b61109b565b34801561073957600080fd5b506102c5610748366004611b16565b61119d565b600061075a338484611216565b5060015b92915050565b61076c61133b565b600a8111156107c25760405162461bcd60e51b815260206004820152601f60248201527f427579204665652063616e6e6f74206265206d6f7265207468616e203130250060448201526064015b60405180910390fd5b600881905560408051818152601f918101919091527f57652068617665207570646174656420746865206275792066656520746f3a00606082015260208101829052600080516020611ce0833981519152906080015b60405180910390a150565b6001600160a01b0383166000908152600460209081526040808320338452909152812054828110156108a85760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107b9565b6108b3858585611395565b6108c785336108c28685611bac565b611216565b506001949350505050565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161075a9185906108c2908690611bbf565b61091161133b565b6001600160a01b03811660009081526005602052604090205460ff16151560010361097e5760405162461bcd60e51b815260206004820152601f60248201527f5468652077616c6c657420697320616c7265616479206578636c75646564210060448201526064016107b9565b6001600160a01b03811660009081526005602052604090819020805460ff1916600117905551600080516020611d00833981519152906108189083906040808252602e908201527f57652068617665206578636c756465642074686520666f6c6c6f77696e67207760608201526d30b63632b21034b7103332b2b99d60911b60808201526001600160a01b0391909116602082015260a00190565b610a2161133b565b68056bc75e2d63100000811015610a8a5760405162461bcd60e51b815260206004820152602760248201527f596f75206e65656420746f20656e746572206d6f7265207468616e20313030206044820152663a37b5b2b7399760c91b60648201526084016107b9565b600c81905560408051818152602b918101919091527f576520686176652075706461746564206d696e696d756e546f6b656e7342656660608201526a37b932a9bbb0b8103a379d60a91b608082015260208101829052600080516020611ce08339815191529060a001610818565b610b0061133b565b6001600160a01b038116610b565760405162461bcd60e51b815260206004820152601860248201527f7365746d61726b6574696e6757616c6c65743a205a45524f000000000000000060448201526064016107b9565b600180546001600160a01b0319166001600160a01b038316908117909155604080518181526024918101919091527f57652068617665205570646174656420746865204d61726b6574696e6757616c6060820152633632ba1d60e11b60808201526020810191909152600080516020611d008339815191529060a001610818565b610bdf61133b565b610be96000611715565b565b610bf361133b565b600a811115610c445760405162461bcd60e51b815260206004820181905260248201527f53656c6c204665652063616e6e6f74206265206d6f7265207468616e2031302560448201526064016107b9565b60098190556040805181815260209181018290527f576520686176652075706461746564207468652073656c6c2066656520746f3a6060820152908101829052600080516020611ce083398151915290608001610818565b3360008181526004602090815260408083206001600160a01b0387168452909152812054909161075a9185906108c2908690611bac565b600061075a338484611395565b600d805460ff19166001179055306000908152600360205260408120549050610d0881611765565b6001544790610d20906001600160a01b0316826118f1565b50506000600a55600d805460ff19169055565b610d3b61133b565b801515600d60019054906101000a900460ff16151503610d915760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b60448201526064016107b9565b600d80548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061081890831515815260200190565b610de261133b565b60015460405147916000916001600160a01b039091169083908381818185875af1925050503d8060008114610e33576040519150601f19603f3d011682016040523d82523d6000602084013e610e38565b606091505b5050905080610e7b5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016107b9565b60015460408051818152602c918101919091527f57652068617665207265636f7665722074686520737475636b2065746820667260608201526b37b69031b7b73a3930b1ba1760a11b60808201526001600160a01b039091166020820152600080516020611d008339815191529060a0015b60405180910390a15050565b610f0161133b565b306001600160a01b03831603610f785760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b60648201526084016107b9565b60015460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905260009184169063a9059cbb906044016020604051808303816000875af1158015610fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff19190611bd2565b9050806110325760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016107b9565b604080518181526027818301527f57652068617665207265636f766572656420746f6b656e732066726f6d20636f606082015266373a3930b1ba1d60c91b6080820152602081018490529051600080516020611ce08339815191529181900360a00190a1505050565b6110a361133b565b6001600160a01b03811660009081526005602052604081205460ff161515900361110f5760405162461bcd60e51b815260206004820152601f60248201527f5468652077616c6c657420697320616c726561647920696e636c75646564210060448201526064016107b9565b6001600160a01b038116600081815260056020908152604091829020805460ff191690558151828152602f928101929092527f5765206861766520696e636c7564696e672074686520666f6c6c6f77696e672060608301526e3bb0b63632b21034b7103332b2b99d60891b6080830152810191909152600080516020611d008339815191529060a001610818565b6111a561133b565b6001600160a01b03811661120a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107b9565b61121381611715565b50565b6001600160a01b0383166112785760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107b9565b6001600160a01b0382166112d95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107b9565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000546001600160a01b03163314610be95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107b9565b6001600160a01b0383166113f95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107b9565b6001600160a01b03821661145b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107b9565b600081116114bd5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107b9565b6001600160a01b0383166000908152600360205260409020548111156115345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107b9565b30600090815260036020526040812054600c54600d549192908310159160ff1615801561159357507f0000000000000000000000009ca16611b7bc15498666470e6b76f4fcaba97f106001600160a01b0316866001600160a01b031614155b801561159c5750815b80156115af5750600d54610100900460ff165b156115bc576115bc610ce0565b7f0000000000000000000000009ca16611b7bc15498666470e6b76f4fcaba97f106001600160a01b0316856001600160a01b031614801561161657506001600160a01b03861660009081526005602052604090205460ff16155b156116385760648460095461162b9190611bef565b6116359190611c06565b90505b7f0000000000000000000000009ca16611b7bc15498666470e6b76f4fcaba97f106001600160a01b0316866001600160a01b031614801561169257506001600160a01b03851660009081526005602052604090205460ff16155b156116b4576064846008546116a79190611bef565b6116b19190611c06565b90505b6116be8185611bac565b93508015611702576116d186308361198c565b80600a60008282546116e39190611bbf565b9250508190555080600b60008282546116fc9190611bbf565b90915550505b61170d86868661198c565b505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061179a5761179a611c28565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106117ee576117ee611c28565b60200260200101906001600160a01b031690816001600160a01b031681525050611839307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611216565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac9479061188e908590600090869030904290600401611c82565b600060405180830381600087803b1580156118a857600080fd5b505af11580156118bc573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051610eed929190611cbe565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461193e576040519150601f19603f3d011682016040523d82523d6000602084013e611943565b606091505b50509050806119875760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b60448201526064016107b9565b505050565b6001600160a01b038316600090815260036020526040812080548392906119b4908490611bac565b90915550506001600160a01b038216600090815260036020526040812080548392906119e1908490611bbf565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161132e91815260200190565b600060208083528351808285015260005b81811015611a5a57858101830151858201604001528201611a3e565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611a9257600080fd5b919050565b60008060408385031215611aaa57600080fd5b611ab383611a7b565b946020939093013593505050565b600060208284031215611ad357600080fd5b5035919050565b600080600060608486031215611aef57600080fd5b611af884611a7b565b9250611b0660208501611a7b565b9150604084013590509250925092565b600060208284031215611b2857600080fd5b611b3182611a7b565b9392505050565b801515811461121357600080fd5b600060208284031215611b5857600080fd5b8135611b3181611b38565b60008060408385031215611b7657600080fd5b611b7f83611a7b565b9150611b8d60208401611a7b565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561075e5761075e611b96565b8082018082111561075e5761075e611b96565b600060208284031215611be457600080fd5b8151611b3181611b38565b808202811582820484141761075e5761075e611b96565b600082611c2357634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b83811015611c775781516001600160a01b031687529582019590820190600101611c52565b509495945050505050565b85815284602082015260a060408201526000611ca160a0830186611c3e565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000611cd76040830184611c3e565b94935050505056fedd970dd9b5bfe707922155b058a407655cb18288b807e2216442bca8ad83d6b5025dbd6ad989fe1a64db7dc049e29723ff9d35a97d84ae9aab96196f00ec1a00a26469706673582212207909c8f4867a70d4de12b908249b84a19eb836a2d3e19dd45abbe566b32f0c6664736f6c63430008130033
Deployed Bytecode Sourcemap
22964:13810:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24006:41;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;24006:41:0;;;;;;;;;;;;:::i;:::-;;;;;;;;27274:186;;;;;;;;;;-1:-1:-1;27274:186:0;;;;;:::i;:::-;;:::i;:::-;;;1169:14:1;;1162:22;1144:41;;1132:2;1117:18;27274:186:0;1004:187:1;34298:220:0;;;;;;;;;;-1:-1:-1;34298:220:0;;;;;:::i;:::-;;:::i;:::-;;24381:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1572:32:1;;;1554:51;;1542:2;1527:18;24381:51:0;1381:230:1;26544:95:0;;;;;;;;;;-1:-1:-1;26624:7:0;;26544:95;;;1762:25:1;;;1750:2;1735:18;26544:95:0;1616:177:1;23046:96:0;;;;;;;;;;-1:-1:-1;23046:96:0;;;;-1:-1:-1;;;;;23046:96:0;;;24523:28;;;;;;;;;;-1:-1:-1;24523:28:0;;;;;;;;27505:478;;;;;;;;;;-1:-1:-1;27505:478:0;;;;;:::i;:::-;;:::i;24175:26::-;;;;;;;;;;;;;;;;24100:35;;;;;;;;;;;;24133:2;24100:35;;;;;2527:4:1;2515:17;;;2497:36;;2485:2;2470:18;24100:35:0;2355:184:1;28033:290:0;;;;;;;;;;-1:-1:-1;28033:290:0;;;;;:::i;:::-;;:::i;24260:48::-;;;;;;;;;;;;;;;;32549:323;;;;;;;;;;-1:-1:-1;32549:323:0;;;;;:::i;:::-;;:::i;33285:428::-;;;;;;;;;;-1:-1:-1;33285:428:0;;;;;:::i;:::-;;:::i;24144:22::-;;;;;;;;;;;;;;;;24439:38;;;;;;;;;;;;;;;24558:41;;;;;;;;;;-1:-1:-1;24558:41:0;;;;;;;;;;;32335:126;;;;;;;;;;-1:-1:-1;32335:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;32426:27:0;32402:4;32426:27;;;:18;:27;;;;;;;;;32335:126;34011:279;;;;;;;;;;-1:-1:-1;34011:279:0;;;;;:::i;:::-;;:::i;24210:43::-;;;;;;;;;;;;;;;;26647:117;;;;;;;;;;-1:-1:-1;26647:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;26740:16:0;26713:7;26740:16;;;:7;:16;;;;;;;26647:117;13084:103;;;;;;;;;;;;;:::i;23254:88::-;;;;;;;;;;;;23300:42;23254:88;;34526:228;;;;;;;;;;-1:-1:-1;34526:228:0;;;;;:::i;:::-;;:::i;12436:87::-;;;;;;;;;;-1:-1:-1;12482:7:0;12509:6;-1:-1:-1;;;;;12509:6:0;12436:87;;24054:39;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;24054:39:0;;;;;28373:300;;;;;;;;;;-1:-1:-1;28373:300:0;;;;;:::i;:::-;;:::i;26814:192::-;;;;;;;;;;-1:-1:-1;26814:192:0;;;;;:::i;:::-;;:::i;30874:298::-;;;;;;;;;;;;;:::i;33721:247::-;;;;;;;;;;-1:-1:-1;33721:247:0;;;;;:::i;:::-;;:::i;35883:349::-;;;;;;;;;;;;;:::i;24317:53::-;;;;;;;;;;;;;;;;27056:170;;;;;;;;;;-1:-1:-1;27056:170:0;;;;;:::i;:::-;-1:-1:-1;;;;;27190:19:0;;;27163:7;27190:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;27056:170;36309:460;;;;;;;;;;-1:-1:-1;36309:460:0;;;;;:::i;:::-;;:::i;23151:94::-;;;;;;;;;;-1:-1:-1;23151:94:0;;;;-1:-1:-1;;;;;23151:94:0;;;32916:324;;;;;;;;;;-1:-1:-1;32916:324:0;;;;;:::i;:::-;;:::i;13342:238::-;;;;;;;;;;-1:-1:-1;13342:238:0;;;;;:::i;:::-;;:::i;27274:186::-;27374:4;27391:39;247:10;27414:7;27423:6;27391:8;:39::i;:::-;-1:-1:-1;27448:4:0;27274:186;;;;;:::o;34298:220::-;12322:13;:11;:13::i;:::-;34383:2:::1;34372:7;:13;;34364:57;;;::::0;-1:-1:-1;;;34364:57:0;;3779:2:1;34364:57:0::1;::::0;::::1;3761:21:1::0;3818:2;3798:18;;;3791:30;3857:33;3837:18;;;3830:61;3908:18;;34364:57:0::1;;;;;;;;;34432:6;:16:::0;;;34464:46:::1;::::0;;4149:21:1;;;4206:2;4186:18;;;4179:30;;;;4245:33;4240:2;4225:18;;4218:61;4346:4;4331:20;;4324:36;;;-1:-1:-1;;;;;;;;;;;34464:46:0;4311:3:1;4296:19;34464:46:0::1;;;;;;;;34298:220:::0;:::o;27505:478::-;-1:-1:-1;;;;;27678:19:0;;27637:4;27678:19;;;:11;:19;;;;;;;;247:10;27678:33;;;;;;;;27744:26;;;;27722:116;;;;-1:-1:-1;;;27722:116:0;;4573:2:1;27722:116:0;;;4555:21:1;4612:2;4592:18;;;4585:30;4651:34;4631:18;;;4624:62;-1:-1:-1;;;4702:18:1;;;4695:38;4750:19;;27722:116:0;4371:404:1;27722:116:0;27849:36;27859:6;27867:9;27878:6;27849:9;:36::i;:::-;27896:57;27905:6;247:10;27927:25;27946:6;27927:16;:25;:::i;:::-;27896:8;:57::i;:::-;-1:-1:-1;27971:4:0;;27505:478;-1:-1:-1;;;;27505:478:0:o;28033:290::-;247:10;28146:4;28235:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;28235:34:0;;;;;;;;;;28146:4;;28163:130;;28213:7;;28235:47;;28272:10;;28235:47;:::i;32549:323::-;12322:13;:11;:13::i;:::-;-1:-1:-1;;;;;32628:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;::::1;;:35;;:27:::0;:35;32620:79:::1;;;::::0;-1:-1:-1;;;32620:79:0;;5377:2:1;32620:79:0::1;::::0;::::1;5359:21:1::0;5416:2;5396:18;;;5389:30;5455:33;5435:18;;;5428:61;5506:18;;32620:79:0::1;5175:355:1::0;32620:79:0::1;-1:-1:-1::0;;;;;32710:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;:34;;-1:-1:-1;;32710:34:0::1;32740:4;32710:34;::::0;;32760:104;-1:-1:-1;;;;;;;;;;;32760:104:0;::::1;::::0;32729:7;;5765:2:1;5747:21;;;5804:2;5784:18;;;5777:30;5843:34;5838:2;5823:18;;5816:62;-1:-1:-1;;;5909:3:1;5894:19;;5887:45;-1:-1:-1;;;;;6006:32:1;;;;5999:4;5984:20;;5977:62;5964:3;5949:19;;5535:510;33285:428:0;12322:13;:11;:13::i;:::-;33440:9:::1;33412:24;:37;;33390:126;;;::::0;-1:-1:-1;;;33390:126:0;;6252:2:1;33390:126:0::1;::::0;::::1;6234:21:1::0;6291:2;6271:18;;;6264:30;6330:34;6310:18;;;6303:62;-1:-1:-1;;;6381:18:1;;;6374:37;6428:19;;33390:126:0::1;6050:403:1::0;33390:126:0::1;33527:23;:50:::0;;;33593:112:::1;::::0;;6670:21:1;;;6727:2;6707:18;;;6700:30;;;;6766:34;6761:2;6746:18;;6739:62;-1:-1:-1;;;6832:3:1;6817:19;;6810:42;6919:4;6904:20;;6897:36;;;-1:-1:-1;;;;;;;;;;;33593:112:0;6884:3:1;6869:19;33593:112:0::1;6458:481:1::0;34011:279:0;12322:13;:11;:13::i;:::-;-1:-1:-1;;;;;34098:30:0;::::1;34090:67;;;::::0;-1:-1:-1;;;34090:67:0;;7146:2:1;34090:67:0::1;::::0;::::1;7128:21:1::0;7185:2;7165:18;;;7158:30;7224:26;7204:18;;;7197:54;7268:18;;34090:67:0::1;6944:348:1::0;34090:67:0::1;34168:10;:38:::0;;-1:-1:-1;;;;;;34168:38:0::1;-1:-1:-1::0;;;;;34168:38:0;::::1;::::0;;::::1;::::0;;;34222:60:::1;::::0;;7517:21:1;;;7574:2;7554:18;;;7547:30;;;;7613:34;7608:2;7593:18;;7586:62;-1:-1:-1;;;7679:3:1;7664:19;;7657:35;7759:4;7744:20;;7737:62;;;;-1:-1:-1;;;;;;;;;;;34222:60:0;7724:3:1;7709:19;34222:60:0::1;7297:508:1::0;13084:103:0;12322:13;:11;:13::i;:::-;13149:30:::1;13176:1;13149:18;:30::i;:::-;13084:103::o:0;34526:228::-;12322:13;:11;:13::i;:::-;34614:2:::1;34602:8;:14;;34594:59;;;::::0;-1:-1:-1;;;34594:59:0;;8012:2:1;34594:59:0::1;::::0;::::1;7994:21:1::0;;;8031:18;;;8024:30;8090:34;8070:18;;;8063:62;8142:18;;34594:59:0::1;7810:356:1::0;34594:59:0::1;34664:7;:18:::0;;;34698:48:::1;::::0;;8383:21:1;;;8440:2;8420:18;;;8413:30;;;8479:34;8474:2;8459:18;;8452:62;8566:18;;;8559:34;;;-1:-1:-1;;;;;;;;;;;34698:48:0;8546:3:1;8531:19;34698:48:0::1;8171:428:1::0;28373:300:0;247:10;28491:4;28580:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;28580:34:0;;;;;;;;;;28491:4;;28508:135;;28558:7;;28580:52;;28617:15;;28580:52;:::i;26814:192::-;26917:4;26934:42;247:10;26958:9;26969:6;26934:9;:42::i;30874:298::-;24642:16;:23;;-1:-1:-1;;24642:23:0;24661:4;24642:23;;;30970:4:::1;-1:-1:-1::0;26740:16:0;;;:7;:16;;;;;;30930:46:::1;;30987:29;31004:11;30987:16;:29::i;:::-;31100:10;::::0;31045:21:::1;::::0;31079:44:::1;::::0;-1:-1:-1;;;;;31100:10:0::1;31045:21:::0;31079:20:::1;:44::i;:::-;-1:-1:-1::0;;31163:1:0::1;31136:24;:28:::0;24688:16;:24;;-1:-1:-1;;24688:24:0;;;30874:298::o;33721:247::-;12322:13;:11;:13::i;:::-;33833:8:::1;33808:33;;:21;;;;;;;;;;;:33;;::::0;33800:63:::1;;;::::0;-1:-1:-1;;;33800:63:0;;8806:2:1;33800:63:0::1;::::0;::::1;8788:21:1::0;8845:2;8825:18;;;8818:30;-1:-1:-1;;;8864:18:1;;;8857:47;8921:18;;33800:63:0::1;8604:341:1::0;33800:63:0::1;33874:21;:32:::0;;;::::1;;;;-1:-1:-1::0;;33874:32:0;;::::1;;::::0;;33922:38:::1;::::0;::::1;::::0;::::1;::::0;33898:8;1169:14:1;1162:22;1144:41;;1132:2;1117:18;;1004:187;35883:349:0;12322:13;:11;:13::i;:::-;36021:10:::1;::::0;36013:47:::1;::::0;35965:21:::1;::::0;35947:15:::1;::::0;-1:-1:-1;;;;;36021:10:0;;::::1;::::0;35965:21;;35947:15;36013:47;35947:15;36013:47;35965:21;36021:10;36013:47:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35997:63;;;36079:4;36071:32;;;::::0;-1:-1:-1;;;36071:32:0;;9362:2:1;36071:32:0::1;::::0;::::1;9344:21:1::0;9401:2;9381:18;;;9374:30;-1:-1:-1;;;9420:18:1;;;9413:45;9475:18;;36071:32:0::1;9160:339:1::0;36071:32:0::1;36203:10;::::0;36119:105:::1;::::0;;9724:21:1;;;9781:2;9761:18;;;9754:30;;;;9820:34;9815:2;9800:18;;9793:62;-1:-1:-1;;;9886:3:1;9871:19;;9864:43;-1:-1:-1;;;;;36203:10:0;;::::1;9974:4:1::0;9959:20;;9952:62;-1:-1:-1;;;;;;;;;;;36119:105:0;9939:3:1;9924:19;36119:105:0::1;;;;;;;;35936:296;;35883:349::o:0;36309:460::-;12322:13;:11;:13::i;:::-;36486:4:::1;-1:-1:-1::0;;;;;36461:30:0;::::1;::::0;36439:134:::1;;;::::0;-1:-1:-1;;;36439:134:0;;10227:2:1;36439:134:0::1;::::0;::::1;10209:21:1::0;10266:2;10246:18;;;10239:30;10305:34;10285:18;;;10278:62;-1:-1:-1;;;10356:18:1;;;10349:52;10418:19;;36439:134:0::1;10025:418:1::0;36439:134:0::1;36627:10;::::0;36596:51:::1;::::0;-1:-1:-1;;;36596:51:0;;-1:-1:-1;;;;;36627:10:0;;::::1;36596:51;::::0;::::1;10630::1::0;10697:18;;;10690:34;;;36584:9:0::1;::::0;36596:30;::::1;::::0;::::1;::::0;10603:18:1;;36596:51:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36584:63;;36666:4;36658:32;;;::::0;-1:-1:-1;;;36658:32:0;;9362:2:1;36658:32:0::1;::::0;::::1;9344:21:1::0;9401:2;9381:18;;;9374:30;-1:-1:-1;;;9420:18:1;;;9413:45;9475:18;;36658:32:0::1;9160:339:1::0;36658:32:0::1;36706:55;::::0;;11197:21:1;;;11254:2;11234:18;;;11227:30;11293:34;11288:2;11273:18;;11266:62;-1:-1:-1;;;11359:3:1;11344:19;;11337:38;11442:4;11427:20;;11420:36;;;36706:55:0;;-1:-1:-1;;;;;;;;;;;36706:55:0;;;;11407:3:1;36706:55:0;;::::1;36428:341;36309:460:::0;;:::o;32916:324::-;12322:13;:11;:13::i;:::-;-1:-1:-1;;;;;32993:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;::::1;;:36;;::::0;;32985:80:::1;;;::::0;-1:-1:-1;;;32985:80:0;;11669:2:1;32985:80:0::1;::::0;::::1;11651:21:1::0;11708:2;11688:18;;;11681:30;11747:33;11727:18;;;11720:61;11798:18;;32985:80:0::1;11467:355:1::0;32985:80:0::1;-1:-1:-1::0;;;;;33076:27:0;::::1;33106:5;33076:27:::0;;;:18:::1;:27;::::0;;;;;;;;:35;;-1:-1:-1;;33076:35:0::1;::::0;;33127:105;;12039:21:1;;;12096:2;12076:18;;;12069:30;;;;12135:34;12130:2;12115:18;;12108:62;-1:-1:-1;;;12201:3:1;12186:19;;12179:46;12277:20;;12270:62;;;;-1:-1:-1;;;;;;;;;;;33127:105:0;12257:3:1;12242:19;33127:105:0::1;11827:511:1::0;13342:238:0;12322:13;:11;:13::i;:::-;-1:-1:-1;;;;;13445:22:0;::::1;13423:110;;;::::0;-1:-1:-1;;;13423:110:0;;12545:2:1;13423:110:0::1;::::0;::::1;12527:21:1::0;12584:2;12564:18;;;12557:30;12623:34;12603:18;;;12596:62;-1:-1:-1;;;12674:18:1;;;12667:36;12720:19;;13423:110:0::1;12343:402:1::0;13423:110:0::1;13544:28;13563:8;13544:18;:28::i;:::-;13342:238:::0;:::o;28705:341::-;-1:-1:-1;;;;;28799:20:0;;28791:69;;;;-1:-1:-1;;;28791:69:0;;12952:2:1;28791:69:0;;;12934:21:1;12991:2;12971:18;;;12964:30;13030:34;13010:18;;;13003:62;-1:-1:-1;;;13081:18:1;;;13074:34;13125:19;;28791:69:0;12750:400:1;28791:69:0;-1:-1:-1;;;;;28879:21:0;;28871:68;;;;-1:-1:-1;;;28871:68:0;;13357:2:1;28871:68:0;;;13339:21:1;13396:2;13376:18;;;13369:30;13435:34;13415:18;;;13408:62;-1:-1:-1;;;13486:18:1;;;13479:32;13528:19;;28871:68:0;13155:398:1;28871:68:0;-1:-1:-1;;;;;28952:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;29005:33;;1762:25:1;;;29005:33:0;;1735:18:1;29005:33:0;;;;;;;;28705:341;;;:::o;12601:132::-;12482:7;12509:6;-1:-1:-1;;;;;12509:6:0;247:10;12665:23;12657:68;;;;-1:-1:-1;;;12657:68:0;;13760:2:1;12657:68:0;;;13742:21:1;;;13779:18;;;13772:30;13838:34;13818:18;;;13811:62;13890:18;;12657:68:0;13558:356:1;29179:1460:0;-1:-1:-1;;;;;29267:18:0;;29259:68;;;;-1:-1:-1;;;29259:68:0;;14121:2:1;29259:68:0;;;14103:21:1;14160:2;14140:18;;;14133:30;14199:34;14179:18;;;14172:62;-1:-1:-1;;;14250:18:1;;;14243:35;14295:19;;29259:68:0;13919:401:1;29259:68:0;-1:-1:-1;;;;;29346:16:0;;29338:64;;;;-1:-1:-1;;;29338:64:0;;14527:2:1;29338:64:0;;;14509:21:1;14566:2;14546:18;;;14539:30;14605:34;14585:18;;;14578:62;-1:-1:-1;;;14656:18:1;;;14649:33;14699:19;;29338:64:0;14325:399:1;29338:64:0;29430:1;29421:6;:10;29413:64;;;;-1:-1:-1;;;29413:64:0;;14931:2:1;29413:64:0;;;14913:21:1;14970:2;14950:18;;;14943:30;15009:34;14989:18;;;14982:62;-1:-1:-1;;;15060:18:1;;;15053:39;15109:19;;29413:64:0;14729:405:1;29413:64:0;-1:-1:-1;;;;;29510:13:0;;;;;;:7;:13;;;;;;:23;-1:-1:-1;29510:23:0;29488:111;;;;-1:-1:-1;;;29488:111:0;;15341:2:1;29488:111:0;;;15323:21:1;15380:2;15360:18;;;15353:30;15419:34;15399:18;;;15392:62;-1:-1:-1;;;15470:18:1;;;15463:36;15516:19;;29488:111:0;15139:402:1;29488:111:0;29705:4;29656:28;26740:16;;;:7;:16;;;;;;29790:23;;29950:16;;26740;;29753:60;;;;;29950:16;;29949:17;:55;;;;;29991:13;-1:-1:-1;;;;;29983:21:0;:4;-1:-1:-1;;;;;29983:21:0;;;29949:55;:95;;;;;30021:23;29949:95;:133;;;;-1:-1:-1;30061:21:0;;;;;;;29949:133;29931:206;;;30109:16;:14;:16::i;:::-;30157:13;-1:-1:-1;;;;;30151:19:0;:2;-1:-1:-1;;;;;30151:19:0;;:48;;;;-1:-1:-1;;;;;;30175:24:0;;;;;;:18;:24;;;;;;;;30174:25;30151:48;30147:111;;;30243:3;30233:6;30223:7;;:16;;;;:::i;:::-;30222:24;;;;:::i;:::-;30216:30;;30147:111;30280:13;-1:-1:-1;;;;;30272:21:0;:4;-1:-1:-1;;;;;30272:21:0;;:48;;;;-1:-1:-1;;;;;;30298:22:0;;;;;;:18;:22;;;;;;;;30297:23;30272:48;30268:110;;;30363:3;30353:6;30344;;:15;;;;:::i;:::-;30343:23;;;;:::i;:::-;30337:29;;30268:110;30388:13;30398:3;30388:13;;:::i;:::-;;-1:-1:-1;30416:7:0;;30412:177;;30440:40;30455:4;30469;30476:3;30440:14;:40::i;:::-;30523:3;30495:24;;:31;;;;;;;:::i;:::-;;;;;;;;30574:3;30541:29;;:36;;;;;;;:::i;:::-;;;;-1:-1:-1;;30412:177:0;30599:32;30614:4;30620:2;30624:6;30599:14;:32::i;:::-;29248:1391;;;29179:1460;;;:::o;13740:191::-;13814:16;13833:6;;-1:-1:-1;;;;;13850:17:0;;;-1:-1:-1;;;;;;13850:17:0;;;;;;13883:40;;13833:6;;;;;;;13883:40;;13814:16;13883:40;13803:128;13740:191;:::o;31300:638::-;31450:16;;;31464:1;31450:16;;;;;;;;31426:21;;31450:16;;;;;;;;;;-1:-1:-1;31450:16:0;31426:40;;31495:4;31477;31482:1;31477:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;31477:23:0;;;-1:-1:-1;;;;;31477:23:0;;;;;31521:4;31511;31516:1;31511:7;;;;;;;;:::i;:::-;;;;;;:14;-1:-1:-1;;;;;31511:14:0;;;-1:-1:-1;;;;;31511:14:0;;;;;31536:62;31553:4;31568:15;31586:11;31536:8;:62::i;:::-;31637:240;;-1:-1:-1;;;31637:240:0;;-1:-1:-1;;;;;31637:15:0;:66;;;;:240;;31718:11;;31744:1;;31788:4;;31815;;31851:15;;31637:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31895:35;31912:11;31925:4;31895:35;;;;;;;:::i;34762:218::-;34880:9;34895;-1:-1:-1;;;;;34895:14:0;34917:6;34895:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34879:49;;;34947:4;34939:33;;;;-1:-1:-1;;;34939:33:0;;17797:2:1;34939:33:0;;;17779:21:1;17836:2;17816:18;;;17809:30;-1:-1:-1;;;17855:18:1;;;17848:46;17911:18;;34939:33:0;17595:340:1;34939:33:0;34868:112;34762:218;;:::o;32074:253::-;-1:-1:-1;;;;;32202:15:0;;;;;;:7;:15;;;;;:25;;32221:6;;32202:15;:25;;32221:6;;32202:25;:::i;:::-;;;;-1:-1:-1;;;;;;;32238:18:0;;;;;;:7;:18;;;;;:28;;32260:6;;32238:18;:28;;32260:6;;32238:28;:::i;:::-;;;;;;;;32301:9;-1:-1:-1;;;;;32284:35:0;32293:6;-1:-1:-1;;;;;32284:35:0;;32312:6;32284:35;;;;1762:25:1;;1750:2;1735:18;;1616:177;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:1;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:1:o;1196:180::-;1255:6;1308:2;1296:9;1287:7;1283:23;1279:32;1276:52;;;1324:1;1321;1314:12;1276:52;-1:-1:-1;1347:23:1;;1196:180;-1:-1:-1;1196:180:1:o;2022:328::-;2099:6;2107;2115;2168:2;2156:9;2147:7;2143:23;2139:32;2136:52;;;2184:1;2181;2174:12;2136:52;2207:29;2226:9;2207:29;:::i;:::-;2197:39;;2255:38;2289:2;2278:9;2274:18;2255:38;:::i;:::-;2245:48;;2340:2;2329:9;2325:18;2312:32;2302:42;;2022:328;;;;;:::o;2544:186::-;2603:6;2656:2;2644:9;2635:7;2631:23;2627:32;2624:52;;;2672:1;2669;2662:12;2624:52;2695:29;2714:9;2695:29;:::i;:::-;2685:39;2544:186;-1:-1:-1;;;2544:186:1:o;2943:118::-;3029:5;3022:13;3015:21;3008:5;3005:32;2995:60;;3051:1;3048;3041:12;3066:241;3122:6;3175:2;3163:9;3154:7;3150:23;3146:32;3143:52;;;3191:1;3188;3181:12;3143:52;3230:9;3217:23;3249:28;3271:5;3249:28;:::i;3312:260::-;3380:6;3388;3441:2;3429:9;3420:7;3416:23;3412:32;3409:52;;;3457:1;3454;3447:12;3409:52;3480:29;3499:9;3480:29;:::i;:::-;3470:39;;3528:38;3562:2;3551:9;3547:18;3528:38;:::i;:::-;3518:48;;3312:260;;;;;:::o;4780:127::-;4841:10;4836:3;4832:20;4829:1;4822:31;4872:4;4869:1;4862:15;4896:4;4893:1;4886:15;4912:128;4979:9;;;5000:11;;;4997:37;;;5014:18;;:::i;5045:125::-;5110:9;;;5131:10;;;5128:36;;;5144:18;;:::i;10735:245::-;10802:6;10855:2;10843:9;10834:7;10830:23;10826:32;10823:52;;;10871:1;10868;10861:12;10823:52;10903:9;10897:16;10922:28;10944:5;10922:28;:::i;15546:168::-;15619:9;;;15650;;15667:15;;;15661:22;;15647:37;15637:71;;15688:18;;:::i;15719:217::-;15759:1;15785;15775:132;;15829:10;15824:3;15820:20;15817:1;15810:31;15864:4;15861:1;15854:15;15892:4;15889:1;15882:15;15775:132;-1:-1:-1;15921:9:1;;15719:217::o;16073:127::-;16134:10;16129:3;16125:20;16122:1;16115:31;16165:4;16162:1;16155:15;16189:4;16186:1;16179:15;16205:461;16258:3;16296:5;16290:12;16323:6;16318:3;16311:19;16349:4;16378:2;16373:3;16369:12;16362:19;;16415:2;16408:5;16404:14;16436:1;16446:195;16460:6;16457:1;16454:13;16446:195;;;16525:13;;-1:-1:-1;;;;;16521:39:1;16509:52;;16581:12;;;;16616:15;;;;16557:1;16475:9;16446:195;;;-1:-1:-1;16657:3:1;;16205:461;-1:-1:-1;;;;;16205:461:1:o;16671:582::-;16970:6;16959:9;16952:25;17013:6;17008:2;16997:9;16993:18;16986:34;17056:3;17051:2;17040:9;17036:18;17029:31;16933:4;17077:57;17129:3;17118:9;17114:19;17106:6;17077:57;:::i;:::-;-1:-1:-1;;;;;17170:32:1;;;;17165:2;17150:18;;17143:60;-1:-1:-1;17234:3:1;17219:19;17212:35;17069:65;16671:582;-1:-1:-1;;;16671:582:1:o;17258:332::-;17465:6;17454:9;17447:25;17508:2;17503;17492:9;17488:18;17481:30;17428:4;17528:56;17580:2;17569:9;17565:18;17557:6;17528:56;:::i;:::-;17520:64;17258:332;-1:-1:-1;;;;17258:332:1:o
Swarm Source
ipfs://7909c8f4867a70d4de12b908249b84a19eb836a2d3e19dd45abbe566b32f0c66
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.