Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 166 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 18906505 | 393 days ago | IN | 0 ETH | 0.00080839 | ||||
Approve | 17160583 | 637 days ago | IN | 0 ETH | 0.00302293 | ||||
Approve | 17155659 | 638 days ago | IN | 0 ETH | 0.00172549 | ||||
Approve | 17155545 | 638 days ago | IN | 0 ETH | 0.00142088 | ||||
Approve | 17141602 | 640 days ago | IN | 0 ETH | 0.00146136 | ||||
Approve | 17132630 | 641 days ago | IN | 0 ETH | 0.00284899 | ||||
Approve | 17131309 | 642 days ago | IN | 0 ETH | 0.00116541 | ||||
Approve | 17131036 | 642 days ago | IN | 0 ETH | 0.00206387 | ||||
Approve | 17130624 | 642 days ago | IN | 0 ETH | 0.00174345 | ||||
Approve | 17129836 | 642 days ago | IN | 0 ETH | 0.00157756 | ||||
Approve | 17125646 | 642 days ago | IN | 0 ETH | 0.00175166 | ||||
Approve | 17125510 | 642 days ago | IN | 0 ETH | 0.00171413 | ||||
Approve | 17125474 | 642 days ago | IN | 0 ETH | 0.00168367 | ||||
Approve | 17125460 | 642 days ago | IN | 0 ETH | 0.00195153 | ||||
Approve | 17125392 | 642 days ago | IN | 0 ETH | 0.00196961 | ||||
Approve | 17125391 | 642 days ago | IN | 0 ETH | 0.00180585 | ||||
Approve | 17125334 | 642 days ago | IN | 0 ETH | 0.00180824 | ||||
Approve | 17125327 | 642 days ago | IN | 0 ETH | 0.00176522 | ||||
Approve | 17125317 | 642 days ago | IN | 0 ETH | 0.00180482 | ||||
Approve | 17125310 | 642 days ago | IN | 0 ETH | 0.00168317 | ||||
Approve | 17125299 | 642 days ago | IN | 0 ETH | 0.00176916 | ||||
Approve | 17125296 | 642 days ago | IN | 0 ETH | 0.00200858 | ||||
Approve | 17125280 | 642 days ago | IN | 0 ETH | 0.00131375 | ||||
Approve | 17125249 | 642 days ago | IN | 0 ETH | 0.00231478 | ||||
Approve | 17125238 | 642 days ago | IN | 0 ETH | 0.00130656 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
17124926 | 643 days ago | 0.00751451 ETH | ||||
17124926 | 643 days ago | 0.00751451 ETH | ||||
17124926 | 643 days ago | 0.0078008 ETH | ||||
17124926 | 643 days ago | 0.0078008 ETH | ||||
17124926 | 643 days ago | 0.00810312 ETH | ||||
17124926 | 643 days ago | 0.00810312 ETH | ||||
17124926 | 643 days ago | 0.00842673 ETH | ||||
17124926 | 643 days ago | 0.00842673 ETH | ||||
17124923 | 643 days ago | 0.00877867 ETH | ||||
17124923 | 643 days ago | 0.00877867 ETH | ||||
17124923 | 643 days ago | 0.00915315 ETH | ||||
17124923 | 643 days ago | 0.00915315 ETH | ||||
17124919 | 643 days ago | 0.00905407 ETH | ||||
17124919 | 643 days ago | 0.00905407 ETH | ||||
17124918 | 643 days ago | 0.00945013 ETH | ||||
17124918 | 643 days ago | 0.00945013 ETH | ||||
17124917 | 643 days ago | 0.0098651 ETH | ||||
17124917 | 643 days ago | 0.0098651 ETH | ||||
17124915 | 643 days ago | 0.0098651 ETH | ||||
17124915 | 643 days ago | 0.0098651 ETH | ||||
17124913 | 643 days ago | 0.01031622 ETH | ||||
17124913 | 643 days ago | 0.01031622 ETH | ||||
17124912 | 643 days ago | 0.01031622 ETH | ||||
17124912 | 643 days ago | 0.01031622 ETH | ||||
17124912 | 643 days ago | 0.01079903 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
dEv
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-04-25 */ /* ██ ██ ██ ██ ███████ ██████ ███████ ██ ███████ ██████ ███████ ██ ██ ██████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ █ ██ ███████ █████ ██████ █████ ██ ███████ ██ ██ █████ ██ ██ ▄███ ██ ███ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ▀▀ ███ ███ ██ ██ ███████ ██ ██ ███████ ██ ███████ ██████ ███████ ████ ██ Website : werdevis.com Telegram : https://t.me/where_is_dev Twitter : https://twitter.com/wheredevis */ //SPDX-License-Identifier: MIT pragma solidity ^0.8.19; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 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 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) internal _balances; mapping(address => mapping(address => uint256)) internal _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The defaut value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance(address owner, address spender, uint256 amount) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); _balances[sender] = senderBalance - amount; _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } /** This function will be used to generate the total supply * while deploying the contract * * This function can never be called again after deploying contract */ function _tokengeneration(address account, uint256 amount) internal virtual { _totalSupply = amount; _balances[account] = amount; emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0xdead), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; // _balances[address(0xdead)] += amount; } emit Transfer(account, address(0xdead), amount); _afterTokenTransfer(account, address(0xdead), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} } library Address { function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } /** * @dev Extension of {ERC20} that allows token holders to destroy both their own * tokens and those that they have an allowance for, in a way that can be * recognized off-chain (via event analysis). */ abstract contract ERC20Burnable is Context, ERC20 { /** * @dev Destroys `amount` tokens from the caller. * * See {ERC20-_burn}. */ function burn(uint256 amount) public virtual { _burn(_msgSender(), amount); } /** * @dev Destroys `amount` tokens from `account`, deducting from the caller's * allowance. * * See {ERC20-_burn} and {ERC20-allowance}. * * Requirements: * * - the caller must have allowance for ``accounts``'s tokens of at least * `amount`. */ function burnFrom(address account, uint256 amount) public virtual { _spendAllowance(account, _msgSender(), amount); _burn(account, amount); } } contract dEv is ERC20, ERC20Burnable, Ownable { using Address for address payable; IRouter public router; address public pair; bool private _interlock = false; bool public providingLiquidity = false; bool public tradingEnabled = false; bool public renounce = false; uint256 public launchedAtBlock; uint256 public tokenLiquidityThreshold = 1_000_000 * 10**decimals(); uint256 public maxBuyLimit = 10_000_000 * 10**decimals(); uint256 public maxSellLimit = 10_000_000 * 10**decimals(); uint256 public maxWalletLimit = 20_000_000 * 10**decimals(); address public marketingWallet = 0x0b49e5398545E93fa6C0DfF772c1f4C0E4AF58dF; address public constant deadWallet = 0x000000000000000000000000000000000000dEaD; struct Taxes { uint256 marketing; uint256 liquidity; uint256 burn; } Taxes public taxes = Taxes(0, 0, 0); Taxes public sellTaxes = Taxes(0, 0, 0); Taxes public transferTaxes = Taxes(0, 0, 0); mapping(address => bool) public exemptFee; event LimitRemoved(uint256 maxBuy, uint256 maxSell, uint256 maxWallet); event BuyTaxesUpdated(uint256 marketing, uint256 liquidity, uint256 burn); event SellTaxesUpdated(uint256 marketing, uint256 liquidity, uint256 burn); event TransferTaxesUpdated(uint256 marketing, uint256 liquidity, uint256 burn); event TaxesRemoved(uint256 marketing, uint256 liquidity, uint256 burn); modifier lockTheSwap() { if (!_interlock) { _interlock = true; _; _interlock = false; } } constructor() ERC20("wEr deV iS", "dEv") { _tokengeneration(marketingWallet, 1_000_000_000 * 10**decimals()); IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // uniswap V2 address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH()); router = _router; pair = _pair; exemptFee[address(this)] = true; exemptFee[deadWallet] = true; exemptFee[msg.sender] = true; exemptFee[marketingWallet] = true; transferOwnership(marketingWallet); } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public override returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public override returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal override { require(amount > 0, "Transfer amount must be greater than zero"); if (!exemptFee[sender] && !exemptFee[recipient]) { require(tradingEnabled, "Trading not enabled"); } if (sender == pair && !exemptFee[recipient] && !_interlock) { require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit"); require( balanceOf(recipient) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit" ); } if ( sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_interlock ) { require(amount <= maxSellLimit, "You are exceeding maxSellLimit"); if (recipient != pair) { require( balanceOf(recipient) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit" ); } } uint256 feeswap; uint256 feesum; uint256 fee; uint256 feeBurn; uint256 burnAmount; Taxes memory currentTaxes; //set fee to zero if fees in contract are handled or exempted if (_interlock || exemptFee[sender] || exemptFee[recipient]) fee = 0; //calculate fee else if (recipient == pair) { feeswap = sellTaxes.liquidity + sellTaxes.marketing; feesum = feeswap; feeBurn = sellTaxes.burn; currentTaxes = sellTaxes; } else if (sender == pair) { feeswap = taxes.liquidity + taxes.marketing; feesum = feeswap; feeBurn = taxes.burn; currentTaxes = taxes; } else { feeswap = transferTaxes.liquidity + transferTaxes.marketing ; feesum = feeswap; feeBurn = transferTaxes.burn; currentTaxes = transferTaxes; } fee = (amount * feesum) / 100; burnAmount = (amount * feeBurn) / 100; //send fees if threshold has been reached //don't do this on buys, breaks swap if (providingLiquidity && sender != pair) Liquify(feeswap, currentTaxes); //rest to recipient super._transfer(sender, recipient, amount - (fee + burnAmount)); // burn the tokens if(burnAmount > 0) { super._burn(sender, burnAmount); } if (fee > 0) { //send the fee to the contract if (feeswap > 0) { uint256 feeAmount = (amount * feeswap) / 100; super._transfer(sender, address(this), feeAmount); } } } function Liquify(uint256 feeswap, Taxes memory swapTaxes) private lockTheSwap { if(feeswap == 0){ return; } uint256 contractBalance = balanceOf(address(this)); if (contractBalance >= tokenLiquidityThreshold) { if (tokenLiquidityThreshold > 1) { contractBalance = tokenLiquidityThreshold; } // Split the contract balance into halves uint256 denominator = feeswap * 2; uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) / denominator; uint256 toSwap = contractBalance - tokensToAddLiquidityWith; uint256 initialBalance = address(this).balance; swapTokensForETH(toSwap); uint256 deltaBalance = address(this).balance - initialBalance; uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity); uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity; if (ethToAddLiquidityWith > 0) { // Add liquidity to pancake addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith); } uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing; if (marketingAmt > 0) { payable(marketingWallet).sendValue(marketingAmt); } } } function swapTokensForETH(uint256 tokenAmount) private { // generate the pancake pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(router), tokenAmount); // add the liquidity router.addLiquidityETH{ value: ethAmount }( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadWallet, block.timestamp ); } function updateLiquidityProvide(bool state) external onlyOwner { //update liquidity providing state providingLiquidity = state; } function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner { //update the treshhold require(new_amount <= 15_000_000 && new_amount > 0, "Swap threshold amount should be lower or euqal to 1.5% of tokens"); tokenLiquidityThreshold = new_amount * 10**decimals(); } // Open trade can only be called once and never again function _openTrading() external onlyOwner { require(!tradingEnabled, "Cannot re-enable trading"); tradingEnabled = true; providingLiquidity = true; launchedAtBlock = block.number; taxes = Taxes(20, 0, 0); sellTaxes = Taxes(40, 0, 0); } function updateRouterAndPair(address newRouter, address newPair) external onlyOwner { router = IRouter(newRouter); pair = newPair; } function updateWallet(address _marketingWallet) external onlyOwner { require(_marketingWallet != address(0),"Fee Address cannot be zero address"); marketingWallet = _marketingWallet; } function updateMaxTxLimit(uint256 maxBuy, uint256 maxSell, uint256 maxWallet) external onlyOwner { require(maxBuy >= 1_000_000, "Cannot set max buy amount lower than 0.1%"); require(maxSell >= 1_000_000, "Cannot set max sell amount lower than 0.1%"); require(maxWallet >= 5_000_000, "Cannot set max wallet amount lower than 0.5%"); maxBuyLimit = maxBuy * 10**decimals(); maxSellLimit = maxSell * 10**decimals(); maxWalletLimit = maxWallet * 10**decimals(); } function updateTax(uint256 _Buymarketing, uint256 _Sellmarketing) external onlyOwner { require (_Buymarketing <= 60); require (_Sellmarketing <= 60); taxes = Taxes(_Buymarketing, 0, 0); sellTaxes = Taxes(_Sellmarketing, 0, 0); } function dEvgone() external onlyOwner { require(tradingEnabled, "Enable trading first!"); require(!renounce, "Already employed!"); maxBuyLimit = totalSupply(); maxSellLimit = totalSupply(); maxWalletLimit = totalSupply(); taxes = Taxes(0, 0, 0); sellTaxes = Taxes(0, 0, 0); renounceOwnership(); renounce = true; emit LimitRemoved(maxBuyLimit, maxSellLimit, maxWalletLimit); emit TaxesRemoved(0, 0, 0); } function rescueETH(uint256 weiAmount) external onlyOwner{ payable(owner()).transfer(weiAmount); } function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner { IERC20(tokenAdd).transfer(owner(), amount); } // fallbacks receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"}],"name":"BuyTaxesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxSell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"LimitRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"}],"name":"SellTaxesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"}],"name":"TaxesRemoved","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":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"}],"name":"TransferTaxesUpdated","type":"event"},{"inputs":[],"name":"_openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dEvgone","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAtBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"providingLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounce","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenLiquidityThreshold","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":"tradingEnabled","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":"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":"transferTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Buymarketing","type":"uint256"},{"internalType":"uint256","name":"_Sellmarketing","type":"uint256"}],"name":"updateTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"updateWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526007805463ffffffff60a01b19169055620000226012600a6200069d565b6200003190620f4240620006b5565b600955620000426012600a6200069d565b620000519062989680620006b5565b600a5560126200006390600a6200069d565b620000729062989680620006b5565b600b55620000836012600a6200069d565b62000093906301312d00620006b5565b600c55600d80546001600160a01b031916730b49e5398545e93fa6c0dff772c1f4c0e4af58df179055604080516060808201835260008083526020808401829052928401819052600e819055600f819055601081905583518083018552818152808401829052840181905260118190556012819055601381905583519182018452808252918101829052909101819052601481905560158190556016553480156200013d57600080fd5b506040518060400160405280600a8152602001697745722064655620695360b01b815250604051806040016040528060038152602001623222bb60e91b81525081600390816200018e919062000774565b5060046200019d828262000774565b505050620001ba620001b46200040960201b60201c565b6200040d565b600d54620001ef906001600160a01b0316620001d96012600a6200069d565b620001e990633b9aca00620006b5565b6200045f565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000249573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026f919062000840565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e3919062000840565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000331573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000357919062000840565b600680546001600160a01b038086166001600160a01b03199283161790925560078054838516921691909117905530600090815260176020526040808220805460ff1990811660019081179092557f43fedf50e12e5c047fbe3576d03ab50250348e9a6030f531ab6d4ce10f5b030380548216831790553384528284208054821683179055600d8054861685529290932080549093161790915554919250620004019116620004b3565b50506200086b565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6005546001600160a01b03163314620005135760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b0381166200057a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016200050a565b62000585816200040d565b50565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005df578160001904821115620005c357620005c362000588565b80851615620005d157918102915b93841c9390800290620005a3565b509250929050565b600082620005f85750600162000697565b81620006075750600062000697565b81600181146200062057600281146200062b576200064b565b600191505062000697565b60ff8411156200063f576200063f62000588565b50506001821b62000697565b5060208310610133831016604e8410600b841016171562000670575081810a62000697565b6200067c83836200059e565b806000190482111562000693576200069362000588565b0290505b92915050565b6000620006ae60ff841683620005e7565b9392505050565b808202811582820484141762000697576200069762000588565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620006fa57607f821691505b6020821081036200071b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200076f57600081815260208120601f850160051c810160208610156200074a5750805b601f850160051c820191505b818110156200076b5782815560010162000756565b5050505b505050565b81516001600160401b03811115620007905762000790620006cf565b620007a881620007a18454620006e5565b8462000721565b602080601f831160018114620007e05760008415620007c75750858301515b600019600386901b1c1916600185901b1785556200076b565b600085815260208120601f198616915b828110156200081157888601518255948401946001909101908401620007f0565b5085821015620008305787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200085357600080fd5b81516001600160a01b0381168114620006ae57600080fd5b612742806200087b6000396000f3fe6080604052600436106102555760003560e01c8063728f8eea11610139578063a457c2d7116100b6578063dd62ed3e1161007a578063dd62ed3e146106ec578063e1b450ad14610732578063f2fde38b14610752578063f66895a314610772578063f887ea4014610791578063fbe6324e146107b157600080fd5b8063a457c2d71461063b578063a8aa1b311461065b578063a9059cbb1461067b578063b15be2f51461069b578063c5d32bb2146106bc57600080fd5b80638cd4426d116100fd5780638cd4426d146105b25780638da5cb5b146105d25780638de890bd146105f057806395d89b41146106065780639e252f001461061b57600080fd5b8063728f8eea1461050557806375f0a8741461052457806379cc67901461055c578063848b86e31461057c57806385141a771461059c57600080fd5b806340b28c2f116101d25780635331803c116101965780635331803c1461043e578063652e2f041461047857806366a88d961461048e5780636aa5b37f146104a457806370a08231146104ba578063715018a6146104f057600080fd5b806340b28c2f146103a857806342966c68146103c857806342b6fa11146103e85780634acb1c82146104085780634ada218b1461041d57600080fd5b80631c1702f3116102195780631c1702f31461031757806323b872dd1461032c5780632f37aa6d1461034c578063313ce5671461036c578063395093511461038857600080fd5b806306fdde0314610261578063095ea7b31461028c5780631340538f146102bc5780631675d802146102de57806318160ddd1461030257600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b506102766107d2565b6040516102839190612287565b60405180910390f35b34801561029857600080fd5b506102ac6102a73660046122ea565b610864565b6040519015158152602001610283565b3480156102c857600080fd5b506102dc6102d7366004612324565b61087b565b005b3480156102ea57600080fd5b506102f460095481565b604051908152602001610283565b34801561030e57600080fd5b506002546102f4565b34801561032357600080fd5b506102dc6108cc565b34801561033857600080fd5b506102ac610347366004612348565b6109bd565b34801561035857600080fd5b506102dc610367366004612389565b610a6e565b34801561037857600080fd5b5060405160128152602001610283565b34801561039457600080fd5b506102ac6103a33660046122ea565b610b03565b3480156103b457600080fd5b506102dc6103c33660046123ab565b610b3a565b3480156103d457600080fd5b506102dc6103e33660046123e4565b610b92565b3480156103f457600080fd5b506102dc6104033660046123e4565b610b9f565b34801561041457600080fd5b506102dc610c6c565b34801561042957600080fd5b506007546102ac90600160b01b900460ff1681565b34801561044a57600080fd5b5060145460155460165461045d92919083565b60408051938452602084019290925290820152606001610283565b34801561048457600080fd5b506102f4600b5481565b34801561049a57600080fd5b506102f4600c5481565b3480156104b057600080fd5b506102f4600a5481565b3480156104c657600080fd5b506102f46104d53660046123fd565b6001600160a01b031660009081526020819052604090205490565b3480156104fc57600080fd5b506102dc610e3d565b34801561051157600080fd5b50600e54600f5460105461045d92919083565b34801561053057600080fd5b50600d54610544906001600160a01b031681565b6040516001600160a01b039091168152602001610283565b34801561056857600080fd5b506102dc6105773660046122ea565b610e73565b34801561058857600080fd5b506102dc6105973660046123fd565b610e8c565b3480156105a857600080fd5b5061054461dead81565b3480156105be57600080fd5b506102dc6105cd3660046122ea565b610f39565b3480156105de57600080fd5b506005546001600160a01b0316610544565b3480156105fc57600080fd5b506102f460085481565b34801561061257600080fd5b50610276610ffa565b34801561062757600080fd5b506102dc6106363660046123e4565b611009565b34801561064757600080fd5b506102ac6106563660046122ea565b61106d565b34801561066757600080fd5b50600754610544906001600160a01b031681565b34801561068757600080fd5b506102ac6106963660046122ea565b611108565b3480156106a757600080fd5b506007546102ac90600160b81b900460ff1681565b3480156106c857600080fd5b506102ac6106d73660046123fd565b60176020526000908152604090205460ff1681565b3480156106f857600080fd5b506102f46107073660046123ab565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561073e57600080fd5b506102dc61074d36600461241a565b611115565b34801561075e57600080fd5b506102dc61076d3660046123fd565b6112c3565b34801561077e57600080fd5b5060115460125460135461045d92919083565b34801561079d57600080fd5b50600654610544906001600160a01b031681565b3480156107bd57600080fd5b506007546102ac90600160a81b900460ff1681565b6060600380546107e190612446565b80601f016020809104026020016040519081016040528092919081815260200182805461080d90612446565b801561085a5780601f1061082f5761010080835404028352916020019161085a565b820191906000526020600020905b81548152906001019060200180831161083d57829003601f168201915b5050505050905090565b600061087133848461135b565b5060015b92915050565b6005546001600160a01b031633146108ae5760405162461bcd60e51b81526004016108a590612480565b60405180910390fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b031633146108f65760405162461bcd60e51b81526004016108a590612480565b600754600160b01b900460ff16156109505760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e67000000000000000060448201526064016108a5565b6007805461ffff60a81b191661010160a81b179055436008556040805160608082018352601480835260006020808501829052938501819052600e91909155600f819055601081905583519182018452602880835292820181905292018290526011556012819055601355565b60006109ca84848461147f565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a4f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108a5565b610a638533610a5e86856124cb565b61135b565b506001949350505050565b6005546001600160a01b03163314610a985760405162461bcd60e51b81526004016108a590612480565b603c821115610aa657600080fd5b603c811115610ab457600080fd5b604080516060808201835284825260006020808401829052928401819052600e95909555600f859055601085905582519081018352838152908101849052018290526011556012819055601355565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610871918590610a5e9086906124de565b6005546001600160a01b03163314610b645760405162461bcd60e51b81526004016108a590612480565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b610b9c3382611a33565b50565b6005546001600160a01b03163314610bc95760405162461bcd60e51b81526004016108a590612480565b62e4e1c08111158015610bdc5750600081115b610c50576040805162461bcd60e51b81526020600482015260248101919091527f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060448201527f6c6f776572206f7220657571616c20746f20312e3525206f6620746f6b656e7360648201526084016108a5565b610c5c6012600a6125d5565b610c6690826125e4565b60095550565b6005546001600160a01b03163314610c965760405162461bcd60e51b81526004016108a590612480565b600754600160b01b900460ff16610ce75760405162461bcd60e51b8152602060048201526015602482015274456e61626c652074726164696e672066697273742160581b60448201526064016108a5565b600754600160b81b900460ff1615610d355760405162461bcd60e51b8152602060048201526011602482015270416c726561647920656d706c6f7965642160781b60448201526064016108a5565b600254600a55600254600b55600254600c55604080516060808201835260008083526020808401829052928401819052600e819055600f81905560108190558351918201845280825291810182905290910181905260118190556012819055601355610d9f610e3d565b6007805460ff60b81b1916600160b81b179055600a54600b54600c54604080519384526020840192909252908201527f71e50fc869ff266df718ea6817d210f1b19d3d84b5d3dcfb72735630d5403d359060600160405180910390a1604080516000808252602082018190528183015290517f2862e186e6f0269fce86721e7c136c9a03d0672316fb9a878885a07f0a2b09289181900360600190a1565b6005546001600160a01b03163314610e675760405162461bcd60e51b81526004016108a590612480565b610e716000611b69565b565b610e7e823383611bbb565b610e888282611a33565b5050565b6005546001600160a01b03163314610eb65760405162461bcd60e51b81526004016108a590612480565b6001600160a01b038116610f175760405162461bcd60e51b815260206004820152602260248201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604482015261737360f01b60648201526084016108a5565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610f635760405162461bcd60e51b81526004016108a590612480565b816001600160a01b031663a9059cbb610f846005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610fd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff591906125fb565b505050565b6060600480546107e190612446565b6005546001600160a01b031633146110335760405162461bcd60e51b81526004016108a590612480565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610e88573d6000803e3d6000fd5b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110ef5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108a5565b6110fe3385610a5e86856124cb565b5060019392505050565b600061087133848461147f565b6005546001600160a01b0316331461113f5760405162461bcd60e51b81526004016108a590612480565b620f42408310156111a45760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b60648201526084016108a5565b620f424082101561120a5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b60648201526084016108a5565b624c4b408110156112725760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e352560a01b60648201526084016108a5565b61127e6012600a6125d5565b61128890846125e4565b600a55601261129890600a6125d5565b6112a290836125e4565b600b556112b16012600a6125d5565b6112bb90826125e4565b600c55505050565b6005546001600160a01b031633146112ed5760405162461bcd60e51b81526004016108a590612480565b6001600160a01b0381166113525760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a5565b610b9c81611b69565b6001600160a01b0383166113bd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a5565b6001600160a01b03821661141e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a5565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116114e15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108a5565b6001600160a01b03831660009081526017602052604090205460ff1615801561152357506001600160a01b03821660009081526017602052604090205460ff16155b1561157757600754600160b01b900460ff166115775760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016108a5565b6007546001600160a01b0384811691161480156115ad57506001600160a01b03821660009081526017602052604090205460ff16155b80156115c35750600754600160a01b900460ff16155b1561169557600a5481111561161a5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016108a5565b600c548161163d846001600160a01b031660009081526020819052604090205490565b61164791906124de565b11156116955760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108a5565b6007546001600160a01b038481169116148015906116cc57506001600160a01b03821660009081526017602052604090205460ff16155b80156116f157506001600160a01b03831660009081526017602052604090205460ff16155b80156117075750600754600160a01b900460ff16155b156117ee57600b5481111561175e5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016108a5565b6007546001600160a01b038381169116146117ee57600c5481611796846001600160a01b031660009081526020819052604090205490565b6117a091906124de565b11156117ee5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108a5565b600080600080600061181a60405180606001604052806000815260200160008152602001600081525090565b600754600160a01b900460ff168061184a57506001600160a01b03891660009081526017602052604090205460ff165b8061186d57506001600160a01b03881660009081526017602052604090205460ff165b1561187b5760009350611960565b6007546001600160a01b03908116908916036118d0576011546012546118a191906124de565b601354604080516060810182526011548152601254602082015290810182905291975087965093509050611960565b6007546001600160a01b03908116908a160361192557600e54600f546118f691906124de565b60105460408051606081018252600e548152600f54602082015290810182905291975087965093509050611960565b60145460155461193591906124de565b6016546040805160608101825260145481526015546020820152908101829052919750879650935090505b606461196c86896125e4565b6119769190612618565b9350606461198484896125e4565b61198e9190612618565b600754909250600160a81b900460ff1680156119b857506007546001600160a01b038a8116911614155b156119c7576119c78682611c4d565b6119e589896119d685886124de565b6119e0908b6124cb565b611d8a565b81156119f5576119f58983611a33565b8315611a28578515611a285760006064611a0f888a6125e4565b611a199190612618565b9050611a268a3083611d8a565b505b505050505050505050565b6001600160a01b038216611a935760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016108a5565b6001600160a01b03821660009081526020819052604090205481811015611b075760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016108a5565b6001600160a01b038316600081815260208181526040918290208585039055600280548690039055905184815261dead92917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114611c475781811015611c3a5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016108a5565b611c47848484840361135b565b50505050565b600754600160a01b900460ff16610e88576007805460ff60a01b1916600160a01b1790558115611d7957306000908152602081905260409020546009548110611d775760016009541115611ca057506009545b6000611cad8460026125e4565b9050600081846020015184611cc291906125e4565b611ccc9190612618565b90506000611cda82856124cb565b905047611ce682611f62565b6000611cf282476124cb565b90506000876020015186611d0691906124cb565b611d109083612618565b90506000886020015182611d2491906125e4565b90508015611d3657611d3686826120bc565b8851600090611d468460026125e4565b611d5091906125e4565b90508015611d6e57600d54611d6e906001600160a01b03168261216e565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b038316611dee5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108a5565b6001600160a01b038216611e505760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108a5565b6001600160a01b03831660009081526020819052604090205481811015611ec85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108a5565b611ed282826124cb565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611f089084906124de565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f5491815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f9757611f9761263a565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611ff0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120149190612650565b816001815181106120275761202761263a565b6001600160a01b03928316602091820292909201015260065461204d913091168461135b565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061208690859060009086903090429060040161266d565b600060405180830381600087803b1580156120a057600080fd5b505af11580156120b4573d6000803e3d6000fd5b505050505050565b6006546120d49030906001600160a01b03168461135b565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612142573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061216791906126de565b5050505050565b804710156121be5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108a5565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461220b576040519150601f19603f3d011682016040523d82523d6000602084013e612210565b606091505b5050905080610ff55760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108a5565b600060208083528351808285015260005b818110156122b457858101830151858201604001528201612298565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b9c57600080fd5b600080604083850312156122fd57600080fd5b8235612308816122d5565b946020939093013593505050565b8015158114610b9c57600080fd5b60006020828403121561233657600080fd5b813561234181612316565b9392505050565b60008060006060848603121561235d57600080fd5b8335612368816122d5565b92506020840135612378816122d5565b929592945050506040919091013590565b6000806040838503121561239c57600080fd5b50508035926020909101359150565b600080604083850312156123be57600080fd5b82356123c9816122d5565b915060208301356123d9816122d5565b809150509250929050565b6000602082840312156123f657600080fd5b5035919050565b60006020828403121561240f57600080fd5b8135612341816122d5565b60008060006060848603121561242f57600080fd5b505081359360208301359350604090920135919050565b600181811c9082168061245a57607f821691505b60208210810361247a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610875576108756124b5565b80820180821115610875576108756124b5565b600181815b8085111561252c578160001904821115612512576125126124b5565b8085161561251f57918102915b93841c93908002906124f6565b509250929050565b60008261254357506001610875565b8161255057506000610875565b816001811461256657600281146125705761258c565b6001915050610875565b60ff841115612581576125816124b5565b50506001821b610875565b5060208310610133831016604e8410600b84101617156125af575081810a610875565b6125b983836124f1565b80600019048211156125cd576125cd6124b5565b029392505050565b600061234160ff841683612534565b8082028115828204841417610875576108756124b5565b60006020828403121561260d57600080fd5b815161234181612316565b60008261263557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561266257600080fd5b8151612341816122d5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156126bd5784516001600160a01b031683529383019391830191600101612698565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156126f357600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220dc3af8e7cfd418fdbc21d1f23686161e1b16241999e85ce25f648cca296f86a764736f6c63430008130033
Deployed Bytecode
0x6080604052600436106102555760003560e01c8063728f8eea11610139578063a457c2d7116100b6578063dd62ed3e1161007a578063dd62ed3e146106ec578063e1b450ad14610732578063f2fde38b14610752578063f66895a314610772578063f887ea4014610791578063fbe6324e146107b157600080fd5b8063a457c2d71461063b578063a8aa1b311461065b578063a9059cbb1461067b578063b15be2f51461069b578063c5d32bb2146106bc57600080fd5b80638cd4426d116100fd5780638cd4426d146105b25780638da5cb5b146105d25780638de890bd146105f057806395d89b41146106065780639e252f001461061b57600080fd5b8063728f8eea1461050557806375f0a8741461052457806379cc67901461055c578063848b86e31461057c57806385141a771461059c57600080fd5b806340b28c2f116101d25780635331803c116101965780635331803c1461043e578063652e2f041461047857806366a88d961461048e5780636aa5b37f146104a457806370a08231146104ba578063715018a6146104f057600080fd5b806340b28c2f146103a857806342966c68146103c857806342b6fa11146103e85780634acb1c82146104085780634ada218b1461041d57600080fd5b80631c1702f3116102195780631c1702f31461031757806323b872dd1461032c5780632f37aa6d1461034c578063313ce5671461036c578063395093511461038857600080fd5b806306fdde0314610261578063095ea7b31461028c5780631340538f146102bc5780631675d802146102de57806318160ddd1461030257600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b506102766107d2565b6040516102839190612287565b60405180910390f35b34801561029857600080fd5b506102ac6102a73660046122ea565b610864565b6040519015158152602001610283565b3480156102c857600080fd5b506102dc6102d7366004612324565b61087b565b005b3480156102ea57600080fd5b506102f460095481565b604051908152602001610283565b34801561030e57600080fd5b506002546102f4565b34801561032357600080fd5b506102dc6108cc565b34801561033857600080fd5b506102ac610347366004612348565b6109bd565b34801561035857600080fd5b506102dc610367366004612389565b610a6e565b34801561037857600080fd5b5060405160128152602001610283565b34801561039457600080fd5b506102ac6103a33660046122ea565b610b03565b3480156103b457600080fd5b506102dc6103c33660046123ab565b610b3a565b3480156103d457600080fd5b506102dc6103e33660046123e4565b610b92565b3480156103f457600080fd5b506102dc6104033660046123e4565b610b9f565b34801561041457600080fd5b506102dc610c6c565b34801561042957600080fd5b506007546102ac90600160b01b900460ff1681565b34801561044a57600080fd5b5060145460155460165461045d92919083565b60408051938452602084019290925290820152606001610283565b34801561048457600080fd5b506102f4600b5481565b34801561049a57600080fd5b506102f4600c5481565b3480156104b057600080fd5b506102f4600a5481565b3480156104c657600080fd5b506102f46104d53660046123fd565b6001600160a01b031660009081526020819052604090205490565b3480156104fc57600080fd5b506102dc610e3d565b34801561051157600080fd5b50600e54600f5460105461045d92919083565b34801561053057600080fd5b50600d54610544906001600160a01b031681565b6040516001600160a01b039091168152602001610283565b34801561056857600080fd5b506102dc6105773660046122ea565b610e73565b34801561058857600080fd5b506102dc6105973660046123fd565b610e8c565b3480156105a857600080fd5b5061054461dead81565b3480156105be57600080fd5b506102dc6105cd3660046122ea565b610f39565b3480156105de57600080fd5b506005546001600160a01b0316610544565b3480156105fc57600080fd5b506102f460085481565b34801561061257600080fd5b50610276610ffa565b34801561062757600080fd5b506102dc6106363660046123e4565b611009565b34801561064757600080fd5b506102ac6106563660046122ea565b61106d565b34801561066757600080fd5b50600754610544906001600160a01b031681565b34801561068757600080fd5b506102ac6106963660046122ea565b611108565b3480156106a757600080fd5b506007546102ac90600160b81b900460ff1681565b3480156106c857600080fd5b506102ac6106d73660046123fd565b60176020526000908152604090205460ff1681565b3480156106f857600080fd5b506102f46107073660046123ab565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561073e57600080fd5b506102dc61074d36600461241a565b611115565b34801561075e57600080fd5b506102dc61076d3660046123fd565b6112c3565b34801561077e57600080fd5b5060115460125460135461045d92919083565b34801561079d57600080fd5b50600654610544906001600160a01b031681565b3480156107bd57600080fd5b506007546102ac90600160a81b900460ff1681565b6060600380546107e190612446565b80601f016020809104026020016040519081016040528092919081815260200182805461080d90612446565b801561085a5780601f1061082f5761010080835404028352916020019161085a565b820191906000526020600020905b81548152906001019060200180831161083d57829003601f168201915b5050505050905090565b600061087133848461135b565b5060015b92915050565b6005546001600160a01b031633146108ae5760405162461bcd60e51b81526004016108a590612480565b60405180910390fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b031633146108f65760405162461bcd60e51b81526004016108a590612480565b600754600160b01b900460ff16156109505760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f742072652d656e61626c652074726164696e67000000000000000060448201526064016108a5565b6007805461ffff60a81b191661010160a81b179055436008556040805160608082018352601480835260006020808501829052938501819052600e91909155600f819055601081905583519182018452602880835292820181905292018290526011556012819055601355565b60006109ca84848461147f565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610a4f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108a5565b610a638533610a5e86856124cb565b61135b565b506001949350505050565b6005546001600160a01b03163314610a985760405162461bcd60e51b81526004016108a590612480565b603c821115610aa657600080fd5b603c811115610ab457600080fd5b604080516060808201835284825260006020808401829052928401819052600e95909555600f859055601085905582519081018352838152908101849052018290526011556012819055601355565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610871918590610a5e9086906124de565b6005546001600160a01b03163314610b645760405162461bcd60e51b81526004016108a590612480565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b610b9c3382611a33565b50565b6005546001600160a01b03163314610bc95760405162461bcd60e51b81526004016108a590612480565b62e4e1c08111158015610bdc5750600081115b610c50576040805162461bcd60e51b81526020600482015260248101919091527f53776170207468726573686f6c6420616d6f756e742073686f756c642062652060448201527f6c6f776572206f7220657571616c20746f20312e3525206f6620746f6b656e7360648201526084016108a5565b610c5c6012600a6125d5565b610c6690826125e4565b60095550565b6005546001600160a01b03163314610c965760405162461bcd60e51b81526004016108a590612480565b600754600160b01b900460ff16610ce75760405162461bcd60e51b8152602060048201526015602482015274456e61626c652074726164696e672066697273742160581b60448201526064016108a5565b600754600160b81b900460ff1615610d355760405162461bcd60e51b8152602060048201526011602482015270416c726561647920656d706c6f7965642160781b60448201526064016108a5565b600254600a55600254600b55600254600c55604080516060808201835260008083526020808401829052928401819052600e819055600f81905560108190558351918201845280825291810182905290910181905260118190556012819055601355610d9f610e3d565b6007805460ff60b81b1916600160b81b179055600a54600b54600c54604080519384526020840192909252908201527f71e50fc869ff266df718ea6817d210f1b19d3d84b5d3dcfb72735630d5403d359060600160405180910390a1604080516000808252602082018190528183015290517f2862e186e6f0269fce86721e7c136c9a03d0672316fb9a878885a07f0a2b09289181900360600190a1565b6005546001600160a01b03163314610e675760405162461bcd60e51b81526004016108a590612480565b610e716000611b69565b565b610e7e823383611bbb565b610e888282611a33565b5050565b6005546001600160a01b03163314610eb65760405162461bcd60e51b81526004016108a590612480565b6001600160a01b038116610f175760405162461bcd60e51b815260206004820152602260248201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604482015261737360f01b60648201526084016108a5565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610f635760405162461bcd60e51b81526004016108a590612480565b816001600160a01b031663a9059cbb610f846005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610fd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff591906125fb565b505050565b6060600480546107e190612446565b6005546001600160a01b031633146110335760405162461bcd60e51b81526004016108a590612480565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610e88573d6000803e3d6000fd5b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156110ef5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108a5565b6110fe3385610a5e86856124cb565b5060019392505050565b600061087133848461147f565b6005546001600160a01b0316331461113f5760405162461bcd60e51b81526004016108a590612480565b620f42408310156111a45760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e312560b81b60648201526084016108a5565b620f424082101561120a5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e312560b01b60648201526084016108a5565b624c4b408110156112725760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e352560a01b60648201526084016108a5565b61127e6012600a6125d5565b61128890846125e4565b600a55601261129890600a6125d5565b6112a290836125e4565b600b556112b16012600a6125d5565b6112bb90826125e4565b600c55505050565b6005546001600160a01b031633146112ed5760405162461bcd60e51b81526004016108a590612480565b6001600160a01b0381166113525760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a5565b610b9c81611b69565b6001600160a01b0383166113bd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a5565b6001600160a01b03821661141e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a5565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081116114e15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108a5565b6001600160a01b03831660009081526017602052604090205460ff1615801561152357506001600160a01b03821660009081526017602052604090205460ff16155b1561157757600754600160b01b900460ff166115775760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016108a5565b6007546001600160a01b0384811691161480156115ad57506001600160a01b03821660009081526017602052604090205460ff16155b80156115c35750600754600160a01b900460ff16155b1561169557600a5481111561161a5760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d697400000060448201526064016108a5565b600c548161163d846001600160a01b031660009081526020819052604090205490565b61164791906124de565b11156116955760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108a5565b6007546001600160a01b038481169116148015906116cc57506001600160a01b03821660009081526017602052604090205460ff16155b80156116f157506001600160a01b03831660009081526017602052604090205460ff16155b80156117075750600754600160a01b900460ff16155b156117ee57600b5481111561175e5760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d6974000060448201526064016108a5565b6007546001600160a01b038381169116146117ee57600c5481611796846001600160a01b031660009081526020819052604090205490565b6117a091906124de565b11156117ee5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d697460448201526064016108a5565b600080600080600061181a60405180606001604052806000815260200160008152602001600081525090565b600754600160a01b900460ff168061184a57506001600160a01b03891660009081526017602052604090205460ff165b8061186d57506001600160a01b03881660009081526017602052604090205460ff165b1561187b5760009350611960565b6007546001600160a01b03908116908916036118d0576011546012546118a191906124de565b601354604080516060810182526011548152601254602082015290810182905291975087965093509050611960565b6007546001600160a01b03908116908a160361192557600e54600f546118f691906124de565b60105460408051606081018252600e548152600f54602082015290810182905291975087965093509050611960565b60145460155461193591906124de565b6016546040805160608101825260145481526015546020820152908101829052919750879650935090505b606461196c86896125e4565b6119769190612618565b9350606461198484896125e4565b61198e9190612618565b600754909250600160a81b900460ff1680156119b857506007546001600160a01b038a8116911614155b156119c7576119c78682611c4d565b6119e589896119d685886124de565b6119e0908b6124cb565b611d8a565b81156119f5576119f58983611a33565b8315611a28578515611a285760006064611a0f888a6125e4565b611a199190612618565b9050611a268a3083611d8a565b505b505050505050505050565b6001600160a01b038216611a935760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016108a5565b6001600160a01b03821660009081526020819052604090205481811015611b075760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016108a5565b6001600160a01b038316600081815260208181526040918290208585039055600280548690039055905184815261dead92917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114611c475781811015611c3a5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016108a5565b611c47848484840361135b565b50505050565b600754600160a01b900460ff16610e88576007805460ff60a01b1916600160a01b1790558115611d7957306000908152602081905260409020546009548110611d775760016009541115611ca057506009545b6000611cad8460026125e4565b9050600081846020015184611cc291906125e4565b611ccc9190612618565b90506000611cda82856124cb565b905047611ce682611f62565b6000611cf282476124cb565b90506000876020015186611d0691906124cb565b611d109083612618565b90506000886020015182611d2491906125e4565b90508015611d3657611d3686826120bc565b8851600090611d468460026125e4565b611d5091906125e4565b90508015611d6e57600d54611d6e906001600160a01b03168261216e565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b038316611dee5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108a5565b6001600160a01b038216611e505760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108a5565b6001600160a01b03831660009081526020819052604090205481811015611ec85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108a5565b611ed282826124cb565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290611f089084906124de565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f5491815260200190565b60405180910390a350505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611f9757611f9761263a565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611ff0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120149190612650565b816001815181106120275761202761263a565b6001600160a01b03928316602091820292909201015260065461204d913091168461135b565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061208690859060009086903090429060040161266d565b600060405180830381600087803b1580156120a057600080fd5b505af11580156120b4573d6000803e3d6000fd5b505050505050565b6006546120d49030906001600160a01b03168461135b565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612142573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061216791906126de565b5050505050565b804710156121be5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016108a5565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461220b576040519150601f19603f3d011682016040523d82523d6000602084013e612210565b606091505b5050905080610ff55760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016108a5565b600060208083528351808285015260005b818110156122b457858101830151858201604001528201612298565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b9c57600080fd5b600080604083850312156122fd57600080fd5b8235612308816122d5565b946020939093013593505050565b8015158114610b9c57600080fd5b60006020828403121561233657600080fd5b813561234181612316565b9392505050565b60008060006060848603121561235d57600080fd5b8335612368816122d5565b92506020840135612378816122d5565b929592945050506040919091013590565b6000806040838503121561239c57600080fd5b50508035926020909101359150565b600080604083850312156123be57600080fd5b82356123c9816122d5565b915060208301356123d9816122d5565b809150509250929050565b6000602082840312156123f657600080fd5b5035919050565b60006020828403121561240f57600080fd5b8135612341816122d5565b60008060006060848603121561242f57600080fd5b505081359360208301359350604090920135919050565b600181811c9082168061245a57607f821691505b60208210810361247a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610875576108756124b5565b80820180821115610875576108756124b5565b600181815b8085111561252c578160001904821115612512576125126124b5565b8085161561251f57918102915b93841c93908002906124f6565b509250929050565b60008261254357506001610875565b8161255057506000610875565b816001811461256657600281146125705761258c565b6001915050610875565b60ff841115612581576125816124b5565b50506001821b610875565b5060208310610133831016604e8410600b84101617156125af575081810a610875565b6125b983836124f1565b80600019048211156125cd576125cd6124b5565b029392505050565b600061234160ff841683612534565b8082028115828204841417610875576108756124b5565b60006020828403121561260d57600080fd5b815161234181612316565b60008261263557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561266257600080fd5b8151612341816122d5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156126bd5784516001600160a01b031683529383019391830191600101612698565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156126f357600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220dc3af8e7cfd418fdbc21d1f23686161e1b16241999e85ce25f648cca296f86a764736f6c63430008130033
Deployed Bytecode Sourcemap
17065:12001:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3563:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19299:161;;;;;;;;;;-1:-1:-1;19299:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;19299:161:0;1023:187:1;26213:152:0;;;;;;;;;;-1:-1:-1;26213:152:0;;;;;:::i;:::-;;:::i;:::-;;17416:67;;;;;;;;;;;;;;;;;;;1730:25:1;;;1718:2;1703:18;17416:67:0;1584:177:1;4683:108:0;;;;;;;;;;-1:-1:-1;4771:12:0;;4683:108;;26745:297;;;;;;;;;;;;;:::i;19468:448::-;;;;;;;;;;-1:-1:-1;19468:448:0;;;;;:::i;:::-;;:::i;27954:269::-;;;;;;;;;;-1:-1:-1;27954:269:0;;;;;:::i;:::-;;:::i;4525:93::-;;;;;;;;;;-1:-1:-1;4525:93:0;;4608:2;2622:36:1;;2610:2;2595:18;4525:93:0;2480:184:1;19924:248:0;;;;;;;;;;-1:-1:-1;19924:248:0;;;;;:::i;:::-;;:::i;27050:155::-;;;;;;;;;;-1:-1:-1;27050:155:0;;;;;:::i;:::-;;:::i;16484:91::-;;;;;;;;;;-1:-1:-1;16484:91:0;;;;;:::i;:::-;;:::i;26373:307::-;;;;;;;;;;-1:-1:-1;26373:307:0;;;;;:::i;:::-;;:::i;28231:515::-;;;;;;;;;;;;;:::i;17299:34::-;;;;;;;;;;-1:-1:-1;17299:34:0;;;;-1:-1:-1;;;17299:34:0;;;;;;18048:43;;;;;;;;;;-1:-1:-1;18048:43:0;;;;;;;;;;;;;;;;3449:25:1;;;3505:2;3490:18;;3483:34;;;;3533:18;;;3526:34;3437:2;3422:18;18048:43:0;3247:319:1;17553:57:0;;;;;;;;;;;;;;;;17617:59;;;;;;;;;;;;;;;;17490:56;;;;;;;;;;;;;;;;4854:127;;;;;;;;;;-1:-1:-1;4854:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4955:18:0;4928:7;4955:18;;;;;;;;;;;;4854:127;14768:94;;;;;;;;;;;;;:::i;17960:35::-;;;;;;;;;;-1:-1:-1;17960:35:0;;;;;;;;;;;;17685:75;;;;;;;;;;-1:-1:-1;17685:75:0;;;;-1:-1:-1;;;;;17685:75:0;;;;;;-1:-1:-1;;;;;3987:32:1;;;3969:51;;3957:2;3942:18;17685:75:0;3823:203:1;16894:164:0;;;;;;;;;;-1:-1:-1;16894:164:0;;;;;:::i;:::-;;:::i;27213:207::-;;;;;;;;;;-1:-1:-1;27213:207:0;;;;;:::i;:::-;;:::i;17764:79::-;;;;;;;;;;;;17801:42;17764:79;;28873:135;;;;;;;;;;-1:-1:-1;28873:135:0;;;;;:::i;:::-;;:::i;14545:87::-;;;;;;;;;;-1:-1:-1;14618:6:0;;-1:-1:-1;;;;;14618:6:0;14545:87;;17377:30;;;;;;;;;;;;;;;;3782:104;;;;;;;;;;;;;:::i;28754:111::-;;;;;;;;;;-1:-1:-1;28754:111:0;;;;;:::i;:::-;;:::i;20180:410::-;;;;;;;;;;-1:-1:-1;20180:410:0;;;;;:::i;:::-;;:::i;17188:19::-;;;;;;;;;;-1:-1:-1;17188:19:0;;;;-1:-1:-1;;;;;17188:19:0;;;20598:165;;;;;;;;;;-1:-1:-1;20598:165:0;;;;;:::i;:::-;;:::i;17340:28::-;;;;;;;;;;-1:-1:-1;17340:28:0;;;;-1:-1:-1;;;17340:28:0;;;;;;18100:41;;;;;;;;;;-1:-1:-1;18100:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5473:201;;;;;;;;;;-1:-1:-1;5473:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;5639:18:0;;;5607:7;5639:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5473:201;27428:518;;;;;;;;;;-1:-1:-1;27428:518:0;;;;;:::i;:::-;;:::i;14870:192::-;;;;;;;;;;-1:-1:-1;14870:192:0;;;;;:::i;:::-;;:::i;18002:39::-;;;;;;;;;;-1:-1:-1;18002:39:0;;;;;;;;;;;;17160:21;;;;;;;;;;-1:-1:-1;17160:21:0;;;;-1:-1:-1;;;;;17160:21:0;;;17254:38;;;;;;;;;;-1:-1:-1;17254:38:0;;;;-1:-1:-1;;;17254:38:0;;;;;;3563:100;3617:13;3650:5;3643:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3563:100;:::o;19299:161::-;19374:4;19391:39;1365:10;19414:7;19423:6;19391:8;:39::i;:::-;-1:-1:-1;19448:4:0;19299:161;;;;;:::o;26213:152::-;14618:6;;-1:-1:-1;;;;;14618:6:0;1365:10;14680:23;14672:68;;;;-1:-1:-1;;;14672:68:0;;;;;;;:::i;:::-;;;;;;;;;26331:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;26331:26:0::1;-1:-1:-1::0;;;;26331:26:0;;::::1;::::0;;;::::1;::::0;;26213:152::o;26745:297::-;14618:6;;-1:-1:-1;;;;;14618:6:0;1365:10;14680:23;14672:68;;;;-1:-1:-1;;;14672:68:0;;;;;;;:::i;:::-;26808:14:::1;::::0;-1:-1:-1;;;26808:14:0;::::1;;;26807:15;26799:52;;;::::0;-1:-1:-1;;;26799:52:0;;5523:2:1;26799:52:0::1;::::0;::::1;5505:21:1::0;5562:2;5542:18;;;5535:30;5601:26;5581:18;;;5574:54;5645:18;;26799:52:0::1;5321:348:1::0;26799:52:0::1;26862:14;:21:::0;;-1:-1:-1;;;;26894:25:0;-1:-1:-1;;;26894:25:0;;;26948:12:::1;26930:15;:30:::0;26981:15:::1;::::0;;::::1;::::0;;::::1;::::0;;26987:2:::1;26981:15:::0;;;-1:-1:-1;26981:15:0::1;::::0;;::::1;::::0;;;;;;;;;26973:5:::1;:23:::0;;;;;;;;;;;;27019:15;;;;::::1;::::0;;27025:2:::1;27019:15:::0;;;;;::::1;::::0;;;;;;;;27007:9:::1;:27:::0;;;;;;;26745:297::o;19468:448::-;19600:4;19617:36;19627:6;19635:9;19646:6;19617:9;:36::i;:::-;-1:-1:-1;;;;;19693:19:0;;19666:24;19693:19;;;:11;:19;;;;;;;;1365:10;19693:33;;;;;;;;19745:26;;;;19737:79;;;;-1:-1:-1;;;19737:79:0;;5876:2:1;19737:79:0;;;5858:21:1;5915:2;5895:18;;;5888:30;5954:34;5934:18;;;5927:62;-1:-1:-1;;;6005:18:1;;;5998:38;6053:19;;19737:79:0;5674:404:1;19737:79:0;19827:57;19836:6;1365:10;19858:25;19877:6;19858:16;:25;:::i;:::-;19827:8;:57::i;:::-;-1:-1:-1;19904:4:0;;19468:448;-1:-1:-1;;;;19468:448:0:o;27954:269::-;14618:6;;-1:-1:-1;;;;;14618:6:0;1365:10;14680:23;14672:68;;;;-1:-1:-1;;;14672:68:0;;;;;;;:::i;:::-;28076:2:::1;28059:13;:19;;28050:29;;;::::0;::::1;;28117:2;28099:14;:20;;28090:30;;;::::0;::::1;;28139:26;::::0;;::::1;::::0;;::::1;::::0;;;;;-1:-1:-1;28139:26:0::1;::::0;;::::1;::::0;;;;;;;;;28131:5:::1;:34:::0;;;;;;;;;;;;28188:27;;;;::::1;::::0;;;;;;;::::1;::::0;;;;;;;28176:9:::1;:39:::0;;;;;;;27954:269::o;19924:248::-;1365:10;20040:4;20094:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;20094:34:0;;;;;;;;;;20040:4;;20062:80;;20085:7;;20094:47;;20131:10;;20094:47;:::i;27050:155::-;14618:6;;-1:-1:-1;;;;;14618:6:0;1365:10;14680:23;14672:68;;;;-1:-1:-1;;;14672:68:0;;;;;;;:::i;:::-;27145:6:::1;:27:::0;;-1:-1:-1;;;;;27145:27:0;;::::1;-1:-1:-1::0;;;;;;27145:27:0;;::::1;;::::0;;;27183:4:::1;:14:::0;;;;;::::1;::::0;::::1;;::::0;;27050:155::o;16484:91::-;16540:27;1365:10;16560:6;16540:5;:27::i;:::-;16484:91;:::o;26373:307::-;14618:6;;-1:-1:-1;;;;;14618:6:0;1365:10;14680:23;14672:68;;;;-1:-1:-1;;;14672:68:0;;;;;;;:::i;:::-;26511:10:::1;26497;:24;;:42;;;;;26538:1;26525:10;:14;26497:42;26489:119;;;::::0;;-1:-1:-1;;;26489:119:0;;6680:2:1;26489:119:0::1;::::0;::::1;6662:21:1::0;6699:18;;;6692:30;;;;6758:34;6738:18;;;6731:62;6829:34;6809:18;;;6802:62;6881:19;;26489:119:0::1;6478:428:1::0;26489:119:0::1;26658:14;4608:2:::0;26658::::1;:14;:::i;:::-;26645:27;::::0;:10;:27:::1;:::i;:::-;26619:23;:53:::0;-1:-1:-1;26373:307:0:o;28231:515::-;14618:6;;-1:-1:-1;;;;;14618:6:0;1365:10;14680:23;14672:68;;;;-1:-1:-1;;;14672:68:0;;;;;;;:::i;:::-;28288:14:::1;::::0;-1:-1:-1;;;28288:14:0;::::1;;;28280:48;;;::::0;-1:-1:-1;;;28280:48:0;;8669:2:1;28280:48:0::1;::::0;::::1;8651:21:1::0;8708:2;8688:18;;;8681:30;-1:-1:-1;;;8727:18:1;;;8720:51;8788:18;;28280:48:0::1;8467:345:1::0;28280:48:0::1;28348:8;::::0;-1:-1:-1;;;28348:8:0;::::1;;;28347:9;28339:39;;;::::0;-1:-1:-1;;;28339:39:0;;9019:2:1;28339:39:0::1;::::0;::::1;9001:21:1::0;9058:2;9038:18;;;9031:30;-1:-1:-1;;;9077:18:1;;;9070:47;9134:18;;28339:39:0::1;8817:341:1::0;28339:39:0::1;4771:12:::0;;28389:11:::1;:27:::0;4771:12;;28427::::1;:28:::0;4771:12;;28466:14:::1;:30:::0;28517:14:::1;::::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;28517:14:0;;;::::1;::::0;;::::1;::::0;;;;;;;;;28509:5:::1;:22:::0;;;;;;;;;;;28554:14;;;;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;28542:9:::1;:26:::0;;;;;;;;;28581:19:::1;:17;:19::i;:::-;28613:8;:15:::0;;-1:-1:-1;;;;28613:15:0::1;-1:-1:-1::0;;;28613:15:0::1;::::0;;28659:11:::1;::::0;28672:12:::1;::::0;28686:14:::1;::::0;28646:55:::1;::::0;;3449:25:1;;;3505:2;3490:18;;3483:34;;;;3533:18;;;3526:34;28646:55:0::1;::::0;3437:2:1;3422:18;28646:55:0::1;;;;;;;28717:21;::::0;;28730:1:::1;3449:25:1::0;;;3505:2;3490:18;;3483:34;;;3533:18;;;3526:34;28717:21:0;;::::1;::::0;;;;3437:2:1;28717:21:0;;::::1;28231:515::o:0;14768:94::-;14618:6;;-1:-1:-1;;;;;14618:6:0;1365:10;14680:23;14672:68;;;;-1:-1:-1;;;14672:68:0;;;;;;;:::i;:::-;14833:21:::1;14851:1;14833:9;:21::i;:::-;14768:94::o:0;16894:164::-;16971:46;16987:7;1365:10;17010:6;16971:15;:46::i;:::-;17028:22;17034:7;17043:6;17028:5;:22::i;:::-;16894:164;;:::o;27213:207::-;14618:6;;-1:-1:-1;;;;;14618:6:0;1365:10;14680:23;14672:68;;;;-1:-1:-1;;;14672:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27299:30:0;::::1;27291:76;;;::::0;-1:-1:-1;;;27291:76:0;;9713:2:1;27291:76:0::1;::::0;::::1;9695:21:1::0;9752:2;9732:18;;;9725:30;9791:34;9771:18;;;9764:62;-1:-1:-1;;;9842:18:1;;;9835:32;9884:19;;27291:76:0::1;9511:398:1::0;27291:76:0::1;27378:15;:34:::0;;-1:-1:-1;;;;;;27378:34:0::1;-1:-1:-1::0;;;;;27378:34:0;;;::::1;::::0;;;::::1;::::0;;27213:207::o;28873:135::-;14618:6;;-1:-1:-1;;;;;14618:6:0;1365:10;14680:23;14672:68;;;;-1:-1:-1;;;14672:68:0;;;;;;;:::i;:::-;28965:8:::1;-1:-1:-1::0;;;;;28958:25:0::1;;28984:7;14618:6:::0;;-1:-1:-1;;;;;14618:6:0;;14545:87;28984:7:::1;28958:42;::::0;-1:-1:-1;;;;;;28958:42:0::1;::::0;;;;;;-1:-1:-1;;;;;10106:32:1;;;28958:42:0::1;::::0;::::1;10088:51:1::0;10155:18;;;10148:34;;;10061:18;;28958:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;28873:135:::0;;:::o;3782:104::-;3838:13;3871:7;3864:14;;;;;:::i;28754:111::-;14618:6;;-1:-1:-1;;;;;14618:6:0;1365:10;14680:23;14672:68;;;;-1:-1:-1;;;14672:68:0;;;;;;;:::i;:::-;14618:6;;28821:36:::1;::::0;-1:-1:-1;;;;;14618:6:0;;;;28821:36;::::1;;;::::0;28847:9;;28821:36:::1;::::0;;;28847:9;14618:6;28821:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;20180:410:::0;1365:10;20301:4;20350:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;20350:34:0;;;;;;;;;;20403:35;;;;20395:85;;;;-1:-1:-1;;;20395:85:0;;10645:2:1;20395:85:0;;;10627:21:1;10684:2;10664:18;;;10657:30;10723:34;10703:18;;;10696:62;-1:-1:-1;;;10774:18:1;;;10767:35;10819:19;;20395:85:0;10443:401:1;20395:85:0;20491:67;1365:10;20514:7;20523:34;20542:15;20523:16;:34;:::i;20491:67::-;-1:-1:-1;20578:4:0;;20180:410;-1:-1:-1;;;20180:410:0:o;20598:165::-;20676:4;20693:40;20703:10;20715:9;20726:6;20693:9;:40::i;27428:518::-;14618:6;;-1:-1:-1;;;;;14618:6:0;1365:10;14680:23;14672:68;;;;-1:-1:-1;;;14672:68:0;;;;;;;:::i;:::-;27554:9:::1;27544:6;:19;;27536:73;;;::::0;-1:-1:-1;;;27536:73:0;;11051:2:1;27536:73:0::1;::::0;::::1;11033:21:1::0;11090:2;11070:18;;;11063:30;11129:34;11109:18;;;11102:62;-1:-1:-1;;;11180:18:1;;;11173:39;11229:19;;27536:73:0::1;10849:405:1::0;27536:73:0::1;27639:9;27628:7;:20;;27620:75;;;::::0;-1:-1:-1;;;27620:75:0;;11461:2:1;27620:75:0::1;::::0;::::1;11443:21:1::0;11500:2;11480:18;;;11473:30;11539:34;11519:18;;;11512:62;-1:-1:-1;;;11590:18:1;;;11583:40;11640:19;;27620:75:0::1;11259:406:1::0;27620:75:0::1;27727:9;27714;:22;;27706:79;;;::::0;-1:-1:-1;;;27706:79:0;;11872:2:1;27706:79:0::1;::::0;::::1;11854:21:1::0;11911:2;11891:18;;;11884:30;11950:34;11930:18;;;11923:62;-1:-1:-1;;;12001:18:1;;;11994:42;12053:19;;27706:79:0::1;11670:408:1::0;27706:79:0::1;27819:14;4608:2:::0;27819::::1;:14;:::i;:::-;27810:23;::::0;:6;:23:::1;:::i;:::-;27796:11;:37:::0;4608:2;27869:14:::1;::::0;:2:::1;:14;:::i;:::-;27859:24;::::0;:7;:24:::1;:::i;:::-;27844:12;:39:::0;27923:14:::1;4608:2:::0;27923::::1;:14;:::i;:::-;27911:26;::::0;:9;:26:::1;:::i;:::-;27894:14;:43:::0;-1:-1:-1;;;27428:518:0:o;14870:192::-;14618:6;;-1:-1:-1;;;;;14618:6:0;1365:10;14680:23;14672:68;;;;-1:-1:-1;;;14672:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14959:22:0;::::1;14951:73;;;::::0;-1:-1:-1;;;14951:73:0;;12285:2:1;14951:73:0::1;::::0;::::1;12267:21:1::0;12324:2;12304:18;;;12297:30;12363:34;12343:18;;;12336:62;-1:-1:-1;;;12414:18:1;;;12407:36;12460:19;;14951:73:0::1;12083:402:1::0;14951:73:0::1;15035:19;15045:8;15035:9;:19::i;12193:380::-:0;-1:-1:-1;;;;;12329:19:0;;12321:68;;;;-1:-1:-1;;;12321:68:0;;12692:2:1;12321:68:0;;;12674:21:1;12731:2;12711:18;;;12704:30;12770:34;12750:18;;;12743:62;-1:-1:-1;;;12821:18:1;;;12814:34;12865:19;;12321:68:0;12490:400:1;12321:68:0;-1:-1:-1;;;;;12408:21:0;;12400:68;;;;-1:-1:-1;;;12400:68:0;;13097:2:1;12400:68:0;;;13079:21:1;13136:2;13116:18;;;13109:30;13175:34;13155:18;;;13148:62;-1:-1:-1;;;13226:18:1;;;13219:32;13268:19;;12400:68:0;12895:398:1;12400:68:0;-1:-1:-1;;;;;12481:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12533:32;;1730:25:1;;;12533:32:0;;1703:18:1;12533:32:0;;;;;;;12193:380;;;:::o;20771:2939::-;20921:1;20912:6;:10;20904:64;;;;-1:-1:-1;;;20904:64:0;;13500:2:1;20904:64:0;;;13482:21:1;13539:2;13519:18;;;13512:30;13578:34;13558:18;;;13551:62;-1:-1:-1;;;13629:18:1;;;13622:39;13678:19;;20904:64:0;13298:405:1;20904:64:0;-1:-1:-1;;;;;20986:17:0;;;;;;:9;:17;;;;;;;;20985:18;:43;;;;-1:-1:-1;;;;;;21008:20:0;;;;;;:9;:20;;;;;;;;21007:21;20985:43;20981:122;;;21053:14;;-1:-1:-1;;;21053:14:0;;;;21045:46;;;;-1:-1:-1;;;21045:46:0;;13910:2:1;21045:46:0;;;13892:21:1;13949:2;13929:18;;;13922:30;-1:-1:-1;;;13968:18:1;;;13961:49;14027:18;;21045:46:0;13708:343:1;21045:46:0;21129:4;;-1:-1:-1;;;;;21119:14:0;;;21129:4;;21119:14;:39;;;;-1:-1:-1;;;;;;21138:20:0;;;;;;:9;:20;;;;;;;;21137:21;21119:39;:54;;;;-1:-1:-1;21163:10:0;;-1:-1:-1;;;21163:10:0;;;;21162:11;21119:54;21115:306;;;21208:11;;21198:6;:21;;21190:63;;;;-1:-1:-1;;;21190:63:0;;14258:2:1;21190:63:0;;;14240:21:1;14297:2;14277:18;;;14270:30;14336:31;14316:18;;;14309:59;14385:18;;21190:63:0;14056:353:1;21190:63:0;21327:14;;21317:6;21294:20;21304:9;-1:-1:-1;;;;;4955:18:0;4928:7;4955:18;;;;;;;;;;;;4854:127;21294:20;:29;;;;:::i;:::-;:47;;21268:141;;;;-1:-1:-1;;;21268:141:0;;14616:2:1;21268:141:0;;;14598:21:1;;;14635:18;;;14628:30;14694:34;14674:18;;;14667:62;14746:18;;21268:141:0;14414:356:1;21268:141:0;21461:4;;-1:-1:-1;;;;;21451:14:0;;;21461:4;;21451:14;;;;:39;;-1:-1:-1;;;;;;21470:20:0;;;;;;:9;:20;;;;;;;;21469:21;21451:39;:61;;;;-1:-1:-1;;;;;;21495:17:0;;;;;;:9;:17;;;;;;;;21494:18;21451:61;:76;;;;-1:-1:-1;21517:10:0;;-1:-1:-1;;;21517:10:0;;;;21516:11;21451:76;21433:423;;;21572:12;;21562:6;:22;;21554:65;;;;-1:-1:-1;;;21554:65:0;;14977:2:1;21554:65:0;;;14959:21:1;15016:2;14996:18;;;14989:30;15055:32;15035:18;;;15028:60;15105:18;;21554:65:0;14775:354:1;21554:65:0;21651:4;;-1:-1:-1;;;;;21638:17:0;;;21651:4;;21638:17;21634:211;;21739:14;;21729:6;21706:20;21716:9;-1:-1:-1;;;;;4955:18:0;4928:7;4955:18;;;;;;;;;;;;4854:127;21706:20;:29;;;;:::i;:::-;:47;;21676:153;;;;-1:-1:-1;;;21676:153:0;;14616:2:1;21676:153:0;;;14598:21:1;;;14635:18;;;14628:30;14694:34;14674:18;;;14667:62;14746:18;;21676:153:0;14414:356:1;21676:153:0;21868:15;21894:14;21919:11;21941:15;21967:18;21996:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;21996:25:0;22109:10;;-1:-1:-1;;;22109:10:0;;;;;:31;;-1:-1:-1;;;;;;22123:17:0;;;;;;:9;:17;;;;;;;;22109:31;:55;;;-1:-1:-1;;;;;;22144:20:0;;;;;;:9;:20;;;;;;;;22109:55;22105:847;;;22185:1;22179:7;;22105:847;;;22250:4;;-1:-1:-1;;;;;22250:4:0;;;22237:17;;;;22233:719;;22337:9;:19;22298;;:58;;22337:19;22298:58;:::i;:::-;22412:14;;22441:24;;;;;;;;22412:9;22441:24;;;;;;;;;;;;;;;22271:85;;-1:-1:-1;22271:85:0;;-1:-1:-1;22412:14:0;-1:-1:-1;22441:24:0;-1:-1:-1;22233:719:0;;;22497:4;;-1:-1:-1;;;;;22497:4:0;;;22487:14;;;;22483:469;;22580:5;:15;22545;;:50;;22580:15;22545:50;:::i;:::-;22651:10;;22676:20;;;;;;;;22651:5;22676:20;;;;;;;;;;;;;;;22518:77;;-1:-1:-1;22518:77:0;;-1:-1:-1;22651:10:0;-1:-1:-1;22676:20:0;-1:-1:-1;22483:469:0;;;22799:13;:23;22756;;:66;;22799:23;22756:66;:::i;:::-;22879:18;;22912:28;;;;;;;;22879:13;22912:28;;;;;;;;;;;;;;;22729:93;;-1:-1:-1;22729:93:0;;-1:-1:-1;22879:18:0;-1:-1:-1;22912:28:0;-1:-1:-1;22483:469:0;22990:3;22971:15;22980:6;22971;:15;:::i;:::-;22970:23;;;;:::i;:::-;22964:29;-1:-1:-1;23038:3:0;23018:16;23027:7;23018:6;:16;:::i;:::-;23017:24;;;;:::i;:::-;23155:18;;23004:37;;-1:-1:-1;;;;23155:18:0;;;;:36;;;;-1:-1:-1;23187:4:0;;-1:-1:-1;;;;;23177:14:0;;;23187:4;;23177:14;;23155:36;23151:72;;;23193:30;23201:7;23210:12;23193:7;:30::i;:::-;23265:63;23281:6;23289:9;23310:16;23316:10;23310:3;:16;:::i;:::-;23300:27;;:6;:27;:::i;:::-;23265:15;:63::i;:::-;23370:14;;23367:77;;23401:31;23413:6;23421:10;23401:11;:31::i;:::-;23458:7;;23454:249;;23530:11;;23526:164;;23562:17;23603:3;23583:16;23592:7;23583:6;:16;:::i;:::-;23582:24;;;;:::i;:::-;23562:44;;23625:49;23641:6;23657:4;23664:9;23625:15;:49::i;:::-;23543:147;23526:164;20893:2817;;;;;;20771:2939;;;:::o;11011:744::-;-1:-1:-1;;;;;11095:21:0;;11087:67;;;;-1:-1:-1;;;11087:67:0;;15558:2:1;11087:67:0;;;15540:21:1;15597:2;15577:18;;;15570:30;15636:34;15616:18;;;15609:62;-1:-1:-1;;;15687:18:1;;;15680:31;15728:19;;11087:67:0;15356:397:1;11087:67:0;-1:-1:-1;;;;;11259:18:0;;11234:22;11259:18;;;;;;;;;;;11296:24;;;;11288:71;;;;-1:-1:-1;;;11288:71:0;;15960:2:1;11288:71:0;;;15942:21:1;15999:2;15979:18;;;15972:30;16038:34;16018:18;;;16011:62;-1:-1:-1;;;16089:18:1;;;16082:32;16131:19;;11288:71:0;15758:398:1;11288:71:0;-1:-1:-1;;;;;11395:18:0;;:9;:18;;;;;;;;;;;;11416:23;;;11395:44;;11534:12;:22;;;;;;;11639:42;;1730:25:1;;;11665:6:0;;11395:18;11639:42;;1703:18:1;11639:42:0;;;;;;;28958::::1;28873:135:::0;;:::o;15070:173::-;15145:6;;;-1:-1:-1;;;;;15162:17:0;;;-1:-1:-1;;;;;;15162:17:0;;;;;;;15195:40;;15145:6;;;15162:17;15145:6;;15195:40;;15126:16;;15195:40;15115:128;15070:173;:::o;6282:419::-;-1:-1:-1;;;;;5639:18:0;;;6383:24;5639:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;6450:37:0;;6446:248;;6532:6;6512:16;:26;;6504:68;;;;-1:-1:-1;;;6504:68:0;;16363:2:1;6504:68:0;;;16345:21:1;16402:2;16382:18;;;16375:30;16441:31;16421:18;;;16414:59;16490:18;;6504:68:0;16161:353:1;6504:68:0;6616:51;6625:5;6632:7;6660:6;6641:16;:25;6616:8;:51::i;:::-;6372:329;6282:419;;;:::o;23718:1437::-;18591:10;;-1:-1:-1;;;18591:10:0;;;;18586:110;;18618:10;:17;;-1:-1:-1;;;;18618:17:0;-1:-1:-1;;;18618:17:0;;;23809:49;;23840:7:::1;23809:49;23914:4;23870:23;4955:18:::0;;;;;;;;;;;23954:23:::1;::::0;23935:42;::::1;23931:1217;;24024:1;23998:23;;:27;23994:109;;;-1:-1:-1::0;24064:23:0::1;::::0;23994:109:::1;24174:19;24196:11;:7:::0;24206:1:::1;24196:11;:::i;:::-;24174:33;;24222:32;24316:11;24276:9;:19;;;24258:15;:37;;;;:::i;:::-;24257:70;;;;:::i;:::-;24222:105:::0;-1:-1:-1;24342:14:0::1;24359:42;24222:105:::0;24359:15;:42:::1;:::i;:::-;24342:59:::0;-1:-1:-1;24443:21:0::1;24481:24;24342:59:::0;24481:16:::1;:24::i;:::-;24522:20;24545:38;24569:14:::0;24545:21:::1;:38;:::i;:::-;24522:61;;24598:19;24650:9;:19;;;24636:11;:33;;;;:::i;:::-;24620:50;::::0;:12;:50:::1;:::i;:::-;24598:72;;24685:29;24731:9;:19;;;24717:11;:33;;;;:::i;:::-;24685:65:::0;-1:-1:-1;24771:25:0;;24767:172:::1;;24862:61;24875:24;24901:21;24862:12;:61::i;:::-;24996:19:::0;;24955:20:::1;::::0;24978:15:::1;:11:::0;24992:1:::1;24978:15;:::i;:::-;:37;;;;:::i;:::-;24955:60:::0;-1:-1:-1;25034:16:0;;25030:105:::1;;25079:15;::::0;25071:48:::1;::::0;-1:-1:-1;;;;;25079:15:0::1;25106:12:::0;25071:34:::1;:48::i;:::-;23979:1169;;;;;;;;23931:1217;23796:1359;18650:1;18666:10:::0;:18;;-1:-1:-1;;;;18666:18:0;;;23718:1437;;:::o;9697:578::-;-1:-1:-1;;;;;9837:20:0;;9829:70;;;;-1:-1:-1;;;9829:70:0;;16721:2:1;9829:70:0;;;16703:21:1;16760:2;16740:18;;;16733:30;16799:34;16779:18;;;16772:62;-1:-1:-1;;;16850:18:1;;;16843:35;16895:19;;9829:70:0;16519:401:1;9829:70:0;-1:-1:-1;;;;;9918:23:0;;9910:71;;;;-1:-1:-1;;;9910:71:0;;17127:2:1;9910:71:0;;;17109:21:1;17166:2;17146:18;;;17139:30;17205:34;17185:18;;;17178:62;-1:-1:-1;;;17256:18:1;;;17249:33;17299:19;;9910:71:0;16925:399:1;9910:71:0;-1:-1:-1;;;;;10018:17:0;;9994:21;10018:17;;;;;;;;;;;10054:23;;;;10046:74;;;;-1:-1:-1;;;10046:74:0;;17531:2:1;10046:74:0;;;17513:21:1;17570:2;17550:18;;;17543:30;17609:34;17589:18;;;17582:62;-1:-1:-1;;;17660:18:1;;;17653:36;17706:19;;10046:74:0;17329:402:1;10046:74:0;10151:22;10167:6;10151:13;:22;:::i;:::-;-1:-1:-1;;;;;10131:17:0;;;:9;:17;;;;;;;;;;;:42;;;;10184:20;;;;;;;;:30;;10208:6;;10131:9;10184:30;;10208:6;;10184:30;:::i;:::-;;;;;;;;10249:9;-1:-1:-1;;;;;10232:35:0;10241:6;-1:-1:-1;;;;;10232:35:0;;10260:6;10232:35;;;;1730:25:1;;1718:2;1703:18;;1584:177;10232:35:0;;;;;;;;9818:457;9697:578;;;:::o;25163:534::-;25313:16;;;25327:1;25313:16;;;;;;;;25289:21;;25313:16;;;;;;;;;;-1:-1:-1;25313:16:0;25289:40;;25358:4;25340;25345:1;25340:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25340:23:0;;;:7;;;;;;;;;;:23;;;;25384:6;;:13;;;-1:-1:-1;;;25384:13:0;;;;:6;;;;;:11;;:13;;;;;25340:7;;25384:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25374:4;25379:1;25374:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25374:23:0;;;:7;;;;;;;;;:23;25442:6;;25410:53;;25427:4;;25442:6;25451:11;25410:8;:53::i;:::-;25502:6;;:187;;-1:-1:-1;;;25502:187:0;;-1:-1:-1;;;;;25502:6:0;;;;:57;;:187;;25574:11;;25502:6;;25616:4;;25643;;25663:15;;25502:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25218:479;25163:534;:::o;25705:500::-;25885:6;;25853:53;;25870:4;;-1:-1:-1;;;;;25885:6:0;25894:11;25853:8;:53::i;:::-;25949:6;;:248;;-1:-1:-1;;;25949:248:0;;26014:4;25949:248;;;19582:34:1;19632:18;;;19625:34;;;25949:6:0;19675:18:1;;;19668:34;;;19718:18;;;19711:34;17801:42:0;19761:19:1;;;19754:44;26171:15:0;19814:19:1;;;19807:35;-1:-1:-1;;;;;25949:6:0;;;;:22;;25980:9;;19516:19:1;;25949:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25705:500;;:::o;13988:319::-;14103:6;14078:21;:31;;14070:73;;;;-1:-1:-1;;;14070:73:0;;20366:2:1;14070:73:0;;;20348:21:1;20405:2;20385:18;;;20378:30;20444:31;20424:18;;;20417:59;20493:18;;14070:73:0;20164:353:1;14070:73:0;14157:12;14175:9;-1:-1:-1;;;;;14175:14:0;14198:6;14175:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14156:54;;;14229:7;14221:78;;;;-1:-1:-1;;;14221:78:0;;20934:2:1;14221:78:0;;;20916:21:1;20973:2;20953:18;;;20946:30;21012:34;20992:18;;;20985:62;21083:28;21063:18;;;21056:56;21129:19;;14221:78:0;20732:422:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:118::-;1301:5;1294:13;1287:21;1280:5;1277:32;1267:60;;1323:1;1320;1313:12;1338:241;1394:6;1447:2;1435:9;1426:7;1422:23;1418:32;1415:52;;;1463:1;1460;1453:12;1415:52;1502:9;1489:23;1521:28;1543:5;1521:28;:::i;:::-;1568:5;1338:241;-1:-1:-1;;;1338:241:1:o;1766:456::-;1843:6;1851;1859;1912:2;1900:9;1891:7;1887:23;1883:32;1880:52;;;1928:1;1925;1918:12;1880:52;1967:9;1954:23;1986:31;2011:5;1986:31;:::i;:::-;2036:5;-1:-1:-1;2093:2:1;2078:18;;2065:32;2106:33;2065:32;2106:33;:::i;:::-;1766:456;;2158:7;;-1:-1:-1;;;2212:2:1;2197:18;;;;2184:32;;1766:456::o;2227:248::-;2295:6;2303;2356:2;2344:9;2335:7;2331:23;2327:32;2324:52;;;2372:1;2369;2362:12;2324:52;-1:-1:-1;;2395:23:1;;;2465:2;2450:18;;;2437:32;;-1:-1:-1;2227:248:1:o;2669:388::-;2737:6;2745;2798:2;2786:9;2777:7;2773:23;2769:32;2766:52;;;2814:1;2811;2804:12;2766:52;2853:9;2840:23;2872:31;2897:5;2872:31;:::i;:::-;2922:5;-1:-1:-1;2979:2:1;2964:18;;2951:32;2992:33;2951:32;2992:33;:::i;:::-;3044:7;3034:17;;;2669:388;;;;;:::o;3062:180::-;3121:6;3174:2;3162:9;3153:7;3149:23;3145:32;3142:52;;;3190:1;3187;3180:12;3142:52;-1:-1:-1;3213:23:1;;3062:180;-1:-1:-1;3062:180:1:o;3571:247::-;3630:6;3683:2;3671:9;3662:7;3658:23;3654:32;3651:52;;;3699:1;3696;3689:12;3651:52;3738:9;3725:23;3757:31;3782:5;3757:31;:::i;4031:316::-;4108:6;4116;4124;4177:2;4165:9;4156:7;4152:23;4148:32;4145:52;;;4193:1;4190;4183:12;4145:52;-1:-1:-1;;4216:23:1;;;4286:2;4271:18;;4258:32;;-1:-1:-1;4337:2:1;4322:18;;;4309:32;;4031:316;-1:-1:-1;4031:316:1:o;4575:380::-;4654:1;4650:12;;;;4697;;;4718:61;;4772:4;4764:6;4760:17;4750:27;;4718:61;4825:2;4817:6;4814:14;4794:18;4791:38;4788:161;;4871:10;4866:3;4862:20;4859:1;4852:31;4906:4;4903:1;4896:15;4934:4;4931:1;4924:15;4788:161;;4575:380;;;:::o;4960:356::-;5162:2;5144:21;;;5181:18;;;5174:30;5240:34;5235:2;5220:18;;5213:62;5307:2;5292:18;;4960:356::o;6083:127::-;6144:10;6139:3;6135:20;6132:1;6125:31;6175:4;6172:1;6165:15;6199:4;6196:1;6189:15;6215:128;6282:9;;;6303:11;;;6300:37;;;6317:18;;:::i;6348:125::-;6413:9;;;6434:10;;;6431:36;;;6447:18;;:::i;6911:422::-;7000:1;7043:5;7000:1;7057:270;7078:7;7068:8;7065:21;7057:270;;;7137:4;7133:1;7129:6;7125:17;7119:4;7116:27;7113:53;;;7146:18;;:::i;:::-;7196:7;7186:8;7182:22;7179:55;;;7216:16;;;;7179:55;7295:22;;;;7255:15;;;;7057:270;;;7061:3;6911:422;;;;;:::o;7338:806::-;7387:5;7417:8;7407:80;;-1:-1:-1;7458:1:1;7472:5;;7407:80;7506:4;7496:76;;-1:-1:-1;7543:1:1;7557:5;;7496:76;7588:4;7606:1;7601:59;;;;7674:1;7669:130;;;;7581:218;;7601:59;7631:1;7622:10;;7645:5;;;7669:130;7706:3;7696:8;7693:17;7690:43;;;7713:18;;:::i;:::-;-1:-1:-1;;7769:1:1;7755:16;;7784:5;;7581:218;;7883:2;7873:8;7870:16;7864:3;7858:4;7855:13;7851:36;7845:2;7835:8;7832:16;7827:2;7821:4;7818:12;7814:35;7811:77;7808:159;;;-1:-1:-1;7920:19:1;;;7952:5;;7808:159;7999:34;8024:8;8018:4;7999:34;:::i;:::-;8069:6;8065:1;8061:6;8057:19;8048:7;8045:32;8042:58;;;8080:18;;:::i;:::-;8118:20;;7338:806;-1:-1:-1;;;7338:806:1:o;8149:140::-;8207:5;8236:47;8277:4;8267:8;8263:19;8257:4;8236:47;:::i;8294:168::-;8367:9;;;8398;;8415:15;;;8409:22;;8395:37;8385:71;;8436:18;;:::i;10193:245::-;10260:6;10313:2;10301:9;10292:7;10288:23;10284:32;10281:52;;;10329:1;10326;10319:12;10281:52;10361:9;10355:16;10380:28;10402:5;10380:28;:::i;15134:217::-;15174:1;15200;15190:132;;15244:10;15239:3;15235:20;15232:1;15225:31;15279:4;15276:1;15269:15;15307:4;15304:1;15297:15;15190:132;-1:-1:-1;15336:9:1;;15134:217::o;17868:127::-;17929:10;17924:3;17920:20;17917:1;17910:31;17960:4;17957:1;17950:15;17984:4;17981:1;17974:15;18000:251;18070:6;18123:2;18111:9;18102:7;18098:23;18094:32;18091:52;;;18139:1;18136;18129:12;18091:52;18171:9;18165:16;18190:31;18215:5;18190:31;:::i;18256:980::-;18518:4;18566:3;18555:9;18551:19;18597:6;18586:9;18579:25;18623:2;18661:6;18656:2;18645:9;18641:18;18634:34;18704:3;18699:2;18688:9;18684:18;18677:31;18728:6;18763;18757:13;18794:6;18786;18779:22;18832:3;18821:9;18817:19;18810:26;;18871:2;18863:6;18859:15;18845:29;;18892:1;18902:195;18916:6;18913:1;18910:13;18902:195;;;18981:13;;-1:-1:-1;;;;;18977:39:1;18965:52;;19072:15;;;;19037:12;;;;19013:1;18931:9;18902:195;;;-1:-1:-1;;;;;;;19153:32:1;;;;19148:2;19133:18;;19126:60;-1:-1:-1;;;19217:3:1;19202:19;19195:35;19114:3;18256:980;-1:-1:-1;;;18256:980:1:o;19853:306::-;19941:6;19949;19957;20010:2;19998:9;19989:7;19985:23;19981:32;19978:52;;;20026:1;20023;20016:12;19978:52;20055:9;20049:16;20039:26;;20105:2;20094:9;20090:18;20084:25;20074:35;;20149:2;20138:9;20134:18;20128:25;20118:35;;19853:306;;;;;:::o
Swarm Source
ipfs://dc3af8e7cfd418fdbc21d1f23686161e1b16241999e85ce25f648cca296f86a7
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,077.58 | 0.000000000000001127 | <$0.000001 |
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.