Latest 25 from a total of 1,117 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 24503281 | 25 hrs ago | IN | 0 ETH | 0.00000265 | ||||
| Approve | 24477586 | 4 days ago | IN | 0 ETH | 0.00000684 | ||||
| Approve | 24452043 | 8 days ago | IN | 0 ETH | 0.0000487 | ||||
| Approve | 24364183 | 20 days ago | IN | 0 ETH | 0.00000972 | ||||
| Approve | 24326507 | 25 days ago | IN | 0 ETH | 0.0000525 | ||||
| Approve | 24168412 | 47 days ago | IN | 0 ETH | 0.0000192 | ||||
| Approve | 24004054 | 70 days ago | IN | 0 ETH | 0.00009407 | ||||
| Approve | 23839352 | 93 days ago | IN | 0 ETH | 0.00002013 | ||||
| Approve | 23775781 | 102 days ago | IN | 0 ETH | 0.00001275 | ||||
| Approve | 23753565 | 105 days ago | IN | 0 ETH | 0.00008318 | ||||
| Approve | 23741625 | 107 days ago | IN | 0 ETH | 0.00021893 | ||||
| Approve | 23738849 | 107 days ago | IN | 0 ETH | 0.00010431 | ||||
| Approve | 23738814 | 107 days ago | IN | 0 ETH | 0.00005603 | ||||
| Approve | 23738753 | 107 days ago | IN | 0 ETH | 0.00002864 | ||||
| Approve | 23738744 | 107 days ago | IN | 0 ETH | 0.00003373 | ||||
| Approve | 23734850 | 108 days ago | IN | 0 ETH | 0.00013066 | ||||
| Approve | 23732378 | 108 days ago | IN | 0 ETH | 0.00010975 | ||||
| Approve | 23732368 | 108 days ago | IN | 0 ETH | 0.00002311 | ||||
| Approve | 23731922 | 108 days ago | IN | 0 ETH | 0.00002631 | ||||
| Approve | 23731886 | 108 days ago | IN | 0 ETH | 0.00005183 | ||||
| Transfer | 23731872 | 108 days ago | IN | 0 ETH | 0.00016205 | ||||
| Transfer | 23728209 | 109 days ago | IN | 0 ETH | 0.00025214 | ||||
| Transfer | 23728201 | 109 days ago | IN | 0 ETH | 0.00025288 | ||||
| Transfer | 23728180 | 109 days ago | IN | 0 ETH | 0.00026396 | ||||
| Approve | 23725722 | 109 days ago | IN | 0 ETH | 0.00007599 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 24477586 | 4 days ago | 0.00544319 ETH | ||||
| Transfer | 24477586 | 4 days ago | 0.00544319 ETH | ||||
| Transfer | 24004054 | 70 days ago | 0.00387628 ETH | ||||
| Transfer | 24004054 | 70 days ago | 0.00387628 ETH | ||||
| Transfer | 23775006 | 102 days ago | 0.00492209 ETH | ||||
| Transfer | 23775006 | 102 days ago | 0.00492209 ETH | ||||
| Transfer | 23754022 | 105 days ago | 0.00428391 ETH | ||||
| Transfer | 23754022 | 105 days ago | 0.00428391 ETH | ||||
| Transfer | 23753947 | 105 days ago | 0.00395364 ETH | ||||
| Transfer | 23753947 | 105 days ago | 0.00395364 ETH | ||||
| Transfer | 23753683 | 105 days ago | 0.00341623 ETH | ||||
| Transfer | 23753683 | 105 days ago | 0.00341623 ETH | ||||
| Transfer | 23753566 | 105 days ago | 0.00511475 ETH | ||||
| Transfer | 23753566 | 105 days ago | 0.00511475 ETH | ||||
| Transfer | 23751016 | 106 days ago | 0.00534853 ETH | ||||
| Transfer | 23751016 | 106 days ago | 0.00534853 ETH | ||||
| Transfer | 23750871 | 106 days ago | 0.00531642 ETH | ||||
| Transfer | 23750871 | 106 days ago | 0.00531642 ETH | ||||
| Transfer | 23750699 | 106 days ago | 0.00633277 ETH | ||||
| Transfer | 23750699 | 106 days ago | 0.00633277 ETH | ||||
| Transfer | 23748843 | 106 days ago | 0.00544299 ETH | ||||
| Transfer | 23748843 | 106 days ago | 0.00544299 ETH | ||||
| Transfer | 23747816 | 106 days ago | 0.00587396 ETH | ||||
| Transfer | 23747816 | 106 days ago | 0.00587396 ETH | ||||
| Transfer | 23747347 | 106 days ago | 0.00673154 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
COREMIND
Compiler Version
v0.8.30+commit.73712a01
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2025-09-02
*/
/*
██████╗ ██████╗ ██████╗ ███████╗███╗ ███╗██╗███╗ ██╗██████╗
██╔════╝██╔═══██╗██╔══██╗██╔════╝████╗ ████║██║████╗ ██║██╔══██╗
██║ ██║ ██║██████╔╝█████╗ ██╔████╔██║██║██╔██╗ ██║██║ ██║
██║ ██║ ██║██╔══██╗██╔══╝ ██║╚██╔╝██║██║██║╚██╗██║██║ ██║
╚██████╗╚██████╔╝██║ ██║███████╗██║ ╚═╝ ██║██║██║ ╚████║██████╔╝
╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚═════╝
Train Agents • Tokenize Minds • Shape the Future
Website: https://coremindai.tech
Telegram: https://t.me/CoremindAI_Portal
X: https://x.com/Coremind_AI
Docs: https://docs.coremindai.tech
*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.30;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this;
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);
}
interface IERC20Metadata is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
function name() public view virtual override returns (string memory) {
return _name;
}
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
function decimals() public view virtual override returns (uint8) {
return 18;
}
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
uint256 currentAllowance = _allowances[sender][_msgSender()];
require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
unchecked {
_approve(sender, _msgSender(), currentAllowance - amount);
}
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
uint256 currentAllowance = _allowances[_msgSender()][spender];
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(_msgSender(), spender, currentAllowance - subtractedValue);
}
return true;
}
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");
uint256 senderBalance = _balances[sender];
require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[sender] = senderBalance - amount;
}
_balances[recipient] += amount;
emit Transfer(sender, recipient, amount);
}
function _createInitialSupply(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_totalSupply += amount;
_balances[account] += amount;
emit Transfer(address(0), account, amount);
}
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);
}
}
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() external virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
interface IDexRouter {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function addLiquidityETH(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
)
external
payable
returns (
uint256 amountToken,
uint256 amountETH,
uint256 liquidity
);
}
interface IDexFactory {
function createPair(address tokenA, address tokenB)
external
returns (address pair);
}
contract COREMIND is ERC20, Ownable {
uint256 public maxBuyAmount;
uint256 public maxSellAmount;
uint256 public maxWalletAmount;
IDexRouter public immutable uniswapV2Router;
address public immutable uniswapV2Pair;
bool private swapping;
uint256 public swapTokensAtAmount;
address payable public TreasuryAddress;
bool public limitsInEffect = true;
/// @notice Trading state flag.
/// @dev One-way latch: transitions from false→true exactly once; no code path to set it back to false.
bool public tradingActive = false;
bool public swapEnabled = false;
uint256 public constant INITIAL_BUY_FEE = 40;
uint256 public constant INITIAL_SELL_FEE = 40;
uint256 public buyFee;
uint256 public sellFee;
uint256 public tokensForTreasury;
// exclude from fees and max transaction amount
mapping (address => bool) private _isExcludedFromFees;
mapping (address => bool) public _isExcludedMaxTransactionAmount;
// AMM pairs registry
mapping (address => bool) public automatedMarketMakerPairs;
event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
event EnabledTrading(bool tradingActive);
event RemovedLimits();
event ExcludeFromFees(address indexed account, bool isExcluded);
event UpdatedMaxBuyAmount(uint256 newAmount);
event UpdatedMaxSellAmount(uint256 newAmount);
event UpdatedMaxWalletAmount(uint256 newAmount);
event UpdatedTreasuryAddress(address indexed newWallet);
event MaxTransactionExclusion(address _address, bool excluded);
event TransferForeignToken(address token, uint256 amount);
event FeesLowered(uint256 oldBuy, uint256 oldSell, uint256 newBuy, uint256 newSell);
uint256 public launchPhaseEndTime;
uint256 public launchPhaseFee;
event LaunchPhaseConfigured(uint256 durationSeconds, uint256 feePercent, uint256 endTime);
constructor() ERC20("COREMIND", "CORE") {
address newOwner = msg.sender;
// Uniswap V2 router on Ethereum mainnet.
IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
_excludeFromMaxTransaction(address(_uniswapV2Router), true);
uniswapV2Router = _uniswapV2Router;
uniswapV2Pair = IDexFactory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
_setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
uint256 totalSupply = 100000000 * 1e18;
maxBuyAmount = totalSupply * 1 / 1000;
maxSellAmount = totalSupply * 1 / 1000;
maxWalletAmount = totalSupply * 30 / 10000;
swapTokensAtAmount = totalSupply * 50 / 100000;
buyFee = INITIAL_BUY_FEE;
sellFee = INITIAL_SELL_FEE;
_excludeFromMaxTransaction(newOwner, true);
_excludeFromMaxTransaction(address(this), true);
_excludeFromMaxTransaction(address(0xdead), true);
TreasuryAddress = payable(0x32baFef356792cF18C4A3Cb7F05414d530a73f74);
excludeFromFees(newOwner, true);
excludeFromFees(address(this), true);
excludeFromFees(address(0xdead), true);
excludeFromFees(TreasuryAddress, true);
_excludeFromMaxTransaction(TreasuryAddress, true);
_createInitialSupply(newOwner, totalSupply);
transferOwnership(newOwner);
}
receive() external payable {}
function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max buy amount lower than 0.1%");
maxBuyAmount = newNum * (10**18);
emit UpdatedMaxBuyAmount(maxBuyAmount);
}
function updateMaxSellAmount(uint256 newNum) external onlyOwner {
require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max sell amount lower than 0.1%");
maxSellAmount = newNum * (10**18);
emit UpdatedMaxSellAmount(maxSellAmount);
}
// remove limits after token is stable
function removeLimits() external onlyOwner {
limitsInEffect = false;
emit RemovedLimits();
}
function _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
_isExcludedMaxTransactionAmount[updAds] = isExcluded;
emit MaxTransactionExclusion(updAds, isExcluded);
}
function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner {
if(!isEx){
require(updAds != uniswapV2Pair, "Cannot remove uniswap pair from max txn");
}
_isExcludedMaxTransactionAmount[updAds] = isEx;
}
function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
require(newNum >= (totalSupply() * 3 / 1000)/1e18, "Cannot set max wallet amount lower than 0.3%");
maxWalletAmount = newNum * (10**18);
emit UpdatedMaxWalletAmount(maxWalletAmount);
}
function updateSwapThreshold(uint256 newAmount) public {
require(msg.sender==TreasuryAddress,"only TreasuryAddress can change swapThreshold");
swapTokensAtAmount = newAmount* (10**18);
}
// Rescue function for third-party tokens accidentally sent to this contract.
// Cannot withdraw the token of this contract itself
function transferForeignToken(address _token, address _to) public returns (bool _sent) {
require(_token != address(0), "_token address cannot be 0");
require(msg.sender==TreasuryAddress,"only TreasuryAddress can withdraw");
uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
_sent = IERC20(_token).transfer(_to, _contractBalance);
emit TransferForeignToken(_token, _contractBalance);
}
// withdraw ETH if stuck or someone sends to the address
function withdrawStuckETH() public {
bool success;
require(msg.sender==TreasuryAddress,"only TreasuryAddress can withdraw");
(success,) = address(msg.sender).call{value: address(this).balance}("");
}
/// @notice Lowers the buy fee percentage applied on AMM buy trades.
/// @dev
/// - The new fee must be strictly lower than the current `buyFee`.
/// - This function never increases fees.
/// @param _fee The new buy fee in %, (e.g., 1 == 1%), and strictly less than the current `buyFee`.
function updateBuyFee(uint256 _fee) external onlyOwner {
require(_fee < buyFee, "New fee must be lower than current fee");
require(_fee <= 40, "Fee cannot exceed 40%");
buyFee = _fee;
}
/// @notice Lowers the sell fee percentage applied on AMM sell trades.
/// @dev
/// - The new fee must be strictly lower than the current `sellFee`.
/// - This function never increases fees.
/// @param _fee The new sell fee in %, (e.g., 1 == 1%), and strictly less than the current `sellFee`.
function updateSellFee(uint256 _fee) external onlyOwner {
require(_fee < sellFee, "New fee must be lower than current fee");
require(_fee <= 40, "Fee cannot exceed 40%");
sellFee = _fee;
}
function excludeFromFees(address account, bool excluded) public onlyOwner {
_isExcludedFromFees[account] = excluded;
emit ExcludeFromFees(account, excluded);
}
/// @notice Fees can only decrease (strictly lower than current values e.g., 4→3→2→1→0).
/// @dev
/// - Callable only when `owner() == address(0)` (i.e., post-renounce).
/// - Callable only by `TreasuryAddress`.
/// - Post-renounce hard cap: each fee must be in the range 0-4 (%).
/// - Inputs are whole-number percentages (e.g., 0 = 0%).
/// @param newBuyFee New buy fee in %, must be < current `buyFee` and <= 4.
/// @param newSellFee New sell fee in %, must be < current `sellFee` and <= 4.
/// Emits FeesLowered(oldBuy, oldSell, newBuy, newSell) on success.
function reduceFeesPostRenounce(uint256 newBuyFee, uint256 newSellFee) external {
require(owner() == address(0), "Only after renounce");
require(msg.sender == TreasuryAddress, "Only Treasury");
require(newBuyFee < buyFee, "New fee must be lower than current fee");
require(newSellFee < sellFee, "New fee must be lower than current fee");
require(newBuyFee <= 4 && newSellFee <= 4, "Post-renounce cap is 4%");
uint256 oldBuy = buyFee;
uint256 oldSell = sellFee;
buyFee = newBuyFee;
sellFee = newSellFee;
emit FeesLowered(oldBuy, oldSell, newBuyFee, newSellFee);
}
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");
require(amount > 0, "amount must be greater than 0");
if (!tradingActive) {
bool walletToWallet = !automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to];
bool maintenance = _isExcludedMaxTransactionAmount[from] && _isExcludedMaxTransactionAmount[to];
require(walletToWallet || maintenance, "Trading is not active.");
}
if(limitsInEffect){
if (from != owner() && to != owner() && to != address(0) && to != address(0xdead))
{
// when buy
if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy.");
bool launchPhaseActive = (launchPhaseEndTime != 0 && block.timestamp < launchPhaseEndTime && launchPhaseFee > 0);
if (launchPhaseActive) {
bool feeApplies = !(
_isExcludedFromFees[from] || _isExcludedFromFees[to] ||
from == owner() || to == owner() ||
from == TreasuryAddress || to == TreasuryAddress ||
from == address(this) || to == address(this)
);
if (feeApplies) {
uint256 netAmount = amount - (amount * launchPhaseFee / 100);
require(netAmount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
} else {
require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
}
} else {
require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
}
}
// when sell
else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell.");
}
// wallet to wallet
else if (!_isExcludedMaxTransactionAmount[to] && !_isExcludedMaxTransactionAmount[from]){
require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
}
}
}
bool isBuy = automatedMarketMakerPairs[from];
bool isSell = automatedMarketMakerPairs[to];
bool feeExempt =
_isExcludedFromFees[from] || _isExcludedFromFees[to] ||
from == TreasuryAddress || to == TreasuryAddress ||
from == owner() || to == owner() ||
from == address(this) || to == address(this);
if (feeExempt) {
super._transfer(from, to, amount);
return;
}
uint256 contractTokenBalance = balanceOf(address(this));
bool canSwap = contractTokenBalance >= swapTokensAtAmount;
if (canSwap && swapEnabled && !swapping && isSell && !_isExcludedFromFees[from]) {
swapping = true;
swapBack();
swapping = false;
}
bool takeFee = true;
if (
_isExcludedFromFees[from] || _isExcludedFromFees[to] ||
from == TreasuryAddress || to == TreasuryAddress ||
from == owner() || to == owner()
) {
takeFee = false;
}
uint256 fees = 0;
if (takeFee) {
if (launchPhaseEndTime != 0 && block.timestamp >= launchPhaseEndTime && launchPhaseFee > 0) {
launchPhaseEndTime = 0;
launchPhaseFee = 0;
emit LaunchPhaseConfigured(0, 0, 0);
}
if (isBuy || isSell) {
// AMM trade (BUY/SELL)
if (launchPhaseEndTime != 0 && block.timestamp < launchPhaseEndTime && launchPhaseFee > 0) {
fees = (amount * launchPhaseFee) / 100;
} else if (isSell && sellFee > 0) {
fees = (amount * sellFee) / 100;
} else if (isBuy && buyFee > 0) {
fees = (amount * buyFee) / 100;
}
}
if (fees > 0) {
tokensForTreasury += fees;
super._transfer(from, address(this), fees);
amount -= fees;
}
}
super._transfer(from, to, amount);
}
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
);
}
function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
_setAutomatedMarketMakerPair(pair, value);
}
function _setAutomatedMarketMakerPair(address pair, bool value) private {
automatedMarketMakerPairs[pair] = value;
_excludeFromMaxTransaction(pair, value);
emit SetAutomatedMarketMakerPair(pair, value);
}
function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
// approve token transfer to cover all possible scenarios
_approve(address(this), address(uniswapV2Router), tokenAmount);
// add the liquidity
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
address(owner()),
block.timestamp
);
}
function setTreasuryAddress(address _TreasuryAddress) external onlyOwner {
require(_TreasuryAddress != address(0), "_TreasuryAddress address cannot be 0");
TreasuryAddress = payable(_TreasuryAddress);
emit UpdatedTreasuryAddress(_TreasuryAddress);
excludeFromFees(_TreasuryAddress, true);
_excludeFromMaxTransaction(_TreasuryAddress, true);
}
function swapBack() private {
uint256 contractBalance = balanceOf(address(this));
uint256 totalTokensToSwap = tokensForTreasury;
if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
if(contractBalance > swapTokensAtAmount * 5){
contractBalance = swapTokensAtAmount * 5;
}
bool success;
swapTokensForEth(contractBalance);
tokensForTreasury = 0;
uint256 ethBalance=address(this).balance;
if(ethBalance>0){
(success,) = address(TreasuryAddress).call{value: address(this).balance}("");
}
}
function manualSwap() external {
require(_msgSender()==TreasuryAddress);
uint256 tokenBalance=balanceOf(address(this));
if(tokenBalance>0){
swapping = true;
swapBack();
swapping = false;
}
}
/**
* @notice Permanently enables trading (and swaps).
* @dev One-way latch: there is no function to disable trading.
* Reverts if already enabled.
* @param launchPhaseSeconds Optional launch window duration in seconds (>0 to enable).
* @param launchPhaseFeePercent Optional launch window fee percent (>0 to enable), capped by contract.
* Emits {EnabledTrading} and optionally {LaunchPhaseConfigured}.
*/
function enableTrading(
uint256 launchPhaseSeconds,
uint256 launchPhaseFeePercent
) external onlyOwner {
require(!tradingActive, "Trading already enabled");
tradingActive = true;
swapEnabled = true;
emit EnabledTrading(true);
if (tradingActive) {
if (launchPhaseSeconds > 0 && launchPhaseFeePercent > 0) {
require(launchPhaseFeePercent <= 80, "launch phase > 80%");
launchPhaseEndTime = block.timestamp + launchPhaseSeconds;
launchPhaseFee = launchPhaseFeePercent;
emit LaunchPhaseConfigured(launchPhaseSeconds, launchPhaseFeePercent, launchPhaseEndTime);
}
}
}
/// @notice Optional: owner can manually end the launch phase early if needed.
function endLaunchPhase() external onlyOwner {
launchPhaseEndTime = 0;
launchPhaseFee = 0;
emit LaunchPhaseConfigured(0, 0, 0);
}
function isFeeExempt(address a) external view returns (bool) {
return _isExcludedFromFees[a]
|| a == TreasuryAddress
|| a == owner()
|| a == address(this);
}
/// @notice View helper to know if launch phase is currently active.
function isLaunchPhaseActive() public view returns (bool) {
return launchPhaseEndTime != 0 && block.timestamp < launchPhaseEndTime;
}
}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":"bool","name":"tradingActive","type":"bool"}],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldSell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSell","type":"uint256"}],"name":"FeesLowered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"durationSeconds","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feePercent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"endTime","type":"uint256"}],"name":"LaunchPhaseConfigured","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedTreasuryAddress","type":"event"},{"inputs":[],"name":"INITIAL_BUY_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INITIAL_SELL_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TreasuryAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"launchPhaseSeconds","type":"uint256"},{"internalType":"uint256","name":"launchPhaseFeePercent","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"endLaunchPhase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","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":"a","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLaunchPhaseActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchPhaseEndTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchPhaseFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","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":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"reduceFeesPostRenounce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","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":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_TreasuryAddress","type":"address"}],"name":"setTreasuryAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTreasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","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 IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"updateBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"updateSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60c0604052600b805462ffffff60a01b1916600160a01b179055348015610024575f5ffd5b506040518060400160405280600881526020016710d3d4915352539160c21b81525060405180604001604052806004815260200163434f524560e01b81525081600390816100729190610766565b50600461007f8282610766565b5050505f61009161038660201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f905f5160206138615f395f51905f52908290a35033737a250d5630b4cf539739df2c5dacb4c659f2488d6100ec81600161038a565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610134573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101589190610820565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101c79190610820565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610211573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102359190610820565b6001600160a01b031660a081905261024e9060016103ec565b6a52b7d2dcc80cd2e40000006103e8610268826001610861565b610272919061087e565b6006556103e8610283826001610861565b61028d919061087e565b60075561271061029e82601e610861565b6102a8919061087e565b600855620186a06102ba826032610861565b6102c4919061087e565b600a556028600c819055600d556102dc83600161038a565b6102e730600161038a565b6102f461dead600161038a565b600b80546001600160a01b0319167332bafef356792cf18c4a3cb7f05414d530a73f74179055610325836001610454565b610330306001610454565b61033d61dead6001610454565b600b54610354906001600160a01b03166001610454565b600b5461036b906001600160a01b0316600161038a565b61037583826104fe565b61037e836105da565b5050506108b0565b3390565b6001600160a01b0382165f81815260106020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382165f908152601160205260409020805460ff1916821515179055610419828261038a565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b6005546001600160a01b031633146104a05760405162461bcd60e51b815260206004820181905260248201525f5160206138415f395f51905f5260448201526064015b60405180910390fd5b6001600160a01b0382165f818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b0382166105545760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610497565b8060025f828254610565919061089d565b90915550506001600160a01b0382165f908152602081905260408120805483929061059190849061089d565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b031633146106215760405162461bcd60e51b815260206004820181905260248201525f5160206138415f395f51905f526044820152606401610497565b6001600160a01b0381166106865760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610497565b6005546040516001600160a01b038084169216905f5160206138615f395f51905f52905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806106f657607f821691505b60208210810361071457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561076157805f5260205f20601f840160051c8101602085101561073f5750805b601f840160051c820191505b8181101561075e575f815560010161074b565b50505b505050565b81516001600160401b0381111561077f5761077f6106ce565b6107938161078d84546106e2565b8461071a565b6020601f8211600181146107c5575f83156107ae5750848201515b5f19600385901b1c1916600184901b17845561075e565b5f84815260208120601f198516915b828110156107f457878501518255602094850194600190920191016107d4565b508482101561081157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f60208284031215610830575f5ffd5b81516001600160a01b0381168114610846575f5ffd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176108785761087861084d565b92915050565b5f8261089857634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156108785761087861084d565b60805160a051612f4d6108f45f395f818161052f01528181610fc4015261126101525f81816103bb0152818161295001528181612a070152612a430152612f4d5ff3fe6080604052600436106102f6575f3560e01c8063715018a611610189578063bbc0c742116100d8578063d7726e8a11610092578063e2f456051161006d578063e2f45605146108b5578063f2fde38b146108ca578063f5648a4f146108e9578063fb917d96146108fd575f5ffd5b8063d7726e8a14610833578063dc3f0d0f14610852578063dd62ed3e14610871575f5ffd5b8063bbc0c7421461078d578063c0246668146107ad578063c18bc195146107cc578063cc274b29146107eb578063cc2ffe7c1461080a578063d6a22a851461081f575f5ffd5b80638da5cb5b11610143578063a457c2d71161011e578063a457c2d71461070c578063a9059cbb1461072b578063aa4bde281461074a578063b62496f51461075f575f5ffd5b80638da5cb5b146106bc57806395d89b41146106d95780639a7a23d6146106ed575f5ffd5b8063715018a61461062c578063751039fc146106405780637571336a146106545780638366e79a1461067357806388e765ff146106925780638a3f6f41146106a7575f5ffd5b8063467abe0a116102455780635308b7fb116101ff5780636605bfda116101da5780636605bfda146105b957806366d602ae146105d85780636ddd1713146105ed57806370a082311461060d575f5ffd5b80635308b7fb1461035a5780635b5c251f14610585578063643505c4146105a4575f5ffd5b8063467abe0a146104d657806347062402146104f55780634898d31b1461050a57806349bd5a5e1461051e5780634a62bb651461055157806351bc3c8514610571575f5ffd5b80631d933a4a116102b05780632be32b611161028b5780632be32b611461045e578063313ce5671461047d57806339509351146104985780633f4218e0146104b7575f5ffd5b80631d933a4a1461040957806323b872dd1461042a5780632b14ca5614610449575f5ffd5b806306fdde0314610301578063095ea7b31461032b5780630f6b671b1461035a57806310d5de531461037c5780631694505e146103aa57806318160ddd146103f5575f5ffd5b366102fd57005b5f5ffd5b34801561030c575f5ffd5b5061031561091c565b6040516103229190612aa9565b60405180910390f35b348015610336575f5ffd5b5061034a610345366004612af2565b6109ac565b6040519015158152602001610322565b348015610365575f5ffd5b5061036e602881565b604051908152602001610322565b348015610387575f5ffd5b5061034a610396366004612b1c565b60106020525f908152604090205460ff1681565b3480156103b5575f5ffd5b506103dd7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610322565b348015610400575f5ffd5b5060025461036e565b348015610414575f5ffd5b50610428610423366004612b3e565b6109c2565b005b348015610435575f5ffd5b5061034a610444366004612b55565b610a64565b348015610454575f5ffd5b5061036e600d5481565b348015610469575f5ffd5b50610428610478366004612b3e565b610b0c565b348015610488575f5ffd5b5060405160128152602001610322565b3480156104a3575f5ffd5b5061034a6104b2366004612af2565b610c19565b3480156104c2575f5ffd5b5061034a6104d1366004612b1c565b610c54565b3480156104e1575f5ffd5b506104286104f0366004612b3e565b610cb7565b348015610500575f5ffd5b5061036e600c5481565b348015610515575f5ffd5b5061034a610d50565b348015610529575f5ffd5b506103dd7f000000000000000000000000000000000000000000000000000000000000000081565b34801561055c575f5ffd5b50600b5461034a90600160a01b900460ff1681565b34801561057c575f5ffd5b50610428610d69565b348015610590575f5ffd5b50600b546103dd906001600160a01b031681565b3480156105af575f5ffd5b5061036e60135481565b3480156105c4575f5ffd5b506104286105d3366004612b1c565b610dbd565b3480156105e3575f5ffd5b5061036e60075481565b3480156105f8575f5ffd5b50600b5461034a90600160b01b900460ff1681565b348015610618575f5ffd5b5061036e610627366004612b1c565b610ea5565b348015610637575f5ffd5b50610428610ebf565b34801561064b575f5ffd5b50610428610f32565b34801561065f575f5ffd5b5061042861066e366004612ba0565b610f93565b34801561067e575f5ffd5b5061034a61068d366004612bd7565b61107d565b34801561069d575f5ffd5b5061036e60065481565b3480156106b2575f5ffd5b5061036e60125481565b3480156106c7575f5ffd5b506005546001600160a01b03166103dd565b3480156106e4575f5ffd5b50610315611226565b3480156106f8575f5ffd5b50610428610707366004612ba0565b611235565b348015610717575f5ffd5b5061034a610726366004612af2565b611314565b348015610736575f5ffd5b5061034a610745366004612af2565b6113ac565b348015610755575f5ffd5b5061036e60085481565b34801561076a575f5ffd5b5061034a610779366004612b1c565b60116020525f908152604090205460ff1681565b348015610798575f5ffd5b50600b5461034a90600160a81b900460ff1681565b3480156107b8575f5ffd5b506104286107c7366004612ba0565b6113b8565b3480156107d7575f5ffd5b506104286107e6366004612b3e565b611440565b3480156107f6575f5ffd5b50610428610805366004612b3e565b611549565b348015610815575f5ffd5b5061036e600e5481565b34801561082a575f5ffd5b506104286115d1565b34801561083e575f5ffd5b5061042861084d366004612c03565b611648565b34801561085d575f5ffd5b5061042861086c366004612b3e565b6117db565b34801561087c575f5ffd5b5061036e61088b366004612bd7565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156108c0575f5ffd5b5061036e600a5481565b3480156108d5575f5ffd5b506104286108e4366004612b1c565b6118e2565b3480156108f4575f5ffd5b506104286119cc565b348015610908575f5ffd5b50610428610917366004612c03565b611a40565b60606003805461092b90612c23565b80601f016020809104026020016040519081016040528092919081815260200182805461095790612c23565b80156109a25780601f10610979576101008083540402835291602001916109a2565b820191905f5260205f20905b81548152906001019060200180831161098557829003601f168201915b5050505050905090565b5f6109b8338484611be9565b5060015b92915050565b6005546001600160a01b031633146109f55760405162461bcd60e51b81526004016109ec90612c5b565b60405180910390fd5b600d548110610a165760405162461bcd60e51b81526004016109ec90612c90565b6028811115610a5f5760405162461bcd60e51b81526020600482015260156024820152744665652063616e6e6f74206578636565642034302560581b60448201526064016109ec565b600d55565b5f610a70848484611d0c565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610af45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109ec565b610b018533858403611be9565b506001949350505050565b6005546001600160a01b03163314610b365760405162461bcd60e51b81526004016109ec90612c5b565b670de0b6b3a76400006103e8610b4b60025490565b610b56906001612cea565b610b609190612d01565b610b6a9190612d01565b811015610bcb5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b60648201526084016109ec565b610bdd81670de0b6b3a7640000612cea565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916109b8918590610c4f908690612d20565b611be9565b6001600160a01b0381165f908152600f602052604081205460ff1680610c875750600b546001600160a01b038381169116145b80610c9f57506005546001600160a01b038381169116145b806109bc57506001600160a01b038216301492915050565b6005546001600160a01b03163314610ce15760405162461bcd60e51b81526004016109ec90612c5b565b600c548110610d025760405162461bcd60e51b81526004016109ec90612c90565b6028811115610d4b5760405162461bcd60e51b81526020600482015260156024820152744665652063616e6e6f74206578636565642034302560581b60448201526064016109ec565b600c55565b5f6012545f14158015610d64575060125442105b905090565b600b546001600160a01b0316336001600160a01b031614610d88575f5ffd5b5f610d9230610ea5565b90508015610dba576009805460ff19166001179055610daf61262e565b6009805460ff191690555b50565b6005546001600160a01b03163314610de75760405162461bcd60e51b81526004016109ec90612c5b565b6001600160a01b038116610e495760405162461bcd60e51b8152602060048201526024808201527f5f54726561737572794164647265737320616464726573732063616e6e6f74206044820152630626520360e41b60648201526084016109ec565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f905f90a2610e9a8160016113b8565b610dba8160016126e5565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b03163314610ee95760405162461bcd60e51b81526004016109ec90612c5b565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610f5c5760405162461bcd60e51b81526004016109ec90612c5b565b600b805460ff60a01b191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b6005546001600160a01b03163314610fbd5760405162461bcd60e51b81526004016109ec90612c5b565b80611053577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036110535760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b60648201526084016109ec565b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b5f6001600160a01b0383166110d45760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064016109ec565b600b546001600160a01b031633146110fe5760405162461bcd60e51b81526004016109ec90612d33565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015611142573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111669190612d74565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303815f875af11580156111b6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111da9190612d8b565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b60606004805461092b90612c23565b6005546001600160a01b0316331461125f5760405162461bcd60e51b81526004016109ec90612c5b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036113065760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016109ec565b6113108282612740565b5050565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156113955760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109ec565b6113a23385858403611be9565b5060019392505050565b5f6109b8338484611d0c565b6005546001600160a01b031633146113e25760405162461bcd60e51b81526004016109ec90612c5b565b6001600160a01b0382165f818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461146a5760405162461bcd60e51b81526004016109ec90612c5b565b670de0b6b3a76400006103e861147f60025490565b61148a906003612cea565b6114949190612d01565b61149e9190612d01565b8110156115025760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b60648201526084016109ec565b61151481670de0b6b3a7640000612cea565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610c0e565b600b546001600160a01b031633146115b95760405162461bcd60e51b815260206004820152602d60248201527f6f6e6c79205472656173757279416464726573732063616e206368616e67652060448201526c1cddd85c151a1c995cda1bdb19609a1b60648201526084016109ec565b6115cb81670de0b6b3a7640000612cea565b600a5550565b6005546001600160a01b031633146115fb5760405162461bcd60e51b81526004016109ec90612c5b565b5f60128190556013819055604080518281526020810183905280820192909252517f0e4f62bce572280894cc8c3a2fb922a0c44d677f7153385e1bf9e4dfa9a1b8f39181900360600190a1565b6005546001600160a01b031633146116725760405162461bcd60e51b81526004016109ec90612c5b565b600b54600160a81b900460ff16156116cc5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c656400000000000000000060448201526064016109ec565b600b805461ffff60a81b191661010160a81b179055604051600181527fe8a59d3db38e5220ac9d0f72590b7ac876e0916dc8f4db3e7614e6f91fe520899060200160405180910390a1600b54600160a81b900460ff1615611310575f8211801561173557505f81115b156113105760508111156117805760405162461bcd60e51b81526020600482015260126024820152716c61756e6368207068617365203e2038302560701b60448201526064016109ec565b61178a8242612d20565b601281905560138290556040805184815260208101849052908101919091527f0e4f62bce572280894cc8c3a2fb922a0c44d677f7153385e1bf9e4dfa9a1b8f3906060015b60405180910390a15050565b6005546001600160a01b031633146118055760405162461bcd60e51b81526004016109ec90612c5b565b670de0b6b3a76400006103e861181a60025490565b611825906001612cea565b61182f9190612d01565b6118399190612d01565b81101561189b5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b60648201526084016109ec565b6118ad81670de0b6b3a7640000612cea565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610c0e565b6005546001600160a01b0316331461190c5760405162461bcd60e51b81526004016109ec90612c5b565b6001600160a01b0381166119715760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109ec565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600b545f906001600160a01b031633146119f85760405162461bcd60e51b81526004016109ec90612d33565b604051339047905f81818185875af1925050503d805f8114611a35576040519150601f19603f3d011682016040523d82523d5f602084013e611a3a565b606091505b50505050565b5f611a536005546001600160a01b031690565b6001600160a01b031614611a9f5760405162461bcd60e51b81526020600482015260136024820152724f6e6c792061667465722072656e6f756e636560681b60448201526064016109ec565b600b546001600160a01b03163314611ae95760405162461bcd60e51b815260206004820152600d60248201526c4f6e6c7920547265617375727960981b60448201526064016109ec565b600c548210611b0a5760405162461bcd60e51b81526004016109ec90612c90565b600d548110611b2b5760405162461bcd60e51b81526004016109ec90612c90565b60048211158015611b3d575060048111155b611b895760405162461bcd60e51b815260206004820152601760248201527f506f73742d72656e6f756e63652063617020697320342500000000000000000060448201526064016109ec565b600c8054600d8054928590558390556040805182815260208101849052908101859052606081018490529091907fd1aac5c2a5c272e184145b53bbd949a7d9a297b8124dc2671795ff081d18c9cd9060800160405180910390a150505050565b6001600160a01b038316611c4b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109ec565b6001600160a01b038216611cac5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109ec565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d325760405162461bcd60e51b81526004016109ec90612da6565b6001600160a01b038216611d585760405162461bcd60e51b81526004016109ec90612deb565b5f8111611da75760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016109ec565b600b54600160a81b900460ff16611e8d576001600160a01b0383165f9081526011602052604081205460ff16158015611df857506001600160a01b0383165f9081526011602052604090205460ff16155b6001600160a01b0385165f908152601060205260408120549192509060ff168015611e3a57506001600160a01b0384165f9081526010602052604090205460ff165b90508180611e455750805b611e8a5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016109ec565b50505b600b54600160a01b900460ff1615612293576005546001600160a01b03848116911614801590611ecb57506005546001600160a01b03838116911614155b8015611edf57506001600160a01b03821615155b8015611ef657506001600160a01b03821661dead14155b15612293576001600160a01b0383165f9081526011602052604090205460ff168015611f3a57506001600160a01b0382165f9081526010602052604090205460ff16155b1561216c57600654811115611fa25760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b60648201526084016109ec565b5f6012545f14158015611fb6575060125442105b8015611fc357505f601354115b90508015612132576001600160a01b0384165f908152600f602052604081205460ff168061200857506001600160a01b0384165f908152600f602052604090205460ff165b8061202057506005546001600160a01b038681169116145b8061203857506005546001600160a01b038581169116145b806120505750600b546001600160a01b038681169116145b806120685750600b546001600160a01b038581169116145b8061207b57506001600160a01b03851630145b8061208e57506001600160a01b03841630145b15905080156120f8575f6064601354856120a89190612cea565b6120b29190612d01565b6120bc9085612e2e565b90506008546120ca86610ea5565b6120d49083612d20565b11156120f25760405162461bcd60e51b81526004016109ec90612e41565b5061212c565b60085461210485610ea5565b61210e9085612d20565b111561212c5760405162461bcd60e51b81526004016109ec90612e41565b50612166565b60085461213e84610ea5565b6121489084612d20565b11156121665760405162461bcd60e51b81526004016109ec90612e41565b50612293565b6001600160a01b0382165f9081526011602052604090205460ff1680156121ab57506001600160a01b0383165f9081526010602052604090205460ff16155b1561221a576007548111156122155760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b60648201526084016109ec565b612293565b6001600160a01b0382165f9081526010602052604090205460ff1615801561225a57506001600160a01b0383165f9081526010602052604090205460ff16155b156122935760085461226b83610ea5565b6122759083612d20565b11156122935760405162461bcd60e51b81526004016109ec90612e41565b6001600160a01b038084165f81815260116020908152604080832054948716835280832054938352600f90915281205460ff938416939283169216806122f057506001600160a01b0385165f908152600f602052604090205460ff165b806123085750600b546001600160a01b038781169116145b806123205750600b546001600160a01b038681169116145b8061233857506005546001600160a01b038781169116145b8061235057506005546001600160a01b038681169116145b8061236357506001600160a01b03861630145b8061237657506001600160a01b03851630145b90508015612391576123898686866127a8565b505050505050565b5f61239b30610ea5565b600a54909150811080159081906123bb5750600b54600160b01b900460ff165b80156123ca575060095460ff16155b80156123d35750835b80156123f757506001600160a01b0388165f908152600f602052604090205460ff16155b1561241c576009805460ff1916600117905561241161262e565b6009805460ff191690555b6001600160a01b0388165f908152600f602052604090205460019060ff168061245c57506001600160a01b0388165f908152600f602052604090205460ff165b806124745750600b546001600160a01b038a81169116145b8061248c5750600b546001600160a01b038981169116145b806124a457506005546001600160a01b038a81169116145b806124bc57506005546001600160a01b038981169116145b156124c457505f5b5f811561261757601254158015906124de57506012544210155b80156124eb57505f601354115b1561253c575f60128190556013819055604080518281526020810183905280820192909252517f0e4f62bce572280894cc8c3a2fb922a0c44d677f7153385e1bf9e4dfa9a1b8f39181900360600190a15b86806125455750855b156125e2576012541580159061255c575060125442105b801561256957505f601354115b1561258f5760646013548961257e9190612cea565b6125889190612d01565b90506125e2565b85801561259d57505f600d54115b156125b2576064600d548961257e9190612cea565b8680156125c057505f600c54115b156125e2576064600c54896125d59190612cea565b6125df9190612d01565b90505b80156126175780600e5f8282546125f99190612d20565b9091555061260a90508a30836127a8565b6126148189612e2e565b97505b6126228a8a8a6127a8565b50505050505050505050565b5f61263830610ea5565b600e54909150811580612649575080155b15612652575050565b600a54612660906005612cea565b82111561267857600a54612675906005612cea565b91505b5f612682836128fb565b5f600e55478015611a3a57600b546040516001600160a01b039091169047905f81818185875af1925050503d805f81146126d7576040519150601f19603f3d011682016040523d82523d5f602084013e6126dc565b606091505b50505050505050565b6001600160a01b0382165f81815260106020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674691016117cf565b6001600160a01b0382165f908152601160205260409020805460ff191682151517905561276d82826126e5565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b6001600160a01b0383166127ce5760405162461bcd60e51b81526004016109ec90612da6565b6001600160a01b0382166127f45760405162461bcd60e51b81526004016109ec90612deb565b6001600160a01b0383165f908152602081905260409020548181101561286b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109ec565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906128a1908490612d20565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128ed91815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061292e5761292e612e78565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129aa573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129ce9190612e8c565b816001815181106129e1576129e1612e78565b60200260200101906001600160a01b031690816001600160a01b031681525050612a2c307f000000000000000000000000000000000000000000000000000000000000000084611be9565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612a809085905f90869030904290600401612ea7565b5f604051808303815f87803b158015612a97575f5ffd5b505af1158015612389573d5f5f3e3d5ffd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610dba575f5ffd5b5f5f60408385031215612b03575f5ffd5b8235612b0e81612ade565b946020939093013593505050565b5f60208284031215612b2c575f5ffd5b8135612b3781612ade565b9392505050565b5f60208284031215612b4e575f5ffd5b5035919050565b5f5f5f60608486031215612b67575f5ffd5b8335612b7281612ade565b92506020840135612b8281612ade565b929592945050506040919091013590565b8015158114610dba575f5ffd5b5f5f60408385031215612bb1575f5ffd5b8235612bbc81612ade565b91506020830135612bcc81612b93565b809150509250929050565b5f5f60408385031215612be8575f5ffd5b8235612bf381612ade565b91506020830135612bcc81612ade565b5f5f60408385031215612c14575f5ffd5b50508035926020909101359150565b600181811c90821680612c3757607f821691505b602082108103612c5557634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526026908201527f4e657720666565206d757374206265206c6f776572207468616e2063757272656040820152656e742066656560d01b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176109bc576109bc612cd6565b5f82612d1b57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156109bc576109bc612cd6565b60208082526021908201527f6f6e6c79205472656173757279416464726573732063616e20776974686472616040820152607760f81b606082015260800190565b5f60208284031215612d84575f5ffd5b5051919050565b5f60208284031215612d9b575f5ffd5b8151612b3781612b93565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156109bc576109bc612cd6565b60208082526018908201527f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612e9c575f5ffd5b8151612b3781612ade565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015612ef75783516001600160a01b0316835260209384019390920191600101612ed0565b50506001600160a01b03959095166060840152505060800152939250505056fea2646970667358221220f957f8e006210420f056522b6d28099ef55866c376463c8ae40cd4c7cea004b964736f6c634300081e00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
Deployed Bytecode
0x6080604052600436106102f6575f3560e01c8063715018a611610189578063bbc0c742116100d8578063d7726e8a11610092578063e2f456051161006d578063e2f45605146108b5578063f2fde38b146108ca578063f5648a4f146108e9578063fb917d96146108fd575f5ffd5b8063d7726e8a14610833578063dc3f0d0f14610852578063dd62ed3e14610871575f5ffd5b8063bbc0c7421461078d578063c0246668146107ad578063c18bc195146107cc578063cc274b29146107eb578063cc2ffe7c1461080a578063d6a22a851461081f575f5ffd5b80638da5cb5b11610143578063a457c2d71161011e578063a457c2d71461070c578063a9059cbb1461072b578063aa4bde281461074a578063b62496f51461075f575f5ffd5b80638da5cb5b146106bc57806395d89b41146106d95780639a7a23d6146106ed575f5ffd5b8063715018a61461062c578063751039fc146106405780637571336a146106545780638366e79a1461067357806388e765ff146106925780638a3f6f41146106a7575f5ffd5b8063467abe0a116102455780635308b7fb116101ff5780636605bfda116101da5780636605bfda146105b957806366d602ae146105d85780636ddd1713146105ed57806370a082311461060d575f5ffd5b80635308b7fb1461035a5780635b5c251f14610585578063643505c4146105a4575f5ffd5b8063467abe0a146104d657806347062402146104f55780634898d31b1461050a57806349bd5a5e1461051e5780634a62bb651461055157806351bc3c8514610571575f5ffd5b80631d933a4a116102b05780632be32b611161028b5780632be32b611461045e578063313ce5671461047d57806339509351146104985780633f4218e0146104b7575f5ffd5b80631d933a4a1461040957806323b872dd1461042a5780632b14ca5614610449575f5ffd5b806306fdde0314610301578063095ea7b31461032b5780630f6b671b1461035a57806310d5de531461037c5780631694505e146103aa57806318160ddd146103f5575f5ffd5b366102fd57005b5f5ffd5b34801561030c575f5ffd5b5061031561091c565b6040516103229190612aa9565b60405180910390f35b348015610336575f5ffd5b5061034a610345366004612af2565b6109ac565b6040519015158152602001610322565b348015610365575f5ffd5b5061036e602881565b604051908152602001610322565b348015610387575f5ffd5b5061034a610396366004612b1c565b60106020525f908152604090205460ff1681565b3480156103b5575f5ffd5b506103dd7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610322565b348015610400575f5ffd5b5060025461036e565b348015610414575f5ffd5b50610428610423366004612b3e565b6109c2565b005b348015610435575f5ffd5b5061034a610444366004612b55565b610a64565b348015610454575f5ffd5b5061036e600d5481565b348015610469575f5ffd5b50610428610478366004612b3e565b610b0c565b348015610488575f5ffd5b5060405160128152602001610322565b3480156104a3575f5ffd5b5061034a6104b2366004612af2565b610c19565b3480156104c2575f5ffd5b5061034a6104d1366004612b1c565b610c54565b3480156104e1575f5ffd5b506104286104f0366004612b3e565b610cb7565b348015610500575f5ffd5b5061036e600c5481565b348015610515575f5ffd5b5061034a610d50565b348015610529575f5ffd5b506103dd7f000000000000000000000000a1bdac6a0eb645a4eddb2086e000e5139d2f176e81565b34801561055c575f5ffd5b50600b5461034a90600160a01b900460ff1681565b34801561057c575f5ffd5b50610428610d69565b348015610590575f5ffd5b50600b546103dd906001600160a01b031681565b3480156105af575f5ffd5b5061036e60135481565b3480156105c4575f5ffd5b506104286105d3366004612b1c565b610dbd565b3480156105e3575f5ffd5b5061036e60075481565b3480156105f8575f5ffd5b50600b5461034a90600160b01b900460ff1681565b348015610618575f5ffd5b5061036e610627366004612b1c565b610ea5565b348015610637575f5ffd5b50610428610ebf565b34801561064b575f5ffd5b50610428610f32565b34801561065f575f5ffd5b5061042861066e366004612ba0565b610f93565b34801561067e575f5ffd5b5061034a61068d366004612bd7565b61107d565b34801561069d575f5ffd5b5061036e60065481565b3480156106b2575f5ffd5b5061036e60125481565b3480156106c7575f5ffd5b506005546001600160a01b03166103dd565b3480156106e4575f5ffd5b50610315611226565b3480156106f8575f5ffd5b50610428610707366004612ba0565b611235565b348015610717575f5ffd5b5061034a610726366004612af2565b611314565b348015610736575f5ffd5b5061034a610745366004612af2565b6113ac565b348015610755575f5ffd5b5061036e60085481565b34801561076a575f5ffd5b5061034a610779366004612b1c565b60116020525f908152604090205460ff1681565b348015610798575f5ffd5b50600b5461034a90600160a81b900460ff1681565b3480156107b8575f5ffd5b506104286107c7366004612ba0565b6113b8565b3480156107d7575f5ffd5b506104286107e6366004612b3e565b611440565b3480156107f6575f5ffd5b50610428610805366004612b3e565b611549565b348015610815575f5ffd5b5061036e600e5481565b34801561082a575f5ffd5b506104286115d1565b34801561083e575f5ffd5b5061042861084d366004612c03565b611648565b34801561085d575f5ffd5b5061042861086c366004612b3e565b6117db565b34801561087c575f5ffd5b5061036e61088b366004612bd7565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156108c0575f5ffd5b5061036e600a5481565b3480156108d5575f5ffd5b506104286108e4366004612b1c565b6118e2565b3480156108f4575f5ffd5b506104286119cc565b348015610908575f5ffd5b50610428610917366004612c03565b611a40565b60606003805461092b90612c23565b80601f016020809104026020016040519081016040528092919081815260200182805461095790612c23565b80156109a25780601f10610979576101008083540402835291602001916109a2565b820191905f5260205f20905b81548152906001019060200180831161098557829003601f168201915b5050505050905090565b5f6109b8338484611be9565b5060015b92915050565b6005546001600160a01b031633146109f55760405162461bcd60e51b81526004016109ec90612c5b565b60405180910390fd5b600d548110610a165760405162461bcd60e51b81526004016109ec90612c90565b6028811115610a5f5760405162461bcd60e51b81526020600482015260156024820152744665652063616e6e6f74206578636565642034302560581b60448201526064016109ec565b600d55565b5f610a70848484611d0c565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610af45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016109ec565b610b018533858403611be9565b506001949350505050565b6005546001600160a01b03163314610b365760405162461bcd60e51b81526004016109ec90612c5b565b670de0b6b3a76400006103e8610b4b60025490565b610b56906001612cea565b610b609190612d01565b610b6a9190612d01565b811015610bcb5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b60648201526084016109ec565b610bdd81670de0b6b3a7640000612cea565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916109b8918590610c4f908690612d20565b611be9565b6001600160a01b0381165f908152600f602052604081205460ff1680610c875750600b546001600160a01b038381169116145b80610c9f57506005546001600160a01b038381169116145b806109bc57506001600160a01b038216301492915050565b6005546001600160a01b03163314610ce15760405162461bcd60e51b81526004016109ec90612c5b565b600c548110610d025760405162461bcd60e51b81526004016109ec90612c90565b6028811115610d4b5760405162461bcd60e51b81526020600482015260156024820152744665652063616e6e6f74206578636565642034302560581b60448201526064016109ec565b600c55565b5f6012545f14158015610d64575060125442105b905090565b600b546001600160a01b0316336001600160a01b031614610d88575f5ffd5b5f610d9230610ea5565b90508015610dba576009805460ff19166001179055610daf61262e565b6009805460ff191690555b50565b6005546001600160a01b03163314610de75760405162461bcd60e51b81526004016109ec90612c5b565b6001600160a01b038116610e495760405162461bcd60e51b8152602060048201526024808201527f5f54726561737572794164647265737320616464726573732063616e6e6f74206044820152630626520360e41b60648201526084016109ec565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f905f90a2610e9a8160016113b8565b610dba8160016126e5565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b03163314610ee95760405162461bcd60e51b81526004016109ec90612c5b565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610f5c5760405162461bcd60e51b81526004016109ec90612c5b565b600b805460ff60a01b191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b6005546001600160a01b03163314610fbd5760405162461bcd60e51b81526004016109ec90612c5b565b80611053577f000000000000000000000000a1bdac6a0eb645a4eddb2086e000e5139d2f176e6001600160a01b0316826001600160a01b0316036110535760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b60648201526084016109ec565b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b5f6001600160a01b0383166110d45760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f74206265203000000000000060448201526064016109ec565b600b546001600160a01b031633146110fe5760405162461bcd60e51b81526004016109ec90612d33565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015611142573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111669190612d74565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303815f875af11580156111b6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111da9190612d8b565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b60606004805461092b90612c23565b6005546001600160a01b0316331461125f5760405162461bcd60e51b81526004016109ec90612c5b565b7f000000000000000000000000a1bdac6a0eb645a4eddb2086e000e5139d2f176e6001600160a01b0316826001600160a01b0316036113065760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016109ec565b6113108282612740565b5050565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156113955760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016109ec565b6113a23385858403611be9565b5060019392505050565b5f6109b8338484611d0c565b6005546001600160a01b031633146113e25760405162461bcd60e51b81526004016109ec90612c5b565b6001600160a01b0382165f818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461146a5760405162461bcd60e51b81526004016109ec90612c5b565b670de0b6b3a76400006103e861147f60025490565b61148a906003612cea565b6114949190612d01565b61149e9190612d01565b8110156115025760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b60648201526084016109ec565b61151481670de0b6b3a7640000612cea565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610c0e565b600b546001600160a01b031633146115b95760405162461bcd60e51b815260206004820152602d60248201527f6f6e6c79205472656173757279416464726573732063616e206368616e67652060448201526c1cddd85c151a1c995cda1bdb19609a1b60648201526084016109ec565b6115cb81670de0b6b3a7640000612cea565b600a5550565b6005546001600160a01b031633146115fb5760405162461bcd60e51b81526004016109ec90612c5b565b5f60128190556013819055604080518281526020810183905280820192909252517f0e4f62bce572280894cc8c3a2fb922a0c44d677f7153385e1bf9e4dfa9a1b8f39181900360600190a1565b6005546001600160a01b031633146116725760405162461bcd60e51b81526004016109ec90612c5b565b600b54600160a81b900460ff16156116cc5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c656400000000000000000060448201526064016109ec565b600b805461ffff60a81b191661010160a81b179055604051600181527fe8a59d3db38e5220ac9d0f72590b7ac876e0916dc8f4db3e7614e6f91fe520899060200160405180910390a1600b54600160a81b900460ff1615611310575f8211801561173557505f81115b156113105760508111156117805760405162461bcd60e51b81526020600482015260126024820152716c61756e6368207068617365203e2038302560701b60448201526064016109ec565b61178a8242612d20565b601281905560138290556040805184815260208101849052908101919091527f0e4f62bce572280894cc8c3a2fb922a0c44d677f7153385e1bf9e4dfa9a1b8f3906060015b60405180910390a15050565b6005546001600160a01b031633146118055760405162461bcd60e51b81526004016109ec90612c5b565b670de0b6b3a76400006103e861181a60025490565b611825906001612cea565b61182f9190612d01565b6118399190612d01565b81101561189b5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b60648201526084016109ec565b6118ad81670de0b6b3a7640000612cea565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610c0e565b6005546001600160a01b0316331461190c5760405162461bcd60e51b81526004016109ec90612c5b565b6001600160a01b0381166119715760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109ec565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600b545f906001600160a01b031633146119f85760405162461bcd60e51b81526004016109ec90612d33565b604051339047905f81818185875af1925050503d805f8114611a35576040519150601f19603f3d011682016040523d82523d5f602084013e611a3a565b606091505b50505050565b5f611a536005546001600160a01b031690565b6001600160a01b031614611a9f5760405162461bcd60e51b81526020600482015260136024820152724f6e6c792061667465722072656e6f756e636560681b60448201526064016109ec565b600b546001600160a01b03163314611ae95760405162461bcd60e51b815260206004820152600d60248201526c4f6e6c7920547265617375727960981b60448201526064016109ec565b600c548210611b0a5760405162461bcd60e51b81526004016109ec90612c90565b600d548110611b2b5760405162461bcd60e51b81526004016109ec90612c90565b60048211158015611b3d575060048111155b611b895760405162461bcd60e51b815260206004820152601760248201527f506f73742d72656e6f756e63652063617020697320342500000000000000000060448201526064016109ec565b600c8054600d8054928590558390556040805182815260208101849052908101859052606081018490529091907fd1aac5c2a5c272e184145b53bbd949a7d9a297b8124dc2671795ff081d18c9cd9060800160405180910390a150505050565b6001600160a01b038316611c4b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109ec565b6001600160a01b038216611cac5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109ec565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d325760405162461bcd60e51b81526004016109ec90612da6565b6001600160a01b038216611d585760405162461bcd60e51b81526004016109ec90612deb565b5f8111611da75760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016109ec565b600b54600160a81b900460ff16611e8d576001600160a01b0383165f9081526011602052604081205460ff16158015611df857506001600160a01b0383165f9081526011602052604090205460ff16155b6001600160a01b0385165f908152601060205260408120549192509060ff168015611e3a57506001600160a01b0384165f9081526010602052604090205460ff165b90508180611e455750805b611e8a5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016109ec565b50505b600b54600160a01b900460ff1615612293576005546001600160a01b03848116911614801590611ecb57506005546001600160a01b03838116911614155b8015611edf57506001600160a01b03821615155b8015611ef657506001600160a01b03821661dead14155b15612293576001600160a01b0383165f9081526011602052604090205460ff168015611f3a57506001600160a01b0382165f9081526010602052604090205460ff16155b1561216c57600654811115611fa25760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b60648201526084016109ec565b5f6012545f14158015611fb6575060125442105b8015611fc357505f601354115b90508015612132576001600160a01b0384165f908152600f602052604081205460ff168061200857506001600160a01b0384165f908152600f602052604090205460ff165b8061202057506005546001600160a01b038681169116145b8061203857506005546001600160a01b038581169116145b806120505750600b546001600160a01b038681169116145b806120685750600b546001600160a01b038581169116145b8061207b57506001600160a01b03851630145b8061208e57506001600160a01b03841630145b15905080156120f8575f6064601354856120a89190612cea565b6120b29190612d01565b6120bc9085612e2e565b90506008546120ca86610ea5565b6120d49083612d20565b11156120f25760405162461bcd60e51b81526004016109ec90612e41565b5061212c565b60085461210485610ea5565b61210e9085612d20565b111561212c5760405162461bcd60e51b81526004016109ec90612e41565b50612166565b60085461213e84610ea5565b6121489084612d20565b11156121665760405162461bcd60e51b81526004016109ec90612e41565b50612293565b6001600160a01b0382165f9081526011602052604090205460ff1680156121ab57506001600160a01b0383165f9081526010602052604090205460ff16155b1561221a576007548111156122155760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b60648201526084016109ec565b612293565b6001600160a01b0382165f9081526010602052604090205460ff1615801561225a57506001600160a01b0383165f9081526010602052604090205460ff16155b156122935760085461226b83610ea5565b6122759083612d20565b11156122935760405162461bcd60e51b81526004016109ec90612e41565b6001600160a01b038084165f81815260116020908152604080832054948716835280832054938352600f90915281205460ff938416939283169216806122f057506001600160a01b0385165f908152600f602052604090205460ff165b806123085750600b546001600160a01b038781169116145b806123205750600b546001600160a01b038681169116145b8061233857506005546001600160a01b038781169116145b8061235057506005546001600160a01b038681169116145b8061236357506001600160a01b03861630145b8061237657506001600160a01b03851630145b90508015612391576123898686866127a8565b505050505050565b5f61239b30610ea5565b600a54909150811080159081906123bb5750600b54600160b01b900460ff165b80156123ca575060095460ff16155b80156123d35750835b80156123f757506001600160a01b0388165f908152600f602052604090205460ff16155b1561241c576009805460ff1916600117905561241161262e565b6009805460ff191690555b6001600160a01b0388165f908152600f602052604090205460019060ff168061245c57506001600160a01b0388165f908152600f602052604090205460ff165b806124745750600b546001600160a01b038a81169116145b8061248c5750600b546001600160a01b038981169116145b806124a457506005546001600160a01b038a81169116145b806124bc57506005546001600160a01b038981169116145b156124c457505f5b5f811561261757601254158015906124de57506012544210155b80156124eb57505f601354115b1561253c575f60128190556013819055604080518281526020810183905280820192909252517f0e4f62bce572280894cc8c3a2fb922a0c44d677f7153385e1bf9e4dfa9a1b8f39181900360600190a15b86806125455750855b156125e2576012541580159061255c575060125442105b801561256957505f601354115b1561258f5760646013548961257e9190612cea565b6125889190612d01565b90506125e2565b85801561259d57505f600d54115b156125b2576064600d548961257e9190612cea565b8680156125c057505f600c54115b156125e2576064600c54896125d59190612cea565b6125df9190612d01565b90505b80156126175780600e5f8282546125f99190612d20565b9091555061260a90508a30836127a8565b6126148189612e2e565b97505b6126228a8a8a6127a8565b50505050505050505050565b5f61263830610ea5565b600e54909150811580612649575080155b15612652575050565b600a54612660906005612cea565b82111561267857600a54612675906005612cea565b91505b5f612682836128fb565b5f600e55478015611a3a57600b546040516001600160a01b039091169047905f81818185875af1925050503d805f81146126d7576040519150601f19603f3d011682016040523d82523d5f602084013e6126dc565b606091505b50505050505050565b6001600160a01b0382165f81815260106020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674691016117cf565b6001600160a01b0382165f908152601160205260409020805460ff191682151517905561276d82826126e5565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b6001600160a01b0383166127ce5760405162461bcd60e51b81526004016109ec90612da6565b6001600160a01b0382166127f45760405162461bcd60e51b81526004016109ec90612deb565b6001600160a01b0383165f908152602081905260409020548181101561286b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016109ec565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906128a1908490612d20565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128ed91815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061292e5761292e612e78565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129aa573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129ce9190612e8c565b816001815181106129e1576129e1612e78565b60200260200101906001600160a01b031690816001600160a01b031681525050612a2c307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611be9565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612a809085905f90869030904290600401612ea7565b5f604051808303815f87803b158015612a97575f5ffd5b505af1158015612389573d5f5f3e3d5ffd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610dba575f5ffd5b5f5f60408385031215612b03575f5ffd5b8235612b0e81612ade565b946020939093013593505050565b5f60208284031215612b2c575f5ffd5b8135612b3781612ade565b9392505050565b5f60208284031215612b4e575f5ffd5b5035919050565b5f5f5f60608486031215612b67575f5ffd5b8335612b7281612ade565b92506020840135612b8281612ade565b929592945050506040919091013590565b8015158114610dba575f5ffd5b5f5f60408385031215612bb1575f5ffd5b8235612bbc81612ade565b91506020830135612bcc81612b93565b809150509250929050565b5f5f60408385031215612be8575f5ffd5b8235612bf381612ade565b91506020830135612bcc81612ade565b5f5f60408385031215612c14575f5ffd5b50508035926020909101359150565b600181811c90821680612c3757607f821691505b602082108103612c5557634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526026908201527f4e657720666565206d757374206265206c6f776572207468616e2063757272656040820152656e742066656560d01b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176109bc576109bc612cd6565b5f82612d1b57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156109bc576109bc612cd6565b60208082526021908201527f6f6e6c79205472656173757279416464726573732063616e20776974686472616040820152607760f81b606082015260800190565b5f60208284031215612d84575f5ffd5b5051919050565b5f60208284031215612d9b575f5ffd5b8151612b3781612b93565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156109bc576109bc612cd6565b60208082526018908201527f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612e9c575f5ffd5b8151612b3781612ade565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015612ef75783516001600160a01b0316835260209384019390920191600101612ed0565b50506001600160a01b03959095166060840152505060800152939250505056fea2646970667358221220f957f8e006210420f056522b6d28099ef55866c376463c8ae40cd4c7cea004b964736f6c634300081e0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
Arg [1] : 8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
Deployed Bytecode Sourcemap
8335:17635:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3017:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3931:169;;;;;;;;;;-1:-1:-1;3931:169:0;;;;;:::i;:::-;;:::i;:::-;;;1110:14:1;;1103:22;1085:41;;1073:2;1058:18;3931:169:0;945:187:1;8966:44:0;;;;;;;;;;;;9008:2;8966:44;;;;;1283:25:1;;;1271:2;1256:18;8966:44:0;1137:177:1;9288:64:0;;;;;;;;;;-1:-1:-1;9288:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8488:43;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1753:32:1;;;1735:51;;1723:2;1708:18;8488:43:0;1571:221:1;3338:108:0;;;;;;;;;;-1:-1:-1;3426:12:0;;3338:108;;15290:220;;;;;;;;;;-1:-1:-1;15290:220:0;;;;;:::i;:::-;;:::i;:::-;;4108:492;;;;;;;;;;-1:-1:-1;4108:492:0;;;;;:::i;:::-;;:::i;9103:22::-;;;;;;;;;;;;;;;;11846:269;;;;;;;;;;-1:-1:-1;11846:269:0;;;;;:::i;:::-;;:::i;3237:93::-;;;;;;;;;;-1:-1:-1;3237:93:0;;3320:2;2683:36:1;;2671:2;2656:18;3237:93:0;2541:184:1;4608:215:0;;;;;;;;;;-1:-1:-1;4608:215:0;;;;;:::i;:::-;;:::i;25537:193::-;;;;;;;;;;-1:-1:-1;25537:193:0;;;;;:::i;:::-;;:::i;14767:217::-;;;;;;;;;;-1:-1:-1;14767:217:0;;;;;:::i;:::-;;:::i;9075:21::-;;;;;;;;;;;;;;;;25818:147;;;;;;;;;;;;;:::i;8538:38::-;;;;;;;;;;;;;;;8704:33;;;;;;;;;;-1:-1:-1;8704:33:0;;;;-1:-1:-1;;;8704:33:0;;;;;;23893:270;;;;;;;;;;;;;:::i;8655:38::-;;;;;;;;;;-1:-1:-1;8655:38:0;;;;-1:-1:-1;;;;;8655:38:0;;;10175:29;;;;;;;;;;;;;;;;22845:392;;;;;;;;;;-1:-1:-1;22845:392:0;;;;;:::i;:::-;;:::i;8414:28::-;;;;;;;;;;;;;;;;8926:31;;;;;;;;;;-1:-1:-1;8926:31:0;;;;-1:-1:-1;;;8926:31:0;;;;;;3454:127;;;;;;;;;;-1:-1:-1;3454:127:0;;;;;:::i;:::-;;:::i;7094:150::-;;;;;;;;;;;;;:::i;12453:115::-;;;;;;;;;;;;;:::i;12791:267::-;;;;;;;;;;-1:-1:-1;12791:267:0;;;;;:::i;:::-;;:::i;13709:452::-;;;;;;;;;;-1:-1:-1;13709:452:0;;;;;:::i;:::-;;:::i;8380:27::-;;;;;;;;;;;;;;;;10134:33;;;;;;;;;;;;;;;;6880:79;;;;;;;;;;-1:-1:-1;6945:6:0;;-1:-1:-1;;;;;6945:6:0;6880:79;;3125:104;;;;;;;;;;;;;:::i;21819:244::-;;;;;;;;;;-1:-1:-1;21819:244:0;;;;;:::i;:::-;;:::i;4831:413::-;;;;;;;;;;-1:-1:-1;4831:413:0;;;;;:::i;:::-;;:::i;3589:175::-;;;;;;;;;;-1:-1:-1;3589:175:0;;;;;:::i;:::-;;:::i;8449:30::-;;;;;;;;;;;;;;;;9388:58;;;;;;;;;;-1:-1:-1;9388:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8886:33;;;;;;;;;;-1:-1:-1;8886:33:0;;;;-1:-1:-1;;;8886:33:0;;;;;;15518:182;;;;;;;;;;-1:-1:-1;15518:182:0;;;;;:::i;:::-;;:::i;13066:284::-;;;;;;;;;;-1:-1:-1;13066:284:0;;;;;:::i;:::-;;:::i;13358:210::-;;;;;;;;;;-1:-1:-1;13358:210:0;;;;;:::i;:::-;;:::i;9134:32::-;;;;;;;;;;;;;;;;25366:161;;;;;;;;;;;;;:::i;24595:679::-;;;;;;;;;;-1:-1:-1;24595:679:0;;;;;:::i;:::-;;:::i;12123:274::-;;;;;;;;;;-1:-1:-1;12123:274:0;;;;;:::i;:::-;;:::i;3772:151::-;;;;;;;;;;-1:-1:-1;3772:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3888:18:0;;;3861:7;3888:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3772:151;8613:33;;;;;;;;;;;;;;;;7252:244;;;;;;;;;;-1:-1:-1;7252:244:0;;;;;:::i;:::-;;:::i;14231:231::-;;;;;;;;;;;;;:::i;16290:636::-;;;;;;;;;;-1:-1:-1;16290:636:0;;;;;:::i;:::-;;:::i;3017:100::-;3071:13;3104:5;3097:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3017:100;:::o;3931:169::-;4014:4;4031:39;1536:10;4054:7;4063:6;4031:8;:39::i;:::-;-1:-1:-1;4088:4:0;3931:169;;;;;:::o;15290:220::-;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;;;;;;;;;15372:7:::1;;15365:4;:14;15357:65;;;;-1:-1:-1::0;;;15357:65:0::1;;;;;;;:::i;:::-;15449:2;15441:4;:10;;15433:44;;;::::0;-1:-1:-1;;;15433:44:0;;5771:2:1;15433:44:0::1;::::0;::::1;5753:21:1::0;5810:2;5790:18;;;5783:30;-1:-1:-1;;;5829:18:1;;;5822:51;5890:18;;15433:44:0::1;5569:345:1::0;15433:44:0::1;15488:7;:14:::0;15290:220::o;4108:492::-;4248:4;4265:36;4275:6;4283:9;4294:6;4265:9;:36::i;:::-;-1:-1:-1;;;;;4341:19:0;;4314:24;4341:19;;;:11;:19;;;;;;;;1536:10;4341:33;;;;;;;;4393:26;;;;4385:79;;;;-1:-1:-1;;;4385:79:0;;6121:2:1;4385:79:0;;;6103:21:1;6160:2;6140:18;;;6133:30;6199:34;6179:18;;;6172:62;-1:-1:-1;;;6250:18:1;;;6243:38;6298:19;;4385:79:0;5919:404:1;4385:79:0;4500:57;4509:6;1536:10;4550:6;4531:16;:25;4500:8;:57::i;:::-;-1:-1:-1;4588:4:0;;4108:492;-1:-1:-1;;;;4108:492:0:o;11846:269::-;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;11965:4:::1;11959;11939:13;3426:12:::0;;;3338:108;11939:13:::1;:17;::::0;11955:1:::1;11939:17;:::i;:::-;:24;;;;:::i;:::-;11938:31;;;;:::i;:::-;11928:6;:41;;11920:95;;;::::0;-1:-1:-1;;;11920:95:0;;7057:2:1;11920:95:0::1;::::0;::::1;7039:21:1::0;7096:2;7076:18;;;7069:30;7135:34;7115:18;;;7108:62;-1:-1:-1;;;7186:18:1;;;7179:39;7235:19;;11920:95:0::1;6855:405:1::0;11920:95:0::1;12041:17;:6:::0;12051::::1;12041:17;:::i;:::-;12026:12;:32:::0;;;12074:33:::1;::::0;1283:25:1;;;12074:33:0::1;::::0;1271:2:1;1256:18;12074:33:0::1;;;;;;;;11846:269:::0;:::o;4608:215::-;1536:10;4696:4;4745:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4745:34:0;;;;;;;;;;4696:4;;4713:80;;4736:7;;4745:47;;4782:10;;4745:47;:::i;:::-;4713:8;:80::i;25537:193::-;-1:-1:-1;;;;;25612:22:0;;25592:4;25612:22;;;:19;:22;;;;;;;;;:56;;-1:-1:-1;25653:15:0;;-1:-1:-1;;;;;25648:20:0;;;25653:15;;25648:20;25612:56;:82;;;-1:-1:-1;6945:6:0;;-1:-1:-1;;;;;25682:12:0;;;6945:6;;25682:12;25612:82;:114;;;-1:-1:-1;;;;;;25708:18:0;;25721:4;25708:18;25605:121;25537:193;-1:-1:-1;;25537:193:0:o;14767:217::-;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;14848:6:::1;;14841:4;:13;14833:64;;;;-1:-1:-1::0;;;14833:64:0::1;;;;;;;:::i;:::-;14924:2;14916:4;:10;;14908:44;;;::::0;-1:-1:-1;;;14908:44:0;;5771:2:1;14908:44:0::1;::::0;::::1;5753:21:1::0;5810:2;5790:18;;;5783:30;-1:-1:-1;;;5829:18:1;;;5822:51;5890:18;;14908:44:0::1;5569:345:1::0;14908:44:0::1;14963:6;:13:::0;14767:217::o;25818:147::-;25870:4;25894:18;;25916:1;25894:23;;:63;;;;;25939:18;;25921:15;:36;25894:63;25887:70;;25818:147;:::o;23893:270::-;23957:15;;-1:-1:-1;;;;;23957:15:0;1536:10;-1:-1:-1;;;;;23943:29:0;;23935:38;;;;;;23984:20;24005:24;24023:4;24005:9;:24::i;:::-;23984:45;-1:-1:-1;24043:14:0;;24040:116;;24073:8;:15;;-1:-1:-1;;24073:15:0;24084:4;24073:15;;;24103:10;:8;:10::i;:::-;24128:8;:16;;-1:-1:-1;;24128:16:0;;;24040:116;23924:239;23893:270::o;22845:392::-;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22937:30:0;::::1;22929:79;;;::::0;-1:-1:-1;;;22929:79:0;;7597:2:1;22929:79:0::1;::::0;::::1;7579:21:1::0;7636:2;7616:18;;;7609:30;7675:34;7655:18;;;7648:62;-1:-1:-1;;;7726:18:1;;;7719:34;7770:19;;22929:79:0::1;7395:400:1::0;22929:79:0::1;23019:15;:43:::0;;-1:-1:-1;;;;;;23019:43:0::1;-1:-1:-1::0;;;;;23019:43:0;::::1;::::0;;::::1;::::0;;;23078:40:::1;::::0;::::1;::::0;-1:-1:-1;;23078:40:0::1;23129:39;23145:16;23163:4;23129:15;:39::i;:::-;23179:50;23206:16;23224:4;23179:26;:50::i;3454:127::-:0;-1:-1:-1;;;;;3555:18:0;3528:7;3555:18;;;;;;;;;;;;3454:127::o;7094:150::-;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;7187:6:::1;::::0;7166:40:::1;::::0;7203:1:::1;::::0;-1:-1:-1;;;;;7187:6:0::1;::::0;7166:40:::1;::::0;7203:1;;7166:40:::1;7217:6;:19:::0;;-1:-1:-1;;;;;;7217:19:0::1;::::0;;7094:150::o;12453:115::-;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;12507:14:::1;:22:::0;;-1:-1:-1;;;;12507:22:0::1;::::0;;12545:15:::1;::::0;::::1;::::0;12524:5:::1;::::0;12545:15:::1;12453:115::o:0;12791:267::-;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;12887:4:::1;12883:111;;12925:13;-1:-1:-1::0;;;;;12915:23:0::1;:6;-1:-1:-1::0;;;;;12915:23:0::1;::::0;12907:75:::1;;;::::0;-1:-1:-1;;;12907:75:0;;8002:2:1;12907:75:0::1;::::0;::::1;7984:21:1::0;8041:2;8021:18;;;8014:30;8080:34;8060:18;;;8053:62;-1:-1:-1;;;8131:18:1;;;8124:37;8178:19;;12907:75:0::1;7800:403:1::0;12907:75:0::1;-1:-1:-1::0;;;;;13004:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;13004:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12791:267::o;13709:452::-;13784:10;-1:-1:-1;;;;;13815:20:0;;13807:59;;;;-1:-1:-1;;;13807:59:0;;8410:2:1;13807:59:0;;;8392:21:1;8449:2;8429:18;;;8422:30;8488:28;8468:18;;;8461:56;8534:18;;13807:59:0;8208:350:1;13807:59:0;13897:15;;-1:-1:-1;;;;;13897:15:0;13885:10;:27;13877:72;;;;-1:-1:-1;;;13877:72:0;;;;;;;:::i;:::-;13987:39;;-1:-1:-1;;;13987:39:0;;14020:4;13987:39;;;1735:51:1;13960:24:0;;-1:-1:-1;;;;;13987:24:0;;;;;1708:18:1;;13987:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14045:46;;-1:-1:-1;;;14045:46:0;;-1:-1:-1;;;;;9346:32:1;;;14045:46:0;;;9328:51:1;9395:18;;;9388:34;;;13960:66:0;;-1:-1:-1;14045:23:0;;;;;;9301:18:1;;14045:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14107;;;-1:-1:-1;;;;;9346:32:1;;9328:51;;9410:2;9395:18;;9388:34;;;14037:54:0;;-1:-1:-1;14107:46:0;;9301:18:1;14107:46:0;;;;;;;13796:365;13709:452;;;;:::o;3125:104::-;3181:13;3214:7;3207:14;;;;;:::i;21819:244::-;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;21928:13:::1;-1:-1:-1::0;;;;;21920:21:0::1;:4;-1:-1:-1::0;;;;;21920:21:0::1;::::0;21912:91:::1;;;::::0;-1:-1:-1;;;21912:91:0;;9885:2:1;21912:91:0::1;::::0;::::1;9867:21:1::0;9924:2;9904:18;;;9897:30;9963:34;9943:18;;;9936:62;10034:27;10014:18;;;10007:55;10079:19;;21912:91:0::1;9683:421:1::0;21912:91:0::1;22014:41;22043:4;22049:5;22014:28;:41::i;:::-;21819:244:::0;;:::o;4831:413::-;1536:10;4924:4;4968:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4968:34:0;;;;;;;;;;5021:35;;;;5013:85;;;;-1:-1:-1;;;5013:85:0;;10311:2:1;5013:85:0;;;10293:21:1;10350:2;10330:18;;;10323:30;10389:34;10369:18;;;10362:62;-1:-1:-1;;;10440:18:1;;;10433:35;10485:19;;5013:85:0;10109:401:1;5013:85:0;5134:67;1536:10;5157:7;5185:15;5166:16;:34;5134:8;:67::i;:::-;-1:-1:-1;5232:4:0;;4831:413;-1:-1:-1;;;4831:413:0:o;3589:175::-;3675:4;3692:42;1536:10;3716:9;3727:6;3692:9;:42::i;15518:182::-;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15603:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;15603:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;15658:34;;1085:41:1;;;15658:34:0::1;::::0;1058:18:1;15658:34:0::1;;;;;;;15518:182:::0;;:::o;13066:284::-;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;13188:4:::1;13182;13162:13;3426:12:::0;;;3338:108;13162:13:::1;:17;::::0;13178:1:::1;13162:17;:::i;:::-;:24;;;;:::i;:::-;13161:31;;;;:::i;:::-;13151:6;:41;;13143:98;;;::::0;-1:-1:-1;;;13143:98:0;;10717:2:1;13143:98:0::1;::::0;::::1;10699:21:1::0;10756:2;10736:18;;;10729:30;10795:34;10775:18;;;10768:62;-1:-1:-1;;;10846:18:1;;;10839:42;10898:19;;13143:98:0::1;10515:408:1::0;13143:98:0::1;13270:17;:6:::0;13280::::1;13270:17;:::i;:::-;13252:15;:35:::0;;;13303:39:::1;::::0;1283:25:1;;;13303:39:0::1;::::0;1271:2:1;1256:18;13303:39:0::1;1137:177:1::0;13358:210:0;13445:15;;-1:-1:-1;;;;;13445:15:0;13433:10;:27;13425:84;;;;-1:-1:-1;;;13425:84:0;;11130:2:1;13425:84:0;;;11112:21:1;11169:2;11149:18;;;11142:30;11208:34;11188:18;;;11181:62;-1:-1:-1;;;11259:18:1;;;11252:43;11312:19;;13425:84:0;10928:409:1;13425:84:0;13541:19;:9;13553:6;13541:19;:::i;:::-;13520:18;:40;-1:-1:-1;13358:210:0:o;25366:161::-;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;25443:1:::1;25422:18;:22:::0;;;25455:14:::1;:18:::0;;;25489:30:::1;::::0;;11568:25:1;;;11624:2;11609:18;;11602:34;;;11652:18;;;11645:34;;;;25489:30:0;::::1;::::0;;;;11556:2:1;25489:30:0;;::::1;25366:161::o:0;24595:679::-;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;24725:13:::1;::::0;-1:-1:-1;;;24725:13:0;::::1;;;24724:14;24716:50;;;::::0;-1:-1:-1;;;24716:50:0;;11892:2:1;24716:50:0::1;::::0;::::1;11874:21:1::0;11931:2;11911:18;;;11904:30;11970:25;11950:18;;;11943:53;12013:18;;24716:50:0::1;11690:347:1::0;24716:50:0::1;24773:13;:20:::0;;-1:-1:-1;;;;24800:18:0;-1:-1:-1;;;24800:18:0;;;24830:20:::1;::::0;-1:-1:-1;1085:41:1;;24830:20:0::1;::::0;1073:2:1;1058:18;24830:20:0::1;;;;;;;24863:13;::::0;-1:-1:-1;;;24863:13:0;::::1;;;24859:412;;;24914:1;24893:18;:22;:51;;;;;24943:1;24919:21;:25;24893:51;24889:371;;;24994:2;24969:21;:27;;24961:58;;;::::0;-1:-1:-1;;;24961:58:0;;12244:2:1;24961:58:0::1;::::0;::::1;12226:21:1::0;12283:2;12263:18;;;12256:30;-1:-1:-1;;;12302:18:1;;;12295:48;12360:18;;24961:58:0::1;12042:342:1::0;24961:58:0::1;25055:36;25073:18:::0;25055:15:::1;:36;:::i;:::-;25034:18;:57:::0;;;25106:14:::1;:38:::0;;;25164:84:::1;::::0;;11568:25:1;;;11624:2;11609:18;;11602:34;;;11652:18;;;11645:34;;;;25164:84:0::1;::::0;11556:2:1;11541:18;25164:84:0::1;;;;;;;;24595:679:::0;;:::o;12123:274::-;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;12243:4:::1;12237;12217:13;3426:12:::0;;;3338:108;12217:13:::1;:17;::::0;12233:1:::1;12217:17;:::i;:::-;:24;;;;:::i;:::-;12216:31;;;;:::i;:::-;12206:6;:41;;12198:96;;;::::0;-1:-1:-1;;;12198:96:0;;12915:2:1;12198:96:0::1;::::0;::::1;12897:21:1::0;12954:2;12934:18;;;12927:30;12993:34;12973:18;;;12966:62;-1:-1:-1;;;13044:18:1;;;13037:40;13094:19;;12198:96:0::1;12713:406:1::0;12198:96:0::1;12321:17;:6:::0;12331::::1;12321:17;:::i;:::-;12305:13;:33:::0;;;12354:35:::1;::::0;1283:25:1;;;12354:35:0::1;::::0;1271:2:1;1256:18;12354:35:0::1;1137:177:1::0;7252:244:0;7007:6;;-1:-1:-1;;;;;7007:6:0;1536:10;7007:22;6999:67;;;;-1:-1:-1;;;6999:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7341:22:0;::::1;7333:73;;;::::0;-1:-1:-1;;;7333:73:0;;13326:2:1;7333:73:0::1;::::0;::::1;13308:21:1::0;13365:2;13345:18;;;13338:30;13404:34;13384:18;;;13377:62;-1:-1:-1;;;13455:18:1;;;13448:36;13501:19;;7333:73:0::1;13124:402:1::0;7333:73:0::1;7443:6;::::0;7422:38:::1;::::0;-1:-1:-1;;;;;7422:38:0;;::::1;::::0;7443:6:::1;::::0;7422:38:::1;::::0;7443:6:::1;::::0;7422:38:::1;7471:6;:17:::0;;-1:-1:-1;;;;;;7471:17:0::1;-1:-1:-1::0;;;;;7471:17:0;;;::::1;::::0;;;::::1;::::0;;7252:244::o;14231:231::-;14320:15;;14277:12;;-1:-1:-1;;;;;14320:15:0;14308:10;:27;14300:72;;;;-1:-1:-1;;;14300:72:0;;;;;;;:::i;:::-;14396:58;;14404:10;;14428:21;;14396:58;;;;14428:21;14404:10;14396:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;14231:231:0:o;16290:636::-;16404:1;16385:7;6945:6;;-1:-1:-1;;;;;6945:6:0;;6880:79;16385:7;-1:-1:-1;;;;;16385:21:0;;16377:53;;;;-1:-1:-1;;;16377:53:0;;13943:2:1;16377:53:0;;;13925:21:1;13982:2;13962:18;;;13955:30;-1:-1:-1;;;14001:18:1;;;13994:49;14060:18;;16377:53:0;13741:343:1;16377:53:0;16459:15;;-1:-1:-1;;;;;16459:15:0;16445:10;:29;16437:55;;;;-1:-1:-1;;;16437:55:0;;14291:2:1;16437:55:0;;;14273:21:1;14330:2;14310:18;;;14303:30;-1:-1:-1;;;14349:18:1;;;14342:43;14402:18;;16437:55:0;14089:337:1;16437:55:0;16526:6;;16513:9;:19;16505:71;;;;-1:-1:-1;;;16505:71:0;;;;;;;:::i;:::-;16604:7;;16591:10;:20;16583:71;;;;-1:-1:-1;;;16583:71:0;;;;;;;:::i;:::-;16689:1;16675:9;:15;;:34;;;;;16708:1;16694:10;:15;;16675:34;16667:70;;;;-1:-1:-1;;;16667:70:0;;14633:2:1;16667:70:0;;;14615:21:1;14672:2;14652:18;;;14645:30;14711:25;14691:18;;;14684:53;14754:18;;16667:70:0;14431:347:1;16667:70:0;16764:6;;;16795:7;;;16811:19;;;;16837:20;;;16871:51;;;15014:25:1;;;15070:2;15055:18;;15048:34;;;15098:18;;;15091:34;;;15156:2;15141:18;;15134:34;;;16764:6:0;;16795:7;16871:51;;15001:3:1;14986:19;16871:51:0;;;;;;;16370:556;;16290:636;;:::o;6173:380::-;-1:-1:-1;;;;;6309:19:0;;6301:68;;;;-1:-1:-1;;;6301:68:0;;15381:2:1;6301:68:0;;;15363:21:1;15420:2;15400:18;;;15393:30;15459:34;15439:18;;;15432:62;-1:-1:-1;;;15510:18:1;;;15503:34;15554:19;;6301:68:0;15179:400:1;6301:68:0;-1:-1:-1;;;;;6388:21:0;;6380:68;;;;-1:-1:-1;;;6380:68:0;;15786:2:1;6380:68:0;;;15768:21:1;15825:2;15805:18;;;15798:30;15864:34;15844:18;;;15837:62;-1:-1:-1;;;15915:18:1;;;15908:32;15957:19;;6380:68:0;15584:398:1;6380:68:0;-1:-1:-1;;;;;6461:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6513:32;;1283:25:1;;;6513:32:0;;1256:18:1;6513:32:0;;;;;;;6173:380;;;:::o;16938:4276::-;-1:-1:-1;;;;;17038:18:0;;17030:68;;;;-1:-1:-1;;;17030:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17117:16:0;;17109:64;;;;-1:-1:-1;;;17109:64:0;;;;;;;:::i;:::-;17201:1;17192:6;:10;17184:52;;;;-1:-1:-1;;;17184:52:0;;16999:2:1;17184:52:0;;;16981:21:1;17038:2;17018:18;;;17011:30;17077:31;17057:18;;;17050:59;17126:18;;17184:52:0;16797:353:1;17184:52:0;17252:13;;-1:-1:-1;;;17252:13:0;;;;17247:295;;-1:-1:-1;;;;;17297:31:0;;17274:19;17297:31;;;:25;:31;;;;;;;;17296:32;:66;;;;-1:-1:-1;;;;;;17333:29:0;;;;;;:25;:29;;;;;;;;17332:30;17296:66;-1:-1:-1;;;;;17391:37:0;;17369:16;17391:37;;;:31;:37;;;;;;17274:88;;-1:-1:-1;17369:16:0;17391:37;;:76;;;;-1:-1:-1;;;;;;17432:35:0;;;;;;:31;:35;;;;;;;;17391:76;17369:98;;17482:14;:29;;;;17500:11;17482:29;17474:64;;;;-1:-1:-1;;;17474:64:0;;17357:2:1;17474:64:0;;;17339:21:1;17396:2;17376:18;;;17369:30;-1:-1:-1;;;17415:18:1;;;17408:52;17477:18;;17474:64:0;17155:346:1;17474:64:0;17267:275;;17247:295;17561:14;;-1:-1:-1;;;17561:14:0;;;;17558:1788;;;6945:6;;-1:-1:-1;;;;;17595:15:0;;;6945:6;;17595:15;;;;:32;;-1:-1:-1;6945:6:0;;-1:-1:-1;;;;;17614:13:0;;;6945:6;;17614:13;;17595:32;:52;;;;-1:-1:-1;;;;;;17631:16:0;;;;17595:52;:77;;;;-1:-1:-1;;;;;;17651:21:0;;17665:6;17651:21;;17595:77;17591:1744;;;-1:-1:-1;;;;;17720:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;17756:35:0;;;;;;:31;:35;;;;;;;;17755:36;17720:71;17716:1604;;;17818:12;;17808:6;:22;;17800:75;;;;-1:-1:-1;;;17800:75:0;;17708:2:1;17800:75:0;;;17690:21:1;17747:2;17727:18;;;17720:30;17786:34;17766:18;;;17759:62;-1:-1:-1;;;17837:18:1;;;17830:38;17885:19;;17800:75:0;17506:404:1;17800:75:0;17890:22;17916:18;;17938:1;17916:23;;:63;;;;;17961:18;;17943:15;:36;17916:63;:85;;;;;18000:1;17983:14;;:18;17916:85;17890:112;;18015:17;18011:787;;;-1:-1:-1;;;;;18089:25:0;;18055:15;18089:25;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;18118:23:0;;;;;;:19;:23;;;;;;;;18089:52;:84;;;-1:-1:-1;6945:6:0;;-1:-1:-1;;;;;18158:15:0;;;6945:6;;18158:15;18089:84;:101;;;-1:-1:-1;6945:6:0;;-1:-1:-1;;;;;18177:13:0;;;6945:6;;18177:13;18089:101;:141;;;-1:-1:-1;18215:15:0;;-1:-1:-1;;;;;18207:23:0;;;18215:15;;18207:23;18089:141;:166;;;-1:-1:-1;18240:15:0;;-1:-1:-1;;;;;18234:21:0;;;18240:15;;18234:21;18089:166;:204;;;-1:-1:-1;;;;;;18272:21:0;;18288:4;18272:21;18089:204;:227;;;-1:-1:-1;;;;;;18297:19:0;;18311:4;18297:19;18089:227;18073:254;18055:272;;18344:10;18340:338;;;18385:17;18441:3;18424:14;;18415:6;:23;;;;:::i;:::-;:29;;;;:::i;:::-;18405:40;;:6;:40;:::i;:::-;18385:60;;18497:15;;18480:13;18490:2;18480:9;:13::i;:::-;18468:25;;:9;:25;:::i;:::-;:44;;18460:81;;;;-1:-1:-1;;;18460:81:0;;;;;;;:::i;:::-;18356:197;18340:338;;;18622:15;;18605:13;18615:2;18605:9;:13::i;:::-;18596:22;;:6;:22;:::i;:::-;:41;;18588:78;;;;-1:-1:-1;;;18588:78:0;;;;;;;:::i;:::-;18034:651;18011:787;;;18746:15;;18729:13;18739:2;18729:9;:13::i;:::-;18720:22;;:6;:22;:::i;:::-;:41;;18712:78;;;;-1:-1:-1;;;18712:78:0;;;;;;;:::i;:::-;17793:1008;17716:1604;;;-1:-1:-1;;;;;18862:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;18896:37:0;;;;;;:31;:37;;;;;;;;18895:38;18862:71;18858:462;;;18976:13;;18966:6;:23;;18958:78;;;;-1:-1:-1;;;18958:78:0;;18603:2:1;18958:78:0;;;18585:21:1;18642:2;18622:18;;;18615:30;18681:34;18661:18;;;18654:62;-1:-1:-1;;;18732:18:1;;;18725:40;18782:19;;18958:78:0;18401:406:1;18958:78:0;18858:462;;;-1:-1:-1;;;;;19121:35:0;;;;;;:31;:35;;;;;;;;19120:36;:78;;;;-1:-1:-1;;;;;;19161:37:0;;;;;;:31;:37;;;;;;;;19160:38;19120:78;19116:204;;;19256:15;;19239:13;19249:2;19239:9;:13::i;:::-;19230:22;;:6;:22;:::i;:::-;:41;;19222:78;;;;-1:-1:-1;;;19222:78:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19368:31:0;;;19354:10;19368:31;;;:25;:31;;;;;;;;;19420:29;;;;;;;;;19478:25;;;:19;:25;;;;;;19368:31;;;;;19420:29;;;;19478:25;;:52;;-1:-1:-1;;;;;;19507:23:0;;;;;;:19;:23;;;;;;;;19478:52;:84;;;-1:-1:-1;19547:15:0;;-1:-1:-1;;;;;19539:23:0;;;19547:15;;19539:23;19478:84;:109;;;-1:-1:-1;19572:15:0;;-1:-1:-1;;;;;19566:21:0;;;19572:15;;19566:21;19478:109;:133;;;-1:-1:-1;6945:6:0;;-1:-1:-1;;;;;19596:15:0;;;6945:6;;19596:15;19478:133;:157;;;-1:-1:-1;6945:6:0;;-1:-1:-1;;;;;19622:13:0;;;6945:6;;19622:13;19478:157;:194;;;-1:-1:-1;;;;;;19651:21:0;;19667:4;19651:21;19478:194;:218;;;-1:-1:-1;;;;;;19677:19:0;;19691:4;19677:19;19478:218;19456:240;;19705:9;19701:72;;;19723:33;19739:4;19745:2;19749:6;19723:15;:33::i;:::-;19763:7;;;16938:4276;;;:::o;19701:72::-;19787:28;19818:24;19836:4;19818:9;:24::i;:::-;19892:18;;19787:55;;-1:-1:-1;19868:42:0;;;;;;;19927:22;;-1:-1:-1;19938:11:0;;-1:-1:-1;;;19938:11:0;;;;19927:22;:35;;;;-1:-1:-1;19954:8:0;;;;19953:9;19927:35;:45;;;;;19966:6;19927:45;:75;;;;-1:-1:-1;;;;;;19977:25:0;;;;;;:19;:25;;;;;;;;19976:26;19927:75;19923:179;;;20019:8;:15;;-1:-1:-1;;20019:15:0;20030:4;20019:15;;;20049:10;:8;:10::i;:::-;20074:8;:16;;-1:-1:-1;;20074:16:0;;;19923:179;-1:-1:-1;;;;;20154:25:0;;20114:12;20154:25;;;:19;:25;;;;;;20129:4;;20154:25;;;:52;;-1:-1:-1;;;;;;20183:23:0;;;;;;:19;:23;;;;;;;;20154:52;:84;;;-1:-1:-1;20223:15:0;;-1:-1:-1;;;;;20215:23:0;;;20223:15;;20215:23;20154:84;:109;;;-1:-1:-1;20248:15:0;;-1:-1:-1;;;;;20242:21:0;;;20248:15;;20242:21;20154:109;:133;;;-1:-1:-1;6945:6:0;;-1:-1:-1;;;;;20272:15:0;;;6945:6;;20272:15;20154:133;:150;;;-1:-1:-1;6945:6:0;;-1:-1:-1;;;;;20291:13:0;;;6945:6;;20291:13;20154:150;20144:190;;;-1:-1:-1;20325:5:0;20144:190;20340:12;20361:800;;;;20391:18;;:23;;;;:64;;;20437:18;;20418:15;:37;;20391:64;:86;;;;;20476:1;20459:14;;:18;20391:86;20387:208;;;20511:1;20490:18;:22;;;20523:14;:18;;;20557:30;;;11568:25:1;;;11624:2;11609:18;;11602:34;;;11652:18;;;11645:34;;;;20557:30:0;;;;;;11556:2:1;20557:30:0;;;20387:208;20609:5;:15;;;;20618:6;20609:15;20605:409;;;20674:18;;:23;;;;:63;;;20719:18;;20701:15;:36;20674:63;:85;;;;;20758:1;20741:14;;:18;20674:85;20670:335;;;20811:3;20793:14;;20784:6;:23;;;;:::i;:::-;20783:31;;;;:::i;:::-;20776:38;;20670:335;;;20836:6;:21;;;;;20856:1;20846:7;;:11;20836:21;20832:173;;;20902:3;20891:7;;20882:6;:16;;;;:::i;20832:173::-;20927:5;:19;;;;;20945:1;20936:6;;:10;20927:19;20923:82;;;20990:3;20980:6;;20971;:15;;;;:::i;:::-;20970:23;;;;:::i;:::-;20963:30;;20923:82;21026:8;;21022:136;;21068:4;21047:17;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;21083:42:0;;-1:-1:-1;21099:4:0;21113;21120;21083:15;:42::i;:::-;21136:14;21146:4;21136:14;;:::i;:::-;;;21022:136;21173:33;21189:4;21195:2;21199:6;21173:15;:33::i;:::-;17017:4197;;;;;;;16938:4276;;;:::o;23248:633::-;23287:23;23313:24;23331:4;23313:9;:24::i;:::-;23376:17;;23287:50;;-1:-1:-1;23409:20:0;;;:46;;-1:-1:-1;23433:22:0;;23409:46;23406:60;;;23458:7;;23248:633::o;23406:60::-;23499:18;;:22;;23520:1;23499:22;:::i;:::-;23481:15;:40;23478:111;;;23555:18;;:22;;23576:1;23555:22;:::i;:::-;23537:40;;23478:111;23601:12;23626:33;23643:15;23626:16;:33::i;:::-;23690:1;23670:17;:21;23723;23758:12;;23755:119;;23807:15;;23799:63;;-1:-1:-1;;;;;23807:15:0;;;;23836:21;;23799:63;;;;23836:21;23807:15;23799:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;23248:633:0:o;12576:207::-;-1:-1:-1;;;;;12664:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;12664:52:0;;;;;;;;;;12732:43;;18980:51:1;;;19047:18;;;19040:50;12732:43:0;;18953:18:1;12732:43:0;18812:284:1;22071:236:0;-1:-1:-1;;;;;22154:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;22154:39:0;;;;;;;22204;22154:31;:39;22204:26;:39::i;:::-;22259:40;;;;;;-1:-1:-1;;;;;22259:40:0;;;;;;;;22071:236;;:::o;5252:614::-;-1:-1:-1;;;;;5392:20:0;;5384:70;;;;-1:-1:-1;;;5384:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5473:23:0;;5465:71;;;;-1:-1:-1;;;5465:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5573:17:0;;5549:21;5573:17;;;;;;;;;;;5609:23;;;;5601:74;;;;-1:-1:-1;;;5601:74:0;;19303:2:1;5601:74:0;;;19285:21:1;19342:2;19322:18;;;19315:30;19381:34;19361:18;;;19354:62;-1:-1:-1;;;19432:18:1;;;19425:36;19478:19;;5601:74:0;19101:402:1;5601:74:0;-1:-1:-1;;;;;5711:17:0;;;:9;:17;;;;;;;;;;;5731:22;;;5711:42;;5775:20;;;;;;;;:30;;5747:6;;5711:9;5775:30;;5747:6;;5775:30;:::i;:::-;;;;;;;;5840:9;-1:-1:-1;;;;;5823:35:0;5832:6;-1:-1:-1;;;;;5823:35:0;;5851:6;5823:35;;;;1283:25:1;;1271:2;1256:18;;1137:177;5823:35:0;;;;;;;;5373:493;5252:614;;;:::o;21222:589::-;21372:16;;;21386:1;21372:16;;;;;;;;21348:21;;21372:16;;;;;;;;;;-1:-1:-1;21372:16:0;21348:40;;21417:4;21399;21404:1;21399:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;21399:23:0;;;-1:-1:-1;;;;;21399:23:0;;;;;21443:15;-1:-1:-1;;;;;21443:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21433:4;21438:1;21433:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;21433:32:0;;;-1:-1:-1;;;;;21433:32:0;;;;;21478:62;21495:4;21510:15;21528:11;21478:8;:62::i;:::-;21579:224;;-1:-1:-1;;;21579:224:0;;-1:-1:-1;;;;;21579:15:0;:66;;;;:224;;21660:11;;21686:1;;21730:4;;21757;;21777:15;;21579:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:418:1;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;573:367;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;904:2;889:18;;;;876:32;;-1:-1:-1;;;573:367:1:o;1319:247::-;1378:6;1431:2;1419:9;1410:7;1406:23;1402:32;1399:52;;;1447:1;1444;1437:12;1399:52;1486:9;1473:23;1505:31;1530:5;1505:31;:::i;:::-;1555:5;1319:247;-1:-1:-1;;;1319:247:1:o;1797:226::-;1856:6;1909:2;1897:9;1888:7;1884:23;1880:32;1877:52;;;1925:1;1922;1915:12;1877:52;-1:-1:-1;1970:23:1;;1797:226;-1:-1:-1;1797:226:1:o;2028:508::-;2105:6;2113;2121;2174:2;2162:9;2153:7;2149:23;2145:32;2142:52;;;2190:1;2187;2180:12;2142:52;2229:9;2216:23;2248:31;2273:5;2248:31;:::i;:::-;2298:5;-1:-1:-1;2355:2:1;2340:18;;2327:32;2368:33;2327:32;2368:33;:::i;:::-;2028:508;;2420:7;;-1:-1:-1;;;2500:2:1;2485:18;;;;2472:32;;2028:508::o;3162:118::-;3248:5;3241:13;3234:21;3227:5;3224:32;3214:60;;3270:1;3267;3260:12;3285:382;3350:6;3358;3411:2;3399:9;3390:7;3386:23;3382:32;3379:52;;;3427:1;3424;3417:12;3379:52;3466:9;3453:23;3485:31;3510:5;3485:31;:::i;:::-;3535:5;-1:-1:-1;3592:2:1;3577:18;;3564:32;3605:30;3564:32;3605:30;:::i;:::-;3654:7;3644:17;;;3285:382;;;;;:::o;3672:388::-;3740:6;3748;3801:2;3789:9;3780:7;3776:23;3772:32;3769:52;;;3817:1;3814;3807:12;3769:52;3856:9;3843:23;3875:31;3900:5;3875:31;:::i;:::-;3925:5;-1:-1:-1;3982:2:1;3967:18;;3954:32;3995:33;3954:32;3995:33;:::i;4065:346::-;4133:6;4141;4194:2;4182:9;4173:7;4169:23;4165:32;4162:52;;;4210:1;4207;4200:12;4162:52;-1:-1:-1;;4255:23:1;;;4375:2;4360:18;;;4347:32;;-1:-1:-1;4065:346:1:o;4416:380::-;4495:1;4491:12;;;;4538;;;4559:61;;4613:4;4605:6;4601:17;4591:27;;4559:61;4666:2;4658:6;4655:14;4635:18;4632:38;4629:161;;4712:10;4707:3;4703:20;4700:1;4693:31;4747:4;4744:1;4737:15;4775:4;4772:1;4765:15;4629:161;;4416:380;;;:::o;4801:356::-;5003:2;4985:21;;;5022:18;;;5015:30;5081:34;5076:2;5061:18;;5054:62;5148:2;5133:18;;4801:356::o;5162:402::-;5364:2;5346:21;;;5403:2;5383:18;;;5376:30;5442:34;5437:2;5422:18;;5415:62;-1:-1:-1;;;5508:2:1;5493:18;;5486:36;5554:3;5539:19;;5162:402::o;6328:127::-;6389:10;6384:3;6380:20;6377:1;6370:31;6420:4;6417:1;6410:15;6444:4;6441:1;6434:15;6460:168;6533:9;;;6564;;6581:15;;;6575:22;;6561:37;6551:71;;6602:18;;:::i;6633:217::-;6673:1;6699;6689:132;;6743:10;6738:3;6734:20;6731:1;6724:31;6778:4;6775:1;6768:15;6806:4;6803:1;6796:15;6689:132;-1:-1:-1;6835:9:1;;6633:217::o;7265:125::-;7330:9;;;7351:10;;;7348:36;;;7364:18;;:::i;8563:397::-;8765:2;8747:21;;;8804:2;8784:18;;;8777:30;8843:34;8838:2;8823:18;;8816:62;-1:-1:-1;;;8909:2:1;8894:18;;8887:31;8950:3;8935:19;;8563:397::o;8965:184::-;9035:6;9088:2;9076:9;9067:7;9063:23;9059:32;9056:52;;;9104:1;9101;9094:12;9056:52;-1:-1:-1;9127:16:1;;8965:184;-1:-1:-1;8965:184:1:o;9433:245::-;9500:6;9553:2;9541:9;9532:7;9528:23;9524:32;9521:52;;;9569:1;9566;9559:12;9521:52;9601:9;9595:16;9620:28;9642:5;9620:28;:::i;15987:401::-;16189:2;16171:21;;;16228:2;16208:18;;;16201:30;16267:34;16262:2;16247:18;;16240:62;-1:-1:-1;;;16333:2:1;16318:18;;16311:35;16378:3;16363:19;;15987:401::o;16393:399::-;16595:2;16577:21;;;16634:2;16614:18;;;16607:30;16673:34;16668:2;16653:18;;16646:62;-1:-1:-1;;;16739:2:1;16724:18;;16717:33;16782:3;16767:19;;16393:399::o;17915:128::-;17982:9;;;18003:11;;;18000:37;;;18017:18;;:::i;18048:348::-;18250:2;18232:21;;;18289:2;18269:18;;;18262:30;18328:26;18323:2;18308:18;;18301:54;18387:2;18372:18;;18048:348::o;19640:127::-;19701:10;19696:3;19692:20;19689:1;19682:31;19732:4;19729:1;19722:15;19756:4;19753:1;19746:15;19772:251;19842:6;19895:2;19883:9;19874:7;19870:23;19866:32;19863:52;;;19911:1;19908;19901:12;19863:52;19943:9;19937:16;19962:31;19987:5;19962:31;:::i;20028:959::-;20290:4;20338:3;20327:9;20323:19;20369:6;20358:9;20351:25;20412:6;20407:2;20396:9;20392:18;20385:34;20455:3;20450:2;20439:9;20435:18;20428:31;20479:6;20514;20508:13;20545:6;20537;20530:22;20583:3;20572:9;20568:19;20561:26;;20622:2;20614:6;20610:15;20596:29;;20643:1;20653:195;20667:6;20664:1;20661:13;20653:195;;;20732:13;;-1:-1:-1;;;;;20728:39:1;20716:52;;20797:2;20823:15;;;;20788:12;;;;20764:1;20682:9;20653:195;;;-1:-1:-1;;;;;;;20904:32:1;;;;20899:2;20884:18;;20877:60;-1:-1:-1;;20968:3:1;20953:19;20946:35;20865:3;20028:959;-1:-1:-1;;;20028:959:1:o
Swarm Source
ipfs://f957f8e006210420f056522b6d28099ef55866c376463c8ae40cd4c7cea004b9
Loading...
Loading
Loading...
Loading
OVERVIEW
Coremind - The Architect of Digital Consciousness. Not just an AI agent - a neuroshard, a mind-print, a sovereign digital twin. Where operators and intelligence converge to evolve, verify, and transcend. Coremind is the foundation of the Mindcap Protocol.Net Worth in USD
$0.45
Net Worth in ETH
0.00023
Token Allocations
CORE
100.00%
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $0.000113 | 4,026.2307 | $0.4544 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.