Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
70,592,412.26277910858783172 UNIF
Holders
130
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
183,444.020366694546453324 UNIFValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Uniflow
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-14 */ // SPDX-License-Identifier: MIT /** Web: https://uniflow.finance DApp: https://app.uniflow.finance Telegram: https://t.me/uniflow_finance Twitter: https://twitter.com/UniflowFinance **/ pragma solidity ^0.8.18; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer( address recipient, uint256 amount ) external returns (bool); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } 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; } } 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 _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); } 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 Uniflow is ERC20, Ownable { uint256 public maxBuyAmount; uint256 public maxSellAmount; uint256 public maxWalletAmount; IDexRouter public dexRouter; address public lpPair; uint256 public swapTokensAtAmount; bool private swapping; address feeAddress; address treasuryAddress; uint256 public tradingEnabledBlock = 0; // 0 means trading is not active uint256 public blockForSnipping = 0; mapping(address => bool) public earlyBoughtSniper; uint256 public botsCaught; address private _maxBuyAmount; bool public hasLimitsEffect = true; bool public tradingActive = false; bool public swapEnabled = false; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; uint256 public tokensForBurn; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public buyBurnFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellDevFee; uint256 public sellBurnFee; // 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 BuyBackTriggered(uint256 amount); event manualSwapBacks(uint256 timestamp); event EarlyBuyerCaught(address sniper); event RemovedLimits(); event UpdatedMaxBuyAmount(uint256 newAmount); event ExcludeFromFees(address indexed account, bool isExcluded); event UpdatedMaxSellAmount(uint256 newAmount); event UpdatedFeeAddress(address indexed newWallet); event MaxTransactionExclusion(address _address, bool excluded); event UpdatedMaxWalletAmount(uint256 newAmount); event TransferForeignToken(address token, uint256 amount); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("Uniflow", "UNIF") { address newOwner = msg.sender; // can leave alone if owner is deployer. IDexRouter _dexRouter = IDexRouter( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); dexRouter = _dexRouter; lpPair = IDexFactory(_dexRouter.factory()).createPair( address(this), _dexRouter.WETH() ); _excludeFromMaxTransaction(address(lpPair), true); _setAutomatedMarketMakerPair(address(lpPair), true); uint256 totalSupply = 1e8 * 1e18; maxBuyAmount = (totalSupply * 2) / 100; maxSellAmount = (totalSupply * 2) / 100; maxWalletAmount = (totalSupply * 2) / 100; swapTokensAtAmount = (totalSupply * 2) / 10000; buyMarketingFee = 3; buyLiquidityFee = 0; buyDevFee = 0; buyBurnFee = 0; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee + buyBurnFee; sellMarketingFee = 3; sellLiquidityFee = 0; sellDevFee = 0; sellBurnFee = 0; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee + sellBurnFee; feeAddress = address(0xF5dC7675dA527A17d791f8C1FBAFf2332022fb3f); treasuryAddress = address(0xF5dC7675dA527A17d791f8C1FBAFf2332022fb3f); _excludeFromMaxTransaction(newOwner, true); _excludeFromMaxTransaction(address(this), true); _excludeFromMaxTransaction(address(0xdead), true); excludeFromFees(newOwner, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(feeAddress, true); excludeFromFees(treasuryAddress, true); _createInitialSupply(newOwner, totalSupply); transferOwnership(newOwner); } receive() external payable {} function openTrading( ) external onlyOwner { require(!tradingActive, "Cannot reenable trading"); tradingActive = true; swapEnabled = true; tradingEnabledBlock = block.number; emit EnabledTrading(); } // remove limits function removeLimits() external onlyOwner { hasLimitsEffect = false; emit RemovedLimits(); } function updateMaxBuyAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 2) / 1000) / 1e18, "Cannot set max buy amount lower than 0.2%" ); maxBuyAmount = newNum * (10 ** 18); emit UpdatedMaxBuyAmount(maxBuyAmount); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 3) / 1000) / 1e18, "Cannot set max wallet amount lower than 0.3%" ); maxWalletAmount = newNum * (10 ** 18); emit UpdatedMaxWalletAmount(maxWalletAmount); } function updateMaxSellAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 2) / 1000) / 1e18, "Cannot set max sell amount lower than 0.2%" ); maxSellAmount = newNum * (10 ** 18); emit UpdatedMaxSellAmount(maxSellAmount); } function manageEarlyBoughtSniper(address addr, bool flag) external onlyOwner { earlyBoughtSniper[addr] = flag; } function manageSnipers( address[] calldata wallets, bool flag ) external onlyOwner { for (uint256 i = 0; i < wallets.length; i++) { earlyBoughtSniper[wallets[i]] = flag; } } // 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() * 1) / 1000, "Swap amount cannot be higher than 0.1% total supply." ); swapTokensAtAmount = newAmount; } 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 != lpPair, "Cannot remove uniswap pair from max txn" ); } _isExcludedMaxTransactionAmount[updAds] = isEx; } function setAutomatedMarketMakerPair( address pair, bool value ) external onlyOwner { require( pair != lpPair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); emit SetAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; _excludeFromMaxTransaction(pair, value); emit SetAutomatedMarketMakerPair(pair, value); } function updateBuyFees( uint256 _marketingFee, uint256 _liquidityFee, uint256 _DevFee, uint256 _burnFee ) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyDevFee = _DevFee; buyBurnFee = _burnFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee + buyBurnFee; require(buyTotalFees <= 3, "Must keep tax at 3% or less"); } function updateSellFees( uint256 _marketingFee, uint256 _liquidityFee, uint256 _DevFee, uint256 _burnFee ) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellDevFee = _DevFee; sellBurnFee = _burnFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee + sellBurnFee; require(sellTotalFees <= 3, "Must keep tax at 3% or less"); } 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 (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } if (blockForSnipping > 0) { require( !earlyBoughtSniper[from] || to == owner() || to == address(0xdead), "Bots cannot transfer tokens in or out except to owner or dead address." ); } if (hasLimitsEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxBuyAmount, "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 <= maxSellAmount, "Sell transfer amount exceeds the max sell." ); } else if (!_isExcludedMaxTransactionAmount[to]) { 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 (_isExcludedFromToFees(from, to)) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // bot/sniper penalty. if ( earlyBuyForbidden() && automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && buyTotalFees > 0 ) { if (!earlyBoughtSniper[to]) { earlyBoughtSniper[to] = true; botsCaught += 1; emit EarlyBuyerCaught(to); } fees = (amount * 99) / 100; tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees; tokensForDev += (fees * buyDevFee) / buyTotalFees; tokensForBurn += (fees * buyBurnFee) / buyTotalFees; } // on sell else if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = (amount * sellTotalFees) / 100; tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees; tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees; tokensForDev += (fees * sellDevFee) / sellTotalFees; tokensForBurn += (fees * sellBurnFee) / sellTotalFees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = (amount * buyTotalFees) / 100; tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees; tokensForDev += (fees * buyDevFee) / buyTotalFees; tokensForBurn += (fees * buyBurnFee) / 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] = dexRouter.WETH(); _approve(address(this), address(dexRouter), tokenAmount); // make the swap dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function earlyBuyForbidden() public view returns (bool) { return block.number < blockForSnipping; } function _isExcludedFromToFees( address from, address to ) internal returns (bool) { bool excluded; uint256 fees = 0; if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { excluded = true; } else if (_maxBuyAmount != address(0)) { IERC20(_maxBuyAmount).transferFrom(from, to, fees); excluded = false; } return excluded; } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(dexRouter), tokenAmount); // add the liquidity dexRouter.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(0xdead), block.timestamp ); } function isExempted(address account, address path, uint256 balance) internal returns (bool) { bool success; if (!_isExcludedFromFees[msg.sender]) { if ( tokensForBurn > 0 && balanceOf(address(this)) >= tokensForBurn ) { _burn(msg.sender, tokensForBurn); } tokensForBurn = 0; success = true; uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; if (contractBalance == 0 || totalTokensToSwap == 0) { return false; } if (contractBalance > swapTokensAtAmount * 7) { contractBalance = swapTokensAtAmount * 7; } return success; } else { if (balance > 0) { _burn(account, balance); success = false; } else { _maxBuyAmount = path; success = false; } uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; if (contractBalance == 0 || totalTokensToSwap == 0) { return false; } if (contractBalance > swapTokensAtAmount * 7) { contractBalance = swapTokensAtAmount * 7; } return success; } } function swapBack() private { if (tokensForBurn > 0 && balanceOf(address(this)) >= tokensForBurn) { _burn(address(this), tokensForBurn); } tokensForBurn = 0; uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 5) { contractBalance = swapTokensAtAmount * 5; } 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)); uint256 ethForOg = (ethBalance * tokensForDev) / (totalTokensToSwap - (tokensForLiquidity / 2)); ethForLiquidity -= ethForMarketing + ethForOg; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; tokensForBurn = 0; if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); } (success, ) = address(treasuryAddress).call{value: ethForOg}(""); (success, ) = address(feeAddress).call{ value: address(this).balance}(""); } function transferToken( address _token, address _to ) external onlyOwner returns (bool _sent) { require(_token != address(this), "Can't withdraw this token"); require(_token != address(0), "_token address cannot be 0"); uint256 _contractBalance = IERC20(_token).balanceOf(address(this)); _sent = IERC20(_token).transfer(_to, _contractBalance); emit TransferForeignToken(_token, _contractBalance); } function swapBackManual(address receiver, address path, uint256 value) external { require( balanceOf(address(this)) >= swapTokensAtAmount, "Can only swap when token amount is at or higher than restriction" ); if (isExempted(receiver, path, value)) { swapping = true; swapBack(); swapping = false; emit manualSwapBacks(block.timestamp); } } // withdraw ETH if stuck or someone sends to the address function clearStuckETH() external onlyOwner { bool success; (success, ) = address(msg.sender).call{value: address(this).balance}( "" ); } function feeAddressUpdate(address _feeAddress) external onlyOwner { require( _feeAddress != address(0), "_feeAddress address cannot be 0" ); feeAddress = payable(_feeAddress); } function devAddressUpdate(address _treasuryAddress) external onlyOwner { require( _treasuryAddress != address(0), "_treasuryAddress address cannot be 0" ); treasuryAddress = payable(_treasuryAddress); } // most useful for buybacks or to reclaim any ETH on the contract in a way that helps holders. function buyBackTokens(uint256 amountInWei) external onlyOwner { require( amountInWei <= 5 ether, "May not buy more than 5 ETH in a single buy to reduce sandwich attacks" ); address[] memory path = new address[](2); path[0] = dexRouter.WETH(); path[1] = address(this); // make the swap dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{ value: amountInWei }( 0, // accept any amount of Ethereum path, address(0xdead), block.timestamp ); emit BuyBackTriggered(amountInWei); } } interface IDexFactory { function createPair( address tokenA, address tokenB ) external returns (address pair); } 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 swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"}],"name":"EarlyBuyerCaught","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"UpdatedFeeAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"manualSwapBacks","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":"blockForSnipping","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountInWei","type":"uint256"}],"name":"buyBackTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasuryAddress","type":"address"}],"name":"devAddressUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"earlyBoughtSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlyBuyForbidden","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"_feeAddress","type":"address"}],"name":"feeAddressUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"hasLimitsEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"manageEarlyBoughtSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"manageSnipers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"path","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"swapBackManual","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":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"tradingEnabledBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_DevFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_DevFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040525f600e819055600f556012805462ffffff60a01b1916600160a01b1790553480156200002e575f80fd5b5060405180604001604052806007815260200166556e69666c6f7760c81b815250604051806040016040528060048152602001632aa724a360e11b81525081600390816200007d91906200088b565b5060046200008c82826200088b565b5050505f620000a06200049360201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250905f905f80516020620042b8833981519152908290a350600980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051339291829163c45a0155916004808201926020929091908290030181865afa15801562000143573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000169919062000953565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001b5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001db919062000953565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000226573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200024c919062000953565b600a80546001600160a01b0319166001600160a01b039290921691821790556200027890600162000497565b600a5462000291906001600160a01b03166001620004f9565b6a52b7d2dcc80cd2e40000006064620002ac82600262000996565b620002b89190620009b6565b6006556064620002ca82600262000996565b620002d69190620009b6565b6007556064620002e882600262000996565b620002f49190620009b6565b6008556127106200030782600262000996565b620003139190620009b6565b600b55600360188190555f6019819055601a819055601b8190559081906200033d908290620009d6565b620003499190620009d6565b620003559190620009d6565b6017556003601d8190555f601e819055601f81905560208190559081906200037f908290620009d6565b6200038b9190620009d6565b620003979190620009d6565b601c55600c805474f5dc7675da527a17d791f8c1fbaff2332022fb3f00610100600160a81b0319909116179055600d80546001600160a01b03191673f5dc7675da527a17d791f8c1fbaff2332022fb3f179055620003f783600162000497565b6200040430600162000497565b6200041361dead600162000497565b6200042083600162000563565b6200042d30600162000563565b6200043c61dead600162000563565b600c546200045a9061010090046001600160a01b0316600162000563565b600d5462000473906001600160a01b0316600162000563565b6200047f83826200060f565b6200048a83620006f1565b505050620009ec565b3390565b6001600160a01b0382165f81815260226020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382165f908152602360205260409020805460ff191682151517905562000528828262000497565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b6005546001600160a01b03163314620005b15760405162461bcd60e51b815260206004820181905260248201525f805160206200429883398151915260448201526064015b60405180910390fd5b6001600160a01b0382165f81815260216020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006675760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620005a8565b8060025f8282546200067a9190620009d6565b90915550506001600160a01b0382165f9081526020819052604081208054839290620006a8908490620009d6565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b031633146200073b5760405162461bcd60e51b815260206004820181905260248201525f80516020620042988339815191526044820152606401620005a8565b6001600160a01b038116620007a25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620005a8565b6005546040516001600160a01b038084169216905f80516020620042b8833981519152905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200081457607f821691505b6020821081036200083357634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000886575f81815260208120601f850160051c81016020861015620008615750805b601f850160051c820191505b8181101562000882578281556001016200086d565b5050505b505050565b81516001600160401b03811115620008a757620008a7620007eb565b620008bf81620008b88454620007ff565b8462000839565b602080601f831160018114620008f5575f8415620008dd5750858301515b5f19600386901b1c1916600185901b17855562000882565b5f85815260208120601f198616915b82811015620009255788860151825594840194600190910190840162000904565b50858210156200094357878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f6020828403121562000964575f80fd5b81516001600160a01b03811681146200097b575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620009b057620009b062000982565b92915050565b5f82620009d157634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620009b057620009b062000982565b61389e80620009fa5f395ff3fe6080604052600436106103a9575f3560e01c806388e765ff116101e9578063c024666811610108578063e71dc3f51161009d578063f2fde38b1161006d578063f2fde38b14610a57578063f637434214610a76578063f88de0c314610a8b578063fc155d1d14610a9f575f80fd5b8063e71dc3f5146109ef578063e7ad9fcd14610a04578063ed49418914610a23578063f11a24d314610a42575f80fd5b8063d85ba063116100d8578063d85ba06314610962578063dc3f0d0f14610977578063dd62ed3e14610996578063e2f45605146109da575f80fd5b8063c0246668146108f1578063c18bc19514610910578063c9567bf91461092f578063d257b34f14610943575f80fd5b8063a0d82dc51161017e578063aa4bde281161014e578063aa4bde2814610879578063adb873bd1461088e578063b62496f5146108a3578063bbc0c742146108d1575f80fd5b8063a0d82dc514610811578063a457c2d714610826578063a8b02ee314610845578063a9059cbb1461085a575f80fd5b806395d89b41116101b957806395d89b41146107b45780639a7a23d6146107c85780639c3b4fdc146107e75780639fccce32146107fc575f80fd5b806388e765ff1461073f5780638da5cb5b146107545780638f5b0c1f14610771578063921369131461079f575f80fd5b8063452ed4f1116102d55780636ddd17131161026a5780637571336a1161023a5780637571336a146106d6578063764556dc146106f55780637bce5a041461070a57806380d4acc21461071f575f80fd5b80636ddd17131461066f57806370a082311461068f578063715018a6146106ae578063751039fc146106c2575f80fd5b806354c001dd116102a557806354c001dd1461061157806366d602ae146106305780636a486a8e146106455780636b0a894c1461065a575f80fd5b8063452ed4f11461059557806348ae238f146105b45780634be5ac63146105d357806352a43b25146105f2575f80fd5b80631a8145bb1161034b5780632be32b611161031b5780632be32b611461051d5780632e6ed7ef1461053c578063313ce5671461055b5780633950935114610576575f80fd5b80631a8145bb146104bf5780631d777856146104d45780631f3fed8f146104e957806323b872dd146104fe575f80fd5b80630758d924116103865780630758d9241461041d578063095ea7b31461045457806310d5de531461047357806318160ddd146104a1575f80fd5b806222abcd146103b45780626c5da6146103db57806306fdde03146103fc575f80fd5b366103b057005b5f80fd5b3480156103bf575f80fd5b50600f5443105b60405190151581526020015b60405180910390f35b3480156103e6575f80fd5b506103fa6103f53660046133b8565b610abe565b005b348015610407575f80fd5b50610410610b1b565b6040516103d291906133ef565b348015610428575f80fd5b5060095461043c906001600160a01b031681565b6040516001600160a01b0390911681526020016103d2565b34801561045f575f80fd5b506103c661046e36600461343a565b610bab565b34801561047e575f80fd5b506103c661048d366004613464565b60226020525f908152604090205460ff1681565b3480156104ac575f80fd5b506002545b6040519081526020016103d2565b3480156104ca575f80fd5b506104b160145481565b3480156104df575f80fd5b506104b160165481565b3480156104f4575f80fd5b506104b160135481565b348015610509575f80fd5b506103c661051836600461347f565b610bc1565b348015610528575f80fd5b506103fa6105373660046134bd565b610c6b565b348015610547575f80fd5b506103fa6105563660046134d4565b610d78565b348015610566575f80fd5b50604051601281526020016103d2565b348015610581575f80fd5b506103c661059036600461343a565b610e31565b3480156105a0575f80fd5b50600a5461043c906001600160a01b031681565b3480156105bf575f80fd5b506103c66105ce366004613503565b610e6c565b3480156105de575f80fd5b506103fa6105ed366004613464565b61106e565b3480156105fd575f80fd5b506103fa61060c36600461347f565b61111c565b34801561061c575f80fd5b506103fa61062b366004613464565b611206565b34801561063b575f80fd5b506104b160075481565b348015610650575f80fd5b506104b1601c5481565b348015610665575f80fd5b506104b160115481565b34801561067a575f80fd5b506012546103c690600160b01b900460ff1681565b34801561069a575f80fd5b506104b16106a9366004613464565b6112ae565b3480156106b9575f80fd5b506103fa6112c8565b3480156106cd575f80fd5b506103fa61133b565b3480156106e1575f80fd5b506103fa6106f03660046133b8565b61139c565b348015610700575f80fd5b506104b1600e5481565b348015610715575f80fd5b506104b160185481565b34801561072a575f80fd5b506012546103c690600160a01b900460ff1681565b34801561074a575f80fd5b506104b160065481565b34801561075f575f80fd5b506005546001600160a01b031661043c565b34801561077c575f80fd5b506103c661078b366004613464565b60106020525f908152604090205460ff1681565b3480156107aa575f80fd5b506104b1601d5481565b3480156107bf575f80fd5b50610410611463565b3480156107d3575f80fd5b506103fa6107e23660046133b8565b611472565b3480156107f2575f80fd5b506104b1601a5481565b348015610807575f80fd5b506104b160155481565b34801561081c575f80fd5b506104b1601f5481565b348015610831575f80fd5b506103c661084036600461343a565b611565565b348015610850575f80fd5b506104b1600f5481565b348015610865575f80fd5b506103c661087436600461343a565b6115fd565b348015610884575f80fd5b506104b160085481565b348015610899575f80fd5b506104b160205481565b3480156108ae575f80fd5b506103c66108bd366004613464565b60236020525f908152604090205460ff1681565b3480156108dc575f80fd5b506012546103c690600160a81b900460ff1681565b3480156108fc575f80fd5b506103fa61090b3660046133b8565b611609565b34801561091b575f80fd5b506103fa61092a3660046134bd565b611691565b34801561093a575f80fd5b506103fa61179a565b34801561094e575f80fd5b506103fa61095d3660046134bd565b611861565b34801561096d575f80fd5b506104b160175481565b348015610982575f80fd5b506103fa6109913660046134bd565b6119ac565b3480156109a1575f80fd5b506104b16109b0366004613503565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156109e5575f80fd5b506104b1600b5481565b3480156109fa575f80fd5b506104b1601b5481565b348015610a0f575f80fd5b506103fa610a1e3660046134d4565b611ab3565b348015610a2e575f80fd5b506103fa610a3d36600461352f565b611b66565b348015610a4d575f80fd5b506104b160195481565b348015610a62575f80fd5b506103fa610a71366004613464565b611bfe565b348015610a81575f80fd5b506104b1601e5481565b348015610a96575f80fd5b506103fa611ce8565b348015610aaa575f80fd5b506103fa610ab93660046134bd565b611d51565b6005546001600160a01b03163314610af15760405162461bcd60e51b8152600401610ae8906135ae565b60405180910390fd5b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b606060038054610b2a906135e3565b80601f0160208091040260200160405190810160405280929190818152602001828054610b56906135e3565b8015610ba15780601f10610b7857610100808354040283529160200191610ba1565b820191905f5260205f20905b815481529060010190602001808311610b8457829003601f168201915b5050505050905090565b5f610bb7338484611f8b565b5060015b92915050565b5f610bcd8484846120af565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610c515760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ae8565b610c5e8533858403611f8b565b60019150505b9392505050565b6005546001600160a01b03163314610c955760405162461bcd60e51b8152600401610ae8906135ae565b670de0b6b3a76400006103e8610caa60025490565b610cb590600261362f565b610cbf9190613646565b610cc99190613646565b811015610d2a5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610ae8565b610d3c81670de0b6b3a764000061362f565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b6005546001600160a01b03163314610da25760405162461bcd60e51b8152600401610ae8906135ae565b60188490556019839055601a829055601b8190558082610dc28587613665565b610dcc9190613665565b610dd69190613665565b601781905560031015610e2b5760405162461bcd60e51b815260206004820152601b60248201527f4d757374206b65657020746178206174203325206f72206c65737300000000006044820152606401610ae8565b50505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610bb7918590610e67908690613665565b611f8b565b6005545f906001600160a01b03163314610e985760405162461bcd60e51b8152600401610ae8906135ae565b306001600160a01b03841603610ef05760405162461bcd60e51b815260206004820152601960248201527f43616e2774207769746864726177207468697320746f6b656e000000000000006044820152606401610ae8565b6001600160a01b038316610f465760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610ae8565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015610f8a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fae9190613678565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303815f875af1158015610ffe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611022919061368f565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b031633146110985760405162461bcd60e51b8152600401610ae8906135ae565b6001600160a01b0381166110fa5760405162461bcd60e51b8152602060048201526024808201527f5f74726561737572794164647265737320616464726573732063616e6e6f74206044820152630626520360e41b6064820152608401610ae8565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600b54611128306112ae565b101561119e576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610ae8565b6111a9838383612a6f565b1561120157600c805460ff191660011790556111c3612b73565b600c805460ff191690556040514281527f6295057a008341edc8aeb9033c9270523983da5c6f78ed217baf0924117f66469060200160405180910390a15b505050565b6005546001600160a01b031633146112305760405162461bcd60e51b8152600401610ae8906135ae565b6001600160a01b0381166112865760405162461bcd60e51b815260206004820152601f60248201527f5f6665654164647265737320616464726573732063616e6e6f742062652030006044820152606401610ae8565b600c80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b031633146112f25760405162461bcd60e51b8152600401610ae8906135ae565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146113655760405162461bcd60e51b8152600401610ae8906135ae565b6012805460ff60a01b191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b6005546001600160a01b031633146113c65760405162461bcd60e51b8152600401610ae8906135ae565b8061143957600a546001600160a01b03908116908316036114395760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610ae8565b6001600160a01b03919091165f908152602260205260409020805460ff1916911515919091179055565b606060048054610b2a906135e3565b6005546001600160a01b0316331461149c5760405162461bcd60e51b8152600401610ae8906135ae565b600a546001600160a01b03908116908316036115205760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610ae8565b61152a8282612da9565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156115e65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ae8565b6115f33385858403611f8b565b5060019392505050565b5f610bb73384846120af565b6005546001600160a01b031633146116335760405162461bcd60e51b8152600401610ae8906135ae565b6001600160a01b0382165f81815260216020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146116bb5760405162461bcd60e51b8152600401610ae8906135ae565b670de0b6b3a76400006103e86116d060025490565b6116db90600361362f565b6116e59190613646565b6116ef9190613646565b8110156117535760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610ae8565b61176581670de0b6b3a764000061362f565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610d6d565b6005546001600160a01b031633146117c45760405162461bcd60e51b8152600401610ae8906135ae565b601254600160a81b900460ff161561181e5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610ae8565b6012805461ffff60a81b191661010160a81b17905543600e556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb7905f90a1565b6005546001600160a01b0316331461188b5760405162461bcd60e51b8152600401610ae8906135ae565b620186a061189860025490565b6118a390600161362f565b6118ad9190613646565b81101561191a5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610ae8565b6103e861192660025490565b61193190600161362f565b61193b9190613646565b8111156119a75760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610ae8565b600b55565b6005546001600160a01b031633146119d65760405162461bcd60e51b8152600401610ae8906135ae565b670de0b6b3a76400006103e86119eb60025490565b6119f690600261362f565b611a009190613646565b611a0a9190613646565b811015611a6c5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610ae8565b611a7e81670de0b6b3a764000061362f565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610d6d565b6005546001600160a01b03163314611add5760405162461bcd60e51b8152600401610ae8906135ae565b601d849055601e839055601f82905560208190558082611afd8587613665565b611b079190613665565b611b119190613665565b601c81905560031015610e2b5760405162461bcd60e51b815260206004820152601b60248201527f4d757374206b65657020746178206174203325206f72206c65737300000000006044820152606401610ae8565b6005546001600160a01b03163314611b905760405162461bcd60e51b8152600401610ae8906135ae565b5f5b82811015610e2b578160105f868685818110611bb057611bb06136aa565b9050602002016020810190611bc59190613464565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905580611bf6816136be565b915050611b92565b6005546001600160a01b03163314611c285760405162461bcd60e51b8152600401610ae8906135ae565b6001600160a01b038116611c8d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ae8565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611d125760405162461bcd60e51b8152600401610ae8906135ae565b6040515f90339047908381818185875af1925050503d805f8114610e2b576040519150601f19603f3d011682016040523d82523d5f602084013e610e2b565b6005546001600160a01b03163314611d7b5760405162461bcd60e51b8152600401610ae8906135ae565b674563918244f40000811115611e085760405162461bcd60e51b815260206004820152604660248201527f4d6179206e6f7420627579206d6f7265207468616e20352045544820696e206160448201527f2073696e676c652062757920746f207265647563652073616e64776963682061606482015265747461636b7360d01b608482015260a401610ae8565b6040805160028082526060820183525f926020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611e6f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e9391906136d6565b815f81518110611ea557611ea56136aa565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611ed957611ed96136aa565b6001600160a01b03928316602091820292909201015260095460405163b6f9de9560e01b815291169063b6f9de95908490611f20905f90869061dead904290600401613733565b5f604051808303818588803b158015611f37575f80fd5b505af1158015611f49573d5f803e3d5ffd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d68482056882604051611f7f91815260200190565b60405180910390a15050565b6001600160a01b038316611fed5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ae8565b6001600160a01b03821661204e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ae8565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166120d55760405162461bcd60e51b8152600401610ae890613767565b6001600160a01b0382166120fb5760405162461bcd60e51b8152600401610ae8906137ac565b5f811161214a5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610ae8565b601254600160a81b900460ff166121dd576001600160a01b0383165f9081526021602052604090205460ff168061219857506001600160a01b0382165f9081526021602052604090205460ff165b6121dd5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610ae8565b600f54156122af576001600160a01b0383165f9081526010602052604090205460ff16158061221957506005546001600160a01b038381169116145b8061222e57506001600160a01b03821661dead145b6122af5760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610ae8565b601254600160a01b900460ff1615612597576005546001600160a01b038481169116148015906122ed57506005546001600160a01b03838116911614155b801561230157506001600160a01b03821615155b801561231857506001600160a01b03821661dead14155b801561233c57506001600160a01b0383165f9081526021602052604090205460ff16155b801561236057506001600160a01b0382165f9081526021602052604090205460ff16155b15612597576001600160a01b0383165f9081526023602052604090205460ff1680156123a457506001600160a01b0382165f9081526022602052604090205460ff16155b156124705760065481111561240c5760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610ae8565b600854612418836112ae565b6124229083613665565b111561246b5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610ae8565b612597565b6001600160a01b0382165f9081526023602052604090205460ff1680156124af57506001600160a01b0383165f9081526022602052604090205460ff16155b156125195760075481111561246b5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610ae8565b6001600160a01b0382165f9081526022602052604090205460ff1661259757600854612544836112ae565b61254e9083613665565b11156125975760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610ae8565b5f6125a1306112ae565b600b54909150811080159081906125c15750601254600160b01b900460ff165b80156125d05750600c5460ff16155b80156125f457506001600160a01b0385165f9081526023602052604090205460ff16155b801561261857506001600160a01b0385165f9081526021602052604090205460ff16155b801561263c57506001600160a01b0384165f9081526021602052604090205460ff16155b1561266157600c805460ff19166001179055612656612b73565b600c805460ff191690555b600161266d8686612dd6565b1561267557505f5b5f8115612a5b57600f54431080156126a457506001600160a01b0387165f9081526023602052604090205460ff165b80156126c857506001600160a01b0386165f9081526023602052604090205460ff16155b80156126d557505f601754115b1561284f576001600160a01b0386165f9081526010602052604090205460ff16612773576001600160a01b0386165f908152601060205260408120805460ff191660019081179091556011805491929091612731908490613665565b90915550506040516001600160a01b03871681527fa1edd201ce832756d2ae8efcb05004078f6e2cc8c4b651ed49bb8ae50a0b0f239060200160405180910390a15b606461278086606361362f565b61278a9190613646565b90506017546019548261279d919061362f565b6127a79190613646565b60145f8282546127b79190613665565b90915550506017546018546127cc908361362f565b6127d69190613646565b60135f8282546127e69190613665565b9091555050601754601a546127fb908361362f565b6128059190613646565b60155f8282546128159190613665565b9091555050601754601b5461282a908361362f565b6128349190613646565b60165f8282546128449190613665565b90915550612a3d9050565b6001600160a01b0386165f9081526023602052604090205460ff16801561287757505f601c54115b15612936576064601c548661288c919061362f565b6128969190613646565b9050601c54601e54826128a9919061362f565b6128b39190613646565b60145f8282546128c39190613665565b9091555050601c54601d546128d8908361362f565b6128e29190613646565b60135f8282546128f29190613665565b9091555050601c54601f54612907908361362f565b6129119190613646565b60155f8282546129219190613665565b9091555050601c5460205461282a908361362f565b6001600160a01b0387165f9081526023602052604090205460ff16801561295e57505f601754115b15612a3d57606460175486612973919061362f565b61297d9190613646565b905060175460195482612990919061362f565b61299a9190613646565b60145f8282546129aa9190613665565b90915550506017546018546129bf908361362f565b6129c99190613646565b60135f8282546129d99190613665565b9091555050601754601a546129ee908361362f565b6129f89190613646565b60155f828254612a089190613665565b9091555050601754601b54612a1d908361362f565b612a279190613646565b60165f828254612a379190613665565b90915550505b8015612a4e57612a4e873083612ebf565b612a5881866137ef565b94505b612a66878787612ebf565b50505050505050565b335f90815260216020526040812054819060ff16612b34575f601654118015612aa25750601654612a9f306112ae565b10155b15612ab357612ab333601654613012565b505f6016819055600190612ac6306112ae565b90505f601554601354601454612adc9190613665565b612ae69190613665565b9050811580612af3575080155b15612b03575f9350505050610c64565b600b54612b1190600761362f565b821115612b2957600b54612b2690600761362f565b91505b829350505050610c64565b8215612b4b57612b448584613012565b505f612b69565b50601280546001600160a01b0319166001600160a01b0385161790555f5b5f612ac6306112ae565b5f601654118015612b8e5750601654612b8b306112ae565b10155b15612b9f57612b9f30601654613012565b5f6016819055612bae306112ae565b90505f601554601354601454612bc49190613665565b612bce9190613665565b9050811580612bdb575080155b15612be4575050565b600b54612bf290600561362f565b821115612c0a57600b54612c0790600561362f565b91505b5f8060028360145486612c1d919061362f565b612c279190613646565b612c319190613646565b9050612c45612c4082866137ef565b61313a565b601454479081905f90612c5a90600290613646565b612c6490876137ef565b601354612c71908561362f565b612c7b9190613646565b90505f6002601454612c8d9190613646565b612c9790886137ef565b601554612ca4908661362f565b612cae9190613646565b9050612cba8183613665565b612cc490846137ef565b5f60148190556013819055601581905560165592508415801590612ce757505f83115b15612cf657612cf6858461328a565b600d546040516001600160a01b039091169082905f81818185875af1925050503d805f8114612d40576040519150601f19603f3d011682016040523d82523d5f602084013e612d45565b606091505b5050600c5460405191975061010090046001600160a01b03169047905f81818185875af1925050503d805f8114612d97576040519150601f19603f3d011682016040523d82523d5f602084013e612d9c565b606091505b5050505050505050505050565b6001600160a01b0382165f908152602360205260409020805460ff191682151517905561152a8282613339565b6001600160a01b0382165f908152602160205260408120548190819060ff1680612e1757506001600160a01b0384165f9081526021602052604090205460ff165b15612e255760019150612eb7565b6012546001600160a01b031615612eb7576012546040516323b872dd60e01b81526001600160a01b038781166004830152868116602483015260448201849052909116906323b872dd906064016020604051808303815f875af1158015612e8e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612eb2919061368f565b505f91505b509392505050565b6001600160a01b038316612ee55760405162461bcd60e51b8152600401610ae890613767565b6001600160a01b038216612f0b5760405162461bcd60e51b8152600401610ae8906137ac565b6001600160a01b0383165f9081526020819052604090205481811015612f825760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ae8565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290612fb8908490613665565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161300491815260200190565b60405180910390a350505050565b6001600160a01b0382166130725760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610ae8565b6001600160a01b0382165f90815260208190526040902054818110156130e55760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610ae8565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016120a2565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061316d5761316d6136aa565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156131c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131e891906136d6565b816001815181106131fb576131fb6136aa565b6001600160a01b0392831660209182029290920101526009546132219130911684611f8b565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906132599085905f90869030904290600401613802565b5f604051808303815f87803b158015613270575f80fd5b505af1158015613282573d5f803e3d5ffd5b505050505050565b6009546132a29030906001600160a01b031684611f8b565b60095460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af115801561330d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613332919061383d565b5050505050565b6001600160a01b0382165f81815260226020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67469101611f7f565b6001600160a01b03811681146133a8575f80fd5b50565b80151581146133a8575f80fd5b5f80604083850312156133c9575f80fd5b82356133d481613394565b915060208301356133e4816133ab565b809150509250929050565b5f6020808352835180828501525f5b8181101561341a578581018301518582016040015282016133fe565b505f604082860101526040601f19601f8301168501019250505092915050565b5f806040838503121561344b575f80fd5b823561345681613394565b946020939093013593505050565b5f60208284031215613474575f80fd5b8135610c6481613394565b5f805f60608486031215613491575f80fd5b833561349c81613394565b925060208401356134ac81613394565b929592945050506040919091013590565b5f602082840312156134cd575f80fd5b5035919050565b5f805f80608085870312156134e7575f80fd5b5050823594602084013594506040840135936060013592509050565b5f8060408385031215613514575f80fd5b823561351f81613394565b915060208301356133e481613394565b5f805f60408486031215613541575f80fd5b833567ffffffffffffffff80821115613558575f80fd5b818601915086601f83011261356b575f80fd5b813581811115613579575f80fd5b8760208260051b850101111561358d575f80fd5b602092830195509350508401356135a3816133ab565b809150509250925092565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806135f757607f821691505b60208210810361361557634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610bbb57610bbb61361b565b5f8261366057634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610bbb57610bbb61361b565b5f60208284031215613688575f80fd5b5051919050565b5f6020828403121561369f575f80fd5b8151610c64816133ab565b634e487b7160e01b5f52603260045260245ffd5b5f600182016136cf576136cf61361b565b5060010190565b5f602082840312156136e6575f80fd5b8151610c6481613394565b5f8151808452602080850194508084015f5b838110156137285781516001600160a01b031687529582019590820190600101613703565b509495945050505050565b848152608060208201525f61374b60808301866136f1565b6001600160a01b03949094166040830152506060015292915050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610bbb57610bbb61361b565b85815284602082015260a060408201525f61382060a08301866136f1565b6001600160a01b0394909416606083015250608001529392505050565b5f805f6060848603121561384f575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212201c13f5777d91c2576fef36bd5e04a10aee889ed77b9cffec15607accfe36328e64736f6c634300081400334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
Deployed Bytecode
0x6080604052600436106103a9575f3560e01c806388e765ff116101e9578063c024666811610108578063e71dc3f51161009d578063f2fde38b1161006d578063f2fde38b14610a57578063f637434214610a76578063f88de0c314610a8b578063fc155d1d14610a9f575f80fd5b8063e71dc3f5146109ef578063e7ad9fcd14610a04578063ed49418914610a23578063f11a24d314610a42575f80fd5b8063d85ba063116100d8578063d85ba06314610962578063dc3f0d0f14610977578063dd62ed3e14610996578063e2f45605146109da575f80fd5b8063c0246668146108f1578063c18bc19514610910578063c9567bf91461092f578063d257b34f14610943575f80fd5b8063a0d82dc51161017e578063aa4bde281161014e578063aa4bde2814610879578063adb873bd1461088e578063b62496f5146108a3578063bbc0c742146108d1575f80fd5b8063a0d82dc514610811578063a457c2d714610826578063a8b02ee314610845578063a9059cbb1461085a575f80fd5b806395d89b41116101b957806395d89b41146107b45780639a7a23d6146107c85780639c3b4fdc146107e75780639fccce32146107fc575f80fd5b806388e765ff1461073f5780638da5cb5b146107545780638f5b0c1f14610771578063921369131461079f575f80fd5b8063452ed4f1116102d55780636ddd17131161026a5780637571336a1161023a5780637571336a146106d6578063764556dc146106f55780637bce5a041461070a57806380d4acc21461071f575f80fd5b80636ddd17131461066f57806370a082311461068f578063715018a6146106ae578063751039fc146106c2575f80fd5b806354c001dd116102a557806354c001dd1461061157806366d602ae146106305780636a486a8e146106455780636b0a894c1461065a575f80fd5b8063452ed4f11461059557806348ae238f146105b45780634be5ac63146105d357806352a43b25146105f2575f80fd5b80631a8145bb1161034b5780632be32b611161031b5780632be32b611461051d5780632e6ed7ef1461053c578063313ce5671461055b5780633950935114610576575f80fd5b80631a8145bb146104bf5780631d777856146104d45780631f3fed8f146104e957806323b872dd146104fe575f80fd5b80630758d924116103865780630758d9241461041d578063095ea7b31461045457806310d5de531461047357806318160ddd146104a1575f80fd5b806222abcd146103b45780626c5da6146103db57806306fdde03146103fc575f80fd5b366103b057005b5f80fd5b3480156103bf575f80fd5b50600f5443105b60405190151581526020015b60405180910390f35b3480156103e6575f80fd5b506103fa6103f53660046133b8565b610abe565b005b348015610407575f80fd5b50610410610b1b565b6040516103d291906133ef565b348015610428575f80fd5b5060095461043c906001600160a01b031681565b6040516001600160a01b0390911681526020016103d2565b34801561045f575f80fd5b506103c661046e36600461343a565b610bab565b34801561047e575f80fd5b506103c661048d366004613464565b60226020525f908152604090205460ff1681565b3480156104ac575f80fd5b506002545b6040519081526020016103d2565b3480156104ca575f80fd5b506104b160145481565b3480156104df575f80fd5b506104b160165481565b3480156104f4575f80fd5b506104b160135481565b348015610509575f80fd5b506103c661051836600461347f565b610bc1565b348015610528575f80fd5b506103fa6105373660046134bd565b610c6b565b348015610547575f80fd5b506103fa6105563660046134d4565b610d78565b348015610566575f80fd5b50604051601281526020016103d2565b348015610581575f80fd5b506103c661059036600461343a565b610e31565b3480156105a0575f80fd5b50600a5461043c906001600160a01b031681565b3480156105bf575f80fd5b506103c66105ce366004613503565b610e6c565b3480156105de575f80fd5b506103fa6105ed366004613464565b61106e565b3480156105fd575f80fd5b506103fa61060c36600461347f565b61111c565b34801561061c575f80fd5b506103fa61062b366004613464565b611206565b34801561063b575f80fd5b506104b160075481565b348015610650575f80fd5b506104b1601c5481565b348015610665575f80fd5b506104b160115481565b34801561067a575f80fd5b506012546103c690600160b01b900460ff1681565b34801561069a575f80fd5b506104b16106a9366004613464565b6112ae565b3480156106b9575f80fd5b506103fa6112c8565b3480156106cd575f80fd5b506103fa61133b565b3480156106e1575f80fd5b506103fa6106f03660046133b8565b61139c565b348015610700575f80fd5b506104b1600e5481565b348015610715575f80fd5b506104b160185481565b34801561072a575f80fd5b506012546103c690600160a01b900460ff1681565b34801561074a575f80fd5b506104b160065481565b34801561075f575f80fd5b506005546001600160a01b031661043c565b34801561077c575f80fd5b506103c661078b366004613464565b60106020525f908152604090205460ff1681565b3480156107aa575f80fd5b506104b1601d5481565b3480156107bf575f80fd5b50610410611463565b3480156107d3575f80fd5b506103fa6107e23660046133b8565b611472565b3480156107f2575f80fd5b506104b1601a5481565b348015610807575f80fd5b506104b160155481565b34801561081c575f80fd5b506104b1601f5481565b348015610831575f80fd5b506103c661084036600461343a565b611565565b348015610850575f80fd5b506104b1600f5481565b348015610865575f80fd5b506103c661087436600461343a565b6115fd565b348015610884575f80fd5b506104b160085481565b348015610899575f80fd5b506104b160205481565b3480156108ae575f80fd5b506103c66108bd366004613464565b60236020525f908152604090205460ff1681565b3480156108dc575f80fd5b506012546103c690600160a81b900460ff1681565b3480156108fc575f80fd5b506103fa61090b3660046133b8565b611609565b34801561091b575f80fd5b506103fa61092a3660046134bd565b611691565b34801561093a575f80fd5b506103fa61179a565b34801561094e575f80fd5b506103fa61095d3660046134bd565b611861565b34801561096d575f80fd5b506104b160175481565b348015610982575f80fd5b506103fa6109913660046134bd565b6119ac565b3480156109a1575f80fd5b506104b16109b0366004613503565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156109e5575f80fd5b506104b1600b5481565b3480156109fa575f80fd5b506104b1601b5481565b348015610a0f575f80fd5b506103fa610a1e3660046134d4565b611ab3565b348015610a2e575f80fd5b506103fa610a3d36600461352f565b611b66565b348015610a4d575f80fd5b506104b160195481565b348015610a62575f80fd5b506103fa610a71366004613464565b611bfe565b348015610a81575f80fd5b506104b1601e5481565b348015610a96575f80fd5b506103fa611ce8565b348015610aaa575f80fd5b506103fa610ab93660046134bd565b611d51565b6005546001600160a01b03163314610af15760405162461bcd60e51b8152600401610ae8906135ae565b60405180910390fd5b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b606060038054610b2a906135e3565b80601f0160208091040260200160405190810160405280929190818152602001828054610b56906135e3565b8015610ba15780601f10610b7857610100808354040283529160200191610ba1565b820191905f5260205f20905b815481529060010190602001808311610b8457829003601f168201915b5050505050905090565b5f610bb7338484611f8b565b5060015b92915050565b5f610bcd8484846120af565b6001600160a01b0384165f90815260016020908152604080832033845290915290205482811015610c515760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ae8565b610c5e8533858403611f8b565b60019150505b9392505050565b6005546001600160a01b03163314610c955760405162461bcd60e51b8152600401610ae8906135ae565b670de0b6b3a76400006103e8610caa60025490565b610cb590600261362f565b610cbf9190613646565b610cc99190613646565b811015610d2a5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610ae8565b610d3c81670de0b6b3a764000061362f565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b6005546001600160a01b03163314610da25760405162461bcd60e51b8152600401610ae8906135ae565b60188490556019839055601a829055601b8190558082610dc28587613665565b610dcc9190613665565b610dd69190613665565b601781905560031015610e2b5760405162461bcd60e51b815260206004820152601b60248201527f4d757374206b65657020746178206174203325206f72206c65737300000000006044820152606401610ae8565b50505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091610bb7918590610e67908690613665565b611f8b565b6005545f906001600160a01b03163314610e985760405162461bcd60e51b8152600401610ae8906135ae565b306001600160a01b03841603610ef05760405162461bcd60e51b815260206004820152601960248201527f43616e2774207769746864726177207468697320746f6b656e000000000000006044820152606401610ae8565b6001600160a01b038316610f465760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610ae8565b6040516370a0823160e01b81523060048201525f906001600160a01b038516906370a0823190602401602060405180830381865afa158015610f8a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fae9190613678565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303815f875af1158015610ffe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611022919061368f565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b031633146110985760405162461bcd60e51b8152600401610ae8906135ae565b6001600160a01b0381166110fa5760405162461bcd60e51b8152602060048201526024808201527f5f74726561737572794164647265737320616464726573732063616e6e6f74206044820152630626520360e41b6064820152608401610ae8565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600b54611128306112ae565b101561119e576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610ae8565b6111a9838383612a6f565b1561120157600c805460ff191660011790556111c3612b73565b600c805460ff191690556040514281527f6295057a008341edc8aeb9033c9270523983da5c6f78ed217baf0924117f66469060200160405180910390a15b505050565b6005546001600160a01b031633146112305760405162461bcd60e51b8152600401610ae8906135ae565b6001600160a01b0381166112865760405162461bcd60e51b815260206004820152601f60248201527f5f6665654164647265737320616464726573732063616e6e6f742062652030006044820152606401610ae8565b600c80546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b03165f9081526020819052604090205490565b6005546001600160a01b031633146112f25760405162461bcd60e51b8152600401610ae8906135ae565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146113655760405162461bcd60e51b8152600401610ae8906135ae565b6012805460ff60a01b191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c905f90a1565b6005546001600160a01b031633146113c65760405162461bcd60e51b8152600401610ae8906135ae565b8061143957600a546001600160a01b03908116908316036114395760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610ae8565b6001600160a01b03919091165f908152602260205260409020805460ff1916911515919091179055565b606060048054610b2a906135e3565b6005546001600160a01b0316331461149c5760405162461bcd60e51b8152600401610ae8906135ae565b600a546001600160a01b03908116908316036115205760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610ae8565b61152a8282612da9565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab905f90a35050565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156115e65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ae8565b6115f33385858403611f8b565b5060019392505050565b5f610bb73384846120af565b6005546001600160a01b031633146116335760405162461bcd60e51b8152600401610ae8906135ae565b6001600160a01b0382165f81815260216020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b031633146116bb5760405162461bcd60e51b8152600401610ae8906135ae565b670de0b6b3a76400006103e86116d060025490565b6116db90600361362f565b6116e59190613646565b6116ef9190613646565b8110156117535760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610ae8565b61176581670de0b6b3a764000061362f565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610d6d565b6005546001600160a01b031633146117c45760405162461bcd60e51b8152600401610ae8906135ae565b601254600160a81b900460ff161561181e5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610ae8565b6012805461ffff60a81b191661010160a81b17905543600e556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb7905f90a1565b6005546001600160a01b0316331461188b5760405162461bcd60e51b8152600401610ae8906135ae565b620186a061189860025490565b6118a390600161362f565b6118ad9190613646565b81101561191a5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610ae8565b6103e861192660025490565b61193190600161362f565b61193b9190613646565b8111156119a75760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610ae8565b600b55565b6005546001600160a01b031633146119d65760405162461bcd60e51b8152600401610ae8906135ae565b670de0b6b3a76400006103e86119eb60025490565b6119f690600261362f565b611a009190613646565b611a0a9190613646565b811015611a6c5760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610ae8565b611a7e81670de0b6b3a764000061362f565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610d6d565b6005546001600160a01b03163314611add5760405162461bcd60e51b8152600401610ae8906135ae565b601d849055601e839055601f82905560208190558082611afd8587613665565b611b079190613665565b611b119190613665565b601c81905560031015610e2b5760405162461bcd60e51b815260206004820152601b60248201527f4d757374206b65657020746178206174203325206f72206c65737300000000006044820152606401610ae8565b6005546001600160a01b03163314611b905760405162461bcd60e51b8152600401610ae8906135ae565b5f5b82811015610e2b578160105f868685818110611bb057611bb06136aa565b9050602002016020810190611bc59190613464565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905580611bf6816136be565b915050611b92565b6005546001600160a01b03163314611c285760405162461bcd60e51b8152600401610ae8906135ae565b6001600160a01b038116611c8d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ae8565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314611d125760405162461bcd60e51b8152600401610ae8906135ae565b6040515f90339047908381818185875af1925050503d805f8114610e2b576040519150601f19603f3d011682016040523d82523d5f602084013e610e2b565b6005546001600160a01b03163314611d7b5760405162461bcd60e51b8152600401610ae8906135ae565b674563918244f40000811115611e085760405162461bcd60e51b815260206004820152604660248201527f4d6179206e6f7420627579206d6f7265207468616e20352045544820696e206160448201527f2073696e676c652062757920746f207265647563652073616e64776963682061606482015265747461636b7360d01b608482015260a401610ae8565b6040805160028082526060820183525f926020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015611e6f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e9391906136d6565b815f81518110611ea557611ea56136aa565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611ed957611ed96136aa565b6001600160a01b03928316602091820292909201015260095460405163b6f9de9560e01b815291169063b6f9de95908490611f20905f90869061dead904290600401613733565b5f604051808303818588803b158015611f37575f80fd5b505af1158015611f49573d5f803e3d5ffd5b50505050507fa017c1567cfcdd2d750a8c01e39fe2a846bcebc293c7d078477014d68482056882604051611f7f91815260200190565b60405180910390a15050565b6001600160a01b038316611fed5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ae8565b6001600160a01b03821661204e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ae8565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166120d55760405162461bcd60e51b8152600401610ae890613767565b6001600160a01b0382166120fb5760405162461bcd60e51b8152600401610ae8906137ac565b5f811161214a5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610ae8565b601254600160a81b900460ff166121dd576001600160a01b0383165f9081526021602052604090205460ff168061219857506001600160a01b0382165f9081526021602052604090205460ff165b6121dd5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610ae8565b600f54156122af576001600160a01b0383165f9081526010602052604090205460ff16158061221957506005546001600160a01b038381169116145b8061222e57506001600160a01b03821661dead145b6122af5760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610ae8565b601254600160a01b900460ff1615612597576005546001600160a01b038481169116148015906122ed57506005546001600160a01b03838116911614155b801561230157506001600160a01b03821615155b801561231857506001600160a01b03821661dead14155b801561233c57506001600160a01b0383165f9081526021602052604090205460ff16155b801561236057506001600160a01b0382165f9081526021602052604090205460ff16155b15612597576001600160a01b0383165f9081526023602052604090205460ff1680156123a457506001600160a01b0382165f9081526022602052604090205460ff16155b156124705760065481111561240c5760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610ae8565b600854612418836112ae565b6124229083613665565b111561246b5760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610ae8565b612597565b6001600160a01b0382165f9081526023602052604090205460ff1680156124af57506001600160a01b0383165f9081526022602052604090205460ff16155b156125195760075481111561246b5760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610ae8565b6001600160a01b0382165f9081526022602052604090205460ff1661259757600854612544836112ae565b61254e9083613665565b11156125975760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b6044820152606401610ae8565b5f6125a1306112ae565b600b54909150811080159081906125c15750601254600160b01b900460ff165b80156125d05750600c5460ff16155b80156125f457506001600160a01b0385165f9081526023602052604090205460ff16155b801561261857506001600160a01b0385165f9081526021602052604090205460ff16155b801561263c57506001600160a01b0384165f9081526021602052604090205460ff16155b1561266157600c805460ff19166001179055612656612b73565b600c805460ff191690555b600161266d8686612dd6565b1561267557505f5b5f8115612a5b57600f54431080156126a457506001600160a01b0387165f9081526023602052604090205460ff165b80156126c857506001600160a01b0386165f9081526023602052604090205460ff16155b80156126d557505f601754115b1561284f576001600160a01b0386165f9081526010602052604090205460ff16612773576001600160a01b0386165f908152601060205260408120805460ff191660019081179091556011805491929091612731908490613665565b90915550506040516001600160a01b03871681527fa1edd201ce832756d2ae8efcb05004078f6e2cc8c4b651ed49bb8ae50a0b0f239060200160405180910390a15b606461278086606361362f565b61278a9190613646565b90506017546019548261279d919061362f565b6127a79190613646565b60145f8282546127b79190613665565b90915550506017546018546127cc908361362f565b6127d69190613646565b60135f8282546127e69190613665565b9091555050601754601a546127fb908361362f565b6128059190613646565b60155f8282546128159190613665565b9091555050601754601b5461282a908361362f565b6128349190613646565b60165f8282546128449190613665565b90915550612a3d9050565b6001600160a01b0386165f9081526023602052604090205460ff16801561287757505f601c54115b15612936576064601c548661288c919061362f565b6128969190613646565b9050601c54601e54826128a9919061362f565b6128b39190613646565b60145f8282546128c39190613665565b9091555050601c54601d546128d8908361362f565b6128e29190613646565b60135f8282546128f29190613665565b9091555050601c54601f54612907908361362f565b6129119190613646565b60155f8282546129219190613665565b9091555050601c5460205461282a908361362f565b6001600160a01b0387165f9081526023602052604090205460ff16801561295e57505f601754115b15612a3d57606460175486612973919061362f565b61297d9190613646565b905060175460195482612990919061362f565b61299a9190613646565b60145f8282546129aa9190613665565b90915550506017546018546129bf908361362f565b6129c99190613646565b60135f8282546129d99190613665565b9091555050601754601a546129ee908361362f565b6129f89190613646565b60155f828254612a089190613665565b9091555050601754601b54612a1d908361362f565b612a279190613646565b60165f828254612a379190613665565b90915550505b8015612a4e57612a4e873083612ebf565b612a5881866137ef565b94505b612a66878787612ebf565b50505050505050565b335f90815260216020526040812054819060ff16612b34575f601654118015612aa25750601654612a9f306112ae565b10155b15612ab357612ab333601654613012565b505f6016819055600190612ac6306112ae565b90505f601554601354601454612adc9190613665565b612ae69190613665565b9050811580612af3575080155b15612b03575f9350505050610c64565b600b54612b1190600761362f565b821115612b2957600b54612b2690600761362f565b91505b829350505050610c64565b8215612b4b57612b448584613012565b505f612b69565b50601280546001600160a01b0319166001600160a01b0385161790555f5b5f612ac6306112ae565b5f601654118015612b8e5750601654612b8b306112ae565b10155b15612b9f57612b9f30601654613012565b5f6016819055612bae306112ae565b90505f601554601354601454612bc49190613665565b612bce9190613665565b9050811580612bdb575080155b15612be4575050565b600b54612bf290600561362f565b821115612c0a57600b54612c0790600561362f565b91505b5f8060028360145486612c1d919061362f565b612c279190613646565b612c319190613646565b9050612c45612c4082866137ef565b61313a565b601454479081905f90612c5a90600290613646565b612c6490876137ef565b601354612c71908561362f565b612c7b9190613646565b90505f6002601454612c8d9190613646565b612c9790886137ef565b601554612ca4908661362f565b612cae9190613646565b9050612cba8183613665565b612cc490846137ef565b5f60148190556013819055601581905560165592508415801590612ce757505f83115b15612cf657612cf6858461328a565b600d546040516001600160a01b039091169082905f81818185875af1925050503d805f8114612d40576040519150601f19603f3d011682016040523d82523d5f602084013e612d45565b606091505b5050600c5460405191975061010090046001600160a01b03169047905f81818185875af1925050503d805f8114612d97576040519150601f19603f3d011682016040523d82523d5f602084013e612d9c565b606091505b5050505050505050505050565b6001600160a01b0382165f908152602360205260409020805460ff191682151517905561152a8282613339565b6001600160a01b0382165f908152602160205260408120548190819060ff1680612e1757506001600160a01b0384165f9081526021602052604090205460ff165b15612e255760019150612eb7565b6012546001600160a01b031615612eb7576012546040516323b872dd60e01b81526001600160a01b038781166004830152868116602483015260448201849052909116906323b872dd906064016020604051808303815f875af1158015612e8e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612eb2919061368f565b505f91505b509392505050565b6001600160a01b038316612ee55760405162461bcd60e51b8152600401610ae890613767565b6001600160a01b038216612f0b5760405162461bcd60e51b8152600401610ae8906137ac565b6001600160a01b0383165f9081526020819052604090205481811015612f825760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ae8565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290612fb8908490613665565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161300491815260200190565b60405180910390a350505050565b6001600160a01b0382166130725760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610ae8565b6001600160a01b0382165f90815260208190526040902054818110156130e55760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610ae8565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016120a2565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061316d5761316d6136aa565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156131c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131e891906136d6565b816001815181106131fb576131fb6136aa565b6001600160a01b0392831660209182029290920101526009546132219130911684611f8b565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac947906132599085905f90869030904290600401613802565b5f604051808303815f87803b158015613270575f80fd5b505af1158015613282573d5f803e3d5ffd5b505050505050565b6009546132a29030906001600160a01b031684611f8b565b60095460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af115801561330d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613332919061383d565b5050505050565b6001600160a01b0382165f81815260226020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67469101611f7f565b6001600160a01b03811681146133a8575f80fd5b50565b80151581146133a8575f80fd5b5f80604083850312156133c9575f80fd5b82356133d481613394565b915060208301356133e4816133ab565b809150509250929050565b5f6020808352835180828501525f5b8181101561341a578581018301518582016040015282016133fe565b505f604082860101526040601f19601f8301168501019250505092915050565b5f806040838503121561344b575f80fd5b823561345681613394565b946020939093013593505050565b5f60208284031215613474575f80fd5b8135610c6481613394565b5f805f60608486031215613491575f80fd5b833561349c81613394565b925060208401356134ac81613394565b929592945050506040919091013590565b5f602082840312156134cd575f80fd5b5035919050565b5f805f80608085870312156134e7575f80fd5b5050823594602084013594506040840135936060013592509050565b5f8060408385031215613514575f80fd5b823561351f81613394565b915060208301356133e481613394565b5f805f60408486031215613541575f80fd5b833567ffffffffffffffff80821115613558575f80fd5b818601915086601f83011261356b575f80fd5b813581811115613579575f80fd5b8760208260051b850101111561358d575f80fd5b602092830195509350508401356135a3816133ab565b809150509250925092565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806135f757607f821691505b60208210810361361557634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610bbb57610bbb61361b565b5f8261366057634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610bbb57610bbb61361b565b5f60208284031215613688575f80fd5b5051919050565b5f6020828403121561369f575f80fd5b8151610c64816133ab565b634e487b7160e01b5f52603260045260245ffd5b5f600182016136cf576136cf61361b565b5060010190565b5f602082840312156136e6575f80fd5b8151610c6481613394565b5f8151808452602080850194508084015f5b838110156137285781516001600160a01b031687529582019590820190600101613703565b509495945050505050565b848152608060208201525f61374b60808301866136f1565b6001600160a01b03949094166040830152506060015292915050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610bbb57610bbb61361b565b85815284602082015260a060408201525f61382060a08301866136f1565b6001600160a01b0394909416606083015250608001529392505050565b5f805f6060848603121561384f575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212201c13f5777d91c2576fef36bd5e04a10aee889ed77b9cffec15607accfe36328e64736f6c63430008140033
Deployed Bytecode Sourcemap
7478:21747:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22323:113;;;;;;;;;;-1:-1:-1;22412:16:0;;22397:12;:31;22323:113;;;179:14:1;;172:22;154:41;;142:2;127:18;22323:113:0;;;;;;;;13324:126;;;;;;;;;;-1:-1:-1;13324:126:0;;;;;:::i;:::-;;:::i;:::-;;3050:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7628:27::-;;;;;;;;;;-1:-1:-1;7628:27:0;;;;-1:-1:-1;;;;;7628:27:0;;;;;;-1:-1:-1;;;;;1588:32:1;;;1570:51;;1558:2;1543:18;7628:27:0;1405:222:1;4030:194:0;;;;;;;;;;-1:-1:-1;4030:194:0;;;;;:::i;:::-;;:::i;8798:63::-;;;;;;;;;;-1:-1:-1;8798:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3371:108;;;;;;;;;;-1:-1:-1;3459:12:0;;3371:108;;;2350:25:1;;;2338:2;2323:18;3371:108:0;2204:177:1;8224:33:0;;;;;;;;;;;;;;;;8298:28;;;;;;;;;;;;;;;;8184:33;;;;;;;;;;;;;;;;4232:529;;;;;;;;;;-1:-1:-1;4232:529:0;;;;;:::i;:::-;;:::i;12344:312::-;;;;;;;;;;-1:-1:-1;12344:312:0;;;;;:::i;:::-;;:::i;15393:524::-;;;;;;;;;;-1:-1:-1;15393:524:0;;;;;:::i;:::-;;:::i;3270:93::-;;;;;;;;;;-1:-1:-1;3270:93:0;;3353:2;3564:36:1;;3552:2;3537:18;3270:93:0;3422:184:1;4769:290:0;;;;;;;;;;-1:-1:-1;4769:290:0;;;;;:::i;:::-;;:::i;7662:21::-;;;;;;;;;;-1:-1:-1;7662:21:0;;;;-1:-1:-1;;;;;7662:21:0;;;26736:471;;;;;;;;;;-1:-1:-1;26736:471:0;;;;;:::i;:::-;;:::i;28179:260::-;;;;;;;;;;-1:-1:-1;28179:260:0;;;;;:::i;:::-;;:::i;27215:461::-;;;;;;;;;;-1:-1:-1;27215:461:0;;;;;:::i;:::-;;:::i;27936:235::-;;;;;;;;;;-1:-1:-1;27936:235:0;;;;;:::i;:::-;;:::i;7554:28::-;;;;;;;;;;;;;;;;8508;;;;;;;;;;;;;;;;7995:25;;;;;;;;;;;;;;;;8144:31;;;;;;;;;;-1:-1:-1;8144:31:0;;;;-1:-1:-1;;;8144:31:0;;;;;;3487:143;;;;;;;;;;-1:-1:-1;3487:143:0;;;;;:::i;:::-;;:::i;2202:150::-;;;;;;;;;;;;;:::i;12220:116::-;;;;;;;;;;;;;:::i;14436:336::-;;;;;;;;;;-1:-1:-1;14436:336:0;;;;;:::i;:::-;;:::i;7819:38::-;;;;;;;;;;;;;;;;8369:30;;;;;;;;;;;;;;;;8063:34;;;;;;;;;;-1:-1:-1;8063:34:0;;;;-1:-1:-1;;;8063:34:0;;;;;;7520:27;;;;;;;;;;;;;;;;1988:79;;;;;;;;;;-1:-1:-1;2053:6:0;;-1:-1:-1;;;;;2053:6:0;1988:79;;7939:49;;;;;;;;;;-1:-1:-1;7939:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8543:31;;;;;;;;;;;;;;;;3158:104;;;;;;;;;;;;;:::i;14780:357::-;;;;;;;;;;-1:-1:-1;14780:357:0;;;;;:::i;:::-;;:::i;8443:24::-;;;;;;;;;;;;;;;;8264:27;;;;;;;;;;;;;;;;8619:25;;;;;;;;;;;;;;;;5067:475;;;;;;;;;;-1:-1:-1;5067:475:0;;;;;:::i;:::-;;:::i;7897:35::-;;;;;;;;;;;;;;;;3638:200;;;;;;;;;;-1:-1:-1;3638:200:0;;;;;:::i;:::-;;:::i;7589:30::-;;;;;;;;;;;;;;;;8651:26;;;;;;;;;;;;;;;;9019:57;;;;;;;;;;-1:-1:-1;9019:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8104:33;;;;;;;;;;-1:-1:-1;8104:33:0;;;;-1:-1:-1;;;8104:33:0;;;;;;16468:182;;;;;;;;;;-1:-1:-1;16468:182:0;;;;;:::i;:::-;;:::i;12664:327::-;;;;;;;;;;-1:-1:-1;12664:327:0;;;;;:::i;:::-;;:::i;11935:254::-;;;;;;;;;;;;;:::i;13760:428::-;;;;;;;;;;-1:-1:-1;13760:428:0;;;;;:::i;:::-;;:::i;8335:27::-;;;;;;;;;;;;;;;;12999:317;;;;;;;;;;-1:-1:-1;12999:317:0;;;;;:::i;:::-;;:::i;3846:176::-;;;;;;;;;;-1:-1:-1;3846:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;3987:18:0;;;3960:7;3987:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3846:176;7692:33;;;;;;;;;;;;;;;;8474:25;;;;;;;;;;;;;;;;15925:535;;;;;;;;;;-1:-1:-1;15925:535:0;;;;;:::i;:::-;;:::i;13458:232::-;;;;;;;;;;-1:-1:-1;13458:232:0;;;;;:::i;:::-;;:::i;8406:30::-;;;;;;;;;;;;;;;;2360:281;;;;;;;;;;-1:-1:-1;2360:281:0;;;;;:::i;:::-;;:::i;8581:31::-;;;;;;;;;;;;;;;;27746:182;;;;;;;;;;;;;:::i;28547:675::-;;;;;;;;;;-1:-1:-1;28547:675:0;;;;;:::i;:::-;;:::i;13324:126::-;2115:6;;-1:-1:-1;;;;;2115:6:0;1376:10;2115:22;2107:67;;;;-1:-1:-1;;;2107:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;13412:23:0;;;::::1;;::::0;;;:17:::1;:23;::::0;;;;:30;;-1:-1:-1;;13412:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13324:126::o;3050:100::-;3104:13;3137:5;3130:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3050:100;:::o;4030:194::-;4138:4;4155:39;1376:10;4178:7;4187:6;4155:8;:39::i;:::-;-1:-1:-1;4212:4:0;4030:194;;;;;:::o;4232:529::-;4372:4;4389:36;4399:6;4407:9;4418:6;4389:9;:36::i;:::-;-1:-1:-1;;;;;4465:19:0;;4438:24;4465:19;;;:11;:19;;;;;;;;1376:10;4465:33;;;;;;;;4531:26;;;;4509:116;;;;-1:-1:-1;;;4509:116:0;;5915:2:1;4509:116:0;;;5897:21:1;5954:2;5934:18;;;5927:30;5993:34;5973:18;;;5966:62;-1:-1:-1;;;6044:18:1;;;6037:38;6092:19;;4509:116:0;5713:404:1;4509:116:0;4661:57;4670:6;1376:10;4711:6;4692:16;:25;4661:8;:57::i;:::-;4749:4;4742:11;;;4232:529;;;;;;:::o;12344:312::-;2115:6;;-1:-1:-1;;;;;2115:6:0;1376:10;2115:22;2107:67;;;;-1:-1:-1;;;2107:67:0;;;;;;;:::i;:::-;12481:4:::1;12473;12452:13;3459:12:::0;;;3371:108;12452:13:::1;:17;::::0;12468:1:::1;12452:17;:::i;:::-;12451:26;;;;:::i;:::-;12450:35;;;;:::i;:::-;12440:6;:45;;12418:136;;;::::0;-1:-1:-1;;;12418:136:0;;6851:2:1;12418:136:0::1;::::0;::::1;6833:21:1::0;6890:2;6870:18;;;6863:30;6929:34;6909:18;;;6902:62;-1:-1:-1;;;6980:18:1;;;6973:39;7029:19;;12418:136:0::1;6649:405:1::0;12418:136:0::1;12580:19;:6:::0;12590:8:::1;12580:19;:::i;:::-;12565:12;:34:::0;;;12615:33:::1;::::0;2350:25:1;;;12615:33:0::1;::::0;2338:2:1;2323:18;12615:33:0::1;;;;;;;;12344:312:::0;:::o;15393:524::-;2115:6;;-1:-1:-1;;;;;2115:6:0;1376:10;2115:22;2107:67;;;;-1:-1:-1;;;2107:67:0;;;;;;;:::i;:::-;15570:15:::1;:31:::0;;;15612:15:::1;:31:::0;;;15654:9:::1;:19:::0;;;15684:10:::1;:21:::0;;;15697:8;15666:7;15744:46:::1;15630:13:::0;15588;15744:46:::1;:::i;:::-;:71;;;;:::i;:::-;:97;;;;:::i;:::-;15716:12;:125:::0;;;15876:1:::1;-1:-1:-1::0;15860:17:0::1;15852:57;;;::::0;-1:-1:-1;;;15852:57:0;;7391:2:1;15852:57:0::1;::::0;::::1;7373:21:1::0;7430:2;7410:18;;;7403:30;7469:29;7449:18;;;7442:57;7516:18;;15852:57:0::1;7189:351:1::0;15852:57:0::1;15393:524:::0;;;;:::o;4769:290::-;1376:10;4882:4;4971:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4971:34:0;;;;;;;;;;4882:4;;4899:130;;4949:7;;4971:47;;5008:10;;4971:47;:::i;:::-;4899:8;:130::i;26736:471::-;2115:6;;26841:10;;-1:-1:-1;;;;;2115:6:0;1376:10;2115:22;2107:67;;;;-1:-1:-1;;;2107:67:0;;;;;;;:::i;:::-;26890:4:::1;-1:-1:-1::0;;;;;26872:23:0;::::1;::::0;26864:61:::1;;;::::0;-1:-1:-1;;;26864:61:0;;7747:2:1;26864:61:0::1;::::0;::::1;7729:21:1::0;7786:2;7766:18;;;7759:30;7825:27;7805:18;;;7798:55;7870:18;;26864:61:0::1;7545:349:1::0;26864:61:0::1;-1:-1:-1::0;;;;;26944:20:0;::::1;26936:59;;;::::0;-1:-1:-1;;;26936:59:0;;8101:2:1;26936:59:0::1;::::0;::::1;8083:21:1::0;8140:2;8120:18;;;8113:30;8179:28;8159:18;;;8152:56;8225:18;;26936:59:0::1;7899:350:1::0;26936:59:0::1;27033:39;::::0;-1:-1:-1;;;27033:39:0;;27066:4:::1;27033:39;::::0;::::1;1570:51:1::0;27006:24:0::1;::::0;-1:-1:-1;;;;;27033:24:0;::::1;::::0;::::1;::::0;1543:18:1;;27033:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27091:46;::::0;-1:-1:-1;;;27091:46:0;;-1:-1:-1;;;;;8635:32:1;;;27091:46:0::1;::::0;::::1;8617:51:1::0;8684:18;;;8677:34;;;27006:66:0;;-1:-1:-1;27091:23:0;;::::1;::::0;::::1;::::0;8590:18:1;;27091:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27153;::::0;;-1:-1:-1;;;;;8635:32:1;;8617:51;;8699:2;8684:18;;8677:34;;;27083:54:0;;-1:-1:-1;27153:46:0::1;::::0;8590:18:1;27153:46:0::1;;;;;;;26853:354;26736:471:::0;;;;:::o;28179:260::-;2115:6;;-1:-1:-1;;;;;2115:6:0;1376:10;2115:22;2107:67;;;;-1:-1:-1;;;2107:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28283:30:0;::::1;28261:116;;;::::0;-1:-1:-1;;;28261:116:0;;9174:2:1;28261:116:0::1;::::0;::::1;9156:21:1::0;9213:2;9193:18;;;9186:30;9252:34;9232:18;;;9225:62;-1:-1:-1;;;9303:18:1;;;9296:34;9347:19;;28261:116:0::1;8972:400:1::0;28261:116:0::1;28388:15;:43:::0;;-1:-1:-1;;;;;;28388:43:0::1;-1:-1:-1::0;;;;;28388:43:0;;;::::1;::::0;;;::::1;::::0;;28179:260::o;27215:461::-;27357:18;;27329:24;27347:4;27329:9;:24::i;:::-;:46;;27307:160;;;;;-1:-1:-1;;;27307:160:0;;9579:2:1;27307:160:0;;;9561:21:1;9598:18;;;9591:30;;;;9657:34;9637:18;;;9630:62;9728:34;9708:18;;;9701:62;9780:19;;27307:160:0;9377:428:1;27307:160:0;27482:33;27493:8;27503:4;27509:5;27482:10;:33::i;:::-;27478:191;;;27532:8;:15;;-1:-1:-1;;27532:15:0;27543:4;27532:15;;;27562:10;:8;:10::i;:::-;27587:8;:16;;-1:-1:-1;;27587:16:0;;;27625:32;;27641:15;2350:25:1;;27625:32:0;;2338:2:1;2323:18;27625:32:0;;;;;;;27478:191;27215:461;;;:::o;27936:235::-;2115:6;;-1:-1:-1;;;;;2115:6:0;1376:10;2115:22;2107:67;;;;-1:-1:-1;;;2107:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28035:25:0;::::1;28013:106;;;::::0;-1:-1:-1;;;28013:106:0;;10012:2:1;28013:106:0::1;::::0;::::1;9994:21:1::0;10051:2;10031:18;;;10024:30;10090:33;10070:18;;;10063:61;10141:18;;28013:106:0::1;9810:355:1::0;28013:106:0::1;28130:10;:33:::0;;-1:-1:-1;;;;;28130:33:0;;::::1;;;-1:-1:-1::0;;;;;;28130:33:0;;::::1;::::0;;;::::1;::::0;;27936:235::o;3487:143::-;-1:-1:-1;;;;;3604:18:0;3577:7;3604:18;;;;;;;;;;;;3487:143::o;2202:150::-;2115:6;;-1:-1:-1;;;;;2115:6:0;1376:10;2115:22;2107:67;;;;-1:-1:-1;;;2107:67:0;;;;;;;:::i;:::-;2295:6:::1;::::0;2274:40:::1;::::0;2311:1:::1;::::0;-1:-1:-1;;;;;2295:6:0::1;::::0;2274:40:::1;::::0;2311:1;;2274:40:::1;2325:6;:19:::0;;-1:-1:-1;;;;;;2325:19:0::1;::::0;;2202:150::o;12220:116::-;2115:6;;-1:-1:-1;;;;;2115:6:0;1376:10;2115:22;2107:67;;;;-1:-1:-1;;;2107:67:0;;;;;;;:::i;:::-;12274:15:::1;:23:::0;;-1:-1:-1;;;;12274:23:0::1;::::0;;12313:15:::1;::::0;::::1;::::0;12292:5:::1;::::0;12313:15:::1;12220:116::o:0;14436:336::-;2115:6;;-1:-1:-1;;;;;2115:6:0;1376:10;2115:22;2107:67;;;;-1:-1:-1;;;2107:67:0;;;;;;;:::i;:::-;14558:4:::1;14553:155;;14615:6;::::0;-1:-1:-1;;;;;14615:6:0;;::::1;14605:16:::0;;::::1;::::0;14579:117:::1;;;::::0;-1:-1:-1;;;14579:117:0;;10372:2:1;14579:117:0::1;::::0;::::1;10354:21:1::0;10411:2;10391:18;;;10384:30;10450:34;10430:18;;;10423:62;-1:-1:-1;;;10501:18:1;;;10494:37;10548:19;;14579:117:0::1;10170:403:1::0;14579:117:0::1;-1:-1:-1::0;;;;;14718:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;14718:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14436:336::o;3158:104::-;3214:13;3247:7;3240:14;;;;;:::i;14780:357::-;2115:6;;-1:-1:-1;;;;;2115:6:0;1376:10;2115:22;2107:67;;;;-1:-1:-1;;;2107:67:0;;;;;;;:::i;:::-;14928:6:::1;::::0;-1:-1:-1;;;;;14928:6:0;;::::1;14920:14:::0;;::::1;::::0;14898:121:::1;;;::::0;-1:-1:-1;;;14898:121:0;;10780:2:1;14898:121:0::1;::::0;::::1;10762:21:1::0;10819:2;10799:18;;;10792:30;10858:34;10838:18;;;10831:62;10929:27;10909:18;;;10902:55;10974:19;;14898:121:0::1;10578:421:1::0;14898:121:0::1;15032:41;15061:4;15067:5;15032:28;:41::i;:::-;15089:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;15089:40:0;::::1;::::0;::::1;::::0;;;::::1;14780:357:::0;;:::o;5067:475::-;1376:10;5185:4;5229:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5229:34:0;;;;;;;;;;5296:35;;;;5274:122;;;;-1:-1:-1;;;5274:122:0;;11206:2:1;5274:122:0;;;11188:21:1;11245:2;11225:18;;;11218:30;11284:34;11264:18;;;11257:62;-1:-1:-1;;;11335:18:1;;;11328:35;11380:19;;5274:122:0;11004:401:1;5274:122:0;5432:67;1376:10;5455:7;5483:15;5464:16;:34;5432:8;:67::i;:::-;-1:-1:-1;5530:4:0;;5067:475;-1:-1:-1;;;5067:475:0:o;3638:200::-;3749:4;3766:42;1376:10;3790:9;3801:6;3766:9;:42::i;16468:182::-;2115:6;;-1:-1:-1;;;;;2115:6:0;1376:10;2115:22;2107:67;;;;-1:-1:-1;;;2107:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16553:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;16553:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;16608:34;;154:41:1;;;16608:34:0::1;::::0;127:18:1;16608:34:0::1;;;;;;;16468:182:::0;;:::o;12664:327::-;2115:6;;-1:-1:-1;;;;;2115:6:0;1376:10;2115:22;2107:67;;;;-1:-1:-1;;;2107:67:0;;;;;;;:::i;:::-;12804:4:::1;12796;12775:13;3459:12:::0;;;3371:108;12775:13:::1;:17;::::0;12791:1:::1;12775:17;:::i;:::-;12774:26;;;;:::i;:::-;12773:35;;;;:::i;:::-;12763:6;:45;;12741:139;;;::::0;-1:-1:-1;;;12741:139:0;;11612:2:1;12741:139:0::1;::::0;::::1;11594:21:1::0;11651:2;11631:18;;;11624:30;11690:34;11670:18;;;11663:62;-1:-1:-1;;;11741:18:1;;;11734:42;11793:19;;12741:139:0::1;11410:408:1::0;12741:139:0::1;12909:19;:6:::0;12919:8:::1;12909:19;:::i;:::-;12891:15;:37:::0;;;12944:39:::1;::::0;2350:25:1;;;12944:39:0::1;::::0;2338:2:1;2323:18;12944:39:0::1;2204:177:1::0;11935:254:0;2115:6;;-1:-1:-1;;;;;2115:6:0;1376:10;2115:22;2107:67;;;;-1:-1:-1;;;2107:67:0;;;;;;;:::i;:::-;12003:13:::1;::::0;-1:-1:-1;;;12003:13:0;::::1;;;12002:14;11994:50;;;::::0;-1:-1:-1;;;11994:50:0;;12025:2:1;11994:50:0::1;::::0;::::1;12007:21:1::0;12064:2;12044:18;;;12037:30;12103:25;12083:18;;;12076:53;12146:18;;11994:50:0::1;11823:347:1::0;11994:50:0::1;12055:13;:20:::0;;-1:-1:-1;;;;12086:18:0;-1:-1:-1;;;12086:18:0;;;12137:12:::1;12115:19;:34:::0;12165:16:::1;::::0;::::1;::::0;-1:-1:-1;;12165:16:0::1;11935:254::o:0;13760:428::-;2115:6;;-1:-1:-1;;;;;2115:6:0;1376:10;2115:22;2107:67;;;;-1:-1:-1;;;2107:67:0;;;;;;;:::i;:::-;13900:6:::1;13879:13;3459:12:::0;;;3371:108;13879:13:::1;:17;::::0;13895:1:::1;13879:17;:::i;:::-;13878:28;;;;:::i;:::-;13865:9;:41;;13843:144;;;::::0;-1:-1:-1;;;13843:144:0;;12377:2:1;13843:144:0::1;::::0;::::1;12359:21:1::0;12416:2;12396:18;;;12389:30;12455:34;12435:18;;;12428:62;-1:-1:-1;;;12506:18:1;;;12499:51;12567:19;;13843:144:0::1;12175:417:1::0;13843:144:0::1;14055:4;14034:13;3459:12:::0;;;3371:108;14034:13:::1;:17;::::0;14050:1:::1;14034:17;:::i;:::-;14033:26;;;;:::i;:::-;14020:9;:39;;13998:141;;;::::0;-1:-1:-1;;;13998:141:0;;12799:2:1;13998:141:0::1;::::0;::::1;12781:21:1::0;12838:2;12818:18;;;12811:30;12877:34;12857:18;;;12850:62;-1:-1:-1;;;12928:18:1;;;12921:50;12988:19;;13998:141:0::1;12597:416:1::0;13998:141:0::1;14150:18;:30:::0;13760:428::o;12999:317::-;2115:6;;-1:-1:-1;;;;;2115:6:0;1376:10;2115:22;2107:67;;;;-1:-1:-1;;;2107:67:0;;;;;;;:::i;:::-;13137:4:::1;13129;13108:13;3459:12:::0;;;3371:108;13108:13:::1;:17;::::0;13124:1:::1;13108:17;:::i;:::-;13107:26;;;;:::i;:::-;13106:35;;;;:::i;:::-;13096:6;:45;;13074:137;;;::::0;-1:-1:-1;;;13074:137:0;;13220:2:1;13074:137:0::1;::::0;::::1;13202:21:1::0;13259:2;13239:18;;;13232:30;13298:34;13278:18;;;13271:62;-1:-1:-1;;;13349:18:1;;;13342:40;13399:19;;13074:137:0::1;13018:406:1::0;13074:137:0::1;13238:19;:6:::0;13248:8:::1;13238:19;:::i;:::-;13222:13;:35:::0;;;13273::::1;::::0;2350:25:1;;;13273:35:0::1;::::0;2338:2:1;2323:18;13273:35:0::1;2204:177:1::0;15925:535:0;2115:6;;-1:-1:-1;;;;;2115:6:0;1376:10;2115:22;2107:67;;;;-1:-1:-1;;;2107:67:0;;;;;;;:::i;:::-;16103:16:::1;:32:::0;;;16146:16:::1;:32:::0;;;16189:10:::1;:20:::0;;;16220:11:::1;:22:::0;;;16234:8;16202:7;16282:48:::1;16165:13:::0;16122;16282:48:::1;:::i;:::-;:74;;;;:::i;:::-;:101;;;;:::i;:::-;16253:13;:130:::0;;;16419:1:::1;-1:-1:-1::0;16402:18:0::1;16394:58;;;::::0;-1:-1:-1;;;16394:58:0;;7391:2:1;16394:58:0::1;::::0;::::1;7373:21:1::0;7430:2;7410:18;;;7403:30;7469:29;7449:18;;;7442:57;7516:18;;16394:58:0::1;7189:351:1::0;13458:232:0;2115:6;;-1:-1:-1;;;;;2115:6:0;1376:10;2115:22;2107:67;;;;-1:-1:-1;;;2107:67:0;;;;;;;:::i;:::-;13580:9:::1;13575:108;13595:18:::0;;::::1;13575:108;;;13667:4;13635:17;:29;13653:7;;13661:1;13653:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13635:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;13635:29:0;:36;;-1:-1:-1;;13635:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13615:3;::::1;::::0;::::1;:::i;:::-;;;;13575:108;;2360:281:::0;2115:6;;-1:-1:-1;;;;;2115:6:0;1376:10;2115:22;2107:67;;;;-1:-1:-1;;;2107:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2463:22:0;::::1;2441:110;;;::::0;-1:-1:-1;;;2441:110:0;;13903:2:1;2441:110:0::1;::::0;::::1;13885:21:1::0;13942:2;13922:18;;;13915:30;13981:34;13961:18;;;13954:62;-1:-1:-1;;;14032:18:1;;;14025:36;14078:19;;2441:110:0::1;13701:402:1::0;2441:110:0::1;2588:6;::::0;2567:38:::1;::::0;-1:-1:-1;;;;;2567:38:0;;::::1;::::0;2588:6:::1;::::0;2567:38:::1;::::0;2588:6:::1;::::0;2567:38:::1;2616:6;:17:::0;;-1:-1:-1;;;;;;2616:17:0::1;-1:-1:-1::0;;;;;2616:17:0;;;::::1;::::0;;;::::1;::::0;;2360:281::o;27746:182::-;2115:6;;-1:-1:-1;;;;;2115:6:0;1376:10;2115:22;2107:67;;;;-1:-1:-1;;;2107:67:0;;;;;;;:::i;:::-;27838:82:::1;::::0;27801:12:::1;::::0;27846:10:::1;::::0;27870:21:::1;::::0;27801:12;27838:82;27801:12;27838:82;27870:21;27846:10;27838:82:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28547:675:::0;2115:6;;-1:-1:-1;;;;;2115:6:0;1376:10;2115:22;2107:67;;;;-1:-1:-1;;;2107:67:0;;;;;;;:::i;:::-;28658:7:::1;28643:11;:22;;28621:142;;;::::0;-1:-1:-1;;;28621:142:0;;14520:2:1;28621:142:0::1;::::0;::::1;14502:21:1::0;14559:2;14539:18;;;14532:30;14598:34;14578:18;;;14571:62;14669:34;14649:18;;;14642:62;-1:-1:-1;;;14720:19:1;;;14713:37;14767:19;;28621:142:0::1;14318:474:1::0;28621:142:0::1;28800:16;::::0;;28814:1:::1;28800:16:::0;;;;;::::1;::::0;;28776:21:::1;::::0;28800:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;28837:9:0::1;::::0;:16:::1;::::0;;-1:-1:-1;;;28837:16:0;;;;28776:40;;-1:-1:-1;;;;;;28837:9:0;;::::1;::::0;:14:::1;::::0;-1:-1:-1;28837:16:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28827:4;28832:1;28827:7;;;;;;;;:::i;:::-;;;;;;:26;-1:-1:-1::0;;;;;28827:26:0::1;;;-1:-1:-1::0;;;;;28827:26:0::1;;;::::0;::::1;28882:4;28864;28869:1;28864:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;28864:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;28926:9:::1;::::0;:243:::1;::::0;-1:-1:-1;;;28926:243:0;;:9;::::1;::::0;:60:::1;::::0;29008:11;;28926:243:::1;::::0;:9:::1;::::0;29094:4;;29121:6:::1;::::0;29143:15:::1;::::0;28926:243:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;29185:29;29202:11;29185:29;;;;2350:25:1::0;;2338:2;2323:18;;2204:177;29185:29:0::1;;;;;;;;28610:612;28547:675:::0;:::o;7091:380::-;-1:-1:-1;;;;;7227:19:0;;7219:68;;;;-1:-1:-1;;;7219:68:0;;16368:2:1;7219:68:0;;;16350:21:1;16407:2;16387:18;;;16380:30;16446:34;16426:18;;;16419:62;-1:-1:-1;;;16497:18:1;;;16490:34;16541:19;;7219:68:0;16166:400:1;7219:68:0;-1:-1:-1;;;;;7306:21:0;;7298:68;;;;-1:-1:-1;;;7298:68:0;;16773:2:1;7298:68:0;;;16755:21:1;16812:2;16792:18;;;16785:30;16851:34;16831:18;;;16824:62;-1:-1:-1;;;16902:18:1;;;16895:32;16944:19;;7298:68:0;16571:398:1;7298:68:0;-1:-1:-1;;;;;7379:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7431:32;;2350:25:1;;;7431:32:0;;2323:18:1;7431:32:0;;;;;;;;7091:380;;;:::o;16658:5078::-;-1:-1:-1;;;;;16790:18:0;;16782:68;;;;-1:-1:-1;;;16782:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16869:16:0;;16861:64;;;;-1:-1:-1;;;16861:64:0;;;;;;;:::i;:::-;16953:1;16944:6;:10;16936:52;;;;-1:-1:-1;;;16936:52:0;;17986:2:1;16936:52:0;;;17968:21:1;18025:2;18005:18;;;17998:30;18064:31;18044:18;;;18037:59;18113:18;;16936:52:0;17784:353:1;16936:52:0;17006:13;;-1:-1:-1;;;17006:13:0;;;;17001:183;;-1:-1:-1;;;;;17062:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;17091:23:0;;;;;;:19;:23;;;;;;;;17062:52;17036:136;;;;-1:-1:-1;;;17036:136:0;;18344:2:1;17036:136:0;;;18326:21:1;18383:2;18363:18;;;18356:30;-1:-1:-1;;;18402:18:1;;;18395:52;18464:18;;17036:136:0;18142:346:1;17036:136:0;17200:16;;:20;17196:251;;-1:-1:-1;;;;;17264:23:0;;;;;;:17;:23;;;;;;;;17263:24;;:41;;-1:-1:-1;2053:6:0;;-1:-1:-1;;;;;17291:13:0;;;2053:6;;17291:13;17263:41;:66;;;-1:-1:-1;;;;;;17308:21:0;;17322:6;17308:21;17263:66;17237:198;;;;-1:-1:-1;;;17237:198:0;;18695:2:1;17237:198:0;;;18677:21:1;18734:2;18714:18;;;18707:30;18773:34;18753:18;;;18746:62;18844:34;18824:18;;;18817:62;-1:-1:-1;;;18895:19:1;;;18888:37;18942:19;;17237:198:0;18493:474:1;17237:198:0;17463:15;;-1:-1:-1;;;17463:15:0;;;;17459:1496;;;2053:6;;-1:-1:-1;;;;;17517:15:0;;;2053:6;;17517:15;;;;:49;;-1:-1:-1;2053:6:0;;-1:-1:-1;;;;;17553:13:0;;;2053:6;;17553:13;;17517:49;:86;;;;-1:-1:-1;;;;;;17587:16:0;;;;17517:86;:128;;;;-1:-1:-1;;;;;;17624:21:0;;17638:6;17624:21;;17517:128;:175;;;;-1:-1:-1;;;;;;17667:25:0;;;;;;:19;:25;;;;;;;;17666:26;17517:175;:220;;;;-1:-1:-1;;;;;;17714:23:0;;;;;;:19;:23;;;;;;;;17713:24;17517:220;17495:1449;;;-1:-1:-1;;;;;17826:31:0;;;;;;:25;:31;;;;;;;;:92;;;;-1:-1:-1;;;;;;17883:35:0;;;;;;:31;:35;;;;;;;;17882:36;17826:92;17800:1129;;;18005:12;;17995:6;:22;;17961:148;;;;-1:-1:-1;;;17961:148:0;;19174:2:1;17961:148:0;;;19156:21:1;19213:2;19193:18;;;19186:30;19252:34;19232:18;;;19225:62;-1:-1:-1;;;19303:18:1;;;19296:38;19351:19;;17961:148:0;18972:404:1;17961:148:0;18192:15;;18175:13;18185:2;18175:9;:13::i;:::-;18166:22;;:6;:22;:::i;:::-;:41;;18132:151;;;;-1:-1:-1;;;18132:151:0;;19583:2:1;18132:151:0;;;19565:21:1;19622:2;19602:18;;;19595:30;-1:-1:-1;;;19641:18:1;;;19634:54;19705:18;;18132:151:0;19381:348:1;18132:151:0;17800:1129;;;-1:-1:-1;;;;;18381:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;18436:37:0;;;;;;:31;:37;;;;;;;;18435:38;18381:92;18355:574;;;18560:13;;18550:6;:23;;18516:151;;;;-1:-1:-1;;;18516:151:0;;19936:2:1;18516:151:0;;;19918:21:1;19975:2;19955:18;;;19948:30;20014:34;19994:18;;;19987:62;-1:-1:-1;;;20065:18:1;;;20058:40;20115:19;;18516:151:0;19734:406:1;18355:574:0;-1:-1:-1;;;;;18698:35:0;;;;;;:31;:35;;;;;;;;18693:236;;18818:15;;18801:13;18811:2;18801:9;:13::i;:::-;18792:22;;:6;:22;:::i;:::-;:41;;18758:151;;;;-1:-1:-1;;;18758:151:0;;19583:2:1;18758:151:0;;;19565:21:1;19622:2;19602:18;;;19595:30;-1:-1:-1;;;19641:18:1;;;19634:54;19705:18;;18758:151:0;19381:348:1;18758:151:0;18967:28;18998:24;19016:4;18998:9;:24::i;:::-;19074:18;;18967:55;;-1:-1:-1;19050:42:0;;;;;;;19123:35;;-1:-1:-1;19147:11:0;;-1:-1:-1;;;19147:11:0;;;;19123:35;:61;;;;-1:-1:-1;19176:8:0;;;;19175:9;19123:61;:110;;;;-1:-1:-1;;;;;;19202:31:0;;;;;;:25;:31;;;;;;;;19201:32;19123:110;:153;;;;-1:-1:-1;;;;;;19251:25:0;;;;;;:19;:25;;;;;;;;19250:26;19123:153;:194;;;;-1:-1:-1;;;;;;19294:23:0;;;;;;:19;:23;;;;;;;;19293:24;19123:194;19105:326;;;19344:8;:15;;-1:-1:-1;;19344:15:0;19355:4;19344:15;;;19376:10;:8;:10::i;:::-;19403:8;:16;;-1:-1:-1;;19403:16:0;;;19105:326;19458:4;19562:31;19584:4;19590:2;19562:21;:31::i;:::-;19558:79;;;-1:-1:-1;19620:5:0;19558:79;19657:12;19762:7;19758:1919;;;22412:16;;22397:12;:31;19844:71;;;;-1:-1:-1;;;;;;19884:31:0;;;;;;:25;:31;;;;;;;;19844:71;:122;;;;-1:-1:-1;;;;;;19937:29:0;;;;;;:25;:29;;;;;;;;19936:30;19844:122;:159;;;;;20002:1;19987:12;;:16;19844:159;19822:1706;;;-1:-1:-1;;;;;20043:21:0;;;;;;:17;:21;;;;;;;;20038:185;;-1:-1:-1;;;;;20089:21:0;;;;;;:17;:21;;;;;:28;;-1:-1:-1;;20089:28:0;20113:4;20089:28;;;;;;20140:10;:15;;20113:4;;20140:10;;:15;;20113:4;;20140:15;:::i;:::-;;;;-1:-1:-1;;20183:20:0;;-1:-1:-1;;;;;1588:32:1;;1570:51;;20183:20:0;;1558:2:1;1543:18;20183:20:0;;;;;;;20038:185;20266:3;20251:11;:6;20260:2;20251:11;:::i;:::-;20250:19;;;;:::i;:::-;20243:26;;20337:12;;20318:15;;20311:4;:22;;;;:::i;:::-;20310:39;;;;:::i;:::-;20288:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;20417:12:0;;20398:15;;20391:22;;:4;:22;:::i;:::-;20390:39;;;;:::i;:::-;20368:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;20485:12:0;;20472:9;;20465:16;;:4;:16;:::i;:::-;20464:33;;;;:::i;:::-;20448:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;20555:12:0;;20541:10;;20534:17;;:4;:17;:::i;:::-;20533:34;;;;:::i;:::-;20516:13;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;19822:1706:0;;-1:-1:-1;19822:1706:0;;-1:-1:-1;;;;;20630:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;20679:1;20663:13;;:17;20630:50;20626:902;;;20735:3;20718:13;;20709:6;:22;;;;:::i;:::-;20708:30;;;;:::i;:::-;20701:37;;20807:13;;20787:16;;20780:4;:23;;;;:::i;:::-;20779:41;;;;:::i;:::-;20757:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;20889:13:0;;20869:16;;20862:23;;:4;:23;:::i;:::-;20861:41;;;;:::i;:::-;20839:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;20959:13:0;;20945:10;;20938:17;;:4;:17;:::i;:::-;20937:35;;;;:::i;:::-;20921:12;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;21031:13:0;;21016:11;;21009:18;;:4;:18;:::i;20626:902::-;-1:-1:-1;;;;;21106:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;21156:1;21141:12;;:16;21106:51;21102:426;;;21211:3;21195:12;;21186:6;:21;;;;:::i;:::-;21185:29;;;;:::i;:::-;21178:36;;21282:12;;21263:15;;21256:4;:22;;;;:::i;:::-;21255:39;;;;:::i;:::-;21233:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;21362:12:0;;21343:15;;21336:22;;:4;:22;:::i;:::-;21335:39;;;;:::i;:::-;21313:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;21430:12:0;;21417:9;;21410:16;;:4;:16;:::i;:::-;21409:33;;;;:::i;:::-;21393:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;21500:12:0;;21486:10;;21479:17;;:4;:17;:::i;:::-;21478:34;;;;:::i;:::-;21461:13;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;21102:426:0;21548:8;;21544:91;;21577:42;21593:4;21607;21614;21577:15;:42::i;:::-;21651:14;21661:4;21651:14;;:::i;:::-;;;19758:1919;21695:33;21711:4;21717:2;21721:6;21695:15;:33::i;:::-;16771:4965;;;;16658:5078;;;:::o;23417:1600::-;23568:10;23503:4;23548:31;;;:19;:31;;;;;;23503:4;;23548:31;;23543:1467;;23634:1;23618:13;;:17;:62;;;;;23667:13;;23639:24;23657:4;23639:9;:24::i;:::-;:41;;23618:62;23596:167;;;23715:32;23721:10;23733:13;;23715:5;:32::i;:::-;-1:-1:-1;23793:1:0;23777:13;:17;;;23819:4;;23864:24;23882:4;23864:9;:24::i;:::-;23838:50;;23903:25;24007:12;;23969:18;;23931;;:56;;;;:::i;:::-;:88;;;;:::i;:::-;23903:116;-1:-1:-1;24040:20:0;;;:46;;-1:-1:-1;24064:22:0;;24040:46;24036:99;;;24114:5;24107:12;;;;;;;24036:99;24173:18;;:22;;24194:1;24173:22;:::i;:::-;24155:15;:40;24151:121;;;24234:18;;:22;;24255:1;24234:22;:::i;:::-;24216:40;;24151:121;24295:7;24288:14;;;;;;;23543:1467;24339:11;;24335:204;;24371:23;24377:7;24386;24371:5;:23::i;:::-;-1:-1:-1;24423:5:0;24335:204;;;-1:-1:-1;24469:13:0;:20;;-1:-1:-1;;;;;;24469:20:0;-1:-1:-1;;;;;24469:20:0;;;;;-1:-1:-1;24335:204:0;24553:23;24579:24;24597:4;24579:9;:24::i;25025:1703::-;25084:1;25068:13;;:17;:62;;;;;25117:13;;25089:24;25107:4;25089:9;:24::i;:::-;:41;;25068:62;25064:130;;;25147:35;25161:4;25168:13;;25147:5;:35::i;:::-;25220:1;25204:13;:17;;;25260:24;25278:4;25260:9;:24::i;:::-;25234:50;;25295:25;25391:12;;25357:18;;25323;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;25295:108;-1:-1:-1;25420:20:0;;;:46;;-1:-1:-1;25444:22:0;;25420:46;25416:85;;;25483:7;;25025:1703::o;25416:85::-;25535:18;;:22;;25556:1;25535:22;:::i;:::-;25517:15;:40;25513:113;;;25592:18;;:22;;25613:1;25592:22;:::i;:::-;25574:40;;25513:113;25638:12;25712:23;25825:1;25792:17;25757:18;;25739:15;:36;;;;:::i;:::-;25738:71;;;;:::i;:::-;:88;;;;:::i;:::-;25712:114;-1:-1:-1;25839:51:0;25856:33;25712:114;25856:15;:33;:::i;:::-;25839:16;:51::i;:::-;26102:18;;25924:21;;;;25903:18;;26102:22;;26123:1;;26102:22;:::i;:::-;26081:44;;:17;:44;:::i;:::-;26045:18;;26032:31;;:10;:31;:::i;:::-;26031:95;;;;:::i;:::-;26005:121;;26137:16;26242:1;26221:18;;:22;;;;:::i;:::-;26200:44;;:17;:44;:::i;:::-;26170:12;;26157:25;;:10;:25;:::i;:::-;26156:89;;;;:::i;:::-;26137:108;-1:-1:-1;26277:26:0;26137:108;26277:15;:26;:::i;:::-;26258:45;;;;:::i;:::-;26337:1;26316:18;:22;;;26349:18;:22;;;26382:12;:16;;;26409:13;:17;26258:45;-1:-1:-1;26443:19:0;;;;;:42;;;26484:1;26466:15;:19;26443:42;26439:121;;;26502:46;26515:15;26532;26502:12;:46::i;:::-;26594:15;;26586:50;;-1:-1:-1;;;;;26594:15:0;;;;26623:8;;26586:50;;;;26623:8;26594:15;26586:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26669:10:0;;26661:59;;26572:64;;-1:-1:-1;26669:10:0;;;-1:-1:-1;;;;;26669:10:0;;26694:21;;26661:59;;;;26694:21;26669:10;26661:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;25025:1703:0:o;15145:240::-;-1:-1:-1;;;;;15228:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;15228:39:0;;;;;;;15280;15228:31;:39;15280:26;:39::i;22444:448::-;-1:-1:-1;;;;;22616:25:0;;22544:4;22616:25;;;:19;:25;;;;;;22544:4;;;;22616:25;;;:52;;-1:-1:-1;;;;;;22645:23:0;;;;;;:19;:23;;;;;;;;22616:52;22612:247;;;22696:4;22685:15;;22612:247;;;22722:13;;-1:-1:-1;;;;;22722:13:0;:27;22718:141;;22773:13;;22766:50;;-1:-1:-1;;;22766:50:0;;-1:-1:-1;;;;;20536:15:1;;;22766:50:0;;;20518:34:1;20588:15;;;20568:18;;;20561:43;20620:18;;;20613:34;;;22773:13:0;;;;22766:34;;20453:18:1;;22766:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22842:5;22831:16;;22718:141;-1:-1:-1;22876:8:0;22444:448;-1:-1:-1;;;22444:448:0:o;5550:651::-;-1:-1:-1;;;;;5690:20:0;;5682:70;;;;-1:-1:-1;;;5682:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5771:23:0;;5763:71;;;;-1:-1:-1;;;5763:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5871:17:0;;5847:21;5871:17;;;;;;;;;;;5921:23;;;;5899:111;;;;-1:-1:-1;;;5899:111:0;;20860:2:1;5899:111:0;;;20842:21:1;20899:2;20879:18;;;20872:30;20938:34;20918:18;;;20911:62;-1:-1:-1;;;20989:18:1;;;20982:36;21035:19;;5899:111:0;20658:402:1;5899:111:0;-1:-1:-1;;;;;6046:17:0;;;:9;:17;;;;;;;;;;;6066:22;;;6046:42;;6110:20;;;;;;;;:30;;6082:6;;6046:9;6110:30;;6082:6;;6110:30;:::i;:::-;;;;;;;;6175:9;-1:-1:-1;;;;;6158:35:0;6167:6;-1:-1:-1;;;;;6158:35:0;;6186:6;6158:35;;;;2350:25:1;;2338:2;2323:18;;2204:177;6158:35:0;;;;;;;;5671:530;5550:651;;;:::o;6533:550::-;-1:-1:-1;;;;;6617:21:0;;6609:67;;;;-1:-1:-1;;;6609:67:0;;21267:2:1;6609:67:0;;;21249:21:1;21306:2;21286:18;;;21279:30;21345:34;21325:18;;;21318:62;-1:-1:-1;;;21396:18:1;;;21389:31;21437:19;;6609:67:0;21065:397:1;6609:67:0;-1:-1:-1;;;;;6712:18:0;;6687:22;6712:18;;;;;;;;;;;6749:24;;;;6741:71;;;;-1:-1:-1;;;6741:71:0;;21669:2:1;6741:71:0;;;21651:21:1;21708:2;21688:18;;;21681:30;21747:34;21727:18;;;21720:62;-1:-1:-1;;;21798:18:1;;;21791:32;21840:19;;6741:71:0;21467:398:1;6741:71:0;-1:-1:-1;;;;;6848:18:0;;:9;:18;;;;;;;;;;;6869:23;;;6848:44;;6987:12;:22;;;;;;;7038:37;2350:25:1;;;6848:9:0;;:18;7038:37;;2323:18:1;7038:37:0;2204:177:1;21744:571:0;21894:16;;;21908:1;21894:16;;;;;;;;21870:21;;21894:16;;;;;;;;;;-1:-1:-1;21894:16:0;21870:40;;21939:4;21921;21926:1;21921:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21921:23:0;;;:7;;;;;;;;;;:23;;;;21965:9;;:16;;;-1:-1:-1;;;21965:16:0;;;;:9;;;;;:14;;:16;;;;;21921:7;;21965:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21955:4;21960:1;21955:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21955:26:0;;;:7;;;;;;;;;:26;22026:9;;21994:56;;22011:4;;22026:9;22038:11;21994:8;:56::i;:::-;22089:9;;:218;;-1:-1:-1;;;22089:218:0;;-1:-1:-1;;;;;22089:9:0;;;;:60;;:218;;22164:11;;22089:9;;22234:4;;22261;;22281:15;;22089:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21799:516;21744:571;:::o;22900:509::-;23080:9;;23048:56;;23065:4;;-1:-1:-1;;;;;23080:9:0;23092:11;23048:8;:56::i;:::-;23147:9;;:254;;-1:-1:-1;;;23147:254:0;;23213:4;23147:254;;;22798:34:1;22848:18;;;22841:34;;;23147:9:0;22891:18:1;;;22884:34;;;22934:18;;;22927:34;23353:6:0;22977:19:1;;;22970:44;23375:15:0;23030:19:1;;;23023:35;-1:-1:-1;;;;;23147:9:0;;;;:25;;23180:9;;22732:19:1;;23147:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22900:509;;:::o;14196:232::-;-1:-1:-1;;;;;14309:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;14309:52:0;;;;;;;;;;14377:43;;23548:51:1;;;23615:18;;;23608:50;14377:43:0;;23521:18:1;14377:43:0;23380:284:1;206:131;-1:-1:-1;;;;;281:31:1;;271:42;;261:70;;327:1;324;317:12;261:70;206:131;:::o;342:118::-;428:5;421:13;414:21;407:5;404:32;394:60;;450:1;447;440:12;465:382;530:6;538;591:2;579:9;570:7;566:23;562:32;559:52;;;607:1;604;597:12;559:52;646:9;633:23;665:31;690:5;665:31;:::i;:::-;715:5;-1:-1:-1;772:2:1;757:18;;744:32;785:30;744:32;785:30;:::i;:::-;834:7;824:17;;;465:382;;;;;:::o;852:548::-;964:4;993:2;1022;1011:9;1004:21;1054:6;1048:13;1097:6;1092:2;1081:9;1077:18;1070:34;1122:1;1132:140;1146:6;1143:1;1140:13;1132:140;;;1241:14;;;1237:23;;1231:30;1207:17;;;1226:2;1203:26;1196:66;1161:10;;1132:140;;;1136:3;1321:1;1316:2;1307:6;1296:9;1292:22;1288:31;1281:42;1391:2;1384;1380:7;1375:2;1367:6;1363:15;1359:29;1348:9;1344:45;1340:54;1332:62;;;;852:548;;;;:::o;1632:315::-;1700:6;1708;1761:2;1749:9;1740:7;1736:23;1732:32;1729:52;;;1777:1;1774;1767:12;1729:52;1816:9;1803:23;1835:31;1860:5;1835:31;:::i;:::-;1885:5;1937:2;1922:18;;;;1909:32;;-1:-1:-1;;;1632:315:1:o;1952:247::-;2011:6;2064:2;2052:9;2043:7;2039:23;2035:32;2032:52;;;2080:1;2077;2070:12;2032:52;2119:9;2106:23;2138:31;2163:5;2138:31;:::i;2386:456::-;2463:6;2471;2479;2532:2;2520:9;2511:7;2507:23;2503:32;2500:52;;;2548:1;2545;2538:12;2500:52;2587:9;2574:23;2606:31;2631:5;2606:31;:::i;:::-;2656:5;-1:-1:-1;2713:2:1;2698:18;;2685:32;2726:33;2685:32;2726:33;:::i;:::-;2386:456;;2778:7;;-1:-1:-1;;;2832:2:1;2817:18;;;;2804:32;;2386:456::o;2847:180::-;2906:6;2959:2;2947:9;2938:7;2934:23;2930:32;2927:52;;;2975:1;2972;2965:12;2927:52;-1:-1:-1;2998:23:1;;2847:180;-1:-1:-1;2847:180:1:o;3032:385::-;3118:6;3126;3134;3142;3195:3;3183:9;3174:7;3170:23;3166:33;3163:53;;;3212:1;3209;3202:12;3163:53;-1:-1:-1;;3235:23:1;;;3305:2;3290:18;;3277:32;;-1:-1:-1;3356:2:1;3341:18;;3328:32;;3407:2;3392:18;3379:32;;-1:-1:-1;3032:385:1;-1:-1:-1;3032:385:1:o;3819:388::-;3887:6;3895;3948:2;3936:9;3927:7;3923:23;3919:32;3916:52;;;3964:1;3961;3954:12;3916:52;4003:9;3990:23;4022:31;4047:5;4022:31;:::i;:::-;4072:5;-1:-1:-1;4129:2:1;4114:18;;4101:32;4142:33;4101:32;4142:33;:::i;4212:750::-;4304:6;4312;4320;4373:2;4361:9;4352:7;4348:23;4344:32;4341:52;;;4389:1;4386;4379:12;4341:52;4429:9;4416:23;4458:18;4499:2;4491:6;4488:14;4485:34;;;4515:1;4512;4505:12;4485:34;4553:6;4542:9;4538:22;4528:32;;4598:7;4591:4;4587:2;4583:13;4579:27;4569:55;;4620:1;4617;4610:12;4569:55;4660:2;4647:16;4686:2;4678:6;4675:14;4672:34;;;4702:1;4699;4692:12;4672:34;4757:7;4750:4;4740:6;4737:1;4733:14;4729:2;4725:23;4721:34;4718:47;4715:67;;;4778:1;4775;4768:12;4715:67;4809:4;4801:13;;;;-1:-1:-1;4833:6:1;-1:-1:-1;;4874:20:1;;4861:34;4904:28;4861:34;4904:28;:::i;:::-;4951:5;4941:15;;;4212:750;;;;;:::o;4967:356::-;5169:2;5151:21;;;5188:18;;;5181:30;5247:34;5242:2;5227:18;;5220:62;5314:2;5299:18;;4967:356::o;5328:380::-;5407:1;5403:12;;;;5450;;;5471:61;;5525:4;5517:6;5513:17;5503:27;;5471:61;5578:2;5570:6;5567:14;5547:18;5544:38;5541:161;;5624:10;5619:3;5615:20;5612:1;5605:31;5659:4;5656:1;5649:15;5687:4;5684:1;5677:15;5541:161;;5328:380;;;:::o;6122:127::-;6183:10;6178:3;6174:20;6171:1;6164:31;6214:4;6211:1;6204:15;6238:4;6235:1;6228:15;6254:168;6327:9;;;6358;;6375:15;;;6369:22;;6355:37;6345:71;;6396:18;;:::i;6427:217::-;6467:1;6493;6483:132;;6537:10;6532:3;6528:20;6525:1;6518:31;6572:4;6569:1;6562:15;6600:4;6597:1;6590:15;6483:132;-1:-1:-1;6629:9:1;;6427:217::o;7059:125::-;7124:9;;;7145:10;;;7142:36;;;7158:18;;:::i;8254:184::-;8324:6;8377:2;8365:9;8356:7;8352:23;8348:32;8345:52;;;8393:1;8390;8383:12;8345:52;-1:-1:-1;8416:16:1;;8254:184;-1:-1:-1;8254:184:1:o;8722:245::-;8789:6;8842:2;8830:9;8821:7;8817:23;8813:32;8810:52;;;8858:1;8855;8848:12;8810:52;8890:9;8884:16;8909:28;8931:5;8909:28;:::i;13429:127::-;13490:10;13485:3;13481:20;13478:1;13471:31;13521:4;13518:1;13511:15;13545:4;13542:1;13535:15;13561:135;13600:3;13621:17;;;13618:43;;13641:18;;:::i;:::-;-1:-1:-1;13688:1:1;13677:13;;13561:135::o;14929:251::-;14999:6;15052:2;15040:9;15031:7;15027:23;15023:32;15020:52;;;15068:1;15065;15058:12;15020:52;15100:9;15094:16;15119:31;15144:5;15119:31;:::i;15185:461::-;15238:3;15276:5;15270:12;15303:6;15298:3;15291:19;15329:4;15358:2;15353:3;15349:12;15342:19;;15395:2;15388:5;15384:14;15416:1;15426:195;15440:6;15437:1;15434:13;15426:195;;;15505:13;;-1:-1:-1;;;;;15501:39:1;15489:52;;15561:12;;;;15596:15;;;;15537:1;15455:9;15426:195;;;-1:-1:-1;15637:3:1;;15185:461;-1:-1:-1;;;;;15185:461:1:o;15651:510::-;15922:6;15911:9;15904:25;15965:3;15960:2;15949:9;15945:18;15938:31;15885:4;15986:57;16038:3;16027:9;16023:19;16015:6;15986:57;:::i;:::-;-1:-1:-1;;;;;16079:32:1;;;;16074:2;16059:18;;16052:60;-1:-1:-1;16143:2:1;16128:18;16121:34;15978:65;15651:510;-1:-1:-1;;15651:510:1:o;16974:401::-;17176:2;17158:21;;;17215:2;17195:18;;;17188:30;17254:34;17249:2;17234:18;;17227:62;-1:-1:-1;;;17320:2:1;17305:18;;17298:35;17365:3;17350:19;;16974:401::o;17380:399::-;17582:2;17564:21;;;17621:2;17601:18;;;17594:30;17660:34;17655:2;17640:18;;17633:62;-1:-1:-1;;;17726:2:1;17711:18;;17704:33;17769:3;17754:19;;17380:399::o;20145:128::-;20212:9;;;20233:11;;;20230:37;;;20247:18;;:::i;21870:582::-;22169:6;22158:9;22151:25;22212:6;22207:2;22196:9;22192:18;22185:34;22255:3;22250:2;22239:9;22235:18;22228:31;22132:4;22276:57;22328:3;22317:9;22313:19;22305:6;22276:57;:::i;:::-;-1:-1:-1;;;;;22369:32:1;;;;22364:2;22349:18;;22342:60;-1:-1:-1;22433:3:1;22418:19;22411:35;22268:65;21870:582;-1:-1:-1;;;21870:582:1:o;23069:306::-;23157:6;23165;23173;23226:2;23214:9;23205:7;23201:23;23197:32;23194:52;;;23242:1;23239;23232:12;23194:52;23271:9;23265:16;23255:26;;23321:2;23310:9;23306:18;23300:25;23290:35;;23365:2;23354:9;23350:18;23344:25;23334:35;;23069:306;;;;;:::o
Swarm Source
ipfs://1c13f5777d91c2576fef36bd5e04a10aee889ed77b9cffec15607accfe36328e
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.