ERC-20
Overview
Max Total Supply
100,000,000 EDGE
Holders
76
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
55,868.358091689435382734 EDGEValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
EDGEAI
Compiler Version
v0.8.28+commit.7893614a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2025-01-15 */ // SPDX-License-Identifier: MIT /* X: https://x.com/useEdgeAI WEB: https://edge-ai.io/ TG: https://t.me/EdgeAiERC */ pragma solidity ^0.8.26; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(0x94555c005bd32f2D8f73585d031BB1657a99D550); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); } 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) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require( fromBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require( currentAllowance >= amount, "ERC20: insufficient allowance" ); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; 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 ); } contract EDGEAI is Context, ERC20, Ownable { IUniswapV2Router02 private uniswapV2Router; address payable private _devWallet = payable(0x94555c005bd32f2D8f73585d031BB1657a99D550); address public uniswapV2Pair; uint256 private constant _tSupply = 100000000 * (10**18); uint256 public maxBuyAmount = (_tSupply * (10)) / (1000); uint256 public maxSellAmount = (_tSupply * (10)) / (1000); uint256 public maxWalletAmount = (_tSupply * (10)) / (1000); uint256 private _swapTokensAtAmount = (_tSupply * (4)) / (1000); address private constant DEAD = 0x000000000000000000000000000000000000dEaD; address private constant ZERO = 0x0000000000000000000000000000000000000000; mapping(address => bool) public _excludedFees; mapping(address => bool) private _excludedMaxTx; mapping(address => bool) private _isBot; bool public tradingOpen; bool private _swapping; bool public swapEnabled; uint256 public constant FEE_DIVISOR = 100; uint256 private _totalFees; uint256 private _devFee; uint256 public buyDevFee = 25; //25 % uint256 private _previousBuyDevFee = buyDevFee; uint256 public sellDevFee = 25; //25 % uint256 private _previousSellDevFee = sellDevFee; uint256 private _tokensForDev; constructor() ERC20("Edge AI", unicode"EDGE") { uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); _approve(address(this), address(uniswapV2Router), _tSupply); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair( address(this), uniswapV2Router.WETH() ); IERC20(uniswapV2Pair).approve( address(uniswapV2Router), type(uint256).max ); _excludedFees[owner()] = true; _excludedFees[address(this)] = true; _excludedFees[DEAD] = true; _excludedMaxTx[owner()] = true; _excludedMaxTx[address(this)] = true; _excludedMaxTx[DEAD] = true; _mint(owner(), _tSupply); } function enableTrading() public onlyOwner { require(!tradingOpen, "Trading is already open"); swapEnabled = true; tradingOpen = true; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != ZERO, "ERC20: transfer from the zero address"); require(to != ZERO, "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); bool takeFee = true; bool shouldSwap = false; if ( from != owner() && to != owner() && to != ZERO && to != DEAD && !_swapping ) { require(!_isBot[from] && !_isBot[to], "Bot."); if (!tradingOpen) require( _excludedFees[from] || _excludedFees[to], "Trading is not allowed yet." ); if ( from == uniswapV2Pair && to != address(uniswapV2Router) && !_excludedMaxTx[to] ) { require( amount <= maxBuyAmount, "Transfer amount exceeds the maxBuyAmount." ); require( balanceOf(to) + amount <= maxWalletAmount, "Exceeds maximum wallet token amount." ); } if ( to == uniswapV2Pair && from != address(uniswapV2Router) && !_excludedMaxTx[from] ) { require( amount <= maxSellAmount, "Transfer amount exceeds the maxSellAmount." ); shouldSwap = true; } } if (_excludedFees[from] || _excludedFees[to]) takeFee = false; if (from != uniswapV2Pair && to != uniswapV2Pair) takeFee = false; uint256 contractBalance = balanceOf(address(this)); bool canSwap = (contractBalance > _swapTokensAtAmount) && shouldSwap; if ( canSwap && swapEnabled && !_swapping && !_excludedFees[from] && !_excludedFees[to] ) { _swapping = true; _swapBack(contractBalance); _swapping = false; } _tokenTransfer(from, to, amount, takeFee, shouldSwap); } function _swapBack(uint256 contractBalance) internal { uint256 totalTokensToSwap = (_tokensForDev); bool success; if (contractBalance == 0 || totalTokensToSwap == 0) return; if (contractBalance > _swapTokensAtAmount * (5)) contractBalance = _swapTokensAtAmount * (5); uint256 amountToSwapForETH = contractBalance; uint256 initialETHBalance = address(this).balance; swapTokensForETH(amountToSwapForETH); uint256 ETHBalance = address(this).balance - (initialETHBalance); uint256 ETHForDev = ETHBalance; _tokensForDev = 0; (success, ) = address(_devWallet).call{value: ETHForDev}(""); } function swapTokensForETH(uint256 tokenAmount) internal { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function toggleSwapEnabled(bool onoff) public onlyOwner { swapEnabled = onoff; } function setMaxTxBuy(uint256 _maxBuyAmount) public onlyOwner { maxBuyAmount = _maxBuyAmount; } function setMaxTxSell(uint256 _maxSellAmount) public onlyOwner { maxSellAmount = _maxSellAmount; } function setSwapTokensAtAmount(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } function setFeeWallet(address devWallet) public onlyOwner { require(devWallet != ZERO, "_devWallet address cannot be 0"); _excludedFees[_devWallet] = false; _excludedMaxTx[_devWallet] = false; _devWallet = payable(devWallet); _excludedFees[_devWallet] = true; _excludedMaxTx[_devWallet] = true; } function excludeFees(address[] memory accounts, bool exclude) public onlyOwner { for (uint256 i = 0; i < accounts.length; i++) _excludedFees[accounts[i]] = exclude; } function excludeMaxTx(address[] memory accounts, bool exclude) public onlyOwner { for (uint256 i = 0; i < accounts.length; i++) _excludedMaxTx[accounts[i]] = exclude; } function setMaxWallet(uint256 _maxWalletAmount) public onlyOwner { maxWalletAmount = _maxWalletAmount; } function sendETHToFee(uint256 amount) internal { _devWallet.transfer(amount); } function isBot(address wallet) external view returns (bool) { return _isBot[wallet]; } function removeAllFee() internal { if (buyDevFee == 0 && sellDevFee == 0) return; _previousBuyDevFee = buyDevFee; _previousSellDevFee = sellDevFee; buyDevFee = 0; sellDevFee = 0; } function restoreAllFee() internal { buyDevFee = _previousBuyDevFee; sellDevFee = _previousSellDevFee; } function setBuyFees(uint256 _buyDevFee) public onlyOwner { buyDevFee = _buyDevFee; } function setSellFees(uint256 _sellDevFee) public onlyOwner { sellDevFee = _sellDevFee; } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee, bool isSell ) internal { if (!takeFee) removeAllFee(); else amount = _takeFees(sender, amount, isSell); super._transfer(sender, recipient, amount); if (!takeFee) restoreAllFee(); } function _takeFees( address sender, uint256 amount, bool isSell ) internal returns (uint256) { if (isSell) _setSell(); else _setBuy(); uint256 fees; if (_totalFees > 0) { fees = (amount * (_totalFees)) / (FEE_DIVISOR); _tokensForDev += (fees * _devFee) / _totalFees; } if (fees > 0) super._transfer(sender, address(this), fees); return amount -= fees; } function _setSell() internal { _devFee = sellDevFee; _totalFees = (_devFee); } function _setBuy() internal { _devFee = buyDevFee; _totalFees = (_devFee); } function manualSwap() public onlyOwner { uint256 contractBalance = balanceOf(address(this)); swapTokensForETH(contractBalance); } function sendFees() public onlyOwner { uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function rescueETH() public onlyOwner { bool success; (success, ) = address(msg.sender).call{value: address(this).balance}( "" ); } function rescueToken(address tkn) public onlyOwner { require(tkn != address(this), "Cannot withdraw this token"); require(IERC20(tkn).balanceOf(address(this)) > 0, "No tokens"); uint256 amount = IERC20(tkn).balanceOf(address(this)); IERC20(tkn).transfer(msg.sender, amount); } function removeLimits() public onlyOwner { maxBuyAmount = _tSupply; maxSellAmount = _tSupply; maxWalletAmount = _tSupply; } receive() external payable {} fallback() 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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"FEE_DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_excludedFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"excludeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"excludeMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tkn","type":"address"}],"name":"rescueToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sendFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyDevFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"devWallet","type":"address"}],"name":"setFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxBuyAmount","type":"uint256"}],"name":"setMaxTxBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxSellAmount","type":"uint256"}],"name":"setMaxTxSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWalletAmount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellDevFee","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"toggleSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600780546001600160a01b0319167394555c005bd32f2d8f73585d031bb1657a99d5501790556103e86100436a52b7d2dcc80cd2e4000000600a610719565b61004d9190610736565b6009556103e86100696a52b7d2dcc80cd2e4000000600a610719565b6100739190610736565b600a556103e86a52b7d2dcc80cd2e4000000600a6100919190610719565b61009b9190610736565b600b556103e86100b76a52b7d2dcc80cd2e40000006004610719565b6100c19190610736565b600c55601960135560135460145560196015556015546016553480156100e5575f5ffd5b50604051806040016040528060078152602001664564676520414960c81b815250604051806040016040528060048152602001634544474560e01b815250816003908161013291906107ec565b50600461013f82826107ec565b5050506101657394555c005bd32f2d8f73585d031bb1657a99d5506104ca60201b60201c565b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556101a59030906a52b7d2dcc80cd2e400000061051b565b60065f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101f5573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061021991906108a6565b6001600160a01b031663c9c653963060065f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610278573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061029c91906108a6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156102e6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061030a91906108a6565b600880546001600160a01b0319166001600160a01b0392831690811790915560065460405163095ea7b360e01b8152921660048301525f1960248301529063095ea7b3906044016020604051808303815f875af115801561036d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061039191906108d3565b506001600d5f6103a96005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff19958616179055308152600d909252812080548316600190811790915561dead82527fdc7fafdc41998a74ecacb8f8bd877011aba1f1d03a3a0d37a2e7879a393b1d6a80549093168117909255600e9061042f6005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff19958616179055308152600e909252812080548316600190811790915561dead9091527ff77e91909e61d18f67b875b2bfcae1f683a8d555e55382e3a6b082e2c59ea57a80549092161790556104c56104b46005546001600160a01b031690565b6a52b7d2dcc80cd2e4000000610643565b610905565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0383166105825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b0382166105e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610579565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382166106995760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610579565b8060025f8282546106aa91906108f2565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761073057610730610705565b92915050565b5f8261075057634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061077d57607f821691505b60208210810361079b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561070057805f5260205f20601f840160051c810160208510156107c65750805b601f840160051c820191505b818110156107e5575f81556001016107d2565b5050505050565b81516001600160401b0381111561080557610805610755565b610819816108138454610769565b846107a1565b6020601f82116001811461084b575f83156108345750848201515b5f19600385901b1c1916600184901b1784556107e5565b5f84815260208120601f198516915b8281101561087a578785015182556020948501946001909201910161085a565b508482101561089757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f602082840312156108b6575f5ffd5b81516001600160a01b03811681146108cc575f5ffd5b9392505050565b5f602082840312156108e3575f5ffd5b815180151581146108cc575f5ffd5b8082018082111561073057610730610705565b611f1f806109125f395ff3fe608060405260043610610230575f3560e01c8063715018a61161012c578063a0d82dc5116100af578063c865cb5e11610076578063c865cb5e14610658578063dcf7aef314610677578063dd62ed3e14610696578063dff90b5b146106b5578063f2fde38b146106c9578063ffb54a99146106e857005b8063a0d82dc5146105d1578063a457c2d7146105e6578063a9059cbb14610605578063aa4bde2814610624578063afa4f3b21461063957005b806390d49b9d116100f357806390d49b9d1461055657806395927c251461057557806395d89b41146105945780639c3b4fdc146105a85780639e93ad8e146105bd57005b8063715018a6146104e8578063751039fc146104fc57806388e765ff146105105780638a8c523c146105255780638da5cb5b1461053957005b806337c59b5a116101b457806351bc3c851161017b57806351bc3c851461044d5780635d0044ca1461046157806366d602ae146104805780636ddd17131461049557806370a08231146104b457005b806337c59b5a1461037357806339509351146103a15780633bbac579146103c05780634460d3cf146103f757806349bd5a5e1461041657005b80631f110500116101f85780631f110500146102e757806320800a001461030657806323b872dd1461031a5780632ecdb63a14610339578063313ce5671461035857005b806306fdde0314610232578063095ea7b31461025c5780630a3d5b551461028b57806318160ddd146102aa5780631c6e8a75146102c8575b005b34801561023d575f5ffd5b50610246610701565b6040516102539190611a93565b60405180910390f35b348015610267575f5ffd5b5061027b610276366004611aec565b610791565b6040519015158152602001610253565b348015610296575f5ffd5b506102306102a5366004611b42565b6107aa565b3480156102b5575f5ffd5b506002545b604051908152602001610253565b3480156102d3575f5ffd5b506102306102e2366004611c1f565b610811565b3480156102f2575f5ffd5b50610230610301366004611b42565b610835565b348015610311575f5ffd5b50610230610897565b348015610325575f5ffd5b5061027b610334366004611c41565b6108e9565b348015610344575f5ffd5b50610230610353366004611c7f565b61090c565b348015610363575f5ffd5b5060405160128152602001610253565b34801561037e575f5ffd5b5061027b61038d366004611c96565b600d6020525f908152604090205460ff1681565b3480156103ac575f5ffd5b5061027b6103bb366004611aec565b610919565b3480156103cb575f5ffd5b5061027b6103da366004611c96565b6001600160a01b03165f908152600f602052604090205460ff1690565b348015610402575f5ffd5b50610230610411366004611c96565b61093a565b348015610421575f5ffd5b50600854610435906001600160a01b031681565b6040516001600160a01b039091168152602001610253565b348015610458575f5ffd5b50610230610b19565b34801561046c575f5ffd5b5061023061047b366004611c7f565b610b3c565b34801561048b575f5ffd5b506102ba600a5481565b3480156104a0575f5ffd5b5060105461027b9062010000900460ff1681565b3480156104bf575f5ffd5b506102ba6104ce366004611c96565b6001600160a01b03165f9081526020819052604090205490565b3480156104f3575f5ffd5b50610230610b49565b348015610507575f5ffd5b50610230610b5c565b34801561051b575f5ffd5b506102ba60095481565b348015610530575f5ffd5b50610230610b7f565b348015610544575f5ffd5b506005546001600160a01b0316610435565b348015610561575f5ffd5b50610230610570366004611c96565b610bed565b348015610580575f5ffd5b5061023061058f366004611c7f565b610cc8565b34801561059f575f5ffd5b50610246610cd5565b3480156105b3575f5ffd5b506102ba60135481565b3480156105c8575f5ffd5b506102ba606481565b3480156105dc575f5ffd5b506102ba60155481565b3480156105f1575f5ffd5b5061027b610600366004611aec565b610ce4565b348015610610575f5ffd5b5061027b61061f366004611aec565b610d5e565b34801561062f575f5ffd5b506102ba600b5481565b348015610644575f5ffd5b50610230610653366004611c7f565b610d6b565b348015610663575f5ffd5b50610230610672366004611c7f565b610d78565b348015610682575f5ffd5b50610230610691366004611c7f565b610d85565b3480156106a1575f5ffd5b506102ba6106b0366004611cb1565b610d92565b3480156106c0575f5ffd5b50610230610dbc565b3480156106d4575f5ffd5b506102306106e3366004611c96565b610dce565b3480156106f3575f5ffd5b5060105461027b9060ff1681565b60606003805461071090611ce8565b80601f016020809104026020016040519081016040528092919081815260200182805461073c90611ce8565b80156107875780601f1061075e57610100808354040283529160200191610787565b820191905f5260205f20905b81548152906001019060200180831161076a57829003601f168201915b5050505050905090565b5f3361079e818585610e44565b60019150505b92915050565b6107b2610f67565b5f5b825181101561080c5781600e5f8584815181106107d3576107d3611d20565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790556001016107b4565b505050565b610819610f67565b60108054911515620100000262ff000019909216919091179055565b61083d610f67565b5f5b825181101561080c5781600d5f85848151811061085e5761085e611d20565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905560010161083f565b61089f610f67565b6040515f90339047908381818185875af1925050503d805f81146108de576040519150601f19603f3d011682016040523d82523d5f602084013e6108e3565b606091505b50505050565b5f336108f6858285610fc1565b610901858585611033565b506001949350505050565b610914610f67565b600955565b5f3361079e81858561092b8383610d92565b6109359190611d48565b610e44565b610942610f67565b306001600160a01b0382160361099f5760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f74207769746864726177207468697320746f6b656e00000000000060448201526064015b60405180910390fd5b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156109e3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a079190611d5b565b11610a405760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b6044820152606401610996565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610a84573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa89190611d5b565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015610af5573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061080c9190611d72565b610b21610f67565b305f90815260208190526040902054610b39816115b8565b50565b610b44610f67565b600b55565b610b51610f67565b610b5a5f611708565b565b610b64610f67565b6a52b7d2dcc80cd2e40000006009819055600a819055600b55565b610b87610f67565b60105460ff1615610bda5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610996565b6010805462ff00ff191662010001179055565b610bf5610f67565b6001600160a01b038116610c4b5760405162461bcd60e51b815260206004820152601e60248201527f5f64657657616c6c657420616464726573732063616e6e6f74206265203000006044820152606401610996565b600780546001600160a01b039081165f908152600d60208181526040808420805460ff19908116909155865486168552600e80845282862080548316905587546001600160a01b03191698871698891788559785529282528084208054841660019081179091559554909416835294909452208054909216179055565b610cd0610f67565b601555565b60606004805461071090611ce8565b5f3381610cf18286610d92565b905083811015610d515760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610996565b6109018286868403610e44565b5f3361079e818585611033565b610d73610f67565b600c55565b610d80610f67565b600a55565b610d8d610f67565b601355565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b610dc4610f67565b47610b3981611759565b610dd6610f67565b6001600160a01b038116610e3b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610996565b610b3981611708565b6001600160a01b038316610ea65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610996565b6001600160a01b038216610f075760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610996565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b03163314610b5a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610996565b5f610fcc8484610d92565b90505f1981146108e357818110156110265760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610996565b6108e38484848403610e44565b6001600160a01b0383166110595760405162461bcd60e51b815260040161099690611d8d565b6001600160a01b03821661107f5760405162461bcd60e51b815260040161099690611dd2565b5f81116110e05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610996565b60015f6110f56005546001600160a01b031690565b6001600160a01b0316856001600160a01b03161415801561112457506005546001600160a01b03858116911614155b801561113857506001600160a01b03841615155b801561114f57506001600160a01b03841661dead14155b80156111635750601054610100900460ff16155b1561146b576001600160a01b0385165f908152600f602052604090205460ff161580156111a857506001600160a01b0384165f908152600f602052604090205460ff16155b6111dd5760405162461bcd60e51b8152600401610996906020808252600490820152632137ba1760e11b604082015260600190565b60105460ff16611270576001600160a01b0385165f908152600d602052604090205460ff168061122457506001600160a01b0384165f908152600d602052604090205460ff165b6112705760405162461bcd60e51b815260206004820152601b60248201527f54726164696e67206973206e6f7420616c6c6f776564207965742e00000000006044820152606401610996565b6008546001600160a01b03868116911614801561129b57506006546001600160a01b03858116911614155b80156112bf57506001600160a01b0384165f908152600e602052604090205460ff16155b156113ae576009548311156113285760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178426044820152683abca0b6b7bab73a1760b91b6064820152608401610996565b600b548361134a866001600160a01b03165f9081526020819052604090205490565b6113549190611d48565b11156113ae5760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610996565b6008546001600160a01b0385811691161480156113d957506006546001600160a01b03868116911614155b80156113fd57506001600160a01b0385165f908152600e602052604090205460ff16155b1561146b57600a548311156114675760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785360448201526932b63620b6b7bab73a1760b11b6064820152608401610996565b5060015b6001600160a01b0385165f908152600d602052604090205460ff16806114a857506001600160a01b0384165f908152600d602052604090205460ff165b156114b1575f91505b6008546001600160a01b038681169116148015906114dd57506008546001600160a01b03858116911614155b156114e6575f91505b305f9081526020819052604081205490505f600c54821180156115065750825b905080801561151d575060105462010000900460ff165b80156115315750601054610100900460ff16155b801561155557506001600160a01b0387165f908152600d602052604090205460ff16155b801561157957506001600160a01b0386165f908152600d602052604090205460ff16155b156115a2576010805461ff00191661010017905561159682611794565b6010805461ff00191690555b6115af878787878761184f565b50505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106115eb576115eb611d20565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611642573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116669190611e15565b8160018151811061167957611679611d20565b6001600160a01b03928316602091820292909201015260065461169f9130911684610e44565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906116d79085905f90869030904290600401611e30565b5f604051808303815f87803b1580156116ee575f5ffd5b505af1158015611700573d5f5f3e3d5ffd5b505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6007546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611790573d5f5f3e3d5ffd5b5050565b6017545f8215806117a3575081155b156117ad57505050565b600c546117bb906005611ea0565b8311156117d357600c546117d0906005611ea0565b92505b82476117de826115b8565b5f6117e98247611eb7565b5f601781905560075460405192935083926001600160a01b039091169183919081818185875af1925050503d805f811461183e576040519150601f19603f3d011682016040523d82523d5f602084013e611843565b606091505b50505050505050505050565b816118615761185c611897565b61186f565b61186c8584836118c4565b92505b61187a85858561196b565b8161189057611890601454601355601654601555565b5050505050565b6013541580156118a75750601554155b156118ae57565b60138054601455601580546016555f9182905555565b5f81156118e0576118db6015546012819055601155565b6118f0565b6118f06013546012819055601155565b6011545f90156119475760646011548561190a9190611ea0565b6119149190611eca565b9050601154601254826119279190611ea0565b6119319190611eca565b60175f8282546119419190611d48565b90915550505b80156119585761195885308361196b565b6119628185611eb7565b95945050505050565b6001600160a01b0383166119915760405162461bcd60e51b815260040161099690611d8d565b6001600160a01b0382166119b75760405162461bcd60e51b815260040161099690611dd2565b6001600160a01b0383165f9081526020819052604090205481811015611a2e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610996565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36108e3565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610b39575f5ffd5b8035611ae781611ac8565b919050565b5f5f60408385031215611afd575f5ffd5b8235611b0881611ac8565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b8015158114610b39575f5ffd5b8035611ae781611b2a565b5f5f60408385031215611b53575f5ffd5b823567ffffffffffffffff811115611b69575f5ffd5b8301601f81018513611b79575f5ffd5b803567ffffffffffffffff811115611b9357611b93611b16565b8060051b604051601f19603f830116810181811067ffffffffffffffff82111715611bc057611bc0611b16565b604052918252602081840181019290810188841115611bdd575f5ffd5b6020850194505b83851015611c0357611bf585611adc565b815260209485019401611be4565b509450611c169250505060208401611b37565b90509250929050565b5f60208284031215611c2f575f5ffd5b8135611c3a81611b2a565b9392505050565b5f5f5f60608486031215611c53575f5ffd5b8335611c5e81611ac8565b92506020840135611c6e81611ac8565b929592945050506040919091013590565b5f60208284031215611c8f575f5ffd5b5035919050565b5f60208284031215611ca6575f5ffd5b8135611c3a81611ac8565b5f5f60408385031215611cc2575f5ffd5b8235611ccd81611ac8565b91506020830135611cdd81611ac8565b809150509250929050565b600181811c90821680611cfc57607f821691505b602082108103611d1a57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156107a4576107a4611d34565b5f60208284031215611d6b575f5ffd5b5051919050565b5f60208284031215611d82575f5ffd5b8151611c3a81611b2a565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f60208284031215611e25575f5ffd5b8151611c3a81611ac8565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611e805783516001600160a01b0316835260209384019390920191600101611e59565b50506001600160a01b039590951660608401525050608001529392505050565b80820281158282048414176107a4576107a4611d34565b818103818111156107a4576107a4611d34565b5f82611ee457634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220eee8038160f89bfb909e89d9575f358e82aab84b86613e6a6fc66b0c96f8064c64736f6c634300081c0033
Deployed Bytecode
0x608060405260043610610230575f3560e01c8063715018a61161012c578063a0d82dc5116100af578063c865cb5e11610076578063c865cb5e14610658578063dcf7aef314610677578063dd62ed3e14610696578063dff90b5b146106b5578063f2fde38b146106c9578063ffb54a99146106e857005b8063a0d82dc5146105d1578063a457c2d7146105e6578063a9059cbb14610605578063aa4bde2814610624578063afa4f3b21461063957005b806390d49b9d116100f357806390d49b9d1461055657806395927c251461057557806395d89b41146105945780639c3b4fdc146105a85780639e93ad8e146105bd57005b8063715018a6146104e8578063751039fc146104fc57806388e765ff146105105780638a8c523c146105255780638da5cb5b1461053957005b806337c59b5a116101b457806351bc3c851161017b57806351bc3c851461044d5780635d0044ca1461046157806366d602ae146104805780636ddd17131461049557806370a08231146104b457005b806337c59b5a1461037357806339509351146103a15780633bbac579146103c05780634460d3cf146103f757806349bd5a5e1461041657005b80631f110500116101f85780631f110500146102e757806320800a001461030657806323b872dd1461031a5780632ecdb63a14610339578063313ce5671461035857005b806306fdde0314610232578063095ea7b31461025c5780630a3d5b551461028b57806318160ddd146102aa5780631c6e8a75146102c8575b005b34801561023d575f5ffd5b50610246610701565b6040516102539190611a93565b60405180910390f35b348015610267575f5ffd5b5061027b610276366004611aec565b610791565b6040519015158152602001610253565b348015610296575f5ffd5b506102306102a5366004611b42565b6107aa565b3480156102b5575f5ffd5b506002545b604051908152602001610253565b3480156102d3575f5ffd5b506102306102e2366004611c1f565b610811565b3480156102f2575f5ffd5b50610230610301366004611b42565b610835565b348015610311575f5ffd5b50610230610897565b348015610325575f5ffd5b5061027b610334366004611c41565b6108e9565b348015610344575f5ffd5b50610230610353366004611c7f565b61090c565b348015610363575f5ffd5b5060405160128152602001610253565b34801561037e575f5ffd5b5061027b61038d366004611c96565b600d6020525f908152604090205460ff1681565b3480156103ac575f5ffd5b5061027b6103bb366004611aec565b610919565b3480156103cb575f5ffd5b5061027b6103da366004611c96565b6001600160a01b03165f908152600f602052604090205460ff1690565b348015610402575f5ffd5b50610230610411366004611c96565b61093a565b348015610421575f5ffd5b50600854610435906001600160a01b031681565b6040516001600160a01b039091168152602001610253565b348015610458575f5ffd5b50610230610b19565b34801561046c575f5ffd5b5061023061047b366004611c7f565b610b3c565b34801561048b575f5ffd5b506102ba600a5481565b3480156104a0575f5ffd5b5060105461027b9062010000900460ff1681565b3480156104bf575f5ffd5b506102ba6104ce366004611c96565b6001600160a01b03165f9081526020819052604090205490565b3480156104f3575f5ffd5b50610230610b49565b348015610507575f5ffd5b50610230610b5c565b34801561051b575f5ffd5b506102ba60095481565b348015610530575f5ffd5b50610230610b7f565b348015610544575f5ffd5b506005546001600160a01b0316610435565b348015610561575f5ffd5b50610230610570366004611c96565b610bed565b348015610580575f5ffd5b5061023061058f366004611c7f565b610cc8565b34801561059f575f5ffd5b50610246610cd5565b3480156105b3575f5ffd5b506102ba60135481565b3480156105c8575f5ffd5b506102ba606481565b3480156105dc575f5ffd5b506102ba60155481565b3480156105f1575f5ffd5b5061027b610600366004611aec565b610ce4565b348015610610575f5ffd5b5061027b61061f366004611aec565b610d5e565b34801561062f575f5ffd5b506102ba600b5481565b348015610644575f5ffd5b50610230610653366004611c7f565b610d6b565b348015610663575f5ffd5b50610230610672366004611c7f565b610d78565b348015610682575f5ffd5b50610230610691366004611c7f565b610d85565b3480156106a1575f5ffd5b506102ba6106b0366004611cb1565b610d92565b3480156106c0575f5ffd5b50610230610dbc565b3480156106d4575f5ffd5b506102306106e3366004611c96565b610dce565b3480156106f3575f5ffd5b5060105461027b9060ff1681565b60606003805461071090611ce8565b80601f016020809104026020016040519081016040528092919081815260200182805461073c90611ce8565b80156107875780601f1061075e57610100808354040283529160200191610787565b820191905f5260205f20905b81548152906001019060200180831161076a57829003601f168201915b5050505050905090565b5f3361079e818585610e44565b60019150505b92915050565b6107b2610f67565b5f5b825181101561080c5781600e5f8584815181106107d3576107d3611d20565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790556001016107b4565b505050565b610819610f67565b60108054911515620100000262ff000019909216919091179055565b61083d610f67565b5f5b825181101561080c5781600d5f85848151811061085e5761085e611d20565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905560010161083f565b61089f610f67565b6040515f90339047908381818185875af1925050503d805f81146108de576040519150601f19603f3d011682016040523d82523d5f602084013e6108e3565b606091505b50505050565b5f336108f6858285610fc1565b610901858585611033565b506001949350505050565b610914610f67565b600955565b5f3361079e81858561092b8383610d92565b6109359190611d48565b610e44565b610942610f67565b306001600160a01b0382160361099f5760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f74207769746864726177207468697320746f6b656e00000000000060448201526064015b60405180910390fd5b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156109e3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a079190611d5b565b11610a405760405162461bcd60e51b81526020600482015260096024820152684e6f20746f6b656e7360b81b6044820152606401610996565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610a84573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa89190611d5b565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015610af5573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061080c9190611d72565b610b21610f67565b305f90815260208190526040902054610b39816115b8565b50565b610b44610f67565b600b55565b610b51610f67565b610b5a5f611708565b565b610b64610f67565b6a52b7d2dcc80cd2e40000006009819055600a819055600b55565b610b87610f67565b60105460ff1615610bda5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610996565b6010805462ff00ff191662010001179055565b610bf5610f67565b6001600160a01b038116610c4b5760405162461bcd60e51b815260206004820152601e60248201527f5f64657657616c6c657420616464726573732063616e6e6f74206265203000006044820152606401610996565b600780546001600160a01b039081165f908152600d60208181526040808420805460ff19908116909155865486168552600e80845282862080548316905587546001600160a01b03191698871698891788559785529282528084208054841660019081179091559554909416835294909452208054909216179055565b610cd0610f67565b601555565b60606004805461071090611ce8565b5f3381610cf18286610d92565b905083811015610d515760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610996565b6109018286868403610e44565b5f3361079e818585611033565b610d73610f67565b600c55565b610d80610f67565b600a55565b610d8d610f67565b601355565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b610dc4610f67565b47610b3981611759565b610dd6610f67565b6001600160a01b038116610e3b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610996565b610b3981611708565b6001600160a01b038316610ea65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610996565b6001600160a01b038216610f075760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610996565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b03163314610b5a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610996565b5f610fcc8484610d92565b90505f1981146108e357818110156110265760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610996565b6108e38484848403610e44565b6001600160a01b0383166110595760405162461bcd60e51b815260040161099690611d8d565b6001600160a01b03821661107f5760405162461bcd60e51b815260040161099690611dd2565b5f81116110e05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610996565b60015f6110f56005546001600160a01b031690565b6001600160a01b0316856001600160a01b03161415801561112457506005546001600160a01b03858116911614155b801561113857506001600160a01b03841615155b801561114f57506001600160a01b03841661dead14155b80156111635750601054610100900460ff16155b1561146b576001600160a01b0385165f908152600f602052604090205460ff161580156111a857506001600160a01b0384165f908152600f602052604090205460ff16155b6111dd5760405162461bcd60e51b8152600401610996906020808252600490820152632137ba1760e11b604082015260600190565b60105460ff16611270576001600160a01b0385165f908152600d602052604090205460ff168061122457506001600160a01b0384165f908152600d602052604090205460ff165b6112705760405162461bcd60e51b815260206004820152601b60248201527f54726164696e67206973206e6f7420616c6c6f776564207965742e00000000006044820152606401610996565b6008546001600160a01b03868116911614801561129b57506006546001600160a01b03858116911614155b80156112bf57506001600160a01b0384165f908152600e602052604090205460ff16155b156113ae576009548311156113285760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178426044820152683abca0b6b7bab73a1760b91b6064820152608401610996565b600b548361134a866001600160a01b03165f9081526020819052604090205490565b6113549190611d48565b11156113ae5760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610996565b6008546001600160a01b0385811691161480156113d957506006546001600160a01b03868116911614155b80156113fd57506001600160a01b0385165f908152600e602052604090205460ff16155b1561146b57600a548311156114675760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785360448201526932b63620b6b7bab73a1760b11b6064820152608401610996565b5060015b6001600160a01b0385165f908152600d602052604090205460ff16806114a857506001600160a01b0384165f908152600d602052604090205460ff165b156114b1575f91505b6008546001600160a01b038681169116148015906114dd57506008546001600160a01b03858116911614155b156114e6575f91505b305f9081526020819052604081205490505f600c54821180156115065750825b905080801561151d575060105462010000900460ff165b80156115315750601054610100900460ff16155b801561155557506001600160a01b0387165f908152600d602052604090205460ff16155b801561157957506001600160a01b0386165f908152600d602052604090205460ff16155b156115a2576010805461ff00191661010017905561159682611794565b6010805461ff00191690555b6115af878787878761184f565b50505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106115eb576115eb611d20565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611642573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116669190611e15565b8160018151811061167957611679611d20565b6001600160a01b03928316602091820292909201015260065461169f9130911684610e44565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906116d79085905f90869030904290600401611e30565b5f604051808303815f87803b1580156116ee575f5ffd5b505af1158015611700573d5f5f3e3d5ffd5b505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6007546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611790573d5f5f3e3d5ffd5b5050565b6017545f8215806117a3575081155b156117ad57505050565b600c546117bb906005611ea0565b8311156117d357600c546117d0906005611ea0565b92505b82476117de826115b8565b5f6117e98247611eb7565b5f601781905560075460405192935083926001600160a01b039091169183919081818185875af1925050503d805f811461183e576040519150601f19603f3d011682016040523d82523d5f602084013e611843565b606091505b50505050505050505050565b816118615761185c611897565b61186f565b61186c8584836118c4565b92505b61187a85858561196b565b8161189057611890601454601355601654601555565b5050505050565b6013541580156118a75750601554155b156118ae57565b60138054601455601580546016555f9182905555565b5f81156118e0576118db6015546012819055601155565b6118f0565b6118f06013546012819055601155565b6011545f90156119475760646011548561190a9190611ea0565b6119149190611eca565b9050601154601254826119279190611ea0565b6119319190611eca565b60175f8282546119419190611d48565b90915550505b80156119585761195885308361196b565b6119628185611eb7565b95945050505050565b6001600160a01b0383166119915760405162461bcd60e51b815260040161099690611d8d565b6001600160a01b0382166119b75760405162461bcd60e51b815260040161099690611dd2565b6001600160a01b0383165f9081526020819052604090205481811015611a2e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610996565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36108e3565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610b39575f5ffd5b8035611ae781611ac8565b919050565b5f5f60408385031215611afd575f5ffd5b8235611b0881611ac8565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b8015158114610b39575f5ffd5b8035611ae781611b2a565b5f5f60408385031215611b53575f5ffd5b823567ffffffffffffffff811115611b69575f5ffd5b8301601f81018513611b79575f5ffd5b803567ffffffffffffffff811115611b9357611b93611b16565b8060051b604051601f19603f830116810181811067ffffffffffffffff82111715611bc057611bc0611b16565b604052918252602081840181019290810188841115611bdd575f5ffd5b6020850194505b83851015611c0357611bf585611adc565b815260209485019401611be4565b509450611c169250505060208401611b37565b90509250929050565b5f60208284031215611c2f575f5ffd5b8135611c3a81611b2a565b9392505050565b5f5f5f60608486031215611c53575f5ffd5b8335611c5e81611ac8565b92506020840135611c6e81611ac8565b929592945050506040919091013590565b5f60208284031215611c8f575f5ffd5b5035919050565b5f60208284031215611ca6575f5ffd5b8135611c3a81611ac8565b5f5f60408385031215611cc2575f5ffd5b8235611ccd81611ac8565b91506020830135611cdd81611ac8565b809150509250929050565b600181811c90821680611cfc57607f821691505b602082108103611d1a57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156107a4576107a4611d34565b5f60208284031215611d6b575f5ffd5b5051919050565b5f60208284031215611d82575f5ffd5b8151611c3a81611b2a565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b5f60208284031215611e25575f5ffd5b8151611c3a81611ac8565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611e805783516001600160a01b0316835260209384019390920191600101611e59565b50506001600160a01b039590951660608401525050608001529392505050565b80820281158282048414176107a4576107a4611d34565b818103818111156107a4576107a4611d34565b5f82611ee457634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220eee8038160f89bfb909e89d9575f358e82aab84b86613e6a6fc66b0c96f8064c64736f6c634300081c0033
Deployed Bytecode Sourcemap
18897:10244:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6473:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8965:242;;;;;;;;;;-1:-1:-1;8965:242:0;;;;;:::i;:::-;;:::i;:::-;;;1249:14:1;;1242:22;1224:41;;1212:2;1197:18;8965:242:0;1084:187:1;25855:218:0;;;;;;;;;;-1:-1:-1;25855:218:0;;;;;:::i;:::-;;:::i;7593:108::-;;;;;;;;;;-1:-1:-1;7681:12:0;;7593:108;;;3022:25:1;;;3010:2;2995:18;7593:108:0;2876:177:1;24764:94:0;;;;;;;;;;-1:-1:-1;24764:94:0;;;;;:::i;:::-;;:::i;25631:216::-;;;;;;;;;;-1:-1:-1;25631:216:0;;;;;:::i;:::-;;:::i;28399:176::-;;;;;;;;;;;;;:::i;9787:295::-;;;;;;;;;;-1:-1:-1;9787:295:0;;;;;:::i;:::-;;:::i;24866:108::-;;;;;;;;;;-1:-1:-1;24866:108:0;;;;;:::i;:::-;;:::i;7435:93::-;;;;;;;;;;-1:-1:-1;7435:93:0;;7518:2;4190:36:1;;4178:2;4163:18;7435:93:0;4048:184:1;19622:45:0;;;;;;;;;;-1:-1:-1;19622:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10491:270;;;;;;;;;;-1:-1:-1;10491:270:0;;;;;:::i;:::-;;:::i;26308:100::-;;;;;;;;;;-1:-1:-1;26308:100:0;;;;;:::i;:::-;-1:-1:-1;;;;;26386:14:0;26362:4;26386:14;;;:6;:14;;;;;;;;;26308:100;28583:317;;;;;;;;;;-1:-1:-1;28583:317:0;;;;;:::i;:::-;;:::i;19093:28::-;;;;;;;;;;-1:-1:-1;19093:28:0;;;;-1:-1:-1;;;;;19093:28:0;;;;;;-1:-1:-1;;;;;4653:32:1;;;4635:51;;4623:2;4608:18;19093:28:0;4489:203:1;28082:152:0;;;;;;;;;;;;;:::i;26081:118::-;;;;;;;;;;-1:-1:-1;26081:118:0;;;;;:::i;:::-;;:::i;19256:57::-;;;;;;;;;;;;;;;;19833:23;;;;;;;;;;-1:-1:-1;19833:23:0;;;;;;;;;;;7764:177;;;;;;;;;;-1:-1:-1;7764:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;7915:18:0;7883:7;7915:18;;;;;;;;;;;;7764:177;1717:103;;;;;;;;;;;;;:::i;28908:155::-;;;;;;;;;;;;;:::i;19193:56::-;;;;;;;;;;;;;;;;21026:167;;;;;;;;;;;;;:::i;1069:87::-;;;;;;;;;;-1:-1:-1;1142:6:0;;-1:-1:-1;;;;;1142:6:0;1069:87;;25268:355;;;;;;;;;;-1:-1:-1;25268:355:0;;;;;:::i;:::-;;:::i;26896:102::-;;;;;;;;;;-1:-1:-1;26896:102:0;;;;;:::i;:::-;;:::i;6692:104::-;;;;;;;;;;;;;:::i;19976:29::-;;;;;;;;;;;;;;;;19865:41;;;;;;;;;;;;19903:3;19865:41;;20074:30;;;;;;;;;;;;;;;;11264:503;;;;;;;;;;-1:-1:-1;11264:503:0;;;;;:::i;:::-;;:::i;8147:234::-;;;;;;;;;;-1:-1:-1;8147:234:0;;;;;:::i;:::-;;:::i;19320:59::-;;;;;;;;;;;;;;;;25102:158;;;;;;;;;;-1:-1:-1;25102:158:0;;;;;:::i;:::-;;:::i;24982:112::-;;;;;;;;;;-1:-1:-1;24982:112:0;;;;;:::i;:::-;;:::i;26790:98::-;;;;;;;;;;-1:-1:-1;26790:98:0;;;;;:::i;:::-;;:::i;8444:201::-;;;;;;;;;;-1:-1:-1;8444:201:0;;;;;:::i;:::-;;:::i;28242:149::-;;;;;;;;;;;;;:::i;1975:238::-;;;;;;;;;;-1:-1:-1;1975:238:0;;;;;:::i;:::-;;:::i;19774:23::-;;;;;;;;;;-1:-1:-1;19774:23:0;;;;;;;;6473:100;6527:13;6560:5;6553:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6473:100;:::o;8965:242::-;9084:4;312:10;9145:32;312:10;9161:7;9170:6;9145:8;:32::i;:::-;9195:4;9188:11;;;8965:242;;;;;:::o;25855:218::-;955:13;:11;:13::i;:::-;25974:9:::1;25969:96;25993:8;:15;25989:1;:19;25969:96;;;26058:7;26028:14;:27;26043:8;26052:1;26043:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;26028:27:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;26028:27:0;:37;;-1:-1:-1;;26028:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;26010:3:0::1;25969:96;;;;25855:218:::0;;:::o;24764:94::-;955:13;:11;:13::i;:::-;24831:11:::1;:19:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;24831:19:0;;::::1;::::0;;;::::1;::::0;;24764:94::o;25631:216::-;955:13;:11;:13::i;:::-;25749:9:::1;25744:95;25768:8;:15;25764:1;:19;25744:95;;;25832:7;25803:13;:26;25817:8;25826:1;25817:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;25803:26:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;25803:26:0;:36;;-1:-1:-1;;25803:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;25785:3:0::1;25744:95;;28399:176:::0;955:13;:11;:13::i;:::-;28485:82:::1;::::0;28448:12:::1;::::0;28493:10:::1;::::0;28517:21:::1;::::0;28448:12;28485:82;28448:12;28485:82;28517:21;28493:10;28485:82:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;28399:176:0:o;9787:295::-;9918:4;312:10;9976:38;9992:4;312:10;10007:6;9976:15;:38::i;:::-;10025:27;10035:4;10041:2;10045:6;10025:9;:27::i;:::-;-1:-1:-1;10070:4:0;;9787:295;-1:-1:-1;;;;9787:295:0:o;24866:108::-;955:13;:11;:13::i;:::-;24938:12:::1;:28:::0;24866:108::o;10491:270::-;10606:4;312:10;10667:64;312:10;10683:7;10720:10;10692:25;312:10;10683:7;10692:9;:25::i;:::-;:38;;;;:::i;:::-;10667:8;:64::i;28583:317::-;955:13;:11;:13::i;:::-;28668:4:::1;-1:-1:-1::0;;;;;28653:20:0;::::1;::::0;28645:59:::1;;;::::0;-1:-1:-1;;;28645:59:0;;6281:2:1;28645:59:0::1;::::0;::::1;6263:21:1::0;6320:2;6300:18;;;6293:30;6359:28;6339:18;;;6332:56;6405:18;;28645:59:0::1;;;;;;;;;28723:36;::::0;-1:-1:-1;;;28723:36:0;;28753:4:::1;28723:36;::::0;::::1;4635:51:1::0;28762:1:0::1;::::0;-1:-1:-1;;;;;28723:21:0;::::1;::::0;::::1;::::0;4608:18:1;;28723:36:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;28715:62;;;::::0;-1:-1:-1;;;28715:62:0;;6825:2:1;28715:62:0::1;::::0;::::1;6807:21:1::0;6864:1;6844:18;;;6837:29;-1:-1:-1;;;6882:18:1;;;6875:39;6931:18;;28715:62:0::1;6623:332:1::0;28715:62:0::1;28805:36;::::0;-1:-1:-1;;;28805:36:0;;28835:4:::1;28805:36;::::0;::::1;4635:51:1::0;28788:14:0::1;::::0;-1:-1:-1;;;;;28805:21:0;::::1;::::0;::::1;::::0;4608:18:1;;28805:36:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28852:40;::::0;-1:-1:-1;;;28852:40:0;;28873:10:::1;28852:40;::::0;::::1;7134:51:1::0;7201:18;;;7194:34;;;28788:53:0;;-1:-1:-1;;;;;;28852:20:0;::::1;::::0;::::1;::::0;7107:18:1;;28852:40:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;28082:152::-:0;955:13;:11;:13::i;:::-;28176:4:::1;28132:23;7915:18:::0;;;;;;;;;;;28193:33:::1;7915:18:::0;28193:16:::1;:33::i;:::-;28121:113;28082:152::o:0;26081:118::-;955:13;:11;:13::i;:::-;26157:15:::1;:34:::0;26081:118::o;1717:103::-;955:13;:11;:13::i;:::-;1782:30:::1;1809:1;1782:18;:30::i;:::-;1717:103::o:0;28908:155::-;955:13;:11;:13::i;:::-;19166:20:::1;28960:12;:23:::0;;;28994:13:::1;:24:::0;;;29029:15:::1;:26:::0;28908:155::o;21026:167::-;955:13;:11;:13::i;:::-;21088:11:::1;::::0;::::1;;21087:12;21079:48;;;::::0;-1:-1:-1;;;21079:48:0;;7691:2:1;21079:48:0::1;::::0;::::1;7673:21:1::0;7730:2;7710:18;;;7703:30;7769:25;7749:18;;;7742:53;7812:18;;21079:48:0::1;7489:347:1::0;21079:48:0::1;21138:11;:18:::0;;-1:-1:-1;;21167:18:0;;;;;21026:167::o;25268:355::-;955:13;:11;:13::i;:::-;-1:-1:-1;;;;;25345:17:0;::::1;25337:60;;;::::0;-1:-1:-1;;;25337:60:0;;8043:2:1;25337:60:0::1;::::0;::::1;8025:21:1::0;8082:2;8062:18;;;8055:30;8121:32;8101:18;;;8094:60;8171:18;;25337:60:0::1;7841:354:1::0;25337:60:0::1;25422:10;::::0;;-1:-1:-1;;;;;25422:10:0;;::::1;25436:5;25408:25:::0;;;:13:::1;:25;::::0;;;;;;;:33;;-1:-1:-1;;25408:33:0;;::::1;::::0;;;25467:10;;;::::1;25452:26:::0;;:14:::1;:26:::0;;;;;;:34;;;::::1;::::0;;25497:31;;-1:-1:-1;;;;;;25497:31:0::1;::::0;;::::1;::::0;;::::1;::::0;;25539:25;;;;;;;;;:32;;;::::1;-1:-1:-1::0;25539:32:0;;::::1;::::0;;;25597:10;;;;::::1;25582:26:::0;;;;;;;:33;;;;::::1;;::::0;;25268:355::o;26896:102::-;955:13;:11;:13::i;:::-;26966:10:::1;:24:::0;26896:102::o;6692:104::-;6748:13;6781:7;6774:14;;;;;:::i;11264:503::-;11384:4;312:10;11384:4;11472:25;312:10;11489:7;11472:9;:25::i;:::-;11445:52;;11550:15;11530:16;:35;;11508:122;;;;-1:-1:-1;;;11508:122:0;;8402:2:1;11508:122:0;;;8384:21:1;8441:2;8421:18;;;8414:30;8480:34;8460:18;;;8453:62;-1:-1:-1;;;8531:18:1;;;8524:35;8576:19;;11508:122:0;8200:401:1;11508:122:0;11666:60;11675:5;11682:7;11710:15;11691:16;:34;11666:8;:60::i;8147:234::-;8262:4;312:10;8323:28;312:10;8340:2;8344:6;8323:9;:28::i;25102:158::-;955:13;:11;:13::i;:::-;25212:19:::1;:40:::0;25102:158::o;24982:112::-;955:13;:11;:13::i;:::-;25056::::1;:30:::0;24982:112::o;26790:98::-;955:13;:11;:13::i;:::-;26858:9:::1;:22:::0;26790:98::o;8444:201::-;-1:-1:-1;;;;;8610:18:0;;;8578:7;8610:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8444:201::o;28242:149::-;955:13;:11;:13::i;:::-;28319:21:::1;28351:32;28319:21:::0;28351:12:::1;:32::i;1975:238::-:0;955:13;:11;:13::i;:::-;-1:-1:-1;;;;;2078:22:0;::::1;2056:110;;;::::0;-1:-1:-1;;;2056:110:0;;8808:2:1;2056:110:0::1;::::0;::::1;8790:21:1::0;8847:2;8827:18;;;8820:30;8886:34;8866:18;;;8859:62;-1:-1:-1;;;8937:18:1;;;8930:36;8983:19;;2056:110:0::1;8606:402:1::0;2056:110:0::1;2177:28;2196:8;2177:18;:28::i;15373:378::-:0;-1:-1:-1;;;;;15509:19:0;;15501:68;;;;-1:-1:-1;;;15501:68:0;;9215:2:1;15501:68:0;;;9197:21:1;9254:2;9234:18;;;9227:30;9293:34;9273:18;;;9266:62;-1:-1:-1;;;9344:18:1;;;9337:34;9388:19;;15501:68:0;9013:400:1;15501:68:0;-1:-1:-1;;;;;15588:21:0;;15580:68;;;;-1:-1:-1;;;15580:68:0;;9620:2:1;15580:68:0;;;9602:21:1;9659:2;9639:18;;;9632:30;9698:34;9678:18;;;9671:62;-1:-1:-1;;;9749:18:1;;;9742:32;9791:19;;15580:68:0;9418:398:1;15580:68:0;-1:-1:-1;;;;;15659:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15711:32;;3022:25:1;;;15711:32:0;;2995:18:1;15711:32:0;;;;;;;15373:378;;;:::o;1234:132::-;1142:6;;-1:-1:-1;;;;;1142:6:0;312:10;1298:23;1290:68;;;;-1:-1:-1;;;1290:68:0;;10023:2:1;1290:68:0;;;10005:21:1;;;10042:18;;;10035:30;10101:34;10081:18;;;10074:62;10153:18;;1290:68:0;9821:356:1;16042:502:0;16177:24;16204:25;16214:5;16221:7;16204:9;:25::i;:::-;16177:52;;-1:-1:-1;;16244:16:0;:37;16240:297;;16344:6;16324:16;:26;;16298:117;;;;-1:-1:-1;;;16298:117:0;;10384:2:1;16298:117:0;;;10366:21:1;10423:2;10403:18;;;10396:30;10462:31;10442:18;;;10435:59;10511:18;;16298:117:0;10182:353:1;16298:117:0;16459:51;16468:5;16475:7;16503:6;16484:16;:25;16459:8;:51::i;21201:2357::-;-1:-1:-1;;;;;21333:12:0;;21325:62;;;;-1:-1:-1;;;21325:62:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21406:10:0;;21398:58;;;;-1:-1:-1;;;21398:58:0;;;;;;;:::i;:::-;21484:1;21475:6;:10;21467:64;;;;-1:-1:-1;;;21467:64:0;;11552:2:1;21467:64:0;;;11534:21:1;11591:2;11571:18;;;11564:30;11630:34;11610:18;;;11603:62;-1:-1:-1;;;11681:18:1;;;11674:39;11730:19;;21467:64:0;11350:405:1;21467:64:0;21557:4;21542:12;21632:7;1142:6;;-1:-1:-1;;;;;1142:6:0;;1069:87;21632:7;-1:-1:-1;;;;;21624:15:0;:4;-1:-1:-1;;;;;21624:15:0;;;:45;;;;-1:-1:-1;1142:6:0;;-1:-1:-1;;;;;21656:13:0;;;1142:6;;21656:13;;21624:45;:72;;;;-1:-1:-1;;;;;;21686:10:0;;;;21624:72;:99;;;;-1:-1:-1;;;;;;21713:10:0;;19490:42;21713:10;;21624:99;:126;;;;-1:-1:-1;21741:9:0;;;;;;;21740:10;21624:126;21606:1303;;;-1:-1:-1;;;;;21786:12:0;;;;;;:6;:12;;;;;;;;21785:13;:28;;;;-1:-1:-1;;;;;;21803:10:0;;;;;;:6;:10;;;;;;;;21802:11;21785:28;21777:45;;;;-1:-1:-1;;;21777:45:0;;;;;;11962:2:1;11944:21;;;12001:1;11981:18;;;11974:29;-1:-1:-1;;;12034:2:1;12019:18;;12012:34;12078:2;12063:18;;11760:327;21777:45:0;21842:11;;;;21837:176;;-1:-1:-1;;;;;21902:19:0;;;;;;:13;:19;;;;;;;;;:40;;-1:-1:-1;;;;;;21925:17:0;;;;;;:13;:17;;;;;;;;21902:40;21872:141;;;;-1:-1:-1;;;21872:141:0;;12294:2:1;21872:141:0;;;12276:21:1;12333:2;12313:18;;;12306:30;12372:29;12352:18;;;12345:57;12419:18;;21872:141:0;12092:351:1;21872:141:0;22058:13;;-1:-1:-1;;;;;22050:21:0;;;22058:13;;22050:21;:72;;;;-1:-1:-1;22106:15:0;;-1:-1:-1;;;;;22092:30:0;;;22106:15;;22092:30;;22050:72;:112;;;;-1:-1:-1;;;;;;22144:18:0;;;;;;:14;:18;;;;;;;;22143:19;22050:112;22028:492;;;22237:12;;22227:6;:22;;22197:137;;;;-1:-1:-1;;;22197:137:0;;12650:2:1;22197:137:0;;;12632:21:1;12689:2;12669:18;;;12662:30;12728:34;12708:18;;;12701:62;-1:-1:-1;;;12779:18:1;;;12772:39;12828:19;;22197:137:0;12448:405:1;22197:137:0;22409:15;;22399:6;22383:13;22393:2;-1:-1:-1;;;;;7915:18:0;7883:7;7915:18;;;;;;;;;;;;7764:177;22383:13;:22;;;;:::i;:::-;:41;;22353:151;;;;-1:-1:-1;;;22353:151:0;;13060:2:1;22353:151:0;;;13042:21:1;13099:2;13079:18;;;13072:30;13138:34;13118:18;;;13111:62;-1:-1:-1;;;13189:18:1;;;13182:34;13233:19;;22353:151:0;12858:400:1;22353:151:0;22564:13;;-1:-1:-1;;;;;22558:19:0;;;22564:13;;22558:19;:72;;;;-1:-1:-1;22614:15:0;;-1:-1:-1;;;;;22598:32:0;;;22614:15;;22598:32;;22558:72;:114;;;;-1:-1:-1;;;;;;22652:20:0;;;;;;:14;:20;;;;;;;;22651:21;22558:114;22536:362;;;22747:13;;22737:6;:23;;22707:139;;;;-1:-1:-1;;;22707:139:0;;13465:2:1;22707:139:0;;;13447:21:1;13504:2;13484:18;;;13477:30;13543:34;13523:18;;;13516:62;-1:-1:-1;;;13594:18:1;;;13587:40;13644:19;;22707:139:0;13263:406:1;22707:139:0;-1:-1:-1;22878:4:0;22536:362;-1:-1:-1;;;;;22923:19:0;;;;;;:13;:19;;;;;;;;;:40;;-1:-1:-1;;;;;;22946:17:0;;;;;;:13;:17;;;;;;;;22923:40;22919:61;;;22975:5;22965:15;;22919:61;23003:13;;-1:-1:-1;;;;;22995:21:0;;;23003:13;;22995:21;;;;:44;;-1:-1:-1;23026:13:0;;-1:-1:-1;;;;;23020:19:0;;;23026:13;;23020:19;;22995:44;22991:65;;;23051:5;23041:15;;22991:65;23111:4;23067:23;7915:18;;;;;;;;;;;23067:50;;23128:12;23162:19;;23144:15;:37;23143:53;;;;;23186:10;23143:53;23128:68;;23225:7;:35;;;;-1:-1:-1;23249:11:0;;;;;;;23225:35;:62;;;;-1:-1:-1;23278:9:0;;;;;;;23277:10;23225:62;:99;;;;-1:-1:-1;;;;;;23305:19:0;;;;;;:13;:19;;;;;;;;23304:20;23225:99;:134;;;;-1:-1:-1;;;;;;23342:17:0;;;;;;:13;:17;;;;;;;;23341:18;23225:134;23207:280;;;23386:9;:16;;-1:-1:-1;;23386:16:0;;;;;23417:26;23427:15;23417:9;:26::i;:::-;23458:9;:17;;-1:-1:-1;;23458:17:0;;;23207:280;23497:53;23512:4;23518:2;23522:6;23530:7;23539:10;23497:14;:53::i;:::-;21314:2244;;;;21201:2357;;;:::o;24282:472::-;24373:16;;;24387:1;24373:16;;;;;;;;24349:21;;24373:16;;;;;;;;;;-1:-1:-1;24373:16:0;24349:40;;24418:4;24400;24405:1;24400:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24400:23:0;;;:7;;;;;;;;;;:23;;;;24444:15;;:22;;;-1:-1:-1;;;24444:22:0;;;;:15;;;;;:20;;:22;;;;;24400:7;;24444:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24434:4;24439:1;24434:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24434:32:0;;;:7;;;;;;;;;:32;24509:15;;24477:62;;24494:4;;24509:15;24527:11;24477:8;:62::i;:::-;24550:15;;:196;;-1:-1:-1;;;24550:196:0;;-1:-1:-1;;;;;24550:15:0;;;;:66;;:196;;24631:11;;24550:15;;24673:4;;24700;;24720:15;;24550:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24338:416;24282:472;:::o;2373:191::-;2466:6;;;-1:-1:-1;;;;;2483:17:0;;;-1:-1:-1;;;;;;2483:17:0;;;;;;;2516:40;;2466:6;;;2483:17;2466:6;;2516:40;;2447:16;;2516:40;2436:128;2373:191;:::o;26207:93::-;26265:10;;:27;;-1:-1:-1;;;;;26265:10:0;;;;:27;;;;;26285:6;;26265:10;:27;:10;:27;26285:6;26265:10;:27;;;;;;;;;;;;;;;;;;;;;26207:93;:::o;23566:708::-;23659:13;;23630:25;23713:20;;;:46;;-1:-1:-1;23737:22:0;;23713:46;23709:59;;;23761:7;;23566:708;:::o;23709:59::-;23800:19;;:25;;23823:1;23800:25;:::i;:::-;23782:15;:43;23778:105;;;23858:19;;:25;;23881:1;23858:25;:::i;:::-;23840:43;;23778:105;23925:15;23979:21;24011:36;23925:15;24011:16;:36::i;:::-;24060:18;24081:43;24106:17;24081:21;:43;:::i;:::-;24135:17;24178:13;:17;;;24228:10;;24220:46;;24060:64;;-1:-1:-1;24060:64:0;;-1:-1:-1;;;;;24228:10:0;;;;24060:64;;24220:46;;24135:17;24220:46;24060:64;24228:10;24220:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;23566:708:0:o;27006:363::-;27185:7;27180:86;;27194:14;:12;:14::i;:::-;27180:86;;;27233:33;27243:6;27251;27259;27233:9;:33::i;:::-;27224:42;;27180:86;27277:42;27293:6;27301:9;27312:6;27277:15;:42::i;:::-;27337:7;27332:29;;27346:15;26713:18;;26701:9;:30;26755:19;;26742:10;:32;26656:126;27346:15;27006:363;;;;;:::o;26416:232::-;26464:9;;:14;:33;;;;-1:-1:-1;26482:10:0;;:15;26464:33;26460:46;;;26416:232::o;26460:46::-;26539:9;;;26518:18;:30;26581:10;;;26559:19;:32;-1:-1:-1;26602:13:0;;;;26626:14;26416:232::o;27377:481::-;27493:7;27517:6;27513:47;;;27525:10;27916;;27906:7;:20;;;27937:10;:22;27866:101;27525:10;27513:47;;;27551:9;28024;;28014:7;:19;;;28044:10;:22;27975:99;27551:9;27600:10;;27573:12;;27600:14;27596:154;;19903:3;27649:10;;27639:6;:21;;;;:::i;:::-;27638:39;;;;:::i;:::-;27631:46;;27728:10;;27717:7;;27710:4;:14;;;;:::i;:::-;27709:29;;;;:::i;:::-;27692:13;;:46;;;;;;;:::i;:::-;;;;-1:-1:-1;;27596:154:0;27764:8;;27760:58;;27774:44;27790:6;27806:4;27813;27774:15;:44::i;:::-;27836:14;27846:4;27836:14;;:::i;:::-;;27377:481;-1:-1:-1;;;;;27377:481:0:o;12237:869::-;-1:-1:-1;;;;;12368:18:0;;12360:68;;;;-1:-1:-1;;;12360:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12447:16:0;;12439:64;;;;-1:-1:-1;;;12439:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12585:15:0;;12563:19;12585:15;;;;;;;;;;;12633:21;;;;12611:109;;;;-1:-1:-1;;;12611:109:0;;15624:2:1;12611:109:0;;;15606:21:1;15663:2;15643:18;;;15636:30;15702:34;15682:18;;;15675:62;-1:-1:-1;;;15753:18:1;;;15746:36;15799:19;;12611:109:0;15422:402:1;12611:109:0;-1:-1:-1;;;;;12756:15:0;;;:9;:15;;;;;;;;;;;12774:20;;;12756:38;;12974:13;;;;;;;;;;:23;;;;;;13024:26;;3022:25:1;;;12974:13:0;;13024:26;;2995:18:1;13024:26:0;;;;;;;13061:37;25855:218;14:418:1;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;573:134;641:20;;670:31;641:20;670:31;:::i;:::-;573:134;;;:::o;712:367::-;780:6;788;841:2;829:9;820:7;816:23;812:32;809:52;;;857:1;854;847:12;809:52;896:9;883:23;915:31;940:5;915:31;:::i;:::-;965:5;1043:2;1028:18;;;;1015:32;;-1:-1:-1;;;712:367:1:o;1276:127::-;1337:10;1332:3;1328:20;1325:1;1318:31;1368:4;1365:1;1358:15;1392:4;1389:1;1382:15;1408:118;1494:5;1487:13;1480:21;1473:5;1470:32;1460:60;;1516:1;1513;1506:12;1531:128;1596:20;;1625:28;1596:20;1625:28;:::i;1664:1207::-;1754:6;1762;1815:2;1803:9;1794:7;1790:23;1786:32;1783:52;;;1831:1;1828;1821:12;1783:52;1871:9;1858:23;1904:18;1896:6;1893:30;1890:50;;;1936:1;1933;1926:12;1890:50;1959:22;;2012:4;2004:13;;2000:27;-1:-1:-1;1990:55:1;;2041:1;2038;2031:12;1990:55;2081:2;2068:16;2107:18;2099:6;2096:30;2093:56;;;2129:18;;:::i;:::-;2175:6;2172:1;2168:14;2211:2;2205:9;2274:2;2270:7;2265:2;2261;2257:11;2253:25;2245:6;2241:38;2345:6;2333:10;2330:22;2309:18;2297:10;2294:34;2291:62;2288:88;;;2356:18;;:::i;:::-;2392:2;2385:22;2442;;;2492:4;2524:11;;;2520:22;;;2442;2480:17;;2554:19;;;2551:39;;;2586:1;2583;2576:12;2551:39;2618:4;2614:2;2610:13;2599:24;;2632:152;2648:6;2643:3;2640:15;2632:152;;;2716:23;2735:3;2716:23;:::i;:::-;2704:36;;2769:4;2665:14;;;;2760;2632:152;;;-1:-1:-1;2803:6:1;-1:-1:-1;2828:37:1;;-1:-1:-1;;;2859:4:1;2844:20;;2828:37;:::i;:::-;2818:47;;1664:1207;;;;;:::o;3058:241::-;3114:6;3167:2;3155:9;3146:7;3142:23;3138:32;3135:52;;;3183:1;3180;3173:12;3135:52;3222:9;3209:23;3241:28;3263:5;3241:28;:::i;:::-;3288:5;3058:241;-1:-1:-1;;;3058:241:1:o;3304:508::-;3381:6;3389;3397;3450:2;3438:9;3429:7;3425:23;3421:32;3418:52;;;3466:1;3463;3456:12;3418:52;3505:9;3492:23;3524:31;3549:5;3524:31;:::i;:::-;3574:5;-1:-1:-1;3631:2:1;3616:18;;3603:32;3644:33;3603:32;3644:33;:::i;:::-;3304:508;;3696:7;;-1:-1:-1;;;3776:2:1;3761:18;;;;3748:32;;3304:508::o;3817:226::-;3876:6;3929:2;3917:9;3908:7;3904:23;3900:32;3897:52;;;3945:1;3942;3935:12;3897:52;-1:-1:-1;3990:23:1;;3817:226;-1:-1:-1;3817:226:1:o;4237:247::-;4296:6;4349:2;4337:9;4328:7;4324:23;4320:32;4317:52;;;4365:1;4362;4355:12;4317:52;4404:9;4391:23;4423:31;4448:5;4423:31;:::i;4697:388::-;4765:6;4773;4826:2;4814:9;4805:7;4801:23;4797:32;4794:52;;;4842:1;4839;4832:12;4794:52;4881:9;4868:23;4900:31;4925:5;4900:31;:::i;:::-;4950:5;-1:-1:-1;5007:2:1;4992:18;;4979:32;5020:33;4979:32;5020:33;:::i;:::-;5072:7;5062:17;;;4697:388;;;;;:::o;5090:380::-;5169:1;5165:12;;;;5212;;;5233:61;;5287:4;5279:6;5275:17;5265:27;;5233:61;5340:2;5332:6;5329:14;5309:18;5306:38;5303:161;;5386:10;5381:3;5377:20;5374:1;5367:31;5421:4;5418:1;5411:15;5449:4;5446:1;5439:15;5303:161;;5090:380;;;:::o;5475:127::-;5536:10;5531:3;5527:20;5524:1;5517:31;5567:4;5564:1;5557:15;5591:4;5588:1;5581:15;5817:127;5878:10;5873:3;5869:20;5866:1;5859:31;5909:4;5906:1;5899:15;5933:4;5930:1;5923:15;5949:125;6014:9;;;6035:10;;;6032:36;;;6048:18;;:::i;6434:184::-;6504:6;6557:2;6545:9;6536:7;6532:23;6528:32;6525:52;;;6573:1;6570;6563:12;6525:52;-1:-1:-1;6596:16:1;;6434:184;-1:-1:-1;6434:184:1:o;7239:245::-;7306:6;7359:2;7347:9;7338:7;7334:23;7330:32;7327:52;;;7375:1;7372;7365:12;7327:52;7407:9;7401:16;7426:28;7448:5;7426:28;:::i;10540:401::-;10742:2;10724:21;;;10781:2;10761:18;;;10754:30;10820:34;10815:2;10800:18;;10793:62;-1:-1:-1;;;10886:2:1;10871:18;;10864:35;10931:3;10916:19;;10540:401::o;10946:399::-;11148:2;11130:21;;;11187:2;11167:18;;;11160:30;11226:34;11221:2;11206:18;;11199:62;-1:-1:-1;;;11292:2:1;11277:18;;11270:33;11335:3;11320:19;;10946:399::o;13674:251::-;13744:6;13797:2;13785:9;13776:7;13772:23;13768:32;13765:52;;;13813:1;13810;13803:12;13765:52;13845:9;13839:16;13864:31;13889:5;13864:31;:::i;13930:959::-;14192:4;14240:3;14229:9;14225:19;14271:6;14260:9;14253:25;14314:6;14309:2;14298:9;14294:18;14287:34;14357:3;14352:2;14341:9;14337:18;14330:31;14381:6;14416;14410:13;14447:6;14439;14432:22;14485:3;14474:9;14470:19;14463:26;;14524:2;14516:6;14512:15;14498:29;;14545:1;14555:195;14569:6;14566:1;14563:13;14555:195;;;14634:13;;-1:-1:-1;;;;;14630:39:1;14618:52;;14699:2;14725:15;;;;14690:12;;;;14666:1;14584:9;14555:195;;;-1:-1:-1;;;;;;;14806:32:1;;;;14801:2;14786:18;;14779:60;-1:-1:-1;;14870:3:1;14855:19;14848:35;14767:3;13930:959;-1:-1:-1;;;13930:959:1:o;14894:168::-;14967:9;;;14998;;15015:15;;;15009:22;;14995:37;14985:71;;15036:18;;:::i;15067:128::-;15134:9;;;15155:11;;;15152:37;;;15169:18;;:::i;15200:217::-;15240:1;15266;15256:132;;15310:10;15305:3;15301:20;15298:1;15291:31;15345:4;15342:1;15335:15;15373:4;15370:1;15363:15;15256:132;-1:-1:-1;15402:9:1;;15200:217::o
Swarm Source
ipfs://eee8038160f89bfb909e89d9575f358e82aab84b86613e6a6fc66b0c96f8064c
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.