Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 215 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 21526508 | 35 days ago | IN | 0 ETH | 0.00018834 | ||||
Approve | 21525925 | 35 days ago | IN | 0 ETH | 0.00026479 | ||||
Transfer | 20851102 | 129 days ago | IN | 0 ETH | 0.00041316 | ||||
Transfer | 20851102 | 129 days ago | IN | 0 ETH | 0.00041316 | ||||
Transfer | 20851102 | 129 days ago | IN | 0 ETH | 0.00056125 | ||||
Approve | 20478784 | 181 days ago | IN | 0 ETH | 0.00018001 | ||||
Approve | 20478779 | 181 days ago | IN | 0 ETH | 0.00034256 | ||||
Approve | 20478777 | 181 days ago | IN | 0 ETH | 0.00026838 | ||||
Approve | 20478775 | 181 days ago | IN | 0 ETH | 0.00044796 | ||||
Approve | 20478775 | 181 days ago | IN | 0 ETH | 0.00044796 | ||||
Approve | 20478775 | 181 days ago | IN | 0 ETH | 0.00044796 | ||||
Approve | 20478774 | 181 days ago | IN | 0 ETH | 0.00034859 | ||||
Approve | 20478774 | 181 days ago | IN | 0 ETH | 0.00044179 | ||||
Approve | 20478773 | 181 days ago | IN | 0 ETH | 0.0004495 | ||||
Approve | 20478773 | 181 days ago | IN | 0 ETH | 0.0004495 | ||||
Approve | 20478772 | 181 days ago | IN | 0 ETH | 0.0003516 | ||||
Approve | 20478771 | 181 days ago | IN | 0 ETH | 0.000442 | ||||
Approve | 20478770 | 181 days ago | IN | 0 ETH | 0.00035002 | ||||
Approve | 20478770 | 181 days ago | IN | 0 ETH | 0.00035002 | ||||
Approve | 20478770 | 181 days ago | IN | 0 ETH | 0.00044311 | ||||
Approve | 20478769 | 181 days ago | IN | 0 ETH | 0.00035394 | ||||
Approve | 20478769 | 181 days ago | IN | 0 ETH | 0.00044714 | ||||
Approve | 20478769 | 181 days ago | IN | 0 ETH | 0.00044714 | ||||
Approve | 20478769 | 181 days ago | IN | 0 ETH | 0.00044714 | ||||
Approve | 20478769 | 181 days ago | IN | 0 ETH | 0.00044714 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
21526185 | 35 days ago | 0.02 ETH | ||||
21526185 | 35 days ago | 0.02 ETH | ||||
20478783 | 181 days ago | 0.02 ETH | ||||
20478783 | 181 days ago | 0.02 ETH | ||||
20478778 | 181 days ago | 0.05451873 ETH | ||||
20478778 | 181 days ago | 0.05451873 ETH | ||||
20478778 | 181 days ago | 0.05589638 ETH | ||||
20478778 | 181 days ago | 0.05589638 ETH | ||||
20478778 | 181 days ago | 0.05732694 ETH | ||||
20478778 | 181 days ago | 0.05732694 ETH | ||||
20478778 | 181 days ago | 0.05413537 ETH | ||||
20478778 | 181 days ago | 0.05413537 ETH | ||||
20478778 | 181 days ago | 0.05950099 ETH | ||||
20478778 | 181 days ago | 0.05950099 ETH | ||||
20478778 | 181 days ago | 0.06107319 ETH | ||||
20478778 | 181 days ago | 0.06107319 ETH | ||||
20478778 | 181 days ago | 0.06270856 ETH | ||||
20478778 | 181 days ago | 0.06270856 ETH | ||||
20478778 | 181 days ago | 0.10500226 ETH | ||||
20478778 | 181 days ago | 0.10500226 ETH | ||||
20478773 | 181 days ago | 0.06289517 ETH | ||||
20478773 | 181 days ago | 0.06289517 ETH | ||||
20478772 | 181 days ago | 0.06893579 ETH | ||||
20478772 | 181 days ago | 0.06893579 ETH | ||||
20478772 | 181 days ago | 0.06298786 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
zkVRF
Compiler Version
v0.8.25+commit.b61c2a91
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-08-06 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.25; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; return msg.data; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _createInitialSupply(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() external virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IDexRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } interface IDexFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } contract zkVRF is ERC20, Ownable { uint256 public maxTxnAmount; uint256 public maxWalletAmount; IDexRouter public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool private swapping; uint256 public swapTokensAtAmount; modifier lockSwapping() { swapping = true; _; swapping = false; } address public marketingAddress; bool public tradingActive = false; bool public swapEnabled = false; uint256 private buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 private sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; /******************/ //exlcude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event EnabledTrading(); event ExcludeFromFees(address indexed account, bool isExcluded); event UpdatedMaxTxnAmount(uint256 newAmount); event UpdatedMaxWalletAmount(uint256 newAmount); event UpdatedMarketingAddress(address indexed newWallet); event MaxTransactionExclusion(address _address, bool excluded); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event TransferForeignToken(address token, uint256 amount); constructor() ERC20("zkVRF", "ZKVRF") { address newOwner = msg.sender; // can leave alone if owner is deployer. IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IDexFactory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 totalSupply = 100000000 * 1e18; maxTxnAmount = totalSupply * 10 / 10000; maxWalletAmount = totalSupply * 10 / 10000; swapTokensAtAmount = totalSupply * 25 / 100000; // 0.025% swap amount buyMarketingFee = 5; buyLiquidityFee = 0; buyTotalFees = buyMarketingFee + buyLiquidityFee; sellMarketingFee = 5; sellLiquidityFee = 0; sellTotalFees = sellMarketingFee + sellLiquidityFee; _excludeFromMaxTransaction(newOwner, true); _excludeFromMaxTransaction(address(this), true); _excludeFromMaxTransaction(address(0xdead), true); excludeFromFees(newOwner, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); marketingAddress = 0x13862582C1064CC10050a704B80ACB515d567620; _createInitialSupply(newOwner, totalSupply); transferOwnership(newOwner); } receive() external payable {} // once enabled, can never be turned off function enableTrading() external onlyOwner { require(!tradingActive, "Cannot reenable trading"); tradingActive = true; swapEnabled = true; emit EnabledTrading(); } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 25 / 10000)/1e18, "Cannot set maxTxn lower than 0.25%"); maxTxnAmount = newNum * (10**18); emit UpdatedMaxTxnAmount(maxTxnAmount); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 25 / 10000)/1e18, "Cannot set maxWallet lower than 0.25%"); maxWalletAmount = newNum * (10**18); emit UpdatedMaxWalletAmount(maxWalletAmount); } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner { require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= totalSupply() * 3 / 100, "Swap amount cannot be higher than 3% total supply."); swapTokensAtAmount = newAmount * (10**18); } function _excludeFromMaxTransaction(address updAds, bool isExcluded) private { _isExcludedMaxTransactionAmount[updAds] = isExcluded; emit MaxTransactionExclusion(updAds, isExcluded); } function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner { if(!isEx){ require(updAds != uniswapV2Pair, "Cannot remove uniswap pair from max txn"); } _isExcludedMaxTransactionAmount[updAds] = isEx; } function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; _excludeFromMaxTransaction(pair, value); emit SetAutomatedMarketMakerPair(pair, value); } function updateFees(uint256 _buyMarketingFee, uint256 _buyLiquidityFee, uint256 _sellMarketingFee, uint256 _sellLiquidityFee) external onlyOwner { require((sellTotalFees) <= 30,"Total sell fees cannot be greater than 30%"); require((buyTotalFees) <= 30,"Total buy fees cannot be greater than 30%"); buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyTotalFees = buyMarketingFee + buyLiquidityFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellTotalFees = sellMarketingFee + sellLiquidityFee; } function setSwapEnabled(bool state) external onlyOwner { // to be used only in case of dire emergency swapEnabled = state; } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function _transfer(address from, address to, uint256 amount) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "amount must be greater than 0"); if (from != owner() && to != owner() && to != address(0) && to != address(0xdead)){ if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTxnAmount, "Buy transfer amount exceeds the max buy."); require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTxnAmount, "Sell transfer amount exceeds the max sell."); } else if (!_isExcludedMaxTransactionAmount[to] && !_isExcludedMaxTransactionAmount[from]){ require(amount <= maxTxnAmount, "Transfer amount exceeds the max Txn."); require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet"); } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if(canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { swapping = true; swapBack(); swapping = false; } bool takeFee = true; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if(takeFee){ // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount * sellTotalFees /100; tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount * buyTotalFees / 100; tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= (fees); } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(owner()), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapTokensAtAmount * 4){ contractBalance = swapTokensAtAmount * 4; } bool success; // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; swapTokensForEth(contractBalance - liquidityTokens); uint256 ethBalance = address(this).balance; uint256 ethForLiquidity = ethBalance; uint256 ethForMarketing = ethBalance * tokensForMarketing / (totalTokensToSwap - (tokensForLiquidity/2)); ethForLiquidity -= ethForMarketing; tokensForLiquidity = 0; tokensForMarketing = 0; if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); } (success,) = address(marketingAddress).call{value: address(this).balance}(""); } function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) { uint256 _contractBalance = IERC20(_token).balanceOf(address(this)); _sent = IERC20(_token).transfer(_to, _contractBalance); emit TransferForeignToken(_token, _contractBalance); } // withdraw ETH if stuck or someone sends to the address function withdrawStuckETH() external onlyOwner { bool success; (success,) = address(msg.sender).call{value: address(this).balance}(""); } function unclog() public onlyOwner lockSwapping { swapTokensForEth( balanceOf(address(this)) ); uint256 ethBalance = address(this).balance; bool success; (success, ) = address(marketingAddress).call{value: ethBalance}(""); } }
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":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedMarketingAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxTxnAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","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":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnAmount","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unclog","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellLiquidityFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052600a805461ffff60a01b1916905534801561001d575f80fd5b50604051806040016040528060058152602001643d35ab292360d91b815250604051806040016040528060058152602001642d25ab292360d91b8152508160039081610069919061073c565b506004610076828261073c565b5050505f61008861035c60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f905f8051602061312f833981519152908290a35033737a250d5630b4cf539739df2c5dacb4c659f2488d6100e3816001610360565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801561012b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061014f91906107fb565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561019a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101be91906107fb565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610208573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061022c91906107fb565b6001600160a01b031660a08190526102459060016103c2565b6a52b7d2dcc80cd2e400000061271061025f82600a61083c565b6102699190610859565b60065561271061027a82600a61083c565b6102849190610859565b600755620186a061029682601961083c565b6102a09190610859565b6009556005600c8190555f600d8190556102b991610878565b600b556005600f8190555f60108190556102d291610878565b600e556102e0836001610360565b6102eb306001610360565b6102f861dead6001610360565b61030383600161042a565b61030e30600161042a565b61031b61dead600161042a565b600a80546001600160a01b0319167313862582c1064cc10050a704b80acb515d56762017905561034b83826104d4565b610354836105b0565b50505061088b565b3390565b6001600160a01b0382165f81815260146020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382165f908152601560205260409020805460ff19168215151790556103ef8282610360565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b6005546001600160a01b031633146104765760405162461bcd60e51b815260206004820181905260248201525f8051602061310f83398151915260448201526064015b60405180910390fd5b6001600160a01b0382165f81815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b03821661052a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161046d565b8060025f82825461053b9190610878565b90915550506001600160a01b0382165f9081526020819052604081208054839290610567908490610878565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b031633146105f75760405162461bcd60e51b815260206004820181905260248201525f8051602061310f833981519152604482015260640161046d565b6001600160a01b03811661065c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161046d565b6005546040516001600160a01b038084169216905f8051602061312f833981519152905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806106cc57607f821691505b6020821081036106ea57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561073757805f5260205f20601f840160051c810160208510156107155750805b601f840160051c820191505b81811015610734575f8155600101610721565b50505b505050565b81516001600160401b03811115610755576107556106a4565b6107698161076384546106b8565b846106f0565b602080601f83116001811461079c575f84156107855750858301515b5f19600386901b1c1916600185901b1785556107f3565b5f85815260208120601f198616915b828110156107ca578886015182559484019460019091019084016107ab565b50858210156107e757878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f6020828403121561080b575f80fd5b81516001600160a01b0381168114610821575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761085357610853610828565b92915050565b5f8261087357634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561085357610853610828565b60805160a0516128326108dd5f395f81816103fc01528181610b890152610e9401525f81816102ef01528181611e1901528181611ed001528181611f0c015281816122f6015261231d01526128325ff3fe60806040526004361061024c575f3560e01c80639213691311610134578063c18bc195116100b3578063e01af92c11610078578063e01af92c146106fb578063e2f456051461071a578063f11a24d31461072f578063f2fde38b14610744578063f5648a4f14610763578063f637434214610777575f80fd5b8063c18bc19514610645578063c6616ba114610664578063cf46f24c14610683578063d257b34f14610698578063dd62ed3e146106b7575f80fd5b8063a9059cbb116100f9578063a9059cbb146105a4578063aa4bde28146105c3578063b62496f5146105d8578063bbc0c74214610606578063c024666814610626575f80fd5b8063921369131461051e57806395d89b41146105335780639a7a23d614610547578063a457c2d714610566578063a5ece94114610585575f80fd5b806339509351116101cb578063715018a611610190578063715018a6146104865780637571336a1461049a5780637bce5a04146104b95780638366e79a146104ce5780638a8c523c146104ed5780638da5cb5b14610501575f80fd5b806339509351146103cc57806349bd5a5e146103eb57806367c453491461041e5780636ddd17131461043257806370a0823114610452575f80fd5b80631a8145bb116102115780631a8145bb146103475780631f3fed8f1461035c578063203e727e1461037157806323b872dd14610392578063313ce567146103b1575f80fd5b806306fdde0314610257578063095ea7b31461028157806310d5de53146102b05780631694505e146102de57806318160ddd14610329575f80fd5b3661025357005b5f80fd5b348015610262575f80fd5b5061026b61078c565b60405161027891906123f3565b60405180910390f35b34801561028c575f80fd5b506102a061029b36600461243f565b61081c565b6040519015158152602001610278565b3480156102bb575f80fd5b506102a06102ca366004612469565b60146020525f908152604090205460ff1681565b3480156102e9575f80fd5b506103117f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610278565b348015610334575f80fd5b506002545b604051908152602001610278565b348015610352575f80fd5b5061033960125481565b348015610367575f80fd5b5061033960115481565b34801561037c575f80fd5b5061039061038b36600461248b565b610832565b005b34801561039d575f80fd5b506102a06103ac3660046124a2565b610941565b3480156103bc575f80fd5b5060405160128152602001610278565b3480156103d7575f80fd5b506102a06103e636600461243f565b6109e9565b3480156103f6575f80fd5b506103117f000000000000000000000000000000000000000000000000000000000000000081565b348015610429575f80fd5b50610390610a24565b34801561043d575f80fd5b50600a546102a090600160a81b900460ff1681565b34801561045d575f80fd5b5061033961046c366004612469565b6001600160a01b03165f9081526020819052604090205490565b348015610491575f80fd5b50610390610ae5565b3480156104a5575f80fd5b506103906104b43660046124ed565b610b58565b3480156104c4575f80fd5b50610339600c5481565b3480156104d9575f80fd5b506102a06104e8366004612524565b610c42565b3480156104f8575f80fd5b50610390610d96565b34801561050c575f80fd5b506005546001600160a01b0316610311565b348015610529575f80fd5b50610339600f5481565b34801561053e575f80fd5b5061026b610e59565b348015610552575f80fd5b506103906105613660046124ed565b610e68565b348015610571575f80fd5b506102a061058036600461243f565b610f47565b348015610590575f80fd5b50600a54610311906001600160a01b031681565b3480156105af575f80fd5b506102a06105be36600461243f565b610fdf565b3480156105ce575f80fd5b5061033960075481565b3480156105e3575f80fd5b506102a06105f2366004612469565b60156020525f908152604090205460ff1681565b348015610611575f80fd5b50600a546102a090600160a01b900460ff1681565b348015610631575f80fd5b506103906106403660046124ed565b610feb565b348015610650575f80fd5b5061039061065f36600461248b565b611073565b34801561066f575f80fd5b5061039061067e366004612550565b611175565b34801561068e575f80fd5b5061033960065481565b3480156106a3575f80fd5b506103906106b236600461248b565b61129e565b3480156106c2575f80fd5b506103396106d1366004612524565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610706575f80fd5b5061039061071536600461257f565b6113f9565b348015610725575f80fd5b5061033960095481565b34801561073a575f80fd5b50610339600d5481565b34801561074f575f80fd5b5061039061075e366004612469565b611441565b34801561076e575f80fd5b5061039061152b565b348015610782575f80fd5b5061033960105481565b60606003805461079b9061259a565b80601f01602080910402602001604051908101604052809291908181526020018280546107c79061259a565b80156108125780601f106107e957610100808354040283529160200191610812565b820191905f5260205f20905b8154815290600101906020018083116107f557829003601f168201915b5050505050905090565b5f61082833848461159f565b5060015b92915050565b6005546001600160a01b031633146108655760405162461bcd60e51b815260040161085c906125d2565b60405180910390fd5b670de0b6b3a764000061271061087a60025490565b61088590601961261b565b61088f9190612632565b6108999190612632565b8110156108f35760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e32604482015261352560f01b606482015260840161085c565b61090581670de0b6b3a764000061261b565b60068190556040519081527f89c099a4e6d77f9ed9839689924c080dcc270b4bc837e2d8979544f19df27d78906020015b60405180910390a150565b5f61094d8484846116c2565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156109d15760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161085c565b6109de853385840361159f565b506001949350505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610828918590610a1f908690612651565b61159f565b6005546001600160a01b03163314610a4e5760405162461bcd60e51b815260040161085c906125d2565b6008805460ff19166001179055610a81610a7c306001600160a01b03165f9081526020819052604090205490565b611dc4565b600a5460405147915f916001600160a01b039091169083908381818185875af1925050503d805f8114610acf576040519150601f19603f3d011682016040523d82523d5f602084013e610ad4565b606091505b50506008805460ff19169055505050565b6005546001600160a01b03163314610b0f5760405162461bcd60e51b815260040161085c906125d2565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610b825760405162461bcd60e51b815260040161085c906125d2565b80610c18577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610c185760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b606482015260840161085c565b6001600160a01b03919091165f908152601460205260409020805460ff1916911515919091179055565b6005545f906001600160a01b03163314610c6e5760405162461bcd60e51b815260040161085c906125d2565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015610cb2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd69190612664565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303815f875af1158015610d26573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d4a919061267b565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b03163314610dc05760405162461bcd60e51b815260040161085c906125d2565b600a54600160a01b900460ff1615610e1a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e67000000000000000000604482015260640161085c565b600a805461ffff60a01b191661010160a01b1790556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb7905f90a1565b60606004805461079b9061259a565b6005546001600160a01b03163314610e925760405162461bcd60e51b815260040161085c906125d2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610f395760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161085c565b610f438282611f7a565b5050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610fc85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161085c565b610fd5338585840361159f565b5060019392505050565b5f6108283384846116c2565b6005546001600160a01b031633146110155760405162461bcd60e51b815260040161085c906125d2565b6001600160a01b0382165f81815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461109d5760405162461bcd60e51b815260040161085c906125d2565b670de0b6b3a76400006127106110b260025490565b6110bd90601961261b565b6110c79190612632565b6110d19190612632565b81101561112e5760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015264302e32352560d81b606482015260840161085c565b61114081670de0b6b3a764000061261b565b60078190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610936565b6005546001600160a01b0316331461119f5760405162461bcd60e51b815260040161085c906125d2565b601e600e5411156112055760405162461bcd60e51b815260206004820152602a60248201527f546f74616c2073656c6c20666565732063616e6e6f742062652067726561746560448201526972207468616e2033302560b01b606482015260840161085c565b601e600b54111561126a5760405162461bcd60e51b815260206004820152602960248201527f546f74616c2062757920666565732063616e6e6f742062652067726561746572604482015268207468616e2033302560b81b606482015260840161085c565b600c849055600d83905561127e8385612651565b600b55600f82905560108190556112958183612651565b600e5550505050565b6005546001600160a01b031633146112c85760405162461bcd60e51b815260040161085c906125d2565b620186a06112d560025490565b6112e090600161261b565b6112ea9190612632565b8110156113575760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161085c565b606461136260025490565b61136d90600361261b565b6113779190612632565b8111156113e15760405162461bcd60e51b815260206004820152603260248201527f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160448201527137101992903a37ba30b61039bab838363c9760711b606482015260840161085c565b6113f381670de0b6b3a764000061261b565b60095550565b6005546001600160a01b031633146114235760405162461bcd60e51b815260040161085c906125d2565b600a8054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b0316331461146b5760405162461bcd60e51b815260040161085c906125d2565b6001600160a01b0381166114d05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161085c565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146115555760405162461bcd60e51b815260040161085c906125d2565b6040515f90339047908381818185875af1925050503d805f8114611594576040519150601f19603f3d011682016040523d82523d5f602084013e611599565b606091505b50505050565b6001600160a01b0383166116015760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161085c565b6001600160a01b0382166116625760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161085c565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116e85760405162461bcd60e51b815260040161085c90612696565b6001600160a01b03821661170e5760405162461bcd60e51b815260040161085c906126db565b5f811161175d5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e2030000000604482015260640161085c565b6005546001600160a01b0384811691161480159061178957506005546001600160a01b03838116911614155b801561179d57506001600160a01b03821615155b80156117b457506001600160a01b03821661dead14155b15611b2057600a54600160a01b900460ff1661184c576001600160a01b0383165f9081526013602052604090205460ff168061180757506001600160a01b0382165f9081526013602052604090205460ff165b61184c5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161085c565b6001600160a01b0383165f9081526015602052604090205460ff16801561188b57506001600160a01b0382165f9081526014602052604090205460ff16155b15611966576006548111156118f35760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b606482015260840161085c565b6007546001600160a01b0383165f908152602081905260409020546119189083612651565b11156119615760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b604482015260640161085c565b611b20565b6001600160a01b0382165f9081526015602052604090205460ff1680156119a557506001600160a01b0383165f9081526014602052604090205460ff16155b15611a0f576006548111156119615760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b606482015260840161085c565b6001600160a01b0382165f9081526014602052604090205460ff16158015611a4f57506001600160a01b0383165f9081526014602052604090205460ff16155b15611b2057600654811115611ab25760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178206044820152632a3c371760e11b606482015260840161085c565b6007546001600160a01b0383165f90815260208190526040902054611ad79083612651565b1115611b205760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b604482015260640161085c565b305f9081526020819052604090205460095481108015908190611b4c5750600a54600160a81b900460ff165b8015611b5b575060085460ff16155b8015611b7f57506001600160a01b0385165f9081526015602052604090205460ff16155b8015611ba357506001600160a01b0385165f9081526013602052604090205460ff16155b8015611bc757506001600160a01b0384165f9081526013602052604090205460ff16155b15611bec576008805460ff19166001179055611be1611fe2565b6008805460ff191690555b6001600160a01b0385165f9081526013602052604090205460019060ff1680611c2c57506001600160a01b0385165f9081526013602052604090205460ff165b15611c3457505f5b5f8115611db0576001600160a01b0386165f9081526015602052604090205460ff168015611c6357505f600e54115b15611ce9576064600e5486611c78919061261b565b611c829190612632565b9050600e5460105482611c95919061261b565b611c9f9190612632565b60125f828254611caf9190612651565b9091555050600e54600f54611cc4908361261b565b611cce9190612632565b60115f828254611cde9190612651565b90915550611d929050565b6001600160a01b0387165f9081526015602052604090205460ff168015611d1157505f600b54115b15611d92576064600b5486611d26919061261b565b611d309190612632565b9050600b54600d5482611d43919061261b565b611d4d9190612632565b60125f828254611d5d9190612651565b9091555050600b54600c54611d72908361261b565b611d7c9190612632565b60115f828254611d8c9190612651565b90915550505b8015611da357611da387308361213b565b611dad818661271e565b94505b611dbb87878761213b565b50505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611df757611df7612731565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e979190612745565b81600181518110611eaa57611eaa612731565b60200260200101906001600160a01b031690816001600160a01b031681525050611ef5307f00000000000000000000000000000000000000000000000000000000000000008461159f565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611f499085905f90869030904290600401612760565b5f604051808303815f87803b158015611f60575f80fd5b505af1158015611f72573d5f803e3d5ffd5b505050505050565b6001600160a01b0382165f908152601560205260409020805460ff1916821515179055611fa7828261228e565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b305f9081526020819052604081205490505f6011546012546120049190612651565b9050811580612011575080155b1561201a575050565b60095461202890600461261b565b8211156120405760095461203d90600461261b565b91505b5f8060028360125486612053919061261b565b61205d9190612632565b6120679190612632565b9050612076610a7c828661271e565b601254479081905f9061208b90600290612632565b612095908761271e565b6011546120a2908561261b565b6120ac9190612632565b90506120b8818361271e565b5f6012819055601155915083158015906120d157505f82115b156120e0576120e084836122f0565b600a546040516001600160a01b039091169047905f81818185875af1925050503d805f811461212a576040519150601f19603f3d011682016040523d82523d5f602084013e61212f565b606091505b50505050505050505050565b6001600160a01b0383166121615760405162461bcd60e51b815260040161085c90612696565b6001600160a01b0382166121875760405162461bcd60e51b815260040161085c906126db565b6001600160a01b0383165f90815260208190526040902054818110156121fe5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161085c565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290612234908490612651565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161228091815260200190565b60405180910390a350505050565b6001600160a01b0382165f81815260146020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b61231b307f00000000000000000000000000000000000000000000000000000000000000008461159f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7198230855f806123616005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156123c7573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906123ec91906127d1565b5050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461243c575f80fd5b50565b5f8060408385031215612450575f80fd5b823561245b81612428565b946020939093013593505050565b5f60208284031215612479575f80fd5b813561248481612428565b9392505050565b5f6020828403121561249b575f80fd5b5035919050565b5f805f606084860312156124b4575f80fd5b83356124bf81612428565b925060208401356124cf81612428565b929592945050506040919091013590565b801515811461243c575f80fd5b5f80604083850312156124fe575f80fd5b823561250981612428565b91506020830135612519816124e0565b809150509250929050565b5f8060408385031215612535575f80fd5b823561254081612428565b9150602083013561251981612428565b5f805f8060808587031215612563575f80fd5b5050823594602084013594506040840135936060013592509050565b5f6020828403121561258f575f80fd5b8135612484816124e0565b600181811c908216806125ae57607f821691505b6020821081036125cc57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761082c5761082c612607565b5f8261264c57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561082c5761082c612607565b5f60208284031215612674575f80fd5b5051919050565b5f6020828403121561268b575f80fd5b8151612484816124e0565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561082c5761082c612607565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612755575f80fd5b815161248481612428565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156127b05784516001600160a01b03168352938301939183019160010161278b565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156127e3575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220aaf830185432f2804b80da3cd173b2ed90a56a329f6ed841cff0614c7f0c9be664736f6c634300081900334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
Deployed Bytecode
0x60806040526004361061024c575f3560e01c80639213691311610134578063c18bc195116100b3578063e01af92c11610078578063e01af92c146106fb578063e2f456051461071a578063f11a24d31461072f578063f2fde38b14610744578063f5648a4f14610763578063f637434214610777575f80fd5b8063c18bc19514610645578063c6616ba114610664578063cf46f24c14610683578063d257b34f14610698578063dd62ed3e146106b7575f80fd5b8063a9059cbb116100f9578063a9059cbb146105a4578063aa4bde28146105c3578063b62496f5146105d8578063bbc0c74214610606578063c024666814610626575f80fd5b8063921369131461051e57806395d89b41146105335780639a7a23d614610547578063a457c2d714610566578063a5ece94114610585575f80fd5b806339509351116101cb578063715018a611610190578063715018a6146104865780637571336a1461049a5780637bce5a04146104b95780638366e79a146104ce5780638a8c523c146104ed5780638da5cb5b14610501575f80fd5b806339509351146103cc57806349bd5a5e146103eb57806367c453491461041e5780636ddd17131461043257806370a0823114610452575f80fd5b80631a8145bb116102115780631a8145bb146103475780631f3fed8f1461035c578063203e727e1461037157806323b872dd14610392578063313ce567146103b1575f80fd5b806306fdde0314610257578063095ea7b31461028157806310d5de53146102b05780631694505e146102de57806318160ddd14610329575f80fd5b3661025357005b5f80fd5b348015610262575f80fd5b5061026b61078c565b60405161027891906123f3565b60405180910390f35b34801561028c575f80fd5b506102a061029b36600461243f565b61081c565b6040519015158152602001610278565b3480156102bb575f80fd5b506102a06102ca366004612469565b60146020525f908152604090205460ff1681565b3480156102e9575f80fd5b506103117f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610278565b348015610334575f80fd5b506002545b604051908152602001610278565b348015610352575f80fd5b5061033960125481565b348015610367575f80fd5b5061033960115481565b34801561037c575f80fd5b5061039061038b36600461248b565b610832565b005b34801561039d575f80fd5b506102a06103ac3660046124a2565b610941565b3480156103bc575f80fd5b5060405160128152602001610278565b3480156103d7575f80fd5b506102a06103e636600461243f565b6109e9565b3480156103f6575f80fd5b506103117f000000000000000000000000623ff662b5df31631c7cccacacc4d4f608a50c0881565b348015610429575f80fd5b50610390610a24565b34801561043d575f80fd5b50600a546102a090600160a81b900460ff1681565b34801561045d575f80fd5b5061033961046c366004612469565b6001600160a01b03165f9081526020819052604090205490565b348015610491575f80fd5b50610390610ae5565b3480156104a5575f80fd5b506103906104b43660046124ed565b610b58565b3480156104c4575f80fd5b50610339600c5481565b3480156104d9575f80fd5b506102a06104e8366004612524565b610c42565b3480156104f8575f80fd5b50610390610d96565b34801561050c575f80fd5b506005546001600160a01b0316610311565b348015610529575f80fd5b50610339600f5481565b34801561053e575f80fd5b5061026b610e59565b348015610552575f80fd5b506103906105613660046124ed565b610e68565b348015610571575f80fd5b506102a061058036600461243f565b610f47565b348015610590575f80fd5b50600a54610311906001600160a01b031681565b3480156105af575f80fd5b506102a06105be36600461243f565b610fdf565b3480156105ce575f80fd5b5061033960075481565b3480156105e3575f80fd5b506102a06105f2366004612469565b60156020525f908152604090205460ff1681565b348015610611575f80fd5b50600a546102a090600160a01b900460ff1681565b348015610631575f80fd5b506103906106403660046124ed565b610feb565b348015610650575f80fd5b5061039061065f36600461248b565b611073565b34801561066f575f80fd5b5061039061067e366004612550565b611175565b34801561068e575f80fd5b5061033960065481565b3480156106a3575f80fd5b506103906106b236600461248b565b61129e565b3480156106c2575f80fd5b506103396106d1366004612524565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610706575f80fd5b5061039061071536600461257f565b6113f9565b348015610725575f80fd5b5061033960095481565b34801561073a575f80fd5b50610339600d5481565b34801561074f575f80fd5b5061039061075e366004612469565b611441565b34801561076e575f80fd5b5061039061152b565b348015610782575f80fd5b5061033960105481565b60606003805461079b9061259a565b80601f01602080910402602001604051908101604052809291908181526020018280546107c79061259a565b80156108125780601f106107e957610100808354040283529160200191610812565b820191905f5260205f20905b8154815290600101906020018083116107f557829003601f168201915b5050505050905090565b5f61082833848461159f565b5060015b92915050565b6005546001600160a01b031633146108655760405162461bcd60e51b815260040161085c906125d2565b60405180910390fd5b670de0b6b3a764000061271061087a60025490565b61088590601961261b565b61088f9190612632565b6108999190612632565b8110156108f35760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e32604482015261352560f01b606482015260840161085c565b61090581670de0b6b3a764000061261b565b60068190556040519081527f89c099a4e6d77f9ed9839689924c080dcc270b4bc837e2d8979544f19df27d78906020015b60405180910390a150565b5f61094d8484846116c2565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156109d15760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161085c565b6109de853385840361159f565b506001949350505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610828918590610a1f908690612651565b61159f565b6005546001600160a01b03163314610a4e5760405162461bcd60e51b815260040161085c906125d2565b6008805460ff19166001179055610a81610a7c306001600160a01b03165f9081526020819052604090205490565b611dc4565b600a5460405147915f916001600160a01b039091169083908381818185875af1925050503d805f8114610acf576040519150601f19603f3d011682016040523d82523d5f602084013e610ad4565b606091505b50506008805460ff19169055505050565b6005546001600160a01b03163314610b0f5760405162461bcd60e51b815260040161085c906125d2565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610b825760405162461bcd60e51b815260040161085c906125d2565b80610c18577f000000000000000000000000623ff662b5df31631c7cccacacc4d4f608a50c086001600160a01b0316826001600160a01b031603610c185760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b606482015260840161085c565b6001600160a01b03919091165f908152601460205260409020805460ff1916911515919091179055565b6005545f906001600160a01b03163314610c6e5760405162461bcd60e51b815260040161085c906125d2565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015610cb2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd69190612664565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303815f875af1158015610d26573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d4a919061267b565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b03163314610dc05760405162461bcd60e51b815260040161085c906125d2565b600a54600160a01b900460ff1615610e1a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e67000000000000000000604482015260640161085c565b600a805461ffff60a01b191661010160a01b1790556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb7905f90a1565b60606004805461079b9061259a565b6005546001600160a01b03163314610e925760405162461bcd60e51b815260040161085c906125d2565b7f000000000000000000000000623ff662b5df31631c7cccacacc4d4f608a50c086001600160a01b0316826001600160a01b031603610f395760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000606482015260840161085c565b610f438282611f7a565b5050565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610fc85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161085c565b610fd5338585840361159f565b5060019392505050565b5f6108283384846116c2565b6005546001600160a01b031633146110155760405162461bcd60e51b815260040161085c906125d2565b6001600160a01b0382165f81815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461109d5760405162461bcd60e51b815260040161085c906125d2565b670de0b6b3a76400006127106110b260025490565b6110bd90601961261b565b6110c79190612632565b6110d19190612632565b81101561112e5760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015264302e32352560d81b606482015260840161085c565b61114081670de0b6b3a764000061261b565b60078190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610936565b6005546001600160a01b0316331461119f5760405162461bcd60e51b815260040161085c906125d2565b601e600e5411156112055760405162461bcd60e51b815260206004820152602a60248201527f546f74616c2073656c6c20666565732063616e6e6f742062652067726561746560448201526972207468616e2033302560b01b606482015260840161085c565b601e600b54111561126a5760405162461bcd60e51b815260206004820152602960248201527f546f74616c2062757920666565732063616e6e6f742062652067726561746572604482015268207468616e2033302560b81b606482015260840161085c565b600c849055600d83905561127e8385612651565b600b55600f82905560108190556112958183612651565b600e5550505050565b6005546001600160a01b031633146112c85760405162461bcd60e51b815260040161085c906125d2565b620186a06112d560025490565b6112e090600161261b565b6112ea9190612632565b8110156113575760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161085c565b606461136260025490565b61136d90600361261b565b6113779190612632565b8111156113e15760405162461bcd60e51b815260206004820152603260248201527f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160448201527137101992903a37ba30b61039bab838363c9760711b606482015260840161085c565b6113f381670de0b6b3a764000061261b565b60095550565b6005546001600160a01b031633146114235760405162461bcd60e51b815260040161085c906125d2565b600a8054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b0316331461146b5760405162461bcd60e51b815260040161085c906125d2565b6001600160a01b0381166114d05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161085c565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146115555760405162461bcd60e51b815260040161085c906125d2565b6040515f90339047908381818185875af1925050503d805f8114611594576040519150601f19603f3d011682016040523d82523d5f602084013e611599565b606091505b50505050565b6001600160a01b0383166116015760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161085c565b6001600160a01b0382166116625760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161085c565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116e85760405162461bcd60e51b815260040161085c90612696565b6001600160a01b03821661170e5760405162461bcd60e51b815260040161085c906126db565b5f811161175d5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e2030000000604482015260640161085c565b6005546001600160a01b0384811691161480159061178957506005546001600160a01b03838116911614155b801561179d57506001600160a01b03821615155b80156117b457506001600160a01b03821661dead14155b15611b2057600a54600160a01b900460ff1661184c576001600160a01b0383165f9081526013602052604090205460ff168061180757506001600160a01b0382165f9081526013602052604090205460ff165b61184c5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161085c565b6001600160a01b0383165f9081526015602052604090205460ff16801561188b57506001600160a01b0382165f9081526014602052604090205460ff16155b15611966576006548111156118f35760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b606482015260840161085c565b6007546001600160a01b0383165f908152602081905260409020546119189083612651565b11156119615760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b604482015260640161085c565b611b20565b6001600160a01b0382165f9081526015602052604090205460ff1680156119a557506001600160a01b0383165f9081526014602052604090205460ff16155b15611a0f576006548111156119615760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b606482015260840161085c565b6001600160a01b0382165f9081526014602052604090205460ff16158015611a4f57506001600160a01b0383165f9081526014602052604090205460ff16155b15611b2057600654811115611ab25760405162461bcd60e51b8152602060048201526024808201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178206044820152632a3c371760e11b606482015260840161085c565b6007546001600160a01b0383165f90815260208190526040902054611ad79083612651565b1115611b205760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b604482015260640161085c565b305f9081526020819052604090205460095481108015908190611b4c5750600a54600160a81b900460ff165b8015611b5b575060085460ff16155b8015611b7f57506001600160a01b0385165f9081526015602052604090205460ff16155b8015611ba357506001600160a01b0385165f9081526013602052604090205460ff16155b8015611bc757506001600160a01b0384165f9081526013602052604090205460ff16155b15611bec576008805460ff19166001179055611be1611fe2565b6008805460ff191690555b6001600160a01b0385165f9081526013602052604090205460019060ff1680611c2c57506001600160a01b0385165f9081526013602052604090205460ff165b15611c3457505f5b5f8115611db0576001600160a01b0386165f9081526015602052604090205460ff168015611c6357505f600e54115b15611ce9576064600e5486611c78919061261b565b611c829190612632565b9050600e5460105482611c95919061261b565b611c9f9190612632565b60125f828254611caf9190612651565b9091555050600e54600f54611cc4908361261b565b611cce9190612632565b60115f828254611cde9190612651565b90915550611d929050565b6001600160a01b0387165f9081526015602052604090205460ff168015611d1157505f600b54115b15611d92576064600b5486611d26919061261b565b611d309190612632565b9050600b54600d5482611d43919061261b565b611d4d9190612632565b60125f828254611d5d9190612651565b9091555050600b54600c54611d72908361261b565b611d7c9190612632565b60115f828254611d8c9190612651565b90915550505b8015611da357611da387308361213b565b611dad818661271e565b94505b611dbb87878761213b565b50505050505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611df757611df7612731565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e979190612745565b81600181518110611eaa57611eaa612731565b60200260200101906001600160a01b031690816001600160a01b031681525050611ef5307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461159f565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611f499085905f90869030904290600401612760565b5f604051808303815f87803b158015611f60575f80fd5b505af1158015611f72573d5f803e3d5ffd5b505050505050565b6001600160a01b0382165f908152601560205260409020805460ff1916821515179055611fa7828261228e565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b305f9081526020819052604081205490505f6011546012546120049190612651565b9050811580612011575080155b1561201a575050565b60095461202890600461261b565b8211156120405760095461203d90600461261b565b91505b5f8060028360125486612053919061261b565b61205d9190612632565b6120679190612632565b9050612076610a7c828661271e565b601254479081905f9061208b90600290612632565b612095908761271e565b6011546120a2908561261b565b6120ac9190612632565b90506120b8818361271e565b5f6012819055601155915083158015906120d157505f82115b156120e0576120e084836122f0565b600a546040516001600160a01b039091169047905f81818185875af1925050503d805f811461212a576040519150601f19603f3d011682016040523d82523d5f602084013e61212f565b606091505b50505050505050505050565b6001600160a01b0383166121615760405162461bcd60e51b815260040161085c90612696565b6001600160a01b0382166121875760405162461bcd60e51b815260040161085c906126db565b6001600160a01b0383165f90815260208190526040902054818110156121fe5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161085c565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290612234908490612651565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161228091815260200190565b60405180910390a350505050565b6001600160a01b0382165f81815260146020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b61231b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461159f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d7198230855f806123616005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156123c7573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906123ec91906127d1565b5050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461243c575f80fd5b50565b5f8060408385031215612450575f80fd5b823561245b81612428565b946020939093013593505050565b5f60208284031215612479575f80fd5b813561248481612428565b9392505050565b5f6020828403121561249b575f80fd5b5035919050565b5f805f606084860312156124b4575f80fd5b83356124bf81612428565b925060208401356124cf81612428565b929592945050506040919091013590565b801515811461243c575f80fd5b5f80604083850312156124fe575f80fd5b823561250981612428565b91506020830135612519816124e0565b809150509250929050565b5f8060408385031215612535575f80fd5b823561254081612428565b9150602083013561251981612428565b5f805f8060808587031215612563575f80fd5b5050823594602084013594506040840135936060013592509050565b5f6020828403121561258f575f80fd5b8135612484816124e0565b600181811c908216806125ae57607f821691505b6020821081036125cc57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761082c5761082c612607565b5f8261264c57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561082c5761082c612607565b5f60208284031215612674575f80fd5b5051919050565b5f6020828403121561268b575f80fd5b8151612484816124e0565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561082c5761082c612607565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612755575f80fd5b815161248481612428565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156127b05784516001600160a01b03168352938301939183019160010161278b565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156127e3575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220aaf830185432f2804b80da3cd173b2ed90a56a329f6ed841cff0614c7f0c9be664736f6c63430008190033
Deployed Bytecode Sourcemap
9321:13140:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3959:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4873:169;;;;;;;;;;-1:-1:-1;4873:169:0;;;;;:::i;:::-;;:::i;:::-;;;1058:14:1;;1051:22;1033:41;;1021:2;1006:18;4873:169:0;893:187:1;10295:64:0;;;;;;;;;;-1:-1:-1;10295:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9436:43;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1519:32:1;;;1501:51;;1489:2;1474:18;9436:43:0;1337:221:1;4280:108:0;;;;;;;;;;-1:-1:-1;4368:12:0;;4280:108;;;1709:25:1;;;1697:2;1682:18;4280:108:0;1563:177:1;10109:33:0;;;;;;;;;;;;;;;;10069;;;;;;;;;;;;;;;;13062:264;;;;;;;;;;-1:-1:-1;13062:264:0;;;;;:::i;:::-;;:::i;:::-;;5050:492;;;;;;;;;;-1:-1:-1;5050:492:0;;;;;:::i;:::-;;:::i;4179:93::-;;;;;;;;;;-1:-1:-1;4179:93:0;;4262:2;2533:36:1;;2521:2;2506:18;4179:93:0;2391:184:1;5550:215:0;;;;;;;;;;-1:-1:-1;5550:215:0;;;;;:::i;:::-;;:::i;9486:38::-;;;;;;;;;;;;;;;22158:295;;;;;;;;;;;;;:::i;9790:31::-;;;;;;;;;;-1:-1:-1;9790:31:0;;;;-1:-1:-1;;;9790:31:0;;;;;;4396:127;;;;;;;;;;-1:-1:-1;4396:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;4497:18:0;4470:7;4497:18;;;;;;;;;;;;4396:127;8040:150;;;;;;;;;;;;;:::i;14270:267::-;;;;;;;;;;-1:-1:-1;14270:267:0;;;;;:::i;:::-;;:::i;9875:30::-;;;;;;;;;;;;;;;;21609:311;;;;;;;;;;-1:-1:-1;21609:311:0;;;;;:::i;:::-;;:::i;12840:205::-;;;;;;;;;;;;;:::i;7826:79::-;;;;;;;;;;-1:-1:-1;7891:6:0;;-1:-1:-1;;;;;7891:6:0;7826:79;;9989:31;;;;;;;;;;;;;;;;4067:104;;;;;;;;;;;;;:::i;14545:246::-;;;;;;;;;;-1:-1:-1;14545:246:0;;;;;:::i;:::-;;:::i;5773:413::-;;;;;;;;;;-1:-1:-1;5773:413:0;;;;;:::i;:::-;;:::i;9708:31::-;;;;;;;;;;-1:-1:-1;9708:31:0;;;;-1:-1:-1;;;;;9708:31:0;;;4531:175;;;;;;;;;;-1:-1:-1;4531:175:0;;;;;:::i;:::-;;:::i;9397:30::-;;;;;;;;;;;;;;;;10519:58;;;;;;;;;;-1:-1:-1;10519:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9750:33;;;;;;;;;;-1:-1:-1;9750:33:0;;;;-1:-1:-1;;;9750:33:0;;;;;;15848:182;;;;;;;;;;-1:-1:-1;15848:182:0;;;;;:::i;:::-;;:::i;13334:279::-;;;;;;;;;;-1:-1:-1;13334:279:0;;;;;:::i;:::-;;:::i;15055:638::-;;;;;;;;;;-1:-1:-1;15055:638:0;;;;;:::i;:::-;;:::i;9363:27::-;;;;;;;;;;;;;;;;13683:356;;;;;;;;;;-1:-1:-1;13683:356:0;;;;;:::i;:::-;;:::i;4714:151::-;;;;;;;;;;-1:-1:-1;4714:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;4830:18:0;;;4803:7;4830:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4714:151;15702:138;;;;;;;;;;-1:-1:-1;15702:138:0;;;;;:::i;:::-;;:::i;9561:33::-;;;;;;;;;;;;;;;;9912:30;;;;;;;;;;;;;;;;8198:244;;;;;;;;;;-1:-1:-1;8198:244:0;;;;;:::i;:::-;;:::i;21990:160::-;;;;;;;;;;;;;:::i;10027:31::-;;;;;;;;;;;;;;;;3959:100;4013:13;4046:5;4039:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3959:100;:::o;4873:169::-;4956:4;4973:39;306:10;4996:7;5005:6;4973:8;:39::i;:::-;-1:-1:-1;5030:4:0;4873:169;;;;;:::o;13062:264::-;7953:6;;-1:-1:-1;;;;;7953:6:0;306:10;7953:22;7945:67;;;;-1:-1:-1;;;7945:67:0;;;;;;;:::i;:::-;;;;;;;;;13183:4:::1;13176:5;13155:13;4368:12:::0;;;4280:108;13155:13:::1;:18;::::0;13171:2:::1;13155:18;:::i;:::-;:26;;;;:::i;:::-;13154:33;;;;:::i;:::-;13144:6;:43;;13136:90;;;::::0;-1:-1:-1;;;13136:90:0;;5802:2:1;13136:90:0::1;::::0;::::1;5784:21:1::0;5841:2;5821:18;;;5814:30;5880:34;5860:18;;;5853:62;-1:-1:-1;;;5931:18:1;;;5924:32;5973:19;;13136:90:0::1;5600:398:1::0;13136:90:0::1;13252:17;:6:::0;13262::::1;13252:17;:::i;:::-;13237:12;:32:::0;;;13285:33:::1;::::0;1709:25:1;;;13285:33:0::1;::::0;1697:2:1;1682:18;13285:33:0::1;;;;;;;;13062:264:::0;:::o;5050:492::-;5190:4;5207:36;5217:6;5225:9;5236:6;5207:9;:36::i;:::-;-1:-1:-1;;;;;5283:19:0;;5256:24;5283:19;;;:11;:19;;;;;;;;306:10;5283:33;;;;;;;;5335:26;;;;5327:79;;;;-1:-1:-1;;;5327:79:0;;6205:2:1;5327:79:0;;;6187:21:1;6244:2;6224:18;;;6217:30;6283:34;6263:18;;;6256:62;-1:-1:-1;;;6334:18:1;;;6327:38;6382:19;;5327:79:0;6003:404:1;5327:79:0;5442:57;5451:6;306:10;5492:6;5473:16;:25;5442:8;:57::i;:::-;-1:-1:-1;5530:4:0;;5050:492;-1:-1:-1;;;;5050:492:0:o;5550:215::-;306:10;5638:4;5687:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5687:34:0;;;;;;;;;;5638:4;;5655:80;;5678:7;;5687:47;;5724:10;;5687:47;:::i;:::-;5655:8;:80::i;22158:295::-;7953:6;;-1:-1:-1;;;;;7953:6:0;306:10;7953:22;7945:67;;;;-1:-1:-1;;;7945:67:0;;;;;;;:::i;:::-;9638:8:::1;:15:::0;;-1:-1:-1;;9638:15:0::1;9649:4;9638:15;::::0;;22217:66:::2;22248:24;22266:4;-1:-1:-1::0;;;;;4497:18:0;4470:7;4497:18;;;;;;;;;;;;4396:127;22248:24:::2;22217:16;:66::i;:::-;22392:16;::::0;22384:53:::2;::::0;22315:21:::2;::::0;22294:18:::2;::::0;-1:-1:-1;;;;;22392:16:0;;::::2;::::0;22315:21;;22294:18;22384:53;22294:18;22384:53;22315:21;22392:16;22384:53:::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;9676:8:0::1;:16:::0;;-1:-1:-1;;9676:16:0::1;::::0;;-1:-1:-1;;;22158:295:0:o;8040:150::-;7953:6;;-1:-1:-1;;;;;7953:6:0;306:10;7953:22;7945:67;;;;-1:-1:-1;;;7945:67:0;;;;;;;:::i;:::-;8133:6:::1;::::0;8112:40:::1;::::0;8149:1:::1;::::0;-1:-1:-1;;;;;8133:6:0::1;::::0;8112:40:::1;::::0;8149:1;;8112:40:::1;8163:6;:19:::0;;-1:-1:-1;;;;;;8163:19:0::1;::::0;;8040:150::o;14270:267::-;7953:6;;-1:-1:-1;;;;;7953:6:0;306:10;7953:22;7945:67;;;;-1:-1:-1;;;7945:67:0;;;;;;;:::i;:::-;14366:4:::1;14362:111;;14404:13;-1:-1:-1::0;;;;;14394:23:0::1;:6;-1:-1:-1::0;;;;;14394:23:0::1;::::0;14386:75:::1;;;::::0;-1:-1:-1;;;14386:75:0;;6954:2:1;14386:75:0::1;::::0;::::1;6936:21:1::0;6993:2;6973:18;;;6966:30;7032:34;7012:18;;;7005:62;-1:-1:-1;;;7083:18:1;;;7076:37;7130:19;;14386:75:0::1;6752:403:1::0;14386:75:0::1;-1:-1:-1::0;;;;;14483:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;14483:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14270:267::o;21609:311::-;7953:6;;21696:10;;-1:-1:-1;;;;;7953:6:0;306:10;7953:22;7945:67;;;;-1:-1:-1;;;7945:67:0;;;;;;;:::i;:::-;21746:39:::1;::::0;-1:-1:-1;;;21746:39:0;;21779:4:::1;21746:39;::::0;::::1;1501:51:1::0;21719:24:0::1;::::0;-1:-1:-1;;;;;21746:24:0;::::1;::::0;::::1;::::0;1474:18:1;;21746:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21804:46;::::0;-1:-1:-1;;;21804:46:0;;-1:-1:-1;;;;;7541:32:1;;;21804:46:0::1;::::0;::::1;7523:51:1::0;7590:18;;;7583:34;;;21719:66:0;;-1:-1:-1;21804:23:0;;::::1;::::0;::::1;::::0;7496:18:1;;21804:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21866;::::0;;-1:-1:-1;;;;;7541:32:1;;7523:51;;7605:2;7590:18;;7583:34;;;21796:54:0;;-1:-1:-1;21866:46:0::1;::::0;7496:18:1;21866:46:0::1;;;;;;;21708:212;21609:311:::0;;;;:::o;12840:205::-;7953:6;;-1:-1:-1;;;;;7953:6:0;306:10;7953:22;7945:67;;;;-1:-1:-1;;;7945:67:0;;;;;;;:::i;:::-;12904:13:::1;::::0;-1:-1:-1;;;12904:13:0;::::1;;;12903:14;12895:50;;;::::0;-1:-1:-1;;;12895:50:0;;8080:2:1;12895:50:0::1;::::0;::::1;8062:21:1::0;8119:2;8099:18;;;8092:30;8158:25;8138:18;;;8131:53;8201:18;;12895:50:0::1;7878:347:1::0;12895:50:0::1;12956:13;:20:::0;;-1:-1:-1;;;;12987:18:0;-1:-1:-1;;;12987:18:0;;;13021:16:::1;::::0;::::1;::::0;-1:-1:-1;;13021:16:0::1;12840:205::o:0;4067:104::-;4123:13;4156:7;4149:14;;;;;:::i;14545:246::-;7953:6;;-1:-1:-1;;;;;7953:6:0;306:10;7953:22;7945:67;;;;-1:-1:-1;;;7945:67:0;;;;;;;:::i;:::-;14654:13:::1;-1:-1:-1::0;;;;;14646:21:0::1;:4;-1:-1:-1::0;;;;;14646:21:0::1;::::0;14638:91:::1;;;::::0;-1:-1:-1;;;14638:91:0;;8432:2:1;14638:91:0::1;::::0;::::1;8414:21:1::0;8471:2;8451:18;;;8444:30;8510:34;8490:18;;;8483:62;8581:27;8561:18;;;8554:55;8626:19;;14638:91:0::1;8230:421:1::0;14638:91:0::1;14742:41;14771:4;14777:5;14742:28;:41::i;:::-;14545:246:::0;;:::o;5773:413::-;306:10;5866:4;5910:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5910:34:0;;;;;;;;;;5963:35;;;;5955:85;;;;-1:-1:-1;;;5955:85:0;;8858:2:1;5955:85:0;;;8840:21:1;8897:2;8877:18;;;8870:30;8936:34;8916:18;;;8909:62;-1:-1:-1;;;8987:18:1;;;8980:35;9032:19;;5955:85:0;8656:401:1;5955:85:0;6076:67;306:10;6099:7;6127:15;6108:16;:34;6076:8;:67::i;:::-;-1:-1:-1;6174:4:0;;5773:413;-1:-1:-1;;;5773:413:0:o;4531:175::-;4617:4;4634:42;306:10;4658:9;4669:6;4634:9;:42::i;15848:182::-;7953:6;;-1:-1:-1;;;;;7953:6:0;306:10;7953:22;7945:67;;;;-1:-1:-1;;;7945:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15933:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;15933:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;15988:34;;1033:41:1;;;15988:34:0::1;::::0;1006:18:1;15988:34:0::1;;;;;;;15848:182:::0;;:::o;13334:279::-;7953:6;;-1:-1:-1;;;;;7953:6:0;306:10;7953:22;7945:67;;;;-1:-1:-1;;;7945:67:0;;;;;;;:::i;:::-;13458:4:::1;13451:5;13430:13;4368:12:::0;;;4280:108;13430:13:::1;:18;::::0;13446:2:::1;13430:18;:::i;:::-;:26;;;;:::i;:::-;13429:33;;;;:::i;:::-;13419:6;:43;;13411:93;;;::::0;-1:-1:-1;;;13411:93:0;;9264:2:1;13411:93:0::1;::::0;::::1;9246:21:1::0;9303:2;9283:18;;;9276:30;9342:34;9322:18;;;9315:62;-1:-1:-1;;;9393:18:1;;;9386:35;9438:19;;13411:93:0::1;9062:401:1::0;13411:93:0::1;13533:17;:6:::0;13543::::1;13533:17;:::i;:::-;13515:15;:35:::0;;;13566:39:::1;::::0;1709:25:1;;;13566:39:0::1;::::0;1697:2:1;1682:18;13566:39:0::1;1563:177:1::0;15055:638:0;7953:6;;-1:-1:-1;;;;;7953:6:0;306:10;7953:22;7945:67;;;;-1:-1:-1;;;7945:67:0;;;;;;;:::i;:::-;15238:2:::1;15220:13;;15219:21;;15211:75;;;::::0;-1:-1:-1;;;15211:75:0;;9670:2:1;15211:75:0::1;::::0;::::1;9652:21:1::0;9709:2;9689:18;;;9682:30;9748:34;9728:18;;;9721:62;-1:-1:-1;;;9799:18:1;;;9792:40;9849:19;;15211:75:0::1;9468:406:1::0;15211:75:0::1;15323:2;15306:12;;15305:20;;15297:73;;;::::0;-1:-1:-1;;;15297:73:0;;10081:2:1;15297:73:0::1;::::0;::::1;10063:21:1::0;10120:2;10100:18;;;10093:30;10159:34;10139:18;;;10132:62;-1:-1:-1;;;10210:18:1;;;10203:39;10259:19;;15297:73:0::1;9879:405:1::0;15297:73:0::1;15381:15;:34:::0;;;15426:15:::1;:34:::0;;;15486:33:::1;15444:16:::0;15399;15486:33:::1;:::i;:::-;15471:12;:48:::0;15530:16:::1;:36:::0;;;15577:16:::1;:36:::0;;;15640:35:::1;15596:17:::0;15549;15640:35:::1;:::i;:::-;15624:13;:51:::0;-1:-1:-1;;;;15055:638:0:o;13683:356::-;7953:6;;-1:-1:-1;;;;;7953:6:0;306:10;7953:22;7945:67;;;;-1:-1:-1;;;7945:67:0;;;;;;;:::i;:::-;13807:6:::1;13787:13;4368:12:::0;;;4280:108;13787:13:::1;:17;::::0;13803:1:::1;13787:17;:::i;:::-;:26;;;;:::i;:::-;13774:9;:39;;13766:105;;;::::0;-1:-1:-1;;;13766:105:0;;10491:2:1;13766:105:0::1;::::0;::::1;10473:21:1::0;10530:2;10510:18;;;10503:30;10569:34;10549:18;;;10542:62;-1:-1:-1;;;10620:18:1;;;10613:51;10681:19;;13766:105:0::1;10289:417:1::0;13766:105:0::1;13923:3;13903:13;4368:12:::0;;;4280:108;13903:13:::1;:17;::::0;13919:1:::1;13903:17;:::i;:::-;:23;;;;:::i;:::-;13890:9;:36;;13882:99;;;::::0;-1:-1:-1;;;13882:99:0;;10913:2:1;13882:99:0::1;::::0;::::1;10895:21:1::0;10952:2;10932:18;;;10925:30;10991:34;10971:18;;;10964:62;-1:-1:-1;;;11042:18:1;;;11035:48;11100:19;;13882:99:0::1;10711:414:1::0;13882:99:0::1;14012:20;:9:::0;14025:6:::1;14012:20;:::i;:::-;13991:18;:41:::0;-1:-1:-1;13683:356:0:o;15702:138::-;7953:6;;-1:-1:-1;;;;;7953:6:0;306:10;7953:22;7945:67;;;;-1:-1:-1;;;7945:67:0;;;;;;;:::i;:::-;15813:11:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;15813:19:0::1;-1:-1:-1::0;;;;15813:19:0;;::::1;::::0;;;::::1;::::0;;15702:138::o;8198:244::-;7953:6;;-1:-1:-1;;;;;7953:6:0;306:10;7953:22;7945:67;;;;-1:-1:-1;;;7945:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8287:22:0;::::1;8279:73;;;::::0;-1:-1:-1;;;8279:73:0;;11332:2:1;8279:73:0::1;::::0;::::1;11314:21:1::0;11371:2;11351:18;;;11344:30;11410:34;11390:18;;;11383:62;-1:-1:-1;;;11461:18:1;;;11454:36;11507:19;;8279:73:0::1;11130:402:1::0;8279:73:0::1;8389:6;::::0;8368:38:::1;::::0;-1:-1:-1;;;;;8368:38:0;;::::1;::::0;8389:6:::1;::::0;8368:38:::1;::::0;8389:6:::1;::::0;8368:38:::1;8417:6;:17:::0;;-1:-1:-1;;;;;;8417:17:0::1;-1:-1:-1::0;;;;;8417:17:0;;;::::1;::::0;;;::::1;::::0;;8198:244::o;21990:160::-;7953:6;;-1:-1:-1;;;;;7953:6:0;306:10;7953:22;7945:67;;;;-1:-1:-1;;;7945:67:0;;;;;;;:::i;:::-;22084:58:::1;::::0;22048:12:::1;::::0;22092:10:::1;::::0;22116:21:::1;::::0;22048:12;22084:58;22048:12;22084:58;22116:21;22092:10;22084:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;21990:160:0:o;7115:380::-;-1:-1:-1;;;;;7251:19:0;;7243:68;;;;-1:-1:-1;;;7243:68:0;;11739:2:1;7243:68:0;;;11721:21:1;11778:2;11758:18;;;11751:30;11817:34;11797:18;;;11790:62;-1:-1:-1;;;11868:18:1;;;11861:34;11912:19;;7243:68:0;11537:400:1;7243:68:0;-1:-1:-1;;;;;7330:21:0;;7322:68;;;;-1:-1:-1;;;7322:68:0;;12144:2:1;7322:68:0;;;12126:21:1;12183:2;12163:18;;;12156:30;12222:34;12202:18;;;12195:62;-1:-1:-1;;;12273:18:1;;;12266:32;12315:19;;7322:68:0;11942:398:1;7322:68:0;-1:-1:-1;;;;;7403:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7455:32;;1709:25:1;;;7455:32:0;;1682:18:1;7455:32:0;;;;;;;7115:380;;;:::o;16038:3205::-;-1:-1:-1;;;;;16138:18:0;;16130:68;;;;-1:-1:-1;;;16130:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16217:16:0;;16209:64;;;;-1:-1:-1;;;16209:64:0;;;;;;;:::i;:::-;16301:1;16292:6;:10;16284:52;;;;-1:-1:-1;;;16284:52:0;;13357:2:1;16284:52:0;;;13339:21:1;13396:2;13376:18;;;13369:30;13435:31;13415:18;;;13408:59;13484:18;;16284:52:0;13155:353:1;16284:52:0;7891:6;;-1:-1:-1;;;;;16382:15:0;;;7891:6;;16382:15;;;;:32;;-1:-1:-1;7891:6:0;;-1:-1:-1;;;;;16401:13:0;;;7891:6;;16401:13;;16382:32;:52;;;;-1:-1:-1;;;;;;16418:16:0;;;;16382:52;:77;;;;-1:-1:-1;;;;;;16438:21:0;;16452:6;16438:21;;16382:77;16378:1220;;;16483:13;;-1:-1:-1;;;16483:13:0;;;;16479:148;;-1:-1:-1;;;;;16528:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;16557:23:0;;;;;;:19;:23;;;;;;;;16528:52;16520:87;;;;-1:-1:-1;;;16520:87:0;;13715:2:1;16520:87:0;;;13697:21:1;13754:2;13734:18;;;13727:30;-1:-1:-1;;;13773:18:1;;;13766:52;13835:18;;16520:87:0;13513:346:1;16520:87:0;-1:-1:-1;;;;;16707:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;16743:35:0;;;;;;:31;:35;;;;;;;;16742:36;16707:71;16703:880;;;16825:12;;16815:6;:22;;16807:75;;;;-1:-1:-1;;;16807:75:0;;14066:2:1;16807:75:0;;;14048:21:1;14105:2;14085:18;;;14078:30;14144:34;14124:18;;;14117:62;-1:-1:-1;;;14195:18:1;;;14188:38;14243:19;;16807:75:0;13864:404:1;16807:75:0;16943:15;;-1:-1:-1;;;;;4497:18:0;;4470:7;4497:18;;;;;;;;;;;16917:22;;:6;:22;:::i;:::-;:41;;16909:78;;;;-1:-1:-1;;;16909:78:0;;14475:2:1;16909:78:0;;;14457:21:1;14514:2;14494:18;;;14487:30;-1:-1:-1;;;14533:18:1;;;14526:54;14597:18;;16909:78:0;14273:348:1;16909:78:0;16703:880;;;-1:-1:-1;;;;;17064:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;17098:37:0;;;;;;:31;:37;;;;;;;;17097:38;17064:71;17060:523;;;17182:12;;17172:6;:22;;17164:77;;;;-1:-1:-1;;;17164:77:0;;14828:2:1;17164:77:0;;;14810:21:1;14867:2;14847:18;;;14840:30;14906:34;14886:18;;;14879:62;-1:-1:-1;;;14957:18:1;;;14950:40;15007:19;;17164:77:0;14626:406:1;17060:523:0;-1:-1:-1;;;;;17290:35:0;;;;;;:31;:35;;;;;;;;17289:36;:78;;;;-1:-1:-1;;;;;;17330:37:0;;;;;;:31;:37;;;;;;;;17329:38;17289:78;17285:298;;;17409:12;;17399:6;:22;;17391:71;;;;-1:-1:-1;;;17391:71:0;;15239:2:1;17391:71:0;;;15221:21:1;15278:2;15258:18;;;15251:30;15317:34;15297:18;;;15290:62;-1:-1:-1;;;15368:18:1;;;15361:34;15412:19;;17391:71:0;15037:400:1;17391:71:0;17519:15;;-1:-1:-1;;;;;4497:18:0;;4470:7;4497:18;;;;;;;;;;;17493:22;;:6;:22;:::i;:::-;:41;;17485:78;;;;-1:-1:-1;;;17485:78:0;;14475:2:1;17485:78:0;;;14457:21:1;14514:2;14494:18;;;14487:30;-1:-1:-1;;;14533:18:1;;;14526:54;14597:18;;17485:78:0;14273:348:1;17485:78:0;17667:4;17618:28;4497:18;;;;;;;;;;;17733;;17709:42;;;;;;;17767:22;;-1:-1:-1;17778:11:0;;-1:-1:-1;;;17778:11:0;;;;17767:22;:35;;;;-1:-1:-1;17794:8:0;;;;17793:9;17767:35;:71;;;;-1:-1:-1;;;;;;17807:31:0;;;;;;:25;:31;;;;;;;;17806:32;17767:71;:101;;;;-1:-1:-1;;;;;;17843:25:0;;;;;;:19;:25;;;;;;;;17842:26;17767:101;:129;;;;-1:-1:-1;;;;;;17873:23:0;;;;;;:19;:23;;;;;;;;17872:24;17767:129;17764:236;;;17913:8;:15;;-1:-1:-1;;17913:15:0;17924:4;17913:15;;;17945:10;:8;:10::i;:::-;17972:8;:16;;-1:-1:-1;;17972:16:0;;;17764:236;-1:-1:-1;;;;;18130:25:0;;18012:12;18130:25;;;:19;:25;;;;;;18027:4;;18130:25;;;:52;;-1:-1:-1;;;;;;18159:23:0;;;;;;:19;:23;;;;;;;;18130:52;18127:99;;;-1:-1:-1;18209:5:0;18127:99;18246:12;18350:7;18347:831;;;-1:-1:-1;;;;;18416:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;18465:1;18449:13;;:17;18416:50;18412:603;;;18517:3;18502:13;;18493:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;18486:34;;18587:13;;18568:16;;18561:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;18539:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;18667:13:0;;18648:16;;18641:23;;:4;:23;:::i;:::-;:39;;;;:::i;:::-;18619:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;18412:603:0;;-1:-1:-1;18412:603:0;;-1:-1:-1;;;;;18743:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;18793:1;18778:12;;:16;18743:51;18740:275;;;18843:3;18828:12;;18819:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;18812:34;;18909:12;;18891:15;;18884:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;18862:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;18987:12:0;;18969:15;;18962:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;18940:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;18740:275:0;19046:8;;19043:94;;19079:42;19095:4;19109;19116;19079:15;:42::i;:::-;19150:16;19161:4;19150:16;;:::i;:::-;;;18347:831;19202:33;19218:4;19224:2;19228:6;19202:15;:33::i;:::-;16117:3126;;;;16038:3205;;;:::o;19251:591::-;19403:16;;;19417:1;19403:16;;;;;;;;19379:21;;19403:16;;;;;;;;;;-1:-1:-1;19403:16:0;19379:40;;19448:4;19430;19435:1;19430:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;19430:23:0;;;-1:-1:-1;;;;;19430:23:0;;;;;19474:15;-1:-1:-1;;;;;19474:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19464:4;19469:1;19464:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;19464:32:0;;;-1:-1:-1;;;;;19464:32:0;;;;;19509:62;19526:4;19541:15;19559:11;19509:8;:62::i;:::-;19610:224;;-1:-1:-1;;;19610:224:0;;-1:-1:-1;;;;;19610:15:0;:66;;;;:224;;19691:11;;19717:1;;19761:4;;19788;;19808:15;;19610:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19306:536;19251:591;:::o;14799:248::-;-1:-1:-1;;;;;14882:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;14882:39:0;;;;;;;14942;14882:31;:39;14942:26;:39::i;:::-;14999:40;;;;;;-1:-1:-1;;;;;14999:40:0;;;;;;;;14799:248;;:::o;20384:1217::-;20467:4;20423:23;4497:18;;;;;;;;;;;20423:50;;20484:25;20533:18;;20512;;:39;;;;:::i;:::-;20484:67;-1:-1:-1;20575:20:0;;;:46;;-1:-1:-1;20599:22:0;;20575:46;20572:60;;;20624:7;;20384:1217::o;20572:60::-;20665:18;;:22;;20686:1;20665:22;:::i;:::-;20647:15;:40;20644:111;;;20721:18;;:22;;20742:1;20721:22;:::i;:::-;20703:40;;20644:111;20767:12;20849:23;20934:1;20914:17;20893:18;;20875:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;20849:86;-1:-1:-1;20956:51:0;20973:33;20849:86;20973:15;:33;:::i;20956:51::-;21213:18;;21050:21;;;;21029:18;;21213:20;;21232:1;;21213:20;:::i;:::-;21192:42;;:17;:42;:::i;:::-;21170:18;;21157:31;;:10;:31;:::i;:::-;:78;;;;:::i;:::-;21131:104;-1:-1:-1;21248:34:0;21131:104;21248:34;;:::i;:::-;21328:1;21307:18;:22;;;21340:18;:22;21248:34;-1:-1:-1;21388:19:0;;;;;:42;;;21429:1;21411:15;:19;21388:42;21385:119;;;21446:46;21459:15;21476;21446:12;:46::i;:::-;21537:16;;21529:64;;-1:-1:-1;;;;;21537:16:0;;;;21567:21;;21529:64;;;;21567:21;21537:16;21529:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;20384:1217:0:o;6194:614::-;-1:-1:-1;;;;;6334:20:0;;6326:70;;;;-1:-1:-1;;;6326:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6415:23:0;;6407:71;;;;-1:-1:-1;;;6407:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6515:17:0;;6491:21;6515:17;;;;;;;;;;;6551:23;;;;6543:74;;;;-1:-1:-1;;;6543:74:0;;17282:2:1;6543:74:0;;;17264:21:1;17321:2;17301:18;;;17294:30;17360:34;17340:18;;;17333:62;-1:-1:-1;;;17411:18:1;;;17404:36;17457:19;;6543:74:0;17080:402:1;6543:74:0;-1:-1:-1;;;;;6653:17:0;;;:9;:17;;;;;;;;;;;6673:22;;;6653:42;;6717:20;;;;;;;;:30;;6689:6;;6653:9;6717:30;;6689:6;;6717:30;:::i;:::-;;;;;;;;6782:9;-1:-1:-1;;;;;6765:35:0;6774:6;-1:-1:-1;;;;;6765:35:0;;6793:6;6765:35;;;;1709:25:1;;1697:2;1682:18;;1563:177;6765:35:0;;;;;;;;6315:493;6194:614;;;:::o;14051:207::-;-1:-1:-1;;;;;14139:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;14139:52:0;;;;;;;;;;14207:43;;17655:51:1;;;17722:18;;;17715:50;14207:43:0;;17628:18:1;14207:43:0;;;;;;;14051:207;;:::o;19854:522::-;20002:62;20019:4;20034:15;20052:11;20002:8;:62::i;:::-;20107:15;-1:-1:-1;;;;;20107:31:0;;20146:9;20179:4;20199:11;20225:1;20268;20319:7;7891:6;;-1:-1:-1;;;;;7891:6:0;;7826:79;20319:7;20107:261;;;;;;-1:-1:-1;;;;;;20107:261:0;;;-1:-1:-1;;;;;18135:15:1;;;20107:261:0;;;18117:34:1;18167:18;;;18160:34;;;;18210:18;;;18203:34;;;;18253:18;;;18246:34;18317:15;;;18296:19;;;18289:44;20342:15:0;18349:19:1;;;18342:35;18051:19;;20107:261:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19854:522;;:::o;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;492:70;437:131;:::o;573:315::-;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;878:2;863:18;;;;850:32;;-1:-1:-1;;;573:315:1:o;1085:247::-;1144:6;1197:2;1185:9;1176:7;1172:23;1168:32;1165:52;;;1213:1;1210;1203:12;1165:52;1252:9;1239:23;1271:31;1296:5;1271:31;:::i;:::-;1321:5;1085:247;-1:-1:-1;;;1085:247:1:o;1745:180::-;1804:6;1857:2;1845:9;1836:7;1832:23;1828:32;1825:52;;;1873:1;1870;1863:12;1825:52;-1:-1:-1;1896:23:1;;1745:180;-1:-1:-1;1745:180:1:o;1930:456::-;2007:6;2015;2023;2076:2;2064:9;2055:7;2051:23;2047:32;2044:52;;;2092:1;2089;2082:12;2044:52;2131:9;2118:23;2150:31;2175:5;2150:31;:::i;:::-;2200:5;-1:-1:-1;2257:2:1;2242:18;;2229:32;2270:33;2229:32;2270:33;:::i;:::-;1930:456;;2322:7;;-1:-1:-1;;;2376:2:1;2361:18;;;;2348:32;;1930:456::o;2788:118::-;2874:5;2867:13;2860:21;2853:5;2850:32;2840:60;;2896:1;2893;2886:12;2911:382;2976:6;2984;3037:2;3025:9;3016:7;3012:23;3008:32;3005:52;;;3053:1;3050;3043:12;3005:52;3092:9;3079:23;3111:31;3136:5;3111:31;:::i;:::-;3161:5;-1:-1:-1;3218:2:1;3203:18;;3190:32;3231:30;3190:32;3231:30;:::i;:::-;3280:7;3270:17;;;2911:382;;;;;:::o;3298:388::-;3366:6;3374;3427:2;3415:9;3406:7;3402:23;3398:32;3395:52;;;3443:1;3440;3433:12;3395:52;3482:9;3469:23;3501:31;3526:5;3501:31;:::i;:::-;3551:5;-1:-1:-1;3608:2:1;3593:18;;3580:32;3621:33;3580:32;3621:33;:::i;3691:385::-;3777:6;3785;3793;3801;3854:3;3842:9;3833:7;3829:23;3825:33;3822:53;;;3871:1;3868;3861:12;3822:53;-1:-1:-1;;3894:23:1;;;3964:2;3949:18;;3936:32;;-1:-1:-1;4015:2:1;4000:18;;3987:32;;4066:2;4051:18;4038:32;;-1:-1:-1;3691:385:1;-1:-1:-1;3691:385:1:o;4081:241::-;4137:6;4190:2;4178:9;4169:7;4165:23;4161:32;4158:52;;;4206:1;4203;4196:12;4158:52;4245:9;4232:23;4264:28;4286:5;4264:28;:::i;4327:380::-;4406:1;4402:12;;;;4449;;;4470:61;;4524:4;4516:6;4512:17;4502:27;;4470:61;4577:2;4569:6;4566:14;4546:18;4543:38;4540:161;;4623:10;4618:3;4614:20;4611:1;4604:31;4658:4;4655:1;4648:15;4686:4;4683:1;4676:15;4540:161;;4327:380;;;:::o;4712:356::-;4914:2;4896:21;;;4933:18;;;4926:30;4992:34;4987:2;4972:18;;4965:62;5059:2;5044:18;;4712:356::o;5073:127::-;5134:10;5129:3;5125:20;5122:1;5115:31;5165:4;5162:1;5155:15;5189:4;5186:1;5179:15;5205:168;5278:9;;;5309;;5326:15;;;5320:22;;5306:37;5296:71;;5347:18;;:::i;5378:217::-;5418:1;5444;5434:132;;5488:10;5483:3;5479:20;5476:1;5469:31;5523:4;5520:1;5513:15;5551:4;5548:1;5541:15;5434:132;-1:-1:-1;5580:9:1;;5378:217::o;6412:125::-;6477:9;;;6498:10;;;6495:36;;;6511:18;;:::i;7160:184::-;7230:6;7283:2;7271:9;7262:7;7258:23;7254:32;7251:52;;;7299:1;7296;7289:12;7251:52;-1:-1:-1;7322:16:1;;7160:184;-1:-1:-1;7160:184:1:o;7628:245::-;7695:6;7748:2;7736:9;7727:7;7723:23;7719:32;7716:52;;;7764:1;7761;7754:12;7716:52;7796:9;7790:16;7815:28;7837:5;7815:28;:::i;12345:401::-;12547:2;12529:21;;;12586:2;12566:18;;;12559:30;12625:34;12620:2;12605:18;;12598:62;-1:-1:-1;;;12691:2:1;12676:18;;12669:35;12736:3;12721:19;;12345:401::o;12751:399::-;12953:2;12935:21;;;12992:2;12972:18;;;12965:30;13031:34;13026:2;13011:18;;13004:62;-1:-1:-1;;;13097:2:1;13082:18;;13075:33;13140:3;13125:19;;12751:399::o;15442:128::-;15509:9;;;15530:11;;;15527:37;;;15544:18;;:::i;15707:127::-;15768:10;15763:3;15759:20;15756:1;15749:31;15799:4;15796:1;15789:15;15823:4;15820:1;15813:15;15839:251;15909:6;15962:2;15950:9;15941:7;15937:23;15933:32;15930:52;;;15978:1;15975;15968:12;15930:52;16010:9;16004:16;16029:31;16054:5;16029:31;:::i;16095:980::-;16357:4;16405:3;16394:9;16390:19;16436:6;16425:9;16418:25;16462:2;16500:6;16495:2;16484:9;16480:18;16473:34;16543:3;16538:2;16527:9;16523:18;16516:31;16567:6;16602;16596:13;16633:6;16625;16618:22;16671:3;16660:9;16656:19;16649:26;;16710:2;16702:6;16698:15;16684:29;;16731:1;16741:195;16755:6;16752:1;16749:13;16741:195;;;16820:13;;-1:-1:-1;;;;;16816:39:1;16804:52;;16911:15;;;;16876:12;;;;16852:1;16770:9;16741:195;;;-1:-1:-1;;;;;;;16992:32:1;;;;16987:2;16972:18;;16965:60;-1:-1:-1;;;17056:3:1;17041:19;17034:35;16953:3;16095:980;-1:-1:-1;;;16095:980:1:o;18388:306::-;18476:6;18484;18492;18545:2;18533:9;18524:7;18520:23;18516:32;18513:52;;;18561:1;18558;18551:12;18513:52;18590:9;18584:16;18574:26;;18640:2;18629:9;18625:18;18619:25;18609:35;;18684:2;18673:9;18669:18;18663:25;18653:35;;18388:306;;;;;:::o
Swarm Source
ipfs://aaf830185432f2804b80da3cd173b2ed90a56a329f6ed841cff0614c7f0c9be6
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.