ERC-20
Overview
Max Total Supply
100,000,000,000 ShiftA
Holders
84
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BQ1SOOU
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-09-22 */ /** Can you crack the code? */ // SPDX-License-Identifier: MIT pragma solidity 0.8.11; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _createInitialSupply(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() external virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IDexRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } interface IDexFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } contract BQ1SOOU is ERC20, Ownable { uint256 public maxBuyAmount; uint256 public maxSellAmount; uint256 public maxWalletAmount; IDexRouter public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool private swapping; uint256 public swapTokensAtAmount; address public operationsAddress; address public yashaAddress; uint256 public tradingActiveBlock = 0; // 0 means trading is not active bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; // Anti-bot and anti-whale mappings and variables uint256 public buyTotalFees; uint256 public buyOperationsFee; uint256 public buyLiquidityFee; uint256 public buyYashaFee; uint256 public sellTotalFees; uint256 public sellOperationsFee; uint256 public sellLiquidityFee; uint256 public sellYashaFee; uint256 public tokensForOperations; uint256 public tokensForLiquidity; uint256 public tokensForYasha; /******************/ // exlcude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; mapping (address => bool) public automatedMarketMakerPairs; event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event EnabledTrading(); event RemovedLimits(); event ExcludeFromFees(address indexed account, bool isExcluded); event UpdatedMaxBuyAmount(uint256 newAmount); event UpdatedMaxSellAmount(uint256 newAmount); event UpdatedMaxWalletAmount(uint256 newAmount); event UpdatedOperationsAddress(address indexed newWallet); event UpdatedYashaAddress(address indexed newWallet); event MaxTransactionExclusion(address _address, bool excluded); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event TransferForeignToken(address token, uint256 amount); constructor() ERC20("BQ1SOOU", "ShiftA") { address newOwner = msg.sender; // can leave alone if owner is deployer. IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IDexFactory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 totalSupply = 100 * 1e9 * 1e18; maxBuyAmount = totalSupply * 1 / 200; maxSellAmount = totalSupply * 1 / 200; maxWalletAmount = totalSupply * 1 / 100; swapTokensAtAmount = totalSupply * 25 / 10000; // 0.25% swap amount buyOperationsFee = 5; buyLiquidityFee = 1; buyYashaFee = 0; buyTotalFees = buyOperationsFee + buyLiquidityFee + buyYashaFee; sellOperationsFee = 6; sellLiquidityFee = 2; sellYashaFee = 0; sellTotalFees = sellOperationsFee + sellLiquidityFee + sellYashaFee; _excludeFromMaxTransaction(newOwner, true); _excludeFromMaxTransaction(address(this), true); _excludeFromMaxTransaction(address(0xdead), true); excludeFromFees(newOwner, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); operationsAddress = address(newOwner); yashaAddress = address(newOwner); _createInitialSupply(newOwner, totalSupply); transferOwnership(newOwner); } receive() external payable {} function enableTrading() external onlyOwner { require(!tradingActive, "Cannot reenable trading"); tradingActive = true; swapEnabled = true; tradingActiveBlock = block.number; emit EnabledTrading(); } function removeLimits() external onlyOwner { limitsInEffect = false; emit RemovedLimits(); } function disableTransferDelay() external onlyOwner { } function updateMaxBuyAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max buy amount lower than 0.1%"); maxBuyAmount = newNum * (10**18); emit UpdatedMaxBuyAmount(maxBuyAmount); } function updateMaxSellAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max sell amount lower than 0.1%"); maxSellAmount = newNum * (10**18); emit UpdatedMaxSellAmount(maxSellAmount); } 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 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 airdropToWallets(address[] memory wallets, uint256[] memory amountsInTokens) external onlyOwner { require(wallets.length == amountsInTokens.length, "arrays must be the same length"); require(wallets.length < 200, "Can only airdrop 200 wallets per txn due to gas limits"); // allows for airdrop + launch at the same exact time, reducing delays and reducing sniper input. for(uint256 i = 0; i < wallets.length; i++){ address wallet = wallets[i]; uint256 amount = amountsInTokens[i]*1e18; _transfer(msg.sender, wallet, amount); } } function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner { if(!isEx){ require(updAds != uniswapV2Pair, "Cannot remove uniswap pair from max txn"); } _isExcludedMaxTransactionAmount[updAds] = isEx; } function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; _excludeFromMaxTransaction(pair, value); emit SetAutomatedMarketMakerPair(pair, value); } function updateBuyFees(uint256 _operationsFee, uint256 _liquidityFee, uint256 _yashaFee) external onlyOwner { buyOperationsFee = _operationsFee; buyLiquidityFee = _liquidityFee; buyYashaFee = _yashaFee; buyTotalFees = buyOperationsFee + buyLiquidityFee + buyYashaFee; require(buyTotalFees <= 15, "Must keep fees at 15% or less"); } function updateSellFees(uint256 _operationsFee, uint256 _liquidityFee, uint256 _yashaFee) external onlyOwner { sellOperationsFee = _operationsFee; sellLiquidityFee = _liquidityFee; sellYashaFee = _yashaFee; sellTotalFees = sellOperationsFee + sellLiquidityFee + sellYashaFee; require(sellTotalFees <= 20, "Must keep fees at 20% 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(limitsInEffect){ if (from != owner() && to != owner() && to != address(0) && to != address(0xdead)){ if(!tradingActive){ require(_isExcludedMaxTransactionAmount[from] || _isExcludedMaxTransactionAmount[to], "Trading is not active."); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)){ } //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] && !_isExcludedMaxTransactionAmount[from]){ require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if(canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { swapping = true; swapBack(); swapping = false; } bool takeFee = true; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; uint256 penaltyAmount = 0; // only take fees on buys/sells, do not take on wallet transfers if(takeFee){ // bot/sniper penalty. Tokens get transferred to marketing wallet to allow potential refund. if(tradingActiveBlock >= block.number + 1 && automatedMarketMakerPairs[from]){ penaltyAmount = amount * 99 / 100; super._transfer(from, operationsAddress, penaltyAmount); } // on sell else if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount * sellTotalFees /100; tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForOperations += fees * sellOperationsFee / sellTotalFees; tokensForYasha += fees * sellYashaFee / sellTotalFees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount * buyTotalFees / 100; tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForOperations += fees * buyOperationsFee / buyTotalFees; tokensForYasha += fees * buyYashaFee / buyTotalFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees + penaltyAmount; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(0xdead), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForOperations + tokensForYasha; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapTokensAtAmount * 10){ contractBalance = swapTokensAtAmount * 10; } bool success; uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; swapTokensForEth(contractBalance - liquidityTokens); uint256 ethBalance = address(this).balance; uint256 ethForLiquidity = ethBalance; uint256 ethForOperations = ethBalance * tokensForOperations / (totalTokensToSwap - (tokensForLiquidity/2)); uint256 ethForYasha = ethBalance * tokensForYasha / (totalTokensToSwap - (tokensForLiquidity/2)); ethForLiquidity -= ethForOperations + ethForYasha; tokensForLiquidity = 0; tokensForOperations = 0; if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); } (success,) = address(operationsAddress).call{value: address(this).balance}(""); } function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) { require(_token != address(0), "_token address cannot be 0"); require(_token != address(this), "Can't withdraw native tokens"); uint256 _contractBalance = IERC20(_token).balanceOf(address(this)); _sent = IERC20(_token).transfer(_to, _contractBalance); emit TransferForeignToken(_token, _contractBalance); } function withdrawStuckETH() external onlyOwner { bool success; (success,) = address(msg.sender).call{value: address(this).balance}(""); } function setOperationsAddress(address _operationsAddress) external onlyOwner { require(_operationsAddress != address(0), "_operationsAddress address cannot be 0"); operationsAddress = payable(_operationsAddress); emit UpdatedOperationsAddress(_operationsAddress); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"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":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedOperationsAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedYashaAddress","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInTokens","type":"uint256[]"}],"name":"airdropToWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","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":"buyYashaFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"operationsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellYashaFee","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":"_operationsAddress","type":"address"}],"name":"setOperationsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForYasha","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":"tradingActiveBlock","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":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_yashaFee","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":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_yashaFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"yashaAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526000600d556001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600e60026101000a81548160ff0219169083151502179055503480156200006757600080fd5b506040518060400160405280600781526020017f425131534f4f55000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f53686966744100000000000000000000000000000000000000000000000000008152508160039080519060200190620000ec92919062000bd0565b5080600490805190602001906200010592919062000bd0565b50505060006200011a6200060c60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001ea8160016200061460201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000290919062000cea565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031e919062000cea565b6040518363ffffffff1660e01b81526004016200033d92919062000d2d565b6020604051808303816000875af11580156200035d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000383919062000cea565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003cb60a0516001620006aa60201b60201c565b60006c01431e0fae6d7217caa0000000905060c8600182620003ee919062000d93565b620003fa919062000e23565b60068190555060c860018262000411919062000d93565b6200041d919062000e23565b600781905550606460018262000434919062000d93565b62000440919062000e23565b60088190555061271060198262000458919062000d93565b62000464919062000e23565b600a8190555060056010819055506001601181905550600060128190555060125460115460105462000497919062000e5b565b620004a3919062000e5b565b600f81905550600660148190555060026015819055506000601681905550601654601554601454620004d6919062000e5b565b620004e2919062000e5b565b601381905550620004fb8360016200061460201b60201c565b6200050e3060016200061460201b60201c565b6200052361dead60016200061460201b60201c565b620005368360016200075d60201b60201c565b620005493060016200075d60201b60201c565b6200055e61dead60016200075d60201b60201c565b82600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005f28382620008aa60201b60201c565b6200060383620009fb60201b60201c565b5050506200113f565b600033905090565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674682826040516200069e92919062000ed5565b60405180910390a15050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200071382826200061460201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6200076d6200060c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620007ff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007f69062000f63565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200089e919062000f85565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200091d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009149062000ff2565b60405180910390fd5b806002600082825462000931919062000e5b565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000988919062000e5b565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009ef919062001025565b60405180910390a35050565b62000a0b6200060c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a949062000f63565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000b10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b0790620010b8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b82805462000bde9062001109565b90600052602060002090601f01602090048101928262000c02576000855562000c4e565b82601f1062000c1d57805160ff191683800117855562000c4e565b8280016001018555821562000c4e579182015b8281111562000c4d57825182559160200191906001019062000c30565b5b50905062000c5d919062000c61565b5090565b5b8082111562000c7c57600081600090555060010162000c62565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000cb28262000c85565b9050919050565b62000cc48162000ca5565b811462000cd057600080fd5b50565b60008151905062000ce48162000cb9565b92915050565b60006020828403121562000d035762000d0262000c80565b5b600062000d138482850162000cd3565b91505092915050565b62000d278162000ca5565b82525050565b600060408201905062000d44600083018562000d1c565b62000d53602083018462000d1c565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000da08262000d5a565b915062000dad8362000d5a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000de95762000de862000d64565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e308262000d5a565b915062000e3d8362000d5a565b92508262000e505762000e4f62000df4565b5b828204905092915050565b600062000e688262000d5a565b915062000e758362000d5a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000ead5762000eac62000d64565b5b828201905092915050565b60008115159050919050565b62000ecf8162000eb8565b82525050565b600060408201905062000eec600083018562000d1c565b62000efb602083018462000ec4565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000f4b60208362000f02565b915062000f588262000f13565b602082019050919050565b6000602082019050818103600083015262000f7e8162000f3c565b9050919050565b600060208201905062000f9c600083018462000ec4565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000fda601f8362000f02565b915062000fe78262000fa2565b602082019050919050565b600060208201905081810360008301526200100d8162000fcb565b9050919050565b6200101f8162000d5a565b82525050565b60006020820190506200103c600083018462001014565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000620010a060268362000f02565b9150620010ad8262001042565b604082019050919050565b60006020820190508181036000830152620010d38162001091565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200112257607f821691505b60208210811415620011395762001138620010da565b5b50919050565b60805160a051615eee620011a46000396000818161141a015281816117ca01528181611f2f015261311a015260008181610da7015281816130c301528181614072015281816141530152818161417a01528181614216015261423d0152615eee6000f3fe6080604052600436106103545760003560e01c80638366e79a116101c6578063d257b34f116100f7578063ea4cfe1211610095578063f2fde38b1161006f578063f2fde38b14610c3f578063f5648a4f14610c68578063f637434214610c7f578063fb002c9714610caa5761035b565b8063ea4cfe1214610bbe578063ee40166e14610be9578063f11a24d314610c145761035b565b8063dd62ed3e116100d1578063dd62ed3e14610b14578063e2f4560514610b51578063e884f26014610b7c578063e9526aaf14610b935761035b565b8063d257b34f14610a97578063d85ba06314610ac0578063dc3f0d0f14610aeb5761035b565b8063a9059cbb11610164578063bbc0c7421161013e578063bbc0c742146109f1578063c024666814610a1c578063c17b5b8c14610a45578063c18bc19514610a6e5761035b565b8063a9059cbb1461094c578063aa4bde2814610989578063b62496f5146109b45761035b565b80638da5cb5b116101a05780638da5cb5b1461089057806395d89b41146108bb5780639a7a23d6146108e6578063a457c2d71461090f5761035b565b80638366e79a1461081157806388e765ff1461084e5780638a8c523c146108795761035b565b806349ff0c82116102a05780636cce99c71161023e578063715018a611610218578063715018a614610791578063751039fc146107a85780637571336a146107bf5780638095d564146107e85761035b565b80636cce99c7146106fe5780636ddd17131461072957806370a08231146107545761035b565b80635045d0981161027a5780635045d098146106525780635a139dd41461067d57806366d602ae146106a85780636a486a8e146106d35761035b565b806349ff0c82146105d15780634a62bb65146105fc5780634f77f6c0146106275761035b565b80632307b4411161030d578063313ce567116102e7578063313ce567146105155780633950935114610540578063499b83941461057d57806349bd5a5e146105a65761035b565b80632307b4411461048657806323b872dd146104af5780632be32b61146104ec5761035b565b806306fdde0314610360578063095ea7b31461038b57806310d5de53146103c85780631694505e1461040557806318160ddd146104305780631a8145bb1461045b5761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610cd5565b6040516103829190614385565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad919061444f565b610d67565b6040516103bf91906144aa565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea91906144c5565b610d85565b6040516103fc91906144aa565b60405180910390f35b34801561041157600080fd5b5061041a610da5565b6040516104279190614551565b60405180910390f35b34801561043c57600080fd5b50610445610dc9565b604051610452919061457b565b60405180910390f35b34801561046757600080fd5b50610470610dd3565b60405161047d919061457b565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a891906147a1565b610dd9565b005b3480156104bb57600080fd5b506104d660048036038101906104d19190614819565b610f7a565b6040516104e391906144aa565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e919061486c565b611072565b005b34801561052157600080fd5b5061052a6111d5565b60405161053791906148b5565b60405180910390f35b34801561054c57600080fd5b506105676004803603810190610562919061444f565b6111de565b60405161057491906144aa565b60405180910390f35b34801561058957600080fd5b506105a4600480360381019061059f91906144c5565b61128a565b005b3480156105b257600080fd5b506105bb611418565b6040516105c891906148df565b60405180910390f35b3480156105dd57600080fd5b506105e661143c565b6040516105f3919061457b565b60405180910390f35b34801561060857600080fd5b50610611611442565b60405161061e91906144aa565b60405180910390f35b34801561063357600080fd5b5061063c611455565b604051610649919061457b565b60405180910390f35b34801561065e57600080fd5b5061066761145b565b60405161067491906148df565b60405180910390f35b34801561068957600080fd5b50610692611481565b60405161069f919061457b565b60405180910390f35b3480156106b457600080fd5b506106bd611487565b6040516106ca919061457b565b60405180910390f35b3480156106df57600080fd5b506106e861148d565b6040516106f5919061457b565b60405180910390f35b34801561070a57600080fd5b50610713611493565b604051610720919061457b565b60405180910390f35b34801561073557600080fd5b5061073e611499565b60405161074b91906144aa565b60405180910390f35b34801561076057600080fd5b5061077b600480360381019061077691906144c5565b6114ac565b604051610788919061457b565b60405180910390f35b34801561079d57600080fd5b506107a66114f4565b005b3480156107b457600080fd5b506107bd61164c565b005b3480156107cb57600080fd5b506107e660048036038101906107e19190614926565b61172c565b005b3480156107f457600080fd5b5061080f600480360381019061080a9190614966565b6118b3565b005b34801561081d57600080fd5b50610838600480360381019061083391906149b9565b6119cc565b60405161084591906144aa565b60405180910390f35b34801561085a57600080fd5b50610863611c82565b604051610870919061457b565b60405180910390f35b34801561088557600080fd5b5061088e611c88565b005b34801561089c57600080fd5b506108a5611dda565b6040516108b291906148df565b60405180910390f35b3480156108c757600080fd5b506108d0611e04565b6040516108dd9190614385565b60405180910390f35b3480156108f257600080fd5b5061090d60048036038101906109089190614926565b611e96565b005b34801561091b57600080fd5b506109366004803603810190610931919061444f565b611fca565b60405161094391906144aa565b60405180910390f35b34801561095857600080fd5b50610973600480360381019061096e919061444f565b6120b5565b60405161098091906144aa565b60405180910390f35b34801561099557600080fd5b5061099e6120d3565b6040516109ab919061457b565b60405180910390f35b3480156109c057600080fd5b506109db60048036038101906109d691906144c5565b6120d9565b6040516109e891906144aa565b60405180910390f35b3480156109fd57600080fd5b50610a066120f9565b604051610a1391906144aa565b60405180910390f35b348015610a2857600080fd5b50610a436004803603810190610a3e9190614926565b61210c565b005b348015610a5157600080fd5b50610a6c6004803603810190610a679190614966565b61224c565b005b348015610a7a57600080fd5b50610a956004803603810190610a90919061486c565b612366565b005b348015610aa357600080fd5b50610abe6004803603810190610ab9919061486c565b6124c9565b005b348015610acc57600080fd5b50610ad5612631565b604051610ae2919061457b565b60405180910390f35b348015610af757600080fd5b50610b126004803603810190610b0d919061486c565b612637565b005b348015610b2057600080fd5b50610b3b6004803603810190610b3691906149b9565b61279a565b604051610b48919061457b565b60405180910390f35b348015610b5d57600080fd5b50610b66612821565b604051610b73919061457b565b60405180910390f35b348015610b8857600080fd5b50610b91612827565b005b348015610b9f57600080fd5b50610ba86128c0565b604051610bb5919061457b565b60405180910390f35b348015610bca57600080fd5b50610bd36128c6565b604051610be091906148df565b60405180910390f35b348015610bf557600080fd5b50610bfe6128ec565b604051610c0b919061457b565b60405180910390f35b348015610c2057600080fd5b50610c296128f2565b604051610c36919061457b565b60405180910390f35b348015610c4b57600080fd5b50610c666004803603810190610c6191906144c5565b6128f8565b005b348015610c7457600080fd5b50610c7d612abf565b005b348015610c8b57600080fd5b50610c94612bc7565b604051610ca1919061457b565b60405180910390f35b348015610cb657600080fd5b50610cbf612bcd565b604051610ccc919061457b565b60405180910390f35b606060038054610ce490614a28565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1090614a28565b8015610d5d5780601f10610d3257610100808354040283529160200191610d5d565b820191906000526020600020905b815481529060010190602001808311610d4057829003601f168201915b5050505050905090565b6000610d7b610d74612bd3565b8484612bdb565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60185481565b610de1612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6790614aa6565b60405180910390fd5b8051825114610eb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eab90614b12565b60405180910390fd5b60c8825110610ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eef90614ba4565b60405180910390fd5b60005b8251811015610f75576000838281518110610f1957610f18614bc4565b5b602002602001015190506000670de0b6b3a7640000848481518110610f4157610f40614bc4565b5b6020026020010151610f539190614c22565b9050610f60338383612da6565b50508080610f6d90614c7c565b915050610efb565b505050565b6000610f87848484612da6565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fd2612bd3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104990614d37565b60405180910390fd5b6110668561105e612bd3565b858403612bdb565b60019150509392505050565b61107a612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611109576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110090614aa6565b60405180910390fd5b670de0b6b3a76400006103e8600161111f610dc9565b6111299190614c22565b6111339190614d86565b61113d9190614d86565b81101561117f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117690614e29565b60405180910390fd5b670de0b6b3a7640000816111939190614c22565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de410096006546040516111ca919061457b565b60405180910390a150565b60006012905090565b60006112806111eb612bd3565b8484600160006111f9612bd3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461127b9190614e49565b612bdb565b6001905092915050565b611292612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131890614aa6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611391576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138890614f11565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f4efa56652237561d0f1fd31311aeaaa41f3b754a461545ed3cf6ced5876d298260405160405180910390a250565b7f000000000000000000000000000000000000000000000000000000000000000081565b60125481565b600e60009054906101000a900460ff1681565b60145481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b60075481565b60135481565b60195481565b600e60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114fc612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461158b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158290614aa6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611654612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116da90614aa6565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b611734612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ba90614aa6565b60405180910390fd5b80611858577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e90614fa3565b60405180910390fd5b5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6118bb612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461194a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194190614aa6565b60405180910390fd5b8260108190555081601181905550806012819055506012546011546010546119729190614e49565b61197c9190614e49565b600f81905550600f805411156119c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119be9061500f565b60405180910390fd5b505050565b60006119d6612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5c90614aa6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc9061507b565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3b906150e7565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b7f91906148df565b602060405180830381865afa158015611b9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc0919061511c565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611bfd929190615149565b6020604051808303816000875af1158015611c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c409190615187565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611c73929190615149565b60405180910390a15092915050565b60065481565b611c90612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1690614aa6565b60405180910390fd5b600e60019054906101000a900460ff1615611d6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6690615200565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff02191690831515021790555043600d819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611e1390614a28565b80601f0160208091040260200160405190810160405280929190818152602001828054611e3f90614a28565b8015611e8c5780601f10611e6157610100808354040283529160200191611e8c565b820191906000526020600020905b815481529060010190602001808311611e6f57829003601f168201915b5050505050905090565b611e9e612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2490614aa6565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb390615292565b60405180910390fd5b611fc68282613a24565b5050565b60008060016000611fd9612bd3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208d90615324565b60405180910390fd5b6120aa6120a1612bd3565b85858403612bdb565b600191505092915050565b60006120c96120c2612bd3565b8484612da6565b6001905092915050565b60085481565b601c6020528060005260406000206000915054906101000a900460ff1681565b600e60019054906101000a900460ff1681565b612114612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219a90614aa6565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161224091906144aa565b60405180910390a25050565b612254612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122da90614aa6565b60405180910390fd5b82601481905550816015819055508060168190555060165460155460145461230b9190614e49565b6123159190614e49565b60138190555060146013541115612361576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235890615390565b60405180910390fd5b505050565b61236e612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f490614aa6565b60405180910390fd5b670de0b6b3a76400006103e86003612413610dc9565b61241d9190614c22565b6124279190614d86565b6124319190614d86565b811015612473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246a90615422565b60405180910390fd5b670de0b6b3a7640000816124879190614c22565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc6008546040516124be919061457b565b60405180910390a150565b6124d1612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255790614aa6565b60405180910390fd5b620186a0600161256e610dc9565b6125789190614c22565b6125829190614d86565b8110156125c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bb906154b4565b60405180910390fd5b6103e860016125d1610dc9565b6125db9190614c22565b6125e59190614d86565b811115612627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261e90615546565b60405180910390fd5b80600a8190555050565b600f5481565b61263f612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c590614aa6565b60405180910390fd5b670de0b6b3a76400006103e860016126e4610dc9565b6126ee9190614c22565b6126f89190614d86565b6127029190614d86565b811015612744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273b906155d8565b60405180910390fd5b670de0b6b3a7640000816127589190614c22565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e60075460405161278f919061457b565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b61282f612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b590614aa6565b60405180910390fd5b565b60165481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60115481565b612900612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461298f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298690614aa6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f69061566a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612ac7612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4d90614aa6565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612b7c906156bb565b60006040518083038185875af1925050503d8060008114612bb9576040519150601f19603f3d011682016040523d82523d6000602084013e612bbe565b606091505b50508091505050565b60155481565b60175481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4290615742565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb2906157d4565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d99919061457b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0d90615866565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7d906158f8565b60405180910390fd5b60008111612ec9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec090615964565b60405180910390fd5b600e60009054906101000a900460ff16156134ac57612ee6611dda565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612f545750612f24611dda565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f8d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612fc7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156134ab57600e60019054906101000a900460ff166130c157601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130815750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b7906159d0565b60405180910390fd5b5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561316957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b50601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561320d5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132b457600654811115613257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324e90615a62565b60405180910390fd5b600854613263836114ac565b8261326e9190614e49565b11156132af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a690615ace565b60405180910390fd5b6134aa565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133575750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133a6576007548111156133a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161339890615b60565b60405180910390fd5b6134a9565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561344a5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156134a85760085461345b836114ac565b826134669190614e49565b11156134a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161349e90615ace565b60405180910390fd5b5b5b5b5b5b60006134b7306114ac565b90506000600a5482101590508080156134dc5750600e60029054906101000a900460ff165b80156134f55750600960009054906101000a900460ff16155b801561354b5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135a15750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135f75750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561363b576001600960006101000a81548160ff02191690831515021790555061361f613acf565b6000600960006101000a81548160ff0219169083151502179055505b600060019050601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806136e25750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156136ec57600090505b6000808215613a0f576001436137029190614e49565b600d541015801561375c5750601c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156137ae5760646063876137709190614c22565b61377a9190614d86565b90506137a988600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613cd4565b6139e0565b601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561380957506000601354115b156138c85760646013548761381e9190614c22565b6138289190614d86565b91506013546015548361383b9190614c22565b6138459190614d86565b601860008282546138569190614e49565b925050819055506013546014548361386e9190614c22565b6138789190614d86565b601760008282546138899190614e49565b92505081905550601354601654836138a19190614c22565b6138ab9190614d86565b601960008282546138bc9190614e49565b925050819055506139df565b601c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561392357506000600f54115b156139de576064600f54876139389190614c22565b6139429190614d86565b9150600f54601154836139559190614c22565b61395f9190614d86565b601860008282546139709190614e49565b92505081905550600f54601054836139889190614c22565b6139929190614d86565b601760008282546139a39190614e49565b92505081905550600f54601254836139bb9190614c22565b6139c59190614d86565b601960008282546139d69190614e49565b925050819055505b5b5b60008211156139f5576139f4883084613cd4565b5b8082613a019190614e49565b86613a0c9190615b80565b95505b613a1a888888613cd4565b5050505050505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613a858282613f3f565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613ada306114ac565b90506000601954601754601854613af19190614e49565b613afb9190614e49565b90506000821480613b0c5750600081145b15613b18575050613cd2565b600a8054613b269190614c22565b821115613b3e57600a8054613b3b9190614c22565b91505b60008060028360185486613b529190614c22565b613b5c9190614d86565b613b669190614d86565b9050613b7c8185613b779190615b80565b613fd3565b6000479050600081905060006002601854613b979190614d86565b86613ba29190615b80565b60175484613bb09190614c22565b613bba9190614d86565b905060006002601854613bcd9190614d86565b87613bd89190615b80565b60195485613be69190614c22565b613bf09190614d86565b90508082613bfe9190614e49565b83613c099190615b80565b925060006018819055506000601781905550600085118015613c2b5750600083115b15613c3b57613c3a8584614210565b5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613c81906156bb565b60006040518083038185875af1925050503d8060008114613cbe576040519150601f19603f3d011682016040523d82523d6000602084013e613cc3565b606091505b50508096505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d3b90615866565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dab906158f8565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e3190615c26565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613ecd9190614e49565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613f31919061457b565b60405180910390a350505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613fc7929190615c46565b60405180910390a15050565b6000600267ffffffffffffffff811115613ff057613fef61459b565b5b60405190808252806020026020018201604052801561401e5781602001602082028036833780820191505090505b509050308160008151811061403657614035614bc4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156140db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140ff9190615c84565b8160018151811061411357614112614bc4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614178307f000000000000000000000000000000000000000000000000000000000000000084612bdb565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016141da959493929190615daa565b600060405180830381600087803b1580156141f457600080fd5b505af1158015614208573d6000803e3d6000fd5b505050505050565b61423b307f000000000000000000000000000000000000000000000000000000000000000084612bdb565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b81526004016142a296959493929190615e04565b60606040518083038185885af11580156142c0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906142e59190615e65565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561432657808201518184015260208101905061430b565b83811115614335576000848401525b50505050565b6000601f19601f8301169050919050565b6000614357826142ec565b61436181856142f7565b9350614371818560208601614308565b61437a8161433b565b840191505092915050565b6000602082019050818103600083015261439f818461434c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006143e6826143bb565b9050919050565b6143f6816143db565b811461440157600080fd5b50565b600081359050614413816143ed565b92915050565b6000819050919050565b61442c81614419565b811461443757600080fd5b50565b60008135905061444981614423565b92915050565b60008060408385031215614466576144656143b1565b5b600061447485828601614404565b92505060206144858582860161443a565b9150509250929050565b60008115159050919050565b6144a48161448f565b82525050565b60006020820190506144bf600083018461449b565b92915050565b6000602082840312156144db576144da6143b1565b5b60006144e984828501614404565b91505092915050565b6000819050919050565b600061451761451261450d846143bb565b6144f2565b6143bb565b9050919050565b6000614529826144fc565b9050919050565b600061453b8261451e565b9050919050565b61454b81614530565b82525050565b60006020820190506145666000830184614542565b92915050565b61457581614419565b82525050565b6000602082019050614590600083018461456c565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6145d38261433b565b810181811067ffffffffffffffff821117156145f2576145f161459b565b5b80604052505050565b60006146056143a7565b905061461182826145ca565b919050565b600067ffffffffffffffff8211156146315761463061459b565b5b602082029050602081019050919050565b600080fd5b600061465a61465584614616565b6145fb565b9050808382526020820190506020840283018581111561467d5761467c614642565b5b835b818110156146a657806146928882614404565b84526020840193505060208101905061467f565b5050509392505050565b600082601f8301126146c5576146c4614596565b5b81356146d5848260208601614647565b91505092915050565b600067ffffffffffffffff8211156146f9576146f861459b565b5b602082029050602081019050919050565b600061471d614718846146de565b6145fb565b905080838252602082019050602084028301858111156147405761473f614642565b5b835b818110156147695780614755888261443a565b845260208401935050602081019050614742565b5050509392505050565b600082601f83011261478857614787614596565b5b813561479884826020860161470a565b91505092915050565b600080604083850312156147b8576147b76143b1565b5b600083013567ffffffffffffffff8111156147d6576147d56143b6565b5b6147e2858286016146b0565b925050602083013567ffffffffffffffff811115614803576148026143b6565b5b61480f85828601614773565b9150509250929050565b600080600060608486031215614832576148316143b1565b5b600061484086828701614404565b935050602061485186828701614404565b92505060406148628682870161443a565b9150509250925092565b600060208284031215614882576148816143b1565b5b60006148908482850161443a565b91505092915050565b600060ff82169050919050565b6148af81614899565b82525050565b60006020820190506148ca60008301846148a6565b92915050565b6148d9816143db565b82525050565b60006020820190506148f460008301846148d0565b92915050565b6149038161448f565b811461490e57600080fd5b50565b600081359050614920816148fa565b92915050565b6000806040838503121561493d5761493c6143b1565b5b600061494b85828601614404565b925050602061495c85828601614911565b9150509250929050565b60008060006060848603121561497f5761497e6143b1565b5b600061498d8682870161443a565b935050602061499e8682870161443a565b92505060406149af8682870161443a565b9150509250925092565b600080604083850312156149d0576149cf6143b1565b5b60006149de85828601614404565b92505060206149ef85828601614404565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614a4057607f821691505b60208210811415614a5457614a536149f9565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614a906020836142f7565b9150614a9b82614a5a565b602082019050919050565b60006020820190508181036000830152614abf81614a83565b9050919050565b7f617272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b6000614afc601e836142f7565b9150614b0782614ac6565b602082019050919050565b60006020820190508181036000830152614b2b81614aef565b9050919050565b7f43616e206f6e6c792061697264726f70203230302077616c6c6574732070657260008201527f2074786e2064756520746f20676173206c696d69747300000000000000000000602082015250565b6000614b8e6036836142f7565b9150614b9982614b32565b604082019050919050565b60006020820190508181036000830152614bbd81614b81565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614c2d82614419565b9150614c3883614419565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614c7157614c70614bf3565b5b828202905092915050565b6000614c8782614419565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614cba57614cb9614bf3565b5b600182019050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614d216028836142f7565b9150614d2c82614cc5565b604082019050919050565b60006020820190508181036000830152614d5081614d14565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614d9182614419565b9150614d9c83614419565b925082614dac57614dab614d57565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614e136029836142f7565b9150614e1e82614db7565b604082019050919050565b60006020820190508181036000830152614e4281614e06565b9050919050565b6000614e5482614419565b9150614e5f83614419565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614e9457614e93614bf3565b5b828201905092915050565b7f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60008201527f7420626520300000000000000000000000000000000000000000000000000000602082015250565b6000614efb6026836142f7565b9150614f0682614e9f565b604082019050919050565b60006020820190508181036000830152614f2a81614eee565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614f8d6027836142f7565b9150614f9882614f31565b604082019050919050565b60006020820190508181036000830152614fbc81614f80565b9050919050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b6000614ff9601d836142f7565b915061500482614fc3565b602082019050919050565b6000602082019050818103600083015261502881614fec565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000615065601a836142f7565b91506150708261502f565b602082019050919050565b6000602082019050818103600083015261509481615058565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b60006150d1601c836142f7565b91506150dc8261509b565b602082019050919050565b60006020820190508181036000830152615100816150c4565b9050919050565b60008151905061511681614423565b92915050565b600060208284031215615132576151316143b1565b5b600061514084828501615107565b91505092915050565b600060408201905061515e60008301856148d0565b61516b602083018461456c565b9392505050565b600081519050615181816148fa565b92915050565b60006020828403121561519d5761519c6143b1565b5b60006151ab84828501615172565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b60006151ea6017836142f7565b91506151f5826151b4565b602082019050919050565b60006020820190508181036000830152615219816151dd565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061527c6039836142f7565b915061528782615220565b604082019050919050565b600060208201905081810360008301526152ab8161526f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061530e6025836142f7565b9150615319826152b2565b604082019050919050565b6000602082019050818103600083015261533d81615301565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b600061537a601d836142f7565b915061538582615344565b602082019050919050565b600060208201905081810360008301526153a98161536d565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b600061540c602c836142f7565b9150615417826153b0565b604082019050919050565b6000602082019050818103600083015261543b816153ff565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061549e6035836142f7565b91506154a982615442565b604082019050919050565b600060208201905081810360008301526154cd81615491565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b60006155306034836142f7565b915061553b826154d4565b604082019050919050565b6000602082019050818103600083015261555f81615523565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b60006155c2602a836142f7565b91506155cd82615566565b604082019050919050565b600060208201905081810360008301526155f1816155b5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006156546026836142f7565b915061565f826155f8565b604082019050919050565b6000602082019050818103600083015261568381615647565b9050919050565b600081905092915050565b50565b60006156a560008361568a565b91506156b082615695565b600082019050919050565b60006156c682615698565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061572c6024836142f7565b9150615737826156d0565b604082019050919050565b6000602082019050818103600083015261575b8161571f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006157be6022836142f7565b91506157c982615762565b604082019050919050565b600060208201905081810360008301526157ed816157b1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006158506025836142f7565b915061585b826157f4565b604082019050919050565b6000602082019050818103600083015261587f81615843565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006158e26023836142f7565b91506158ed82615886565b604082019050919050565b60006020820190508181036000830152615911816158d5565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b600061594e601d836142f7565b915061595982615918565b602082019050919050565b6000602082019050818103600083015261597d81615941565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006159ba6016836142f7565b91506159c582615984565b602082019050919050565b600060208201905081810360008301526159e9816159ad565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000615a4c6028836142f7565b9150615a57826159f0565b604082019050919050565b60006020820190508181036000830152615a7b81615a3f565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b6000615ab86018836142f7565b9150615ac382615a82565b602082019050919050565b60006020820190508181036000830152615ae781615aab565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615b4a602a836142f7565b9150615b5582615aee565b604082019050919050565b60006020820190508181036000830152615b7981615b3d565b9050919050565b6000615b8b82614419565b9150615b9683614419565b925082821015615ba957615ba8614bf3565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615c106026836142f7565b9150615c1b82615bb4565b604082019050919050565b60006020820190508181036000830152615c3f81615c03565b9050919050565b6000604082019050615c5b60008301856148d0565b615c68602083018461449b565b9392505050565b600081519050615c7e816143ed565b92915050565b600060208284031215615c9a57615c996143b1565b5b6000615ca884828501615c6f565b91505092915050565b6000819050919050565b6000615cd6615cd1615ccc84615cb1565b6144f2565b614419565b9050919050565b615ce681615cbb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615d21816143db565b82525050565b6000615d338383615d18565b60208301905092915050565b6000602082019050919050565b6000615d5782615cec565b615d618185615cf7565b9350615d6c83615d08565b8060005b83811015615d9d578151615d848882615d27565b9750615d8f83615d3f565b925050600181019050615d70565b5085935050505092915050565b600060a082019050615dbf600083018861456c565b615dcc6020830187615cdd565b8181036040830152615dde8186615d4c565b9050615ded60608301856148d0565b615dfa608083018461456c565b9695505050505050565b600060c082019050615e1960008301896148d0565b615e26602083018861456c565b615e336040830187615cdd565b615e406060830186615cdd565b615e4d60808301856148d0565b615e5a60a083018461456c565b979650505050505050565b600080600060608486031215615e7e57615e7d6143b1565b5b6000615e8c86828701615107565b9350506020615e9d86828701615107565b9250506040615eae86828701615107565b915050925092509256fea26469706673582212205eea587f78c2d623274e6f3d6c7c7e9d04153fa8f4ff03dd767ca6ffef12752e64736f6c634300080b0033
Deployed Bytecode
0x6080604052600436106103545760003560e01c80638366e79a116101c6578063d257b34f116100f7578063ea4cfe1211610095578063f2fde38b1161006f578063f2fde38b14610c3f578063f5648a4f14610c68578063f637434214610c7f578063fb002c9714610caa5761035b565b8063ea4cfe1214610bbe578063ee40166e14610be9578063f11a24d314610c145761035b565b8063dd62ed3e116100d1578063dd62ed3e14610b14578063e2f4560514610b51578063e884f26014610b7c578063e9526aaf14610b935761035b565b8063d257b34f14610a97578063d85ba06314610ac0578063dc3f0d0f14610aeb5761035b565b8063a9059cbb11610164578063bbc0c7421161013e578063bbc0c742146109f1578063c024666814610a1c578063c17b5b8c14610a45578063c18bc19514610a6e5761035b565b8063a9059cbb1461094c578063aa4bde2814610989578063b62496f5146109b45761035b565b80638da5cb5b116101a05780638da5cb5b1461089057806395d89b41146108bb5780639a7a23d6146108e6578063a457c2d71461090f5761035b565b80638366e79a1461081157806388e765ff1461084e5780638a8c523c146108795761035b565b806349ff0c82116102a05780636cce99c71161023e578063715018a611610218578063715018a614610791578063751039fc146107a85780637571336a146107bf5780638095d564146107e85761035b565b80636cce99c7146106fe5780636ddd17131461072957806370a08231146107545761035b565b80635045d0981161027a5780635045d098146106525780635a139dd41461067d57806366d602ae146106a85780636a486a8e146106d35761035b565b806349ff0c82146105d15780634a62bb65146105fc5780634f77f6c0146106275761035b565b80632307b4411161030d578063313ce567116102e7578063313ce567146105155780633950935114610540578063499b83941461057d57806349bd5a5e146105a65761035b565b80632307b4411461048657806323b872dd146104af5780632be32b61146104ec5761035b565b806306fdde0314610360578063095ea7b31461038b57806310d5de53146103c85780631694505e1461040557806318160ddd146104305780631a8145bb1461045b5761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610cd5565b6040516103829190614385565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad919061444f565b610d67565b6040516103bf91906144aa565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea91906144c5565b610d85565b6040516103fc91906144aa565b60405180910390f35b34801561041157600080fd5b5061041a610da5565b6040516104279190614551565b60405180910390f35b34801561043c57600080fd5b50610445610dc9565b604051610452919061457b565b60405180910390f35b34801561046757600080fd5b50610470610dd3565b60405161047d919061457b565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a891906147a1565b610dd9565b005b3480156104bb57600080fd5b506104d660048036038101906104d19190614819565b610f7a565b6040516104e391906144aa565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e919061486c565b611072565b005b34801561052157600080fd5b5061052a6111d5565b60405161053791906148b5565b60405180910390f35b34801561054c57600080fd5b506105676004803603810190610562919061444f565b6111de565b60405161057491906144aa565b60405180910390f35b34801561058957600080fd5b506105a4600480360381019061059f91906144c5565b61128a565b005b3480156105b257600080fd5b506105bb611418565b6040516105c891906148df565b60405180910390f35b3480156105dd57600080fd5b506105e661143c565b6040516105f3919061457b565b60405180910390f35b34801561060857600080fd5b50610611611442565b60405161061e91906144aa565b60405180910390f35b34801561063357600080fd5b5061063c611455565b604051610649919061457b565b60405180910390f35b34801561065e57600080fd5b5061066761145b565b60405161067491906148df565b60405180910390f35b34801561068957600080fd5b50610692611481565b60405161069f919061457b565b60405180910390f35b3480156106b457600080fd5b506106bd611487565b6040516106ca919061457b565b60405180910390f35b3480156106df57600080fd5b506106e861148d565b6040516106f5919061457b565b60405180910390f35b34801561070a57600080fd5b50610713611493565b604051610720919061457b565b60405180910390f35b34801561073557600080fd5b5061073e611499565b60405161074b91906144aa565b60405180910390f35b34801561076057600080fd5b5061077b600480360381019061077691906144c5565b6114ac565b604051610788919061457b565b60405180910390f35b34801561079d57600080fd5b506107a66114f4565b005b3480156107b457600080fd5b506107bd61164c565b005b3480156107cb57600080fd5b506107e660048036038101906107e19190614926565b61172c565b005b3480156107f457600080fd5b5061080f600480360381019061080a9190614966565b6118b3565b005b34801561081d57600080fd5b50610838600480360381019061083391906149b9565b6119cc565b60405161084591906144aa565b60405180910390f35b34801561085a57600080fd5b50610863611c82565b604051610870919061457b565b60405180910390f35b34801561088557600080fd5b5061088e611c88565b005b34801561089c57600080fd5b506108a5611dda565b6040516108b291906148df565b60405180910390f35b3480156108c757600080fd5b506108d0611e04565b6040516108dd9190614385565b60405180910390f35b3480156108f257600080fd5b5061090d60048036038101906109089190614926565b611e96565b005b34801561091b57600080fd5b506109366004803603810190610931919061444f565b611fca565b60405161094391906144aa565b60405180910390f35b34801561095857600080fd5b50610973600480360381019061096e919061444f565b6120b5565b60405161098091906144aa565b60405180910390f35b34801561099557600080fd5b5061099e6120d3565b6040516109ab919061457b565b60405180910390f35b3480156109c057600080fd5b506109db60048036038101906109d691906144c5565b6120d9565b6040516109e891906144aa565b60405180910390f35b3480156109fd57600080fd5b50610a066120f9565b604051610a1391906144aa565b60405180910390f35b348015610a2857600080fd5b50610a436004803603810190610a3e9190614926565b61210c565b005b348015610a5157600080fd5b50610a6c6004803603810190610a679190614966565b61224c565b005b348015610a7a57600080fd5b50610a956004803603810190610a90919061486c565b612366565b005b348015610aa357600080fd5b50610abe6004803603810190610ab9919061486c565b6124c9565b005b348015610acc57600080fd5b50610ad5612631565b604051610ae2919061457b565b60405180910390f35b348015610af757600080fd5b50610b126004803603810190610b0d919061486c565b612637565b005b348015610b2057600080fd5b50610b3b6004803603810190610b3691906149b9565b61279a565b604051610b48919061457b565b60405180910390f35b348015610b5d57600080fd5b50610b66612821565b604051610b73919061457b565b60405180910390f35b348015610b8857600080fd5b50610b91612827565b005b348015610b9f57600080fd5b50610ba86128c0565b604051610bb5919061457b565b60405180910390f35b348015610bca57600080fd5b50610bd36128c6565b604051610be091906148df565b60405180910390f35b348015610bf557600080fd5b50610bfe6128ec565b604051610c0b919061457b565b60405180910390f35b348015610c2057600080fd5b50610c296128f2565b604051610c36919061457b565b60405180910390f35b348015610c4b57600080fd5b50610c666004803603810190610c6191906144c5565b6128f8565b005b348015610c7457600080fd5b50610c7d612abf565b005b348015610c8b57600080fd5b50610c94612bc7565b604051610ca1919061457b565b60405180910390f35b348015610cb657600080fd5b50610cbf612bcd565b604051610ccc919061457b565b60405180910390f35b606060038054610ce490614a28565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1090614a28565b8015610d5d5780601f10610d3257610100808354040283529160200191610d5d565b820191906000526020600020905b815481529060010190602001808311610d4057829003601f168201915b5050505050905090565b6000610d7b610d74612bd3565b8484612bdb565b6001905092915050565b601b6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60185481565b610de1612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6790614aa6565b60405180910390fd5b8051825114610eb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eab90614b12565b60405180910390fd5b60c8825110610ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eef90614ba4565b60405180910390fd5b60005b8251811015610f75576000838281518110610f1957610f18614bc4565b5b602002602001015190506000670de0b6b3a7640000848481518110610f4157610f40614bc4565b5b6020026020010151610f539190614c22565b9050610f60338383612da6565b50508080610f6d90614c7c565b915050610efb565b505050565b6000610f87848484612da6565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610fd2612bd3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104990614d37565b60405180910390fd5b6110668561105e612bd3565b858403612bdb565b60019150509392505050565b61107a612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611109576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110090614aa6565b60405180910390fd5b670de0b6b3a76400006103e8600161111f610dc9565b6111299190614c22565b6111339190614d86565b61113d9190614d86565b81101561117f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117690614e29565b60405180910390fd5b670de0b6b3a7640000816111939190614c22565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de410096006546040516111ca919061457b565b60405180910390a150565b60006012905090565b60006112806111eb612bd3565b8484600160006111f9612bd3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461127b9190614e49565b612bdb565b6001905092915050565b611292612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131890614aa6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611391576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138890614f11565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f4efa56652237561d0f1fd31311aeaaa41f3b754a461545ed3cf6ced5876d298260405160405180910390a250565b7f000000000000000000000000717ec743188aeda64716821260f799c74d349ef281565b60125481565b600e60009054906101000a900460ff1681565b60145481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b60075481565b60135481565b60195481565b600e60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114fc612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461158b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158290614aa6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611654612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116da90614aa6565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b611734612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ba90614aa6565b60405180910390fd5b80611858577f000000000000000000000000717ec743188aeda64716821260f799c74d349ef273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e90614fa3565b60405180910390fd5b5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6118bb612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461194a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194190614aa6565b60405180910390fd5b8260108190555081601181905550806012819055506012546011546010546119729190614e49565b61197c9190614e49565b600f81905550600f805411156119c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119be9061500f565b60405180910390fd5b505050565b60006119d6612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5c90614aa6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc9061507b565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3b906150e7565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b7f91906148df565b602060405180830381865afa158015611b9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc0919061511c565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611bfd929190615149565b6020604051808303816000875af1158015611c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c409190615187565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611c73929190615149565b60405180910390a15092915050565b60065481565b611c90612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1690614aa6565b60405180910390fd5b600e60019054906101000a900460ff1615611d6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6690615200565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff02191690831515021790555043600d819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611e1390614a28565b80601f0160208091040260200160405190810160405280929190818152602001828054611e3f90614a28565b8015611e8c5780601f10611e6157610100808354040283529160200191611e8c565b820191906000526020600020905b815481529060010190602001808311611e6f57829003601f168201915b5050505050905090565b611e9e612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2490614aa6565b60405180910390fd5b7f000000000000000000000000717ec743188aeda64716821260f799c74d349ef273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb390615292565b60405180910390fd5b611fc68282613a24565b5050565b60008060016000611fd9612bd3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612096576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208d90615324565b60405180910390fd5b6120aa6120a1612bd3565b85858403612bdb565b600191505092915050565b60006120c96120c2612bd3565b8484612da6565b6001905092915050565b60085481565b601c6020528060005260406000206000915054906101000a900460ff1681565b600e60019054906101000a900460ff1681565b612114612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219a90614aa6565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161224091906144aa565b60405180910390a25050565b612254612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122da90614aa6565b60405180910390fd5b82601481905550816015819055508060168190555060165460155460145461230b9190614e49565b6123159190614e49565b60138190555060146013541115612361576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235890615390565b60405180910390fd5b505050565b61236e612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f490614aa6565b60405180910390fd5b670de0b6b3a76400006103e86003612413610dc9565b61241d9190614c22565b6124279190614d86565b6124319190614d86565b811015612473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246a90615422565b60405180910390fd5b670de0b6b3a7640000816124879190614c22565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc6008546040516124be919061457b565b60405180910390a150565b6124d1612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255790614aa6565b60405180910390fd5b620186a0600161256e610dc9565b6125789190614c22565b6125829190614d86565b8110156125c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bb906154b4565b60405180910390fd5b6103e860016125d1610dc9565b6125db9190614c22565b6125e59190614d86565b811115612627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261e90615546565b60405180910390fd5b80600a8190555050565b600f5481565b61263f612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c590614aa6565b60405180910390fd5b670de0b6b3a76400006103e860016126e4610dc9565b6126ee9190614c22565b6126f89190614d86565b6127029190614d86565b811015612744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273b906155d8565b60405180910390fd5b670de0b6b3a7640000816127589190614c22565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e60075460405161278f919061457b565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b61282f612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b590614aa6565b60405180910390fd5b565b60165481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60115481565b612900612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461298f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298690614aa6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156129ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f69061566a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612ac7612bd3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4d90614aa6565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612b7c906156bb565b60006040518083038185875af1925050503d8060008114612bb9576040519150601f19603f3d011682016040523d82523d6000602084013e612bbe565b606091505b50508091505050565b60155481565b60175481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4290615742565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb2906157d4565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d99919061457b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0d90615866565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7d906158f8565b60405180910390fd5b60008111612ec9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec090615964565b60405180910390fd5b600e60009054906101000a900460ff16156134ac57612ee6611dda565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612f545750612f24611dda565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f8d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612fc7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156134ab57600e60019054906101000a900460ff166130c157601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130815750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b7906159d0565b60405180910390fd5b5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561316957507f000000000000000000000000717ec743188aeda64716821260f799c74d349ef273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b50601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561320d5750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156132b457600654811115613257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161324e90615a62565b60405180910390fd5b600854613263836114ac565b8261326e9190614e49565b11156132af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132a690615ace565b60405180910390fd5b6134aa565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156133575750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133a6576007548111156133a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161339890615b60565b60405180910390fd5b6134a9565b601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561344a5750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156134a85760085461345b836114ac565b826134669190614e49565b11156134a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161349e90615ace565b60405180910390fd5b5b5b5b5b5b60006134b7306114ac565b90506000600a5482101590508080156134dc5750600e60029054906101000a900460ff165b80156134f55750600960009054906101000a900460ff16155b801561354b5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135a15750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135f75750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561363b576001600960006101000a81548160ff02191690831515021790555061361f613acf565b6000600960006101000a81548160ff0219169083151502179055505b600060019050601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806136e25750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156136ec57600090505b6000808215613a0f576001436137029190614e49565b600d541015801561375c5750601c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156137ae5760646063876137709190614c22565b61377a9190614d86565b90506137a988600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613cd4565b6139e0565b601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561380957506000601354115b156138c85760646013548761381e9190614c22565b6138289190614d86565b91506013546015548361383b9190614c22565b6138459190614d86565b601860008282546138569190614e49565b925050819055506013546014548361386e9190614c22565b6138789190614d86565b601760008282546138899190614e49565b92505081905550601354601654836138a19190614c22565b6138ab9190614d86565b601960008282546138bc9190614e49565b925050819055506139df565b601c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561392357506000600f54115b156139de576064600f54876139389190614c22565b6139429190614d86565b9150600f54601154836139559190614c22565b61395f9190614d86565b601860008282546139709190614e49565b92505081905550600f54601054836139889190614c22565b6139929190614d86565b601760008282546139a39190614e49565b92505081905550600f54601254836139bb9190614c22565b6139c59190614d86565b601960008282546139d69190614e49565b925050819055505b5b5b60008211156139f5576139f4883084613cd4565b5b8082613a019190614e49565b86613a0c9190615b80565b95505b613a1a888888613cd4565b5050505050505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613a858282613f3f565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613ada306114ac565b90506000601954601754601854613af19190614e49565b613afb9190614e49565b90506000821480613b0c5750600081145b15613b18575050613cd2565b600a8054613b269190614c22565b821115613b3e57600a8054613b3b9190614c22565b91505b60008060028360185486613b529190614c22565b613b5c9190614d86565b613b669190614d86565b9050613b7c8185613b779190615b80565b613fd3565b6000479050600081905060006002601854613b979190614d86565b86613ba29190615b80565b60175484613bb09190614c22565b613bba9190614d86565b905060006002601854613bcd9190614d86565b87613bd89190615b80565b60195485613be69190614c22565b613bf09190614d86565b90508082613bfe9190614e49565b83613c099190615b80565b925060006018819055506000601781905550600085118015613c2b5750600083115b15613c3b57613c3a8584614210565b5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613c81906156bb565b60006040518083038185875af1925050503d8060008114613cbe576040519150601f19603f3d011682016040523d82523d6000602084013e613cc3565b606091505b50508096505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d3b90615866565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dab906158f8565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e3190615c26565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613ecd9190614e49565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613f31919061457b565b60405180910390a350505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613fc7929190615c46565b60405180910390a15050565b6000600267ffffffffffffffff811115613ff057613fef61459b565b5b60405190808252806020026020018201604052801561401e5781602001602082028036833780820191505090505b509050308160008151811061403657614035614bc4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156140db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140ff9190615c84565b8160018151811061411357614112614bc4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614178307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612bdb565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016141da959493929190615daa565b600060405180830381600087803b1580156141f457600080fd5b505af1158015614208573d6000803e3d6000fd5b505050505050565b61423b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612bdb565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b81526004016142a296959493929190615e04565b60606040518083038185885af11580156142c0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906142e59190615e65565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561432657808201518184015260208101905061430b565b83811115614335576000848401525b50505050565b6000601f19601f8301169050919050565b6000614357826142ec565b61436181856142f7565b9350614371818560208601614308565b61437a8161433b565b840191505092915050565b6000602082019050818103600083015261439f818461434c565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006143e6826143bb565b9050919050565b6143f6816143db565b811461440157600080fd5b50565b600081359050614413816143ed565b92915050565b6000819050919050565b61442c81614419565b811461443757600080fd5b50565b60008135905061444981614423565b92915050565b60008060408385031215614466576144656143b1565b5b600061447485828601614404565b92505060206144858582860161443a565b9150509250929050565b60008115159050919050565b6144a48161448f565b82525050565b60006020820190506144bf600083018461449b565b92915050565b6000602082840312156144db576144da6143b1565b5b60006144e984828501614404565b91505092915050565b6000819050919050565b600061451761451261450d846143bb565b6144f2565b6143bb565b9050919050565b6000614529826144fc565b9050919050565b600061453b8261451e565b9050919050565b61454b81614530565b82525050565b60006020820190506145666000830184614542565b92915050565b61457581614419565b82525050565b6000602082019050614590600083018461456c565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6145d38261433b565b810181811067ffffffffffffffff821117156145f2576145f161459b565b5b80604052505050565b60006146056143a7565b905061461182826145ca565b919050565b600067ffffffffffffffff8211156146315761463061459b565b5b602082029050602081019050919050565b600080fd5b600061465a61465584614616565b6145fb565b9050808382526020820190506020840283018581111561467d5761467c614642565b5b835b818110156146a657806146928882614404565b84526020840193505060208101905061467f565b5050509392505050565b600082601f8301126146c5576146c4614596565b5b81356146d5848260208601614647565b91505092915050565b600067ffffffffffffffff8211156146f9576146f861459b565b5b602082029050602081019050919050565b600061471d614718846146de565b6145fb565b905080838252602082019050602084028301858111156147405761473f614642565b5b835b818110156147695780614755888261443a565b845260208401935050602081019050614742565b5050509392505050565b600082601f83011261478857614787614596565b5b813561479884826020860161470a565b91505092915050565b600080604083850312156147b8576147b76143b1565b5b600083013567ffffffffffffffff8111156147d6576147d56143b6565b5b6147e2858286016146b0565b925050602083013567ffffffffffffffff811115614803576148026143b6565b5b61480f85828601614773565b9150509250929050565b600080600060608486031215614832576148316143b1565b5b600061484086828701614404565b935050602061485186828701614404565b92505060406148628682870161443a565b9150509250925092565b600060208284031215614882576148816143b1565b5b60006148908482850161443a565b91505092915050565b600060ff82169050919050565b6148af81614899565b82525050565b60006020820190506148ca60008301846148a6565b92915050565b6148d9816143db565b82525050565b60006020820190506148f460008301846148d0565b92915050565b6149038161448f565b811461490e57600080fd5b50565b600081359050614920816148fa565b92915050565b6000806040838503121561493d5761493c6143b1565b5b600061494b85828601614404565b925050602061495c85828601614911565b9150509250929050565b60008060006060848603121561497f5761497e6143b1565b5b600061498d8682870161443a565b935050602061499e8682870161443a565b92505060406149af8682870161443a565b9150509250925092565b600080604083850312156149d0576149cf6143b1565b5b60006149de85828601614404565b92505060206149ef85828601614404565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614a4057607f821691505b60208210811415614a5457614a536149f9565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614a906020836142f7565b9150614a9b82614a5a565b602082019050919050565b60006020820190508181036000830152614abf81614a83565b9050919050565b7f617272617973206d757374206265207468652073616d65206c656e6774680000600082015250565b6000614afc601e836142f7565b9150614b0782614ac6565b602082019050919050565b60006020820190508181036000830152614b2b81614aef565b9050919050565b7f43616e206f6e6c792061697264726f70203230302077616c6c6574732070657260008201527f2074786e2064756520746f20676173206c696d69747300000000000000000000602082015250565b6000614b8e6036836142f7565b9150614b9982614b32565b604082019050919050565b60006020820190508181036000830152614bbd81614b81565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614c2d82614419565b9150614c3883614419565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614c7157614c70614bf3565b5b828202905092915050565b6000614c8782614419565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614cba57614cb9614bf3565b5b600182019050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614d216028836142f7565b9150614d2c82614cc5565b604082019050919050565b60006020820190508181036000830152614d5081614d14565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614d9182614419565b9150614d9c83614419565b925082614dac57614dab614d57565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614e136029836142f7565b9150614e1e82614db7565b604082019050919050565b60006020820190508181036000830152614e4281614e06565b9050919050565b6000614e5482614419565b9150614e5f83614419565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614e9457614e93614bf3565b5b828201905092915050565b7f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60008201527f7420626520300000000000000000000000000000000000000000000000000000602082015250565b6000614efb6026836142f7565b9150614f0682614e9f565b604082019050919050565b60006020820190508181036000830152614f2a81614eee565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614f8d6027836142f7565b9150614f9882614f31565b604082019050919050565b60006020820190508181036000830152614fbc81614f80565b9050919050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b6000614ff9601d836142f7565b915061500482614fc3565b602082019050919050565b6000602082019050818103600083015261502881614fec565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000615065601a836142f7565b91506150708261502f565b602082019050919050565b6000602082019050818103600083015261509481615058565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b60006150d1601c836142f7565b91506150dc8261509b565b602082019050919050565b60006020820190508181036000830152615100816150c4565b9050919050565b60008151905061511681614423565b92915050565b600060208284031215615132576151316143b1565b5b600061514084828501615107565b91505092915050565b600060408201905061515e60008301856148d0565b61516b602083018461456c565b9392505050565b600081519050615181816148fa565b92915050565b60006020828403121561519d5761519c6143b1565b5b60006151ab84828501615172565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b60006151ea6017836142f7565b91506151f5826151b4565b602082019050919050565b60006020820190508181036000830152615219816151dd565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061527c6039836142f7565b915061528782615220565b604082019050919050565b600060208201905081810360008301526152ab8161526f565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061530e6025836142f7565b9150615319826152b2565b604082019050919050565b6000602082019050818103600083015261533d81615301565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b600061537a601d836142f7565b915061538582615344565b602082019050919050565b600060208201905081810360008301526153a98161536d565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b600061540c602c836142f7565b9150615417826153b0565b604082019050919050565b6000602082019050818103600083015261543b816153ff565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061549e6035836142f7565b91506154a982615442565b604082019050919050565b600060208201905081810360008301526154cd81615491565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b60006155306034836142f7565b915061553b826154d4565b604082019050919050565b6000602082019050818103600083015261555f81615523565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b60006155c2602a836142f7565b91506155cd82615566565b604082019050919050565b600060208201905081810360008301526155f1816155b5565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006156546026836142f7565b915061565f826155f8565b604082019050919050565b6000602082019050818103600083015261568381615647565b9050919050565b600081905092915050565b50565b60006156a560008361568a565b91506156b082615695565b600082019050919050565b60006156c682615698565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061572c6024836142f7565b9150615737826156d0565b604082019050919050565b6000602082019050818103600083015261575b8161571f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006157be6022836142f7565b91506157c982615762565b604082019050919050565b600060208201905081810360008301526157ed816157b1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006158506025836142f7565b915061585b826157f4565b604082019050919050565b6000602082019050818103600083015261587f81615843565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006158e26023836142f7565b91506158ed82615886565b604082019050919050565b60006020820190508181036000830152615911816158d5565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b600061594e601d836142f7565b915061595982615918565b602082019050919050565b6000602082019050818103600083015261597d81615941565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006159ba6016836142f7565b91506159c582615984565b602082019050919050565b600060208201905081810360008301526159e9816159ad565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000615a4c6028836142f7565b9150615a57826159f0565b604082019050919050565b60006020820190508181036000830152615a7b81615a3f565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b6000615ab86018836142f7565b9150615ac382615a82565b602082019050919050565b60006020820190508181036000830152615ae781615aab565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615b4a602a836142f7565b9150615b5582615aee565b604082019050919050565b60006020820190508181036000830152615b7981615b3d565b9050919050565b6000615b8b82614419565b9150615b9683614419565b925082821015615ba957615ba8614bf3565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615c106026836142f7565b9150615c1b82615bb4565b604082019050919050565b60006020820190508181036000830152615c3f81615c03565b9050919050565b6000604082019050615c5b60008301856148d0565b615c68602083018461449b565b9392505050565b600081519050615c7e816143ed565b92915050565b600060208284031215615c9a57615c996143b1565b5b6000615ca884828501615c6f565b91505092915050565b6000819050919050565b6000615cd6615cd1615ccc84615cb1565b6144f2565b614419565b9050919050565b615ce681615cbb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615d21816143db565b82525050565b6000615d338383615d18565b60208301905092915050565b6000602082019050919050565b6000615d5782615cec565b615d618185615cf7565b9350615d6c83615d08565b8060005b83811015615d9d578151615d848882615d27565b9750615d8f83615d3f565b925050600181019050615d70565b5085935050505092915050565b600060a082019050615dbf600083018861456c565b615dcc6020830187615cdd565b8181036040830152615dde8186615d4c565b9050615ded60608301856148d0565b615dfa608083018461456c565b9695505050505050565b600060c082019050615e1960008301896148d0565b615e26602083018861456c565b615e336040830187615cdd565b615e406060830186615cdd565b615e4d60808301856148d0565b615e5a60a083018461456c565b979650505050505050565b600080600060608486031215615e7e57615e7d6143b1565b5b6000615e8c86828701615107565b9350506020615e9d86828701615107565b9250506040615eae86828701615107565b915050925092509256fea26469706673582212205eea587f78c2d623274e6f3d6c7c7e9d04153fa8f4ff03dd767ca6ffef12752e64736f6c634300080b0033
Deployed Bytecode Sourcemap
7389:15487:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2027:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2941:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8606:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7541:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2348:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8383:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13170:617;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3118:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11736:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2247:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3618:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22568:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7591:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8159:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7862:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8229:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7747:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8084:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7467:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8194;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8423:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7942:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2464:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6108:150;;;;;;;;;;;;;:::i;:::-;;11524:117;;;;;;;;;;;;;:::i;:::-;;13799:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14584:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21931:456;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7433:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11258:249;;;;;;;;;;;;;:::i;:::-;;5894:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2135:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14074:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3841:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2599:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7502:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8679:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7902:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15371:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14973:390;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12299:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12597:346;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8050:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12017:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2782:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7666:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11663:61;;;;;;;;;;;;;:::i;:::-;;8306:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7708:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7783:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8122:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6266:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22400:160;;;;;;;;;;;;;:::i;:::-;;8268:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8342:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2027:100;2081:13;2114:5;2107:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2027:100;:::o;2941:169::-;3024:4;3041:39;3050:12;:10;:12::i;:::-;3064:7;3073:6;3041:8;:39::i;:::-;3098:4;3091:11;;2941:169;;;;:::o;8606:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;7541:43::-;;;:::o;2348:108::-;2409:7;2436:12;;2429:19;;2348:108;:::o;8383:33::-;;;;:::o;13170:617::-;6031:12;:10;:12::i;:::-;6021:22;;:6;;;;;;;;;;;:22;;;6013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13312:15:::1;:22;13294:7;:14;:40;13286:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;13405:3;13388:7;:14;:20;13380:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;13580:9;13576:204;13599:7;:14;13595:1;:18;13576:204;;;13634:14;13651:7;13659:1;13651:10;;;;;;;;:::i;:::-;;;;;;;;13634:27;;13676:14;13712:4;13693:15;13709:1;13693:18;;;;;;;;:::i;:::-;;;;;;;;:23;;;;:::i;:::-;13676:40;;13731:37;13741:10;13753:6;13761;13731:9;:37::i;:::-;13619:161;;13615:3;;;;;:::i;:::-;;;;13576:204;;;;13170:617:::0;;:::o;3118:492::-;3258:4;3275:36;3285:6;3293:9;3304:6;3275:9;:36::i;:::-;3324:24;3351:11;:19;3363:6;3351:19;;;;;;;;;;;;;;;:33;3371:12;:10;:12::i;:::-;3351:33;;;;;;;;;;;;;;;;3324:60;;3423:6;3403:16;:26;;3395:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;3510:57;3519:6;3527:12;:10;:12::i;:::-;3560:6;3541:16;:25;3510:8;:57::i;:::-;3598:4;3591:11;;;3118:492;;;;;:::o;11736:269::-;6031:12;:10;:12::i;:::-;6021:22;;:6;;;;;;;;;;;:22;;;6013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11855:4:::1;11849;11845:1;11829:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;11828:31;;;;:::i;:::-;11818:6;:41;;11810:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;11941:6;11931;:17;;;;:::i;:::-;11916:12;:32;;;;11964:33;11984:12;;11964:33;;;;;;:::i;:::-;;;;;;;;11736:269:::0;:::o;2247:93::-;2305:5;2330:2;2323:9;;2247:93;:::o;3618:215::-;3706:4;3723:80;3732:12;:10;:12::i;:::-;3746:7;3792:10;3755:11;:25;3767:12;:10;:12::i;:::-;3755:25;;;;;;;;;;;;;;;:34;3781:7;3755:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;3723:8;:80::i;:::-;3821:4;3814:11;;3618:215;;;;:::o;22568:297::-;6031:12;:10;:12::i;:::-;6021:22;;:6;;;;;;;;;;;:22;;;6013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22694:1:::1;22664:32;;:18;:32;;;;22656:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;22778:18;22750:17;;:47;;;;;;;;;;;;;;;;;;22838:18;22813:44;;;;;;;;;;;;22568:297:::0;:::o;7591:38::-;;;:::o;8159:26::-;;;;:::o;7862:33::-;;;;;;;;;;;;;:::o;8229:32::-;;;;:::o;7747:27::-;;;;;;;;;;;;;:::o;8084:31::-;;;;:::o;7467:28::-;;;;:::o;8194:::-;;;;:::o;8423:29::-;;;;:::o;7942:31::-;;;;;;;;;;;;;:::o;2464:127::-;2538:7;2565:9;:18;2575:7;2565:18;;;;;;;;;;;;;;;;2558:25;;2464:127;;;:::o;6108:150::-;6031:12;:10;:12::i;:::-;6021:22;;:6;;;;;;;;;;;:22;;;6013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6217:1:::1;6180:40;;6201:6;;;;;;;;;;;6180:40;;;;;;;;;;;;6248:1;6231:6;;:19;;;;;;;;;;;;;;;;;;6108:150::o:0;11524:117::-;6031:12;:10;:12::i;:::-;6021:22;;:6;;;;;;;;;;;:22;;;6013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11595:5:::1;11578:14;;:22;;;;;;;;;;;;;;;;;;11618:15;;;;;;;;;;11524:117::o:0;13799:267::-;6031:12;:10;:12::i;:::-;6021:22;;:6;;;;;;;;;;;:22;;;6013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13895:4:::1;13891:111;;13933:13;13923:23;;:6;:23;;;;13915:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;13891:111;14054:4;14012:31;:39;14044:6;14012:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;13799:267:::0;;:::o;14584:381::-;6031:12;:10;:12::i;:::-;6021:22;;:6;;;;;;;;;;;:22;;;6013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14722:14:::1;14703:16;:33;;;;14765:13;14747:15;:31;;;;14803:9;14789:11;:23;;;;14875:11;;14857:15;;14838:16;;:34;;;;:::i;:::-;:48;;;;:::i;:::-;14823:12;:63;;;;14921:2;14905:12:::0;::::1;:18;;14897:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;14584:381:::0;;;:::o;21931:456::-;22018:10;6031:12;:10;:12::i;:::-;6021:22;;:6;;;;;;;;;;;:22;;;6013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22067:1:::1;22049:20;;:6;:20;;;;22041:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;22137:4;22119:23;;:6;:23;;;;22111:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22186:24;22220:6;22213:24;;;22246:4;22213:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22186:66;;22278:6;22271:23;;;22295:3;22300:16;22271:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22263:54;;22333:46;22354:6;22362:16;22333:46;;;;;;;:::i;:::-;;;;;;;;22030:357;21931:456:::0;;;;:::o;7433:27::-;;;;:::o;11258:249::-;6031:12;:10;:12::i;:::-;6021:22;;:6;;;;;;;;;;;:22;;;6013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11322:13:::1;;;;;;;;;;;11321:14;11313:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;11390:4;11374:13;;:20;;;;;;;;;;;;;;;;;;11419:4;11405:11;;:18;;;;;;;;;;;;;;;;;;11455:12;11434:18;:33;;;;11483:16;;;;;;;;;;11258:249::o:0;5894:79::-;5932:7;5959:6;;;;;;;;;;;5952:13;;5894:79;:::o;2135:104::-;2191:13;2224:7;2217:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2135:104;:::o;14074:246::-;6031:12;:10;:12::i;:::-;6021:22;;:6;;;;;;;;;;;:22;;;6013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14183:13:::1;14175:21;;:4;:21;;;;14167:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;14271:41;14300:4;14306:5;14271:28;:41::i;:::-;14074:246:::0;;:::o;3841:413::-;3934:4;3951:24;3978:11;:25;3990:12;:10;:12::i;:::-;3978:25;;;;;;;;;;;;;;;:34;4004:7;3978:34;;;;;;;;;;;;;;;;3951:61;;4051:15;4031:16;:35;;4023:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4144:67;4153:12;:10;:12::i;:::-;4167:7;4195:15;4176:16;:34;4144:8;:67::i;:::-;4242:4;4235:11;;;3841:413;;;;:::o;2599:175::-;2685:4;2702:42;2712:12;:10;:12::i;:::-;2726:9;2737:6;2702:9;:42::i;:::-;2762:4;2755:11;;2599:175;;;;:::o;7502:30::-;;;;:::o;8679:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;7902:33::-;;;;;;;;;;;;;:::o;15371:182::-;6031:12;:10;:12::i;:::-;6021:22;;:6;;;;;;;;;;;:22;;;6013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15487:8:::1;15456:19;:28;15476:7;15456:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;15527:7;15511:34;;;15536:8;15511:34;;;;;;:::i;:::-;;;;;;;;15371:182:::0;;:::o;14973:390::-;6031:12;:10;:12::i;:::-;6021:22;;:6;;;;;;;;;;;:22;;;6013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15113:14:::1;15093:17;:34;;;;15157:13;15138:16;:32;;;;15196:9;15181:12;:24;;;;15271:12;;15252:16;;15232:17;;:36;;;;:::i;:::-;:51;;;;:::i;:::-;15216:13;:67;;;;15319:2;15302:13;;:19;;15294:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;14973:390:::0;;;:::o;12299:284::-;6031:12;:10;:12::i;:::-;6021:22;;:6;;;;;;;;;;;:22;;;6013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12421:4:::1;12415;12411:1;12395:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;12394:31;;;;:::i;:::-;12384:6;:41;;12376:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;12513:6;12503;:17;;;;:::i;:::-;12485:15;:35;;;;12536:39;12559:15;;12536:39;;;;;;:::i;:::-;;;;;;;;12299:284:::0;:::o;12597:346::-;6031:12;:10;:12::i;:::-;6021:22;;:6;;;;;;;;;;;:22;;;6013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12720:6:::1;12716:1;12700:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;12687:9;:39;;12679:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;12835:4;12831:1;12815:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;12802:9;:37;;12794:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;12927:9;12906:18;:30;;;;12597:346:::0;:::o;8050:27::-;;;;:::o;12017:274::-;6031:12;:10;:12::i;:::-;6021:22;;:6;;;;;;;;;;;:22;;;6013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12137:4:::1;12131;12127:1;12111:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;12110:31;;;;:::i;:::-;12100:6;:41;;12092:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;12225:6;12215;:17;;;;:::i;:::-;12199:13;:33;;;;12248:35;12269:13;;12248:35;;;;;;:::i;:::-;;;;;;;;12017:274:::0;:::o;2782:151::-;2871:7;2898:11;:18;2910:5;2898:18;;;;;;;;;;;;;;;:27;2917:7;2898:27;;;;;;;;;;;;;;;;2891:34;;2782:151;;;;:::o;7666:33::-;;;;:::o;11663:61::-;6031:12;:10;:12::i;:::-;6021:22;;:6;;;;;;;;;;;:22;;;6013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11663:61::o;8306:27::-;;;;:::o;7708:32::-;;;;;;;;;;;;;:::o;7783:37::-;;;;:::o;8122:30::-;;;;:::o;6266:244::-;6031:12;:10;:12::i;:::-;6021:22;;:6;;;;;;;;;;;:22;;;6013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6375:1:::1;6355:22;;:8;:22;;;;6347:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6465:8;6436:38;;6457:6;;;;;;;;;;;6436:38;;;;;;;;;;;;6494:8;6485:6;;:17;;;;;;;;;;;;;;;;;;6266:244:::0;:::o;22400:160::-;6031:12;:10;:12::i;:::-;6021:22;;:6;;;;;;;;;;;:22;;;6013:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22458:12:::1;22502:10;22494:24;;22526:21;22494:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22481:71;;;;;22447:113;22400:160::o:0;8268:31::-;;;;:::o;8342:34::-;;;;:::o;264:98::-;317:7;344:10;337:17;;264:98;:::o;5183:380::-;5336:1;5319:19;;:5;:19;;;;5311:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5417:1;5398:21;;:7;:21;;;;5390:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5501:6;5471:11;:18;5483:5;5471:18;;;;;;;;;;;;;;;:27;5490:7;5471:27;;;;;;;;;;;;;;;:36;;;;5539:7;5523:32;;5532:5;5523:32;;;5548:6;5523:32;;;;;;:::i;:::-;;;;;;;;5183:380;;;:::o;15561:3935::-;15677:1;15661:18;;:4;:18;;;;15653:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15754:1;15740:16;;:2;:16;;;;15732:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15824:1;15815:6;:10;15807:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;15893:14;;;;;;;;;;;15890:1449;;;15935:7;:5;:7::i;:::-;15927:15;;:4;:15;;;;:32;;;;;15952:7;:5;:7::i;:::-;15946:13;;:2;:13;;;;15927:32;:52;;;;;15977:1;15963:16;;:2;:16;;;;15927:52;:77;;;;;15997:6;15983:21;;:2;:21;;;;15927:77;15923:1405;;;16028:13;;;;;;;;;;;16024:172;;16073:31;:37;16105:4;16073:37;;;;;;;;;;;;;;;;;;;;;;;;;:76;;;;16114:31;:35;16146:2;16114:35;;;;;;;;;;;;;;;;;;;;;;;;;16073:76;16065:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;16024:172;16390:15;16376:30;;:2;:30;;;;:62;;;;;16424:13;16410:28;;:2;:28;;;;16376:62;16372:89;16530:25;:31;16556:4;16530:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;16566:31;:35;16598:2;16566:35;;;;;;;;;;;;;;;;;;;;;;;;;16565:36;16530:71;16526:787;;;16648:12;;16638:6;:22;;16630:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;16766:15;;16749:13;16759:2;16749:9;:13::i;:::-;16740:6;:22;;;;:::i;:::-;:41;;16732:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;16526:787;;;16887:25;:29;16913:2;16887:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;16921:31;:37;16953:4;16921:37;;;;;;;;;;;;;;;;;;;;;;;;;16920:38;16887:71;16883:430;;;17005:13;;16995:6;:23;;16987:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;16883:430;;;17114:31;:35;17146:2;17114:35;;;;;;;;;;;;;;;;;;;;;;;;;17113:36;:78;;;;;17154:31;:37;17186:4;17154:37;;;;;;;;;;;;;;;;;;;;;;;;;17153:38;17113:78;17109:204;;;17249:15;;17232:13;17242:2;17232:9;:13::i;:::-;17223:6;:22;;;;:::i;:::-;:41;;17215:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;17109:204;16883:430;16526:787;15923:1405;15890:1449;17351:28;17382:24;17400:4;17382:9;:24::i;:::-;17351:55;;17427:12;17466:18;;17442:20;:42;;17427:57;;17500:7;:22;;;;;17511:11;;;;;;;;;;;17500:22;:35;;;;;17527:8;;;;;;;;;;;17526:9;17500:35;:71;;;;;17540:25;:31;17566:4;17540:31;;;;;;;;;;;;;;;;;;;;;;;;;17539:32;17500:71;:101;;;;;17576:19;:25;17596:4;17576:25;;;;;;;;;;;;;;;;;;;;;;;;;17575:26;17500:101;:129;;;;;17606:19;:23;17626:2;17606:23;;;;;;;;;;;;;;;;;;;;;;;;;17605:24;17500:129;17497:236;;;17657:4;17646:8;;:15;;;;;;;;;;;;;;;;;;17678:10;:8;:10::i;:::-;17716:5;17705:8;;:16;;;;;;;;;;;;;;;;;;17497:236;17745:12;17760:4;17745:19;;17863;:25;17883:4;17863:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;17892:19;:23;17912:2;17892:23;;;;;;;;;;;;;;;;;;;;;;;;;17863:52;17860:99;;;17942:5;17932:15;;17860:99;17979:12;18006:21;18119:7;18116:1327;;;18289:1;18274:12;:16;;;;:::i;:::-;18252:18;;:38;;:73;;;;;18294:25;:31;18320:4;18294:31;;;;;;;;;;;;;;;;;;;;;;;;;18252:73;18249:1009;;;18375:3;18370:2;18361:6;:11;;;;:::i;:::-;:17;;;;:::i;:::-;18345:33;;18397:55;18413:4;18419:17;;;;;;;;;;;18438:13;18397:15;:55::i;:::-;18249:1009;;;18515:25;:29;18541:2;18515:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;18564:1;18548:13;;:17;18515:50;18511:747;;;18616:3;18601:13;;18592:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;18585:34;;18686:13;;18667:16;;18660:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;18638:18;;:61;;;;;;;:::i;:::-;;;;;;;;18768:13;;18748:17;;18741:4;:24;;;;:::i;:::-;:40;;;;:::i;:::-;18718:19;;:63;;;;;;;:::i;:::-;;;;;;;;18840:13;;18825:12;;18818:4;:19;;;;:::i;:::-;:35;;;;:::i;:::-;18800:14;;:53;;;;;;;:::i;:::-;;;;;;;;18511:747;;;18914:25;:31;18940:4;18914:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;18964:1;18949:12;;:16;18914:51;18911:347;;;19014:3;18999:12;;18990:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;18983:34;;19080:12;;19062:15;;19055:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;19033:18;;:59;;;;;;;:::i;:::-;;;;;;;;19160:12;;19141:16;;19134:4;:23;;;;:::i;:::-;:38;;;;:::i;:::-;19111:19;;:61;;;;;;;:::i;:::-;;;;;;;;19230:12;;19216:11;;19209:4;:18;;;;:::i;:::-;:33;;;;:::i;:::-;19191:14;;:51;;;;;;;:::i;:::-;;;;;;;;18911:347;18511:747;18249:1009;19296:1;19289:4;:8;19286:93;;;19321:42;19337:4;19351;19358;19321:15;:42::i;:::-;19286:93;19418:13;19411:4;:20;;;;:::i;:::-;19401:30;;;;;:::i;:::-;;;18116:1327;19455:33;19471:4;19477:2;19481:6;19455:15;:33::i;:::-;15640:3856;;;;;15561:3935;;;:::o;14328:248::-;14445:5;14411:25;:31;14437:4;14411:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14471;14498:4;14504:5;14471:26;:39::i;:::-;14562:5;14528:40;;14556:4;14528:40;;;;;;;;;;;;14328:248;;:::o;20586:1337::-;20625:23;20651:24;20669:4;20651:9;:24::i;:::-;20625:50;;20686:25;20757:14;;20735:19;;20714:18;;:40;;;;:::i;:::-;:57;;;;:::i;:::-;20686:85;;20814:1;20795:15;:20;:46;;;;20840:1;20819:17;:22;20795:46;20792:60;;;20844:7;;;;20792:60;20906:2;20885:18;;:23;;;;:::i;:::-;20867:15;:41;20864:113;;;20963:2;20942:18;;:23;;;;:::i;:::-;20924:41;;20864:113;20989:12;21032:23;21117:1;21097:17;21076:18;;21058:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;21032:86;;21139:51;21174:15;21156;:33;;;;:::i;:::-;21139:16;:51::i;:::-;21212:18;21233:21;21212:42;;21265:23;21291:10;21265:36;;21314:24;21417:1;21398:18;;:20;;;;:::i;:::-;21377:17;:42;;;;:::i;:::-;21354:19;;21341:10;:32;;;;:::i;:::-;:79;;;;:::i;:::-;21314:106;;21431:19;21524:1;21505:18;;:20;;;;:::i;:::-;21484:17;:42;;;;:::i;:::-;21466:14;;21453:10;:27;;;;:::i;:::-;:74;;;;:::i;:::-;21431:96;;21578:11;21559:16;:30;;;;:::i;:::-;21540:49;;;;;:::i;:::-;;;21635:1;21614:18;:22;;;;21669:1;21647:19;:23;;;;21716:1;21698:15;:19;:42;;;;;21739:1;21721:15;:19;21698:42;21695:119;;;21756:46;21769:15;21786;21756:12;:46::i;:::-;21695:119;21858:17;;;;;;;;;;;21850:31;;21889:21;21850:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21837:78;;;;;20614:1309;;;;;;;;20586:1337;:::o;4262:614::-;4420:1;4402:20;;:6;:20;;;;4394:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4504:1;4483:23;;:9;:23;;;;4475:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;4559:21;4583:9;:17;4593:6;4583:17;;;;;;;;;;;;;;;;4559:41;;4636:6;4619:13;:23;;4611:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4757:6;4741:13;:22;4721:9;:17;4731:6;4721:17;;;;;;;;;;;;;;;:42;;;;4809:6;4785:9;:20;4795:9;4785:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;4850:9;4833:35;;4842:6;4833:35;;;4861:6;4833:35;;;;;;:::i;:::-;;;;;;;;4383:493;4262:614;;;:::o;12955:207::-;13085:10;13043:31;:39;13075:6;13043:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;13111:43;13135:6;13143:10;13111:43;;;;;;;:::i;:::-;;;;;;;;12955:207;;:::o;19504:541::-;19582:21;19620:1;19606:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19582:40;;19651:4;19633;19638:1;19633:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19677:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19667:4;19672:1;19667:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;19712:62;19729:4;19744:15;19762:11;19712:8;:62::i;:::-;19813:15;:66;;;19894:11;19920:1;19964:4;19991;20011:15;19813:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19559:486;19504:541;:::o;20057:521::-;20205:62;20222:4;20237:15;20255:11;20205:8;:62::i;:::-;20310:15;:31;;;20349:9;20382:4;20402:11;20428:1;20471;20522:6;20544:15;20310:260;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20057:521;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:144::-;4243:9;4276:37;4307:5;4276:37;:::i;:::-;4263:50;;4175:144;;;:::o;4325:167::-;4430:55;4479:5;4430:55;:::i;:::-;4425:3;4418:68;4325:167;;:::o;4498:258::-;4609:4;4647:2;4636:9;4632:18;4624:26;;4660:89;4746:1;4735:9;4731:17;4722:6;4660:89;:::i;:::-;4498:258;;;;:::o;4762:118::-;4849:24;4867:5;4849:24;:::i;:::-;4844:3;4837:37;4762:118;;:::o;4886:222::-;4979:4;5017:2;5006:9;5002:18;4994:26;;5030:71;5098:1;5087:9;5083:17;5074:6;5030:71;:::i;:::-;4886:222;;;;:::o;5114:117::-;5223:1;5220;5213:12;5237:180;5285:77;5282:1;5275:88;5382:4;5379:1;5372:15;5406:4;5403:1;5396:15;5423:281;5506:27;5528:4;5506:27;:::i;:::-;5498:6;5494:40;5636:6;5624:10;5621:22;5600:18;5588:10;5585:34;5582:62;5579:88;;;5647:18;;:::i;:::-;5579:88;5687:10;5683:2;5676:22;5466:238;5423:281;;:::o;5710:129::-;5744:6;5771:20;;:::i;:::-;5761:30;;5800:33;5828:4;5820:6;5800:33;:::i;:::-;5710:129;;;:::o;5845:311::-;5922:4;6012:18;6004:6;6001:30;5998:56;;;6034:18;;:::i;:::-;5998:56;6084:4;6076:6;6072:17;6064:25;;6144:4;6138;6134:15;6126:23;;5845:311;;;:::o;6162:117::-;6271:1;6268;6261:12;6302:710;6398:5;6423:81;6439:64;6496:6;6439:64;:::i;:::-;6423:81;:::i;:::-;6414:90;;6524:5;6553:6;6546:5;6539:21;6587:4;6580:5;6576:16;6569:23;;6640:4;6632:6;6628:17;6620:6;6616:30;6669:3;6661:6;6658:15;6655:122;;;6688:79;;:::i;:::-;6655:122;6803:6;6786:220;6820:6;6815:3;6812:15;6786:220;;;6895:3;6924:37;6957:3;6945:10;6924:37;:::i;:::-;6919:3;6912:50;6991:4;6986:3;6982:14;6975:21;;6862:144;6846:4;6841:3;6837:14;6830:21;;6786:220;;;6790:21;6404:608;;6302:710;;;;;:::o;7035:370::-;7106:5;7155:3;7148:4;7140:6;7136:17;7132:27;7122:122;;7163:79;;:::i;:::-;7122:122;7280:6;7267:20;7305:94;7395:3;7387:6;7380:4;7372:6;7368:17;7305:94;:::i;:::-;7296:103;;7112:293;7035:370;;;;:::o;7411:311::-;7488:4;7578:18;7570:6;7567:30;7564:56;;;7600:18;;:::i;:::-;7564:56;7650:4;7642:6;7638:17;7630:25;;7710:4;7704;7700:15;7692:23;;7411:311;;;:::o;7745:710::-;7841:5;7866:81;7882:64;7939:6;7882:64;:::i;:::-;7866:81;:::i;:::-;7857:90;;7967:5;7996:6;7989:5;7982:21;8030:4;8023:5;8019:16;8012:23;;8083:4;8075:6;8071:17;8063:6;8059:30;8112:3;8104:6;8101:15;8098:122;;;8131:79;;:::i;:::-;8098:122;8246:6;8229:220;8263:6;8258:3;8255:15;8229:220;;;8338:3;8367:37;8400:3;8388:10;8367:37;:::i;:::-;8362:3;8355:50;8434:4;8429:3;8425:14;8418:21;;8305:144;8289:4;8284:3;8280:14;8273:21;;8229:220;;;8233:21;7847:608;;7745:710;;;;;:::o;8478:370::-;8549:5;8598:3;8591:4;8583:6;8579:17;8575:27;8565:122;;8606:79;;:::i;:::-;8565:122;8723:6;8710:20;8748:94;8838:3;8830:6;8823:4;8815:6;8811:17;8748:94;:::i;:::-;8739:103;;8555:293;8478:370;;;;:::o;8854:894::-;8972:6;8980;9029:2;9017:9;9008:7;9004:23;9000:32;8997:119;;;9035:79;;:::i;:::-;8997:119;9183:1;9172:9;9168:17;9155:31;9213:18;9205:6;9202:30;9199:117;;;9235:79;;:::i;:::-;9199:117;9340:78;9410:7;9401:6;9390:9;9386:22;9340:78;:::i;:::-;9330:88;;9126:302;9495:2;9484:9;9480:18;9467:32;9526:18;9518:6;9515:30;9512:117;;;9548:79;;:::i;:::-;9512:117;9653:78;9723:7;9714:6;9703:9;9699:22;9653:78;:::i;:::-;9643:88;;9438:303;8854:894;;;;;:::o;9754:619::-;9831:6;9839;9847;9896:2;9884:9;9875:7;9871:23;9867:32;9864:119;;;9902:79;;:::i;:::-;9864:119;10022:1;10047:53;10092:7;10083:6;10072:9;10068:22;10047:53;:::i;:::-;10037:63;;9993:117;10149:2;10175:53;10220:7;10211:6;10200:9;10196:22;10175:53;:::i;:::-;10165:63;;10120:118;10277:2;10303:53;10348:7;10339:6;10328:9;10324:22;10303:53;:::i;:::-;10293:63;;10248:118;9754:619;;;;;:::o;10379:329::-;10438:6;10487:2;10475:9;10466:7;10462:23;10458:32;10455:119;;;10493:79;;:::i;:::-;10455:119;10613:1;10638:53;10683:7;10674:6;10663:9;10659:22;10638:53;:::i;:::-;10628:63;;10584:117;10379:329;;;;:::o;10714:86::-;10749:7;10789:4;10782:5;10778:16;10767:27;;10714:86;;;:::o;10806:112::-;10889:22;10905:5;10889:22;:::i;:::-;10884:3;10877:35;10806:112;;:::o;10924:214::-;11013:4;11051:2;11040:9;11036:18;11028:26;;11064:67;11128:1;11117:9;11113:17;11104:6;11064:67;:::i;:::-;10924:214;;;;:::o;11144:118::-;11231:24;11249:5;11231:24;:::i;:::-;11226:3;11219:37;11144:118;;:::o;11268:222::-;11361:4;11399:2;11388:9;11384:18;11376:26;;11412:71;11480:1;11469:9;11465:17;11456:6;11412:71;:::i;:::-;11268:222;;;;:::o;11496:116::-;11566:21;11581:5;11566:21;:::i;:::-;11559:5;11556:32;11546:60;;11602:1;11599;11592:12;11546:60;11496:116;:::o;11618:133::-;11661:5;11699:6;11686:20;11677:29;;11715:30;11739:5;11715:30;:::i;:::-;11618:133;;;;:::o;11757:468::-;11822:6;11830;11879:2;11867:9;11858:7;11854:23;11850:32;11847:119;;;11885:79;;:::i;:::-;11847:119;12005:1;12030:53;12075:7;12066:6;12055:9;12051:22;12030:53;:::i;:::-;12020:63;;11976:117;12132:2;12158:50;12200:7;12191:6;12180:9;12176:22;12158:50;:::i;:::-;12148:60;;12103:115;11757:468;;;;;:::o;12231:619::-;12308:6;12316;12324;12373:2;12361:9;12352:7;12348:23;12344:32;12341:119;;;12379:79;;:::i;:::-;12341:119;12499:1;12524:53;12569:7;12560:6;12549:9;12545:22;12524:53;:::i;:::-;12514:63;;12470:117;12626:2;12652:53;12697:7;12688:6;12677:9;12673:22;12652:53;:::i;:::-;12642:63;;12597:118;12754:2;12780:53;12825:7;12816:6;12805:9;12801:22;12780:53;:::i;:::-;12770:63;;12725:118;12231:619;;;;;:::o;12856:474::-;12924:6;12932;12981:2;12969:9;12960:7;12956:23;12952:32;12949:119;;;12987:79;;:::i;:::-;12949:119;13107:1;13132:53;13177:7;13168:6;13157:9;13153:22;13132:53;:::i;:::-;13122:63;;13078:117;13234:2;13260:53;13305:7;13296:6;13285:9;13281:22;13260:53;:::i;:::-;13250:63;;13205:118;12856:474;;;;;:::o;13336:180::-;13384:77;13381:1;13374:88;13481:4;13478:1;13471:15;13505:4;13502:1;13495:15;13522:320;13566:6;13603:1;13597:4;13593:12;13583:22;;13650:1;13644:4;13640:12;13671:18;13661:81;;13727:4;13719:6;13715:17;13705:27;;13661:81;13789:2;13781:6;13778:14;13758:18;13755:38;13752:84;;;13808:18;;:::i;:::-;13752:84;13573:269;13522:320;;;:::o;13848:182::-;13988:34;13984:1;13976:6;13972:14;13965:58;13848:182;:::o;14036:366::-;14178:3;14199:67;14263:2;14258:3;14199:67;:::i;:::-;14192:74;;14275:93;14364:3;14275:93;:::i;:::-;14393:2;14388:3;14384:12;14377:19;;14036:366;;;:::o;14408:419::-;14574:4;14612:2;14601:9;14597:18;14589:26;;14661:9;14655:4;14651:20;14647:1;14636:9;14632:17;14625:47;14689:131;14815:4;14689:131;:::i;:::-;14681:139;;14408:419;;;:::o;14833:180::-;14973:32;14969:1;14961:6;14957:14;14950:56;14833:180;:::o;15019:366::-;15161:3;15182:67;15246:2;15241:3;15182:67;:::i;:::-;15175:74;;15258:93;15347:3;15258:93;:::i;:::-;15376:2;15371:3;15367:12;15360:19;;15019:366;;;:::o;15391:419::-;15557:4;15595:2;15584:9;15580:18;15572:26;;15644:9;15638:4;15634:20;15630:1;15619:9;15615:17;15608:47;15672:131;15798:4;15672:131;:::i;:::-;15664:139;;15391:419;;;:::o;15816:241::-;15956:34;15952:1;15944:6;15940:14;15933:58;16025:24;16020:2;16012:6;16008:15;16001:49;15816:241;:::o;16063:366::-;16205:3;16226:67;16290:2;16285:3;16226:67;:::i;:::-;16219:74;;16302:93;16391:3;16302:93;:::i;:::-;16420:2;16415:3;16411:12;16404:19;;16063:366;;;:::o;16435:419::-;16601:4;16639:2;16628:9;16624:18;16616:26;;16688:9;16682:4;16678:20;16674:1;16663:9;16659:17;16652:47;16716:131;16842:4;16716:131;:::i;:::-;16708:139;;16435:419;;;:::o;16860:180::-;16908:77;16905:1;16898:88;17005:4;17002:1;16995:15;17029:4;17026:1;17019:15;17046:180;17094:77;17091:1;17084:88;17191:4;17188:1;17181:15;17215:4;17212:1;17205:15;17232:348;17272:7;17295:20;17313:1;17295:20;:::i;:::-;17290:25;;17329:20;17347:1;17329:20;:::i;:::-;17324:25;;17517:1;17449:66;17445:74;17442:1;17439:81;17434:1;17427:9;17420:17;17416:105;17413:131;;;17524:18;;:::i;:::-;17413:131;17572:1;17569;17565:9;17554:20;;17232:348;;;;:::o;17586:233::-;17625:3;17648:24;17666:5;17648:24;:::i;:::-;17639:33;;17694:66;17687:5;17684:77;17681:103;;;17764:18;;:::i;:::-;17681:103;17811:1;17804:5;17800:13;17793:20;;17586:233;;;:::o;17825:227::-;17965:34;17961:1;17953:6;17949:14;17942:58;18034:10;18029:2;18021:6;18017:15;18010:35;17825:227;:::o;18058:366::-;18200:3;18221:67;18285:2;18280:3;18221:67;:::i;:::-;18214:74;;18297:93;18386:3;18297:93;:::i;:::-;18415:2;18410:3;18406:12;18399:19;;18058:366;;;:::o;18430:419::-;18596:4;18634:2;18623:9;18619:18;18611:26;;18683:9;18677:4;18673:20;18669:1;18658:9;18654:17;18647:47;18711:131;18837:4;18711:131;:::i;:::-;18703:139;;18430:419;;;:::o;18855:180::-;18903:77;18900:1;18893:88;19000:4;18997:1;18990:15;19024:4;19021:1;19014:15;19041:185;19081:1;19098:20;19116:1;19098:20;:::i;:::-;19093:25;;19132:20;19150:1;19132:20;:::i;:::-;19127:25;;19171:1;19161:35;;19176:18;;:::i;:::-;19161:35;19218:1;19215;19211:9;19206:14;;19041:185;;;;:::o;19232:228::-;19372:34;19368:1;19360:6;19356:14;19349:58;19441:11;19436:2;19428:6;19424:15;19417:36;19232:228;:::o;19466:366::-;19608:3;19629:67;19693:2;19688:3;19629:67;:::i;:::-;19622:74;;19705:93;19794:3;19705:93;:::i;:::-;19823:2;19818:3;19814:12;19807:19;;19466:366;;;:::o;19838:419::-;20004:4;20042:2;20031:9;20027:18;20019:26;;20091:9;20085:4;20081:20;20077:1;20066:9;20062:17;20055:47;20119:131;20245:4;20119:131;:::i;:::-;20111:139;;19838:419;;;:::o;20263:305::-;20303:3;20322:20;20340:1;20322:20;:::i;:::-;20317:25;;20356:20;20374:1;20356:20;:::i;:::-;20351:25;;20510:1;20442:66;20438:74;20435:1;20432:81;20429:107;;;20516:18;;:::i;:::-;20429:107;20560:1;20557;20553:9;20546:16;;20263:305;;;;:::o;20574:225::-;20714:34;20710:1;20702:6;20698:14;20691:58;20783:8;20778:2;20770:6;20766:15;20759:33;20574:225;:::o;20805:366::-;20947:3;20968:67;21032:2;21027:3;20968:67;:::i;:::-;20961:74;;21044:93;21133:3;21044:93;:::i;:::-;21162:2;21157:3;21153:12;21146:19;;20805:366;;;:::o;21177:419::-;21343:4;21381:2;21370:9;21366:18;21358:26;;21430:9;21424:4;21420:20;21416:1;21405:9;21401:17;21394:47;21458:131;21584:4;21458:131;:::i;:::-;21450:139;;21177:419;;;:::o;21602:226::-;21742:34;21738:1;21730:6;21726:14;21719:58;21811:9;21806:2;21798:6;21794:15;21787:34;21602:226;:::o;21834:366::-;21976:3;21997:67;22061:2;22056:3;21997:67;:::i;:::-;21990:74;;22073:93;22162:3;22073:93;:::i;:::-;22191:2;22186:3;22182:12;22175:19;;21834:366;;;:::o;22206:419::-;22372:4;22410:2;22399:9;22395:18;22387:26;;22459:9;22453:4;22449:20;22445:1;22434:9;22430:17;22423:47;22487:131;22613:4;22487:131;:::i;:::-;22479:139;;22206:419;;;:::o;22631:179::-;22771:31;22767:1;22759:6;22755:14;22748:55;22631:179;:::o;22816:366::-;22958:3;22979:67;23043:2;23038:3;22979:67;:::i;:::-;22972:74;;23055:93;23144:3;23055:93;:::i;:::-;23173:2;23168:3;23164:12;23157:19;;22816:366;;;:::o;23188:419::-;23354:4;23392:2;23381:9;23377:18;23369:26;;23441:9;23435:4;23431:20;23427:1;23416:9;23412:17;23405:47;23469:131;23595:4;23469:131;:::i;:::-;23461:139;;23188:419;;;:::o;23613:176::-;23753:28;23749:1;23741:6;23737:14;23730:52;23613:176;:::o;23795:366::-;23937:3;23958:67;24022:2;24017:3;23958:67;:::i;:::-;23951:74;;24034:93;24123:3;24034:93;:::i;:::-;24152:2;24147:3;24143:12;24136:19;;23795:366;;;:::o;24167:419::-;24333:4;24371:2;24360:9;24356:18;24348:26;;24420:9;24414:4;24410:20;24406:1;24395:9;24391:17;24384:47;24448:131;24574:4;24448:131;:::i;:::-;24440:139;;24167:419;;;:::o;24592:178::-;24732:30;24728:1;24720:6;24716:14;24709:54;24592:178;:::o;24776:366::-;24918:3;24939:67;25003:2;24998:3;24939:67;:::i;:::-;24932:74;;25015:93;25104:3;25015:93;:::i;:::-;25133:2;25128:3;25124:12;25117:19;;24776:366;;;:::o;25148:419::-;25314:4;25352:2;25341:9;25337:18;25329:26;;25401:9;25395:4;25391:20;25387:1;25376:9;25372:17;25365:47;25429:131;25555:4;25429:131;:::i;:::-;25421:139;;25148:419;;;:::o;25573:143::-;25630:5;25661:6;25655:13;25646:22;;25677:33;25704:5;25677:33;:::i;:::-;25573:143;;;;:::o;25722:351::-;25792:6;25841:2;25829:9;25820:7;25816:23;25812:32;25809:119;;;25847:79;;:::i;:::-;25809:119;25967:1;25992:64;26048:7;26039:6;26028:9;26024:22;25992:64;:::i;:::-;25982:74;;25938:128;25722:351;;;;:::o;26079:332::-;26200:4;26238:2;26227:9;26223:18;26215:26;;26251:71;26319:1;26308:9;26304:17;26295:6;26251:71;:::i;:::-;26332:72;26400:2;26389:9;26385:18;26376:6;26332:72;:::i;:::-;26079:332;;;;;:::o;26417:137::-;26471:5;26502:6;26496:13;26487:22;;26518:30;26542:5;26518:30;:::i;:::-;26417:137;;;;:::o;26560:345::-;26627:6;26676:2;26664:9;26655:7;26651:23;26647:32;26644:119;;;26682:79;;:::i;:::-;26644:119;26802:1;26827:61;26880:7;26871:6;26860:9;26856:22;26827:61;:::i;:::-;26817:71;;26773:125;26560:345;;;;:::o;26911:173::-;27051:25;27047:1;27039:6;27035:14;27028:49;26911:173;:::o;27090:366::-;27232:3;27253:67;27317:2;27312:3;27253:67;:::i;:::-;27246:74;;27329:93;27418:3;27329:93;:::i;:::-;27447:2;27442:3;27438:12;27431:19;;27090:366;;;:::o;27462:419::-;27628:4;27666:2;27655:9;27651:18;27643:26;;27715:9;27709:4;27705:20;27701:1;27690:9;27686:17;27679:47;27743:131;27869:4;27743:131;:::i;:::-;27735:139;;27462:419;;;:::o;27887:244::-;28027:34;28023:1;28015:6;28011:14;28004:58;28096:27;28091:2;28083:6;28079:15;28072:52;27887:244;:::o;28137:366::-;28279:3;28300:67;28364:2;28359:3;28300:67;:::i;:::-;28293:74;;28376:93;28465:3;28376:93;:::i;:::-;28494:2;28489:3;28485:12;28478:19;;28137:366;;;:::o;28509:419::-;28675:4;28713:2;28702:9;28698:18;28690:26;;28762:9;28756:4;28752:20;28748:1;28737:9;28733:17;28726:47;28790:131;28916:4;28790:131;:::i;:::-;28782:139;;28509:419;;;:::o;28934:224::-;29074:34;29070:1;29062:6;29058:14;29051:58;29143:7;29138:2;29130:6;29126:15;29119:32;28934:224;:::o;29164:366::-;29306:3;29327:67;29391:2;29386:3;29327:67;:::i;:::-;29320:74;;29403:93;29492:3;29403:93;:::i;:::-;29521:2;29516:3;29512:12;29505:19;;29164:366;;;:::o;29536:419::-;29702:4;29740:2;29729:9;29725:18;29717:26;;29789:9;29783:4;29779:20;29775:1;29764:9;29760:17;29753:47;29817:131;29943:4;29817:131;:::i;:::-;29809:139;;29536:419;;;:::o;29961:179::-;30101:31;30097:1;30089:6;30085:14;30078:55;29961:179;:::o;30146:366::-;30288:3;30309:67;30373:2;30368:3;30309:67;:::i;:::-;30302:74;;30385:93;30474:3;30385:93;:::i;:::-;30503:2;30498:3;30494:12;30487:19;;30146:366;;;:::o;30518:419::-;30684:4;30722:2;30711:9;30707:18;30699:26;;30771:9;30765:4;30761:20;30757:1;30746:9;30742:17;30735:47;30799:131;30925:4;30799:131;:::i;:::-;30791:139;;30518:419;;;:::o;30943:231::-;31083:34;31079:1;31071:6;31067:14;31060:58;31152:14;31147:2;31139:6;31135:15;31128:39;30943:231;:::o;31180:366::-;31322:3;31343:67;31407:2;31402:3;31343:67;:::i;:::-;31336:74;;31419:93;31508:3;31419:93;:::i;:::-;31537:2;31532:3;31528:12;31521:19;;31180:366;;;:::o;31552:419::-;31718:4;31756:2;31745:9;31741:18;31733:26;;31805:9;31799:4;31795:20;31791:1;31780:9;31776:17;31769:47;31833:131;31959:4;31833:131;:::i;:::-;31825:139;;31552:419;;;:::o;31977:240::-;32117:34;32113:1;32105:6;32101:14;32094:58;32186:23;32181:2;32173:6;32169:15;32162:48;31977:240;:::o;32223:366::-;32365:3;32386:67;32450:2;32445:3;32386:67;:::i;:::-;32379:74;;32462:93;32551:3;32462:93;:::i;:::-;32580:2;32575:3;32571:12;32564:19;;32223:366;;;:::o;32595:419::-;32761:4;32799:2;32788:9;32784:18;32776:26;;32848:9;32842:4;32838:20;32834:1;32823:9;32819:17;32812:47;32876:131;33002:4;32876:131;:::i;:::-;32868:139;;32595:419;;;:::o;33020:239::-;33160:34;33156:1;33148:6;33144:14;33137:58;33229:22;33224:2;33216:6;33212:15;33205:47;33020:239;:::o;33265:366::-;33407:3;33428:67;33492:2;33487:3;33428:67;:::i;:::-;33421:74;;33504:93;33593:3;33504:93;:::i;:::-;33622:2;33617:3;33613:12;33606:19;;33265:366;;;:::o;33637:419::-;33803:4;33841:2;33830:9;33826:18;33818:26;;33890:9;33884:4;33880:20;33876:1;33865:9;33861:17;33854:47;33918:131;34044:4;33918:131;:::i;:::-;33910:139;;33637:419;;;:::o;34062:229::-;34202:34;34198:1;34190:6;34186:14;34179:58;34271:12;34266:2;34258:6;34254:15;34247:37;34062:229;:::o;34297:366::-;34439:3;34460:67;34524:2;34519:3;34460:67;:::i;:::-;34453:74;;34536:93;34625:3;34536:93;:::i;:::-;34654:2;34649:3;34645:12;34638:19;;34297:366;;;:::o;34669:419::-;34835:4;34873:2;34862:9;34858:18;34850:26;;34922:9;34916:4;34912:20;34908:1;34897:9;34893:17;34886:47;34950:131;35076:4;34950:131;:::i;:::-;34942:139;;34669:419;;;:::o;35094:225::-;35234:34;35230:1;35222:6;35218:14;35211:58;35303:8;35298:2;35290:6;35286:15;35279:33;35094:225;:::o;35325:366::-;35467:3;35488:67;35552:2;35547:3;35488:67;:::i;:::-;35481:74;;35564:93;35653:3;35564:93;:::i;:::-;35682:2;35677:3;35673:12;35666:19;;35325:366;;;:::o;35697:419::-;35863:4;35901:2;35890:9;35886:18;35878:26;;35950:9;35944:4;35940:20;35936:1;35925:9;35921:17;35914:47;35978:131;36104:4;35978:131;:::i;:::-;35970:139;;35697:419;;;:::o;36122:147::-;36223:11;36260:3;36245:18;;36122:147;;;;:::o;36275:114::-;;:::o;36395:398::-;36554:3;36575:83;36656:1;36651:3;36575:83;:::i;:::-;36568:90;;36667:93;36756:3;36667:93;:::i;:::-;36785:1;36780:3;36776:11;36769:18;;36395:398;;;:::o;36799:379::-;36983:3;37005:147;37148:3;37005:147;:::i;:::-;36998:154;;37169:3;37162:10;;36799:379;;;:::o;37184:223::-;37324:34;37320:1;37312:6;37308:14;37301:58;37393:6;37388:2;37380:6;37376:15;37369:31;37184:223;:::o;37413:366::-;37555:3;37576:67;37640:2;37635:3;37576:67;:::i;:::-;37569:74;;37652:93;37741:3;37652:93;:::i;:::-;37770:2;37765:3;37761:12;37754:19;;37413:366;;;:::o;37785:419::-;37951:4;37989:2;37978:9;37974:18;37966:26;;38038:9;38032:4;38028:20;38024:1;38013:9;38009:17;38002:47;38066:131;38192:4;38066:131;:::i;:::-;38058:139;;37785:419;;;:::o;38210:221::-;38350:34;38346:1;38338:6;38334:14;38327:58;38419:4;38414:2;38406:6;38402:15;38395:29;38210:221;:::o;38437:366::-;38579:3;38600:67;38664:2;38659:3;38600:67;:::i;:::-;38593:74;;38676:93;38765:3;38676:93;:::i;:::-;38794:2;38789:3;38785:12;38778:19;;38437:366;;;:::o;38809:419::-;38975:4;39013:2;39002:9;38998:18;38990:26;;39062:9;39056:4;39052:20;39048:1;39037:9;39033:17;39026:47;39090:131;39216:4;39090:131;:::i;:::-;39082:139;;38809:419;;;:::o;39234:224::-;39374:34;39370:1;39362:6;39358:14;39351:58;39443:7;39438:2;39430:6;39426:15;39419:32;39234:224;:::o;39464:366::-;39606:3;39627:67;39691:2;39686:3;39627:67;:::i;:::-;39620:74;;39703:93;39792:3;39703:93;:::i;:::-;39821:2;39816:3;39812:12;39805:19;;39464:366;;;:::o;39836:419::-;40002:4;40040:2;40029:9;40025:18;40017:26;;40089:9;40083:4;40079:20;40075:1;40064:9;40060:17;40053:47;40117:131;40243:4;40117:131;:::i;:::-;40109:139;;39836:419;;;:::o;40261:222::-;40401:34;40397:1;40389:6;40385:14;40378:58;40470:5;40465:2;40457:6;40453:15;40446:30;40261:222;:::o;40489:366::-;40631:3;40652:67;40716:2;40711:3;40652:67;:::i;:::-;40645:74;;40728:93;40817:3;40728:93;:::i;:::-;40846:2;40841:3;40837:12;40830:19;;40489:366;;;:::o;40861:419::-;41027:4;41065:2;41054:9;41050:18;41042:26;;41114:9;41108:4;41104:20;41100:1;41089:9;41085:17;41078:47;41142:131;41268:4;41142:131;:::i;:::-;41134:139;;40861:419;;;:::o;41286:179::-;41426:31;41422:1;41414:6;41410:14;41403:55;41286:179;:::o;41471:366::-;41613:3;41634:67;41698:2;41693:3;41634:67;:::i;:::-;41627:74;;41710:93;41799:3;41710:93;:::i;:::-;41828:2;41823:3;41819:12;41812:19;;41471:366;;;:::o;41843:419::-;42009:4;42047:2;42036:9;42032:18;42024:26;;42096:9;42090:4;42086:20;42082:1;42071:9;42067:17;42060:47;42124:131;42250:4;42124:131;:::i;:::-;42116:139;;41843:419;;;:::o;42268:172::-;42408:24;42404:1;42396:6;42392:14;42385:48;42268:172;:::o;42446:366::-;42588:3;42609:67;42673:2;42668:3;42609:67;:::i;:::-;42602:74;;42685:93;42774:3;42685:93;:::i;:::-;42803:2;42798:3;42794:12;42787:19;;42446:366;;;:::o;42818:419::-;42984:4;43022:2;43011:9;43007:18;42999:26;;43071:9;43065:4;43061:20;43057:1;43046:9;43042:17;43035:47;43099:131;43225:4;43099:131;:::i;:::-;43091:139;;42818:419;;;:::o;43243:227::-;43383:34;43379:1;43371:6;43367:14;43360:58;43452:10;43447:2;43439:6;43435:15;43428:35;43243:227;:::o;43476:366::-;43618:3;43639:67;43703:2;43698:3;43639:67;:::i;:::-;43632:74;;43715:93;43804:3;43715:93;:::i;:::-;43833:2;43828:3;43824:12;43817:19;;43476:366;;;:::o;43848:419::-;44014:4;44052:2;44041:9;44037:18;44029:26;;44101:9;44095:4;44091:20;44087:1;44076:9;44072:17;44065:47;44129:131;44255:4;44129:131;:::i;:::-;44121:139;;43848:419;;;:::o;44273:174::-;44413:26;44409:1;44401:6;44397:14;44390:50;44273:174;:::o;44453:366::-;44595:3;44616:67;44680:2;44675:3;44616:67;:::i;:::-;44609:74;;44692:93;44781:3;44692:93;:::i;:::-;44810:2;44805:3;44801:12;44794:19;;44453:366;;;:::o;44825:419::-;44991:4;45029:2;45018:9;45014:18;45006:26;;45078:9;45072:4;45068:20;45064:1;45053:9;45049:17;45042:47;45106:131;45232:4;45106:131;:::i;:::-;45098:139;;44825:419;;;:::o;45250:229::-;45390:34;45386:1;45378:6;45374:14;45367:58;45459:12;45454:2;45446:6;45442:15;45435:37;45250:229;:::o;45485:366::-;45627:3;45648:67;45712:2;45707:3;45648:67;:::i;:::-;45641:74;;45724:93;45813:3;45724:93;:::i;:::-;45842:2;45837:3;45833:12;45826:19;;45485:366;;;:::o;45857:419::-;46023:4;46061:2;46050:9;46046:18;46038:26;;46110:9;46104:4;46100:20;46096:1;46085:9;46081:17;46074:47;46138:131;46264:4;46138:131;:::i;:::-;46130:139;;45857:419;;;:::o;46282:191::-;46322:4;46342:20;46360:1;46342:20;:::i;:::-;46337:25;;46376:20;46394:1;46376:20;:::i;:::-;46371:25;;46415:1;46412;46409:8;46406:34;;;46420:18;;:::i;:::-;46406:34;46465:1;46462;46458:9;46450:17;;46282:191;;;;:::o;46479:225::-;46619:34;46615:1;46607:6;46603:14;46596:58;46688:8;46683:2;46675:6;46671:15;46664:33;46479:225;:::o;46710:366::-;46852:3;46873:67;46937:2;46932:3;46873:67;:::i;:::-;46866:74;;46949:93;47038:3;46949:93;:::i;:::-;47067:2;47062:3;47058:12;47051:19;;46710:366;;;:::o;47082:419::-;47248:4;47286:2;47275:9;47271:18;47263:26;;47335:9;47329:4;47325:20;47321:1;47310:9;47306:17;47299:47;47363:131;47489:4;47363:131;:::i;:::-;47355:139;;47082:419;;;:::o;47507:320::-;47622:4;47660:2;47649:9;47645:18;47637:26;;47673:71;47741:1;47730:9;47726:17;47717:6;47673:71;:::i;:::-;47754:66;47816:2;47805:9;47801:18;47792:6;47754:66;:::i;:::-;47507:320;;;;;:::o;47833:143::-;47890:5;47921:6;47915:13;47906:22;;47937:33;47964:5;47937:33;:::i;:::-;47833:143;;;;:::o;47982:351::-;48052:6;48101:2;48089:9;48080:7;48076:23;48072:32;48069:119;;;48107:79;;:::i;:::-;48069:119;48227:1;48252:64;48308:7;48299:6;48288:9;48284:22;48252:64;:::i;:::-;48242:74;;48198:128;47982:351;;;;:::o;48339:85::-;48384:7;48413:5;48402:16;;48339:85;;;:::o;48430:158::-;48488:9;48521:61;48539:42;48548:32;48574:5;48548:32;:::i;:::-;48539:42;:::i;:::-;48521:61;:::i;:::-;48508:74;;48430:158;;;:::o;48594:147::-;48689:45;48728:5;48689:45;:::i;:::-;48684:3;48677:58;48594:147;;:::o;48747:114::-;48814:6;48848:5;48842:12;48832:22;;48747:114;;;:::o;48867:184::-;48966:11;49000:6;48995:3;48988:19;49040:4;49035:3;49031:14;49016:29;;48867:184;;;;:::o;49057:132::-;49124:4;49147:3;49139:11;;49177:4;49172:3;49168:14;49160:22;;49057:132;;;:::o;49195:108::-;49272:24;49290:5;49272:24;:::i;:::-;49267:3;49260:37;49195:108;;:::o;49309:179::-;49378:10;49399:46;49441:3;49433:6;49399:46;:::i;:::-;49477:4;49472:3;49468:14;49454:28;;49309:179;;;;:::o;49494:113::-;49564:4;49596;49591:3;49587:14;49579:22;;49494:113;;;:::o;49643:732::-;49762:3;49791:54;49839:5;49791:54;:::i;:::-;49861:86;49940:6;49935:3;49861:86;:::i;:::-;49854:93;;49971:56;50021:5;49971:56;:::i;:::-;50050:7;50081:1;50066:284;50091:6;50088:1;50085:13;50066:284;;;50167:6;50161:13;50194:63;50253:3;50238:13;50194:63;:::i;:::-;50187:70;;50280:60;50333:6;50280:60;:::i;:::-;50270:70;;50126:224;50113:1;50110;50106:9;50101:14;;50066:284;;;50070:14;50366:3;50359:10;;49767:608;;;49643:732;;;;:::o;50381:831::-;50644:4;50682:3;50671:9;50667:19;50659:27;;50696:71;50764:1;50753:9;50749:17;50740:6;50696:71;:::i;:::-;50777:80;50853:2;50842:9;50838:18;50829:6;50777:80;:::i;:::-;50904:9;50898:4;50894:20;50889:2;50878:9;50874:18;50867:48;50932:108;51035:4;51026:6;50932:108;:::i;:::-;50924:116;;51050:72;51118:2;51107:9;51103:18;51094:6;51050:72;:::i;:::-;51132:73;51200:3;51189:9;51185:19;51176:6;51132:73;:::i;:::-;50381:831;;;;;;;;:::o;51218:807::-;51467:4;51505:3;51494:9;51490:19;51482:27;;51519:71;51587:1;51576:9;51572:17;51563:6;51519:71;:::i;:::-;51600:72;51668:2;51657:9;51653:18;51644:6;51600:72;:::i;:::-;51682:80;51758:2;51747:9;51743:18;51734:6;51682:80;:::i;:::-;51772;51848:2;51837:9;51833:18;51824:6;51772:80;:::i;:::-;51862:73;51930:3;51919:9;51915:19;51906:6;51862:73;:::i;:::-;51945;52013:3;52002:9;51998:19;51989:6;51945:73;:::i;:::-;51218:807;;;;;;;;;:::o;52031:663::-;52119:6;52127;52135;52184:2;52172:9;52163:7;52159:23;52155:32;52152:119;;;52190:79;;:::i;:::-;52152:119;52310:1;52335:64;52391:7;52382:6;52371:9;52367:22;52335:64;:::i;:::-;52325:74;;52281:128;52448:2;52474:64;52530:7;52521:6;52510:9;52506:22;52474:64;:::i;:::-;52464:74;;52419:129;52587:2;52613:64;52669:7;52660:6;52649:9;52645:22;52613:64;:::i;:::-;52603:74;;52558:129;52031:663;;;;;:::o
Swarm Source
ipfs://5eea587f78c2d623274e6f3d6c7c7e9d04153fa8f4ff03dd767ca6ffef12752e
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.