Overview
ETH Balance
0.0987 ETH
Eth Value
$307.45 (@ $3,115.04/ETH)More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 688 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 20846606 | 47 days ago | IN | 0 ETH | 0.00033265 | ||||
Approve | 20841452 | 48 days ago | IN | 0 ETH | 0.00059831 | ||||
Approve | 20841277 | 48 days ago | IN | 0 ETH | 0.00114501 | ||||
Approve | 20838824 | 48 days ago | IN | 0 ETH | 0.00062097 | ||||
Approve | 20837708 | 48 days ago | IN | 0 ETH | 0.00074603 | ||||
Approve | 20837564 | 48 days ago | IN | 0 ETH | 0.00102579 | ||||
Approve | 20832470 | 49 days ago | IN | 0 ETH | 0.00061921 | ||||
Approve | 20825009 | 50 days ago | IN | 0 ETH | 0.00073703 | ||||
Approve | 20821536 | 51 days ago | IN | 0 ETH | 0.00146493 | ||||
Approve | 20806949 | 53 days ago | IN | 0 ETH | 0.00080384 | ||||
Approve | 20800673 | 53 days ago | IN | 0 ETH | 0.00102028 | ||||
Approve | 20796323 | 54 days ago | IN | 0 ETH | 0.00058661 | ||||
Approve | 20796278 | 54 days ago | IN | 0 ETH | 0.00068674 | ||||
Approve | 20796245 | 54 days ago | IN | 0 ETH | 0.00082289 | ||||
Approve | 20794897 | 54 days ago | IN | 0 ETH | 0.00086321 | ||||
Approve | 20793741 | 54 days ago | IN | 0 ETH | 0.00077306 | ||||
Approve | 20793192 | 54 days ago | IN | 0 ETH | 0.00093035 | ||||
Approve | 20793036 | 54 days ago | IN | 0 ETH | 0.00136792 | ||||
Approve | 20792850 | 55 days ago | IN | 0 ETH | 0.00096768 | ||||
Approve | 20792571 | 55 days ago | IN | 0 ETH | 0.00103509 | ||||
Approve | 20792527 | 55 days ago | IN | 0 ETH | 0.00111143 | ||||
Approve | 20792451 | 55 days ago | IN | 0 ETH | 0.00134738 | ||||
Transfer | 20792447 | 55 days ago | IN | 0 ETH | 0.00198342 | ||||
Transfer | 20792445 | 55 days ago | IN | 0 ETH | 0.00144885 | ||||
Approve | 20792441 | 55 days ago | IN | 0 ETH | 0.00133251 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
20363352 | 114 days ago | 0.12339369 ETH | ||||
20363352 | 114 days ago | 0.12339369 ETH | ||||
20363350 | 114 days ago | 0.04135784 ETH | ||||
20363350 | 114 days ago | 0.04135784 ETH | ||||
20363350 | 114 days ago | 0.02748545 ETH | ||||
20363350 | 114 days ago | 0.02748545 ETH | ||||
20363350 | 114 days ago | 0.0586025 ETH | ||||
20363350 | 114 days ago | 0.0586025 ETH | ||||
20363347 | 114 days ago | 0.08451019 ETH | ||||
20363347 | 114 days ago | 0.08451019 ETH | ||||
20363345 | 114 days ago | 0.03121457 ETH | ||||
20363345 | 114 days ago | 0.03121457 ETH | ||||
20363345 | 114 days ago | 0.6877152 ETH | ||||
20363345 | 114 days ago | 0.6877152 ETH | ||||
20363343 | 114 days ago | 0.45440286 ETH | ||||
20363343 | 114 days ago | 0.45440286 ETH | ||||
20363343 | 114 days ago | 0.66419915 ETH | ||||
20363343 | 114 days ago | 0.66419915 ETH | ||||
20363339 | 114 days ago | 0.11856517 ETH | ||||
20363339 | 114 days ago | 0.11856517 ETH | ||||
20363339 | 114 days ago | 0.13182885 ETH | ||||
20363339 | 114 days ago | 0.13182885 ETH | ||||
20363339 | 114 days ago | 0.14745147 ETH | ||||
20363339 | 114 days ago | 0.14745147 ETH | ||||
20363339 | 114 days ago | 0.16602783 ETH |
Loading...
Loading
Contract Name:
MASYA
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-07-22 */ /* https://t.me/MasyaEntry */ // SPDX-License-Identifier: Unlicensed pragma solidity 0.8.21; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } 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 { using SafeMath for uint256; 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); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); 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"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } 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() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract MASYA is ERC20, Ownable { string _name = unicode"Masya"; string _symbol = unicode"MASYA"; using SafeMath for uint256; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private isSwppable; uint256 public balance; address private devWallet; uint256 public maxTransaction; uint256 public contractSellTreshold; uint256 public maxWalletHolding; bool public areLimitsOn = true; bool public emptyContractFull = false; uint256 public totalBuyTax; uint256 public devBuyTax; uint256 public liqBuyTax; uint256 public totalSellTax; uint256 public devSellTax; uint256 public liqSellTax; uint256 public tokensForLiquidity; uint256 public tokensForDev; // block number of opened trading uint256 launchedAt; /******************/ // exclude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event devWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event AutoNukeLP(); event ManualNukeLP(); constructor() ERC20(_name, _symbol) { uint256 _devBuyTax = 25; uint256 _liqBuyTax = 0; uint256 _devSellTax = 25; uint256 _liqSellTax = 0; uint256 totalSupply = 10000000 * 1e18; maxTransaction = totalSupply * 20 / 1000; // 2% maxWalletHolding = totalSupply * 20 / 1000; // 2% contractSellTreshold = totalSupply * 1 / 1000; // 0.05% devBuyTax = _devBuyTax; liqBuyTax = _liqBuyTax; totalBuyTax = devBuyTax + liqBuyTax; devSellTax = _devSellTax; liqSellTax = _liqSellTax; totalSellTax = devSellTax + liqSellTax; devWallet = address(msg.sender); // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(address(devWallet), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); excludeFromMaxTransaction(address(devWallet), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(address(this), totalSupply * 95 / 100); _mint(msg.sender, totalSupply * 5 / 100); } receive() external payable { } function goLive() external onlyOwner{ IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 ethAmount = address(this).balance; uint256 tokenAmount = balanceOf(address(this)) * 93 / 100; _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable devWallet, block.timestamp ); } function removeStuckETH() external onlyOwner { uint256 ethBalance = address(this).balance; require(ethBalance > 0, "ETH balance must be greater than 0"); (bool success,) = address(devWallet).call{value: ethBalance}(""); require(success, "Failed to clear ETH balance"); } function removeStuckTokenBalance() external onlyOwner { uint256 tokenBalance = balanceOf(address(this)); require(tokenBalance > 0, "Token balance must be greater than 0"); _transfer(address(this), devWallet, tokenBalance); } function vanishLimits() external onlyOwner { areLimitsOn = false; } function EnableEmptyContract(bool enabled) external onlyOwner{ emptyContractFull = enabled; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function editTax( uint256 _devBuy, uint256 _devSell, uint256 _liqBuy, uint256 _liqSell ) external onlyOwner { devBuyTax = _devBuy; liqBuyTax = _liqBuy; totalBuyTax = devBuyTax + liqBuyTax; devSellTax = _devSell; liqSellTax = _liqSell; totalSellTax = devSellTax + liqSellTax; require(totalBuyTax <= 30, "MAX 30% tax allowed"); require(totalSellTax <= 30, "MAX 30% tax allowed"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateDevWallet(address newDevWallet) external onlyOwner{ emit devWalletUpdated(newDevWallet, devWallet); devWallet = newDevWallet; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } 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"); if(amount == 0) { super._transfer(from, to, 0); return; } if(areLimitsOn){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !isSwppable ){ //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransaction, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWalletHolding, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransaction, "Sell transfer amount exceeds the maxTransactionAmount."); } else if(!_isExcludedMaxTransactionAmount[to]){ require(amount + balanceOf(to) <= maxWalletHolding, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= contractSellTreshold; if( canSwap && !isSwppable && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { isSwppable = true; swapBack(); isSwppable = false; } bool takeFee = !isSwppable; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if(takeFee){ // on sell if (automatedMarketMakerPairs[to] && totalSellTax > 0){ fees = amount.mul(totalSellTax).div(100); tokensForLiquidity += fees * liqSellTax / totalSellTax; tokensForDev += fees * devSellTax / totalSellTax; } // on buy else if(automatedMarketMakerPairs[from] && totalBuyTax > 0) { fees = amount.mul(totalBuyTax).div(100); tokensForLiquidity += fees * liqBuyTax / totalBuyTax; tokensForDev += fees * devBuyTax / totalBuyTax; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForDev; bool success; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(emptyContractFull == false){ if(contractBalance > contractSellTreshold * 20){ contractBalance = contractSellTreshold * 20; } }else{ contractBalance = balanceOf(address(this)); } // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForDev; tokensForLiquidity = 0; tokensForDev = 0; if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } (success,) = address(devWallet).call{value: address(this).balance}(""); } }
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":"AutoNukeLP","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":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"EnableEmptyContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"areLimitsOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"balance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"contractSellTreshold","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":"devBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devBuy","type":"uint256"},{"internalType":"uint256","name":"_devSell","type":"uint256"},{"internalType":"uint256","name":"_liqBuy","type":"uint256"},{"internalType":"uint256","name":"_liqSell","type":"uint256"}],"name":"editTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emptyContractFull","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"goLive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletHolding","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeStuckTokenBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newDevWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vanishLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526040518060400160405280600581526020017f4d61737961000000000000000000000000000000000000000000000000000000815250600690816200004a919062000c18565b506040518060400160405280600581526020017f4d415359410000000000000000000000000000000000000000000000000000008152506007908162000091919062000c18565b506001600f5f6101000a81548160ff0219169083151502179055505f600f60016101000a81548160ff021916908315150217905550348015620000d2575f80fd5b5060068054620000e29062000a18565b80601f0160208091040260200160405190810160405280929190818152602001828054620001109062000a18565b80156200015f5780601f1062000135576101008083540402835291602001916200015f565b820191905f5260205f20905b8154815290600101906020018083116200014157829003601f168201915b505050505060078054620001739062000a18565b80601f0160208091040260200160405190810160405280929190818152602001828054620001a19062000a18565b8015620001f05780601f10620001c657610100808354040283529160200191620001f0565b820191905f5260205f20905b815481529060010190602001808311620001d257829003601f168201915b5050505050816003908162000206919062000c18565b50806004908162000218919062000c18565b5050505f6200022c6200053f60201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f601990505f80601990505f806a084595161401484a00000090506103e8601482620002f6919062000d29565b62000302919062000da0565b600c819055506103e86014826200031a919062000d29565b62000326919062000da0565b600e819055506103e86001826200033e919062000d29565b6200034a919062000da0565b600d81905550846011819055508360128190555060125460115462000370919062000dd7565b601081905550826014819055508160158190555060155460145462000396919062000dd7565b60138190555033600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003fe620003f06200054660201b60201c565b60016200056e60201b60201c565b620004113060016200056e60201b60201c565b6200042661dead60016200056e60201b60201c565b6200045a600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200056e60201b60201c565b6200047c6200046e6200054660201b60201c565b6001620006b760201b60201c565b6200048f306001620006b760201b60201c565b620004a461dead6001620006b760201b60201c565b620004d8600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006b760201b60201c565b62000506306064605f84620004ee919062000d29565b620004fa919062000da0565b620007b060201b60201c565b620005343360646005846200051c919062000d29565b62000528919062000da0565b620007b060201b60201c565b505050505062000fce565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200057e6200053f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200060f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006069062000e6f565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620006ab919062000eab565b60405180910390a25050565b620006c76200053f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000758576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200074f9062000e6f565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000821576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008189062000f14565b60405180910390fd5b620008345f83836200094d60201b60201c565b6200084b816002546200095260201b90919060201c565b600281905550620008a2815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546200095260201b90919060201c565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000941919062000f45565b60405180910390a35050565b505050565b5f80828462000962919062000dd7565b905083811015620009aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009a19062000fae565b60405180910390fd5b8091505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000a3057607f821691505b60208210810362000a465762000a45620009eb565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000aaa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a6d565b62000ab6868362000a6d565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000b0062000afa62000af48462000ace565b62000ad7565b62000ace565b9050919050565b5f819050919050565b62000b1b8362000ae0565b62000b3362000b2a8262000b07565b84845462000a79565b825550505050565b5f90565b62000b4962000b3b565b62000b5681848462000b10565b505050565b5b8181101562000b7d5762000b715f8262000b3f565b60018101905062000b5c565b5050565b601f82111562000bcc5762000b968162000a4c565b62000ba18462000a5e565b8101602085101562000bb1578190505b62000bc962000bc08562000a5e565b83018262000b5b565b50505b505050565b5f82821c905092915050565b5f62000bee5f198460080262000bd1565b1980831691505092915050565b5f62000c08838362000bdd565b9150826002028217905092915050565b62000c2382620009b4565b67ffffffffffffffff81111562000c3f5762000c3e620009be565b5b62000c4b825462000a18565b62000c5882828562000b81565b5f60209050601f83116001811462000c8e575f841562000c79578287015190505b62000c85858262000bfb565b86555062000cf4565b601f19841662000c9e8662000a4c565b5f5b8281101562000cc75784890151825560018201915060208501945060208101905062000ca0565b8683101562000ce7578489015162000ce3601f89168262000bdd565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000d358262000ace565b915062000d428362000ace565b925082820262000d528162000ace565b9150828204841483151762000d6c5762000d6b62000cfc565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000dac8262000ace565b915062000db98362000ace565b92508262000dcc5762000dcb62000d73565b5b828204905092915050565b5f62000de38262000ace565b915062000df08362000ace565b925082820190508082111562000e0b5762000e0a62000cfc565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000e5760208362000e11565b915062000e648262000e21565b602082019050919050565b5f6020820190508181035f83015262000e888162000e49565b9050919050565b5f8115159050919050565b62000ea58162000e8f565b82525050565b5f60208201905062000ec05f83018462000e9a565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000efc601f8362000e11565b915062000f098262000ec6565b602082019050919050565b5f6020820190508181035f83015262000f2d8162000eee565b9050919050565b62000f3f8162000ace565b82525050565b5f60208201905062000f5a5f83018462000f34565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f62000f96601b8362000e11565b915062000fa38262000f60565b602082019050919050565b5f6020820190508181035f83015262000fc78162000f88565b9050919050565b6147688062000fdc5f395ff3fe60806040526004361061025f575f3560e01c806370a0823111610143578063a9059cbb116100b5578063c3f70b5211610079578063c3f70b52146108c4578063dd62ed3e146108ee578063df6f93be1461092a578063e11d22cf14610954578063f1cd531a1461096a578063f2fde38b1461099257610266565b8063a9059cbb146107d0578063b62496f51461080c578063b69ef8a814610848578063be85750414610872578063c02466681461089c57610266565b8063945674fe11610107578063945674fe146106d857806395d89b41146107025780639a7a23d61461072c5780639ee2e924146107545780639fccce321461076a578063a457c2d71461079457610266565b806370a082311461060c578063715018a6146106485780637571336a1461065e578063863cf2cc146106865780638da5cb5b146106ae57610266565b806322eb6631116101dc57806346469afb116101a057806346469afb146104fe57806348d791551461052857806349bd5a5e146105525780634fbee1931461057c5780635de0f2a0146105b85780636c7e15c9146105e257610266565b806322eb66311461041c57806323b872dd146104465780632c28f57914610482578063313ce5671461049857806339509351146104c257610266565b80631694505e116102235780631694505e1461034c57806318160ddd146103765780631816467f146103a05780631a8145bb146103c85780631bff7898146103f257610266565b806306fdde031461026a578063095ea7b3146102945780630e947809146102d05780630f299cf1146102fa57806310d5de531461031057610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e6109ba565b60405161028b9190613692565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b59190613743565b610a4a565b6040516102c7919061379b565b60405180910390f35b3480156102db575f80fd5b506102e4610a67565b6040516102f1919061379b565b60405180910390f35b348015610305575f80fd5b5061030e610a79565b005b34801561031b575f80fd5b50610336600480360381019061033191906137b4565b610c22565b604051610343919061379b565b60405180910390f35b348015610357575f80fd5b50610360610c3f565b60405161036d919061383a565b60405180910390f35b348015610381575f80fd5b5061038a610c64565b6040516103979190613862565b60405180910390f35b3480156103ab575f80fd5b506103c660048036038101906103c191906137b4565b610c6d565b005b3480156103d3575f80fd5b506103dc610dc1565b6040516103e99190613862565b60405180910390f35b3480156103fd575f80fd5b50610406610dc7565b6040516104139190613862565b60405180910390f35b348015610427575f80fd5b50610430610dcd565b60405161043d9190613862565b60405180910390f35b348015610451575f80fd5b5061046c6004803603810190610467919061387b565b610dd3565b604051610479919061379b565b60405180910390f35b34801561048d575f80fd5b50610496610ea7565b005b3480156104a3575f80fd5b506104ac6112ad565b6040516104b991906138e6565b60405180910390f35b3480156104cd575f80fd5b506104e860048036038101906104e39190613743565b6112b5565b6040516104f5919061379b565b60405180910390f35b348015610509575f80fd5b50610512611363565b60405161051f9190613862565b60405180910390f35b348015610533575f80fd5b5061053c611369565b6040516105499190613862565b60405180910390f35b34801561055d575f80fd5b5061056661136f565b604051610573919061390e565b60405180910390f35b348015610587575f80fd5b506105a2600480360381019061059d91906137b4565b611394565b6040516105af919061379b565b60405180910390f35b3480156105c3575f80fd5b506105cc6113e6565b6040516105d99190613862565b60405180910390f35b3480156105ed575f80fd5b506105f66113ec565b6040516106039190613862565b60405180910390f35b348015610617575f80fd5b50610632600480360381019061062d91906137b4565b6113f2565b60405161063f9190613862565b60405180910390f35b348015610653575f80fd5b5061065c611437565b005b348015610669575f80fd5b50610684600480360381019061067f9190613951565b61158a565b005b348015610691575f80fd5b506106ac60048036038101906106a7919061398f565b611678565b005b3480156106b9575f80fd5b506106c261172b565b6040516106cf919061390e565b60405180910390f35b3480156106e3575f80fd5b506106ec611753565b6040516106f9919061379b565b60405180910390f35b34801561070d575f80fd5b50610716611766565b6040516107239190613692565b60405180910390f35b348015610737575f80fd5b50610752600480360381019061074d9190613951565b6117f6565b005b34801561075f575f80fd5b50610768611929565b005b348015610775575f80fd5b5061077e611a3c565b60405161078b9190613862565b60405180910390f35b34801561079f575f80fd5b506107ba60048036038101906107b59190613743565b611a42565b6040516107c7919061379b565b60405180910390f35b3480156107db575f80fd5b506107f660048036038101906107f19190613743565b611b0a565b604051610803919061379b565b60405180910390f35b348015610817575f80fd5b50610832600480360381019061082d91906137b4565b611b27565b60405161083f919061379b565b60405180910390f35b348015610853575f80fd5b5061085c611b44565b6040516108699190613862565b60405180910390f35b34801561087d575f80fd5b50610886611b4a565b6040516108939190613862565b60405180910390f35b3480156108a7575f80fd5b506108c260048036038101906108bd9190613951565b611b50565b005b3480156108cf575f80fd5b506108d8611c8c565b6040516108e59190613862565b60405180910390f35b3480156108f9575f80fd5b50610914600480360381019061090f91906139ba565b611c92565b6040516109219190613862565b60405180910390f35b348015610935575f80fd5b5061093e611d14565b60405161094b9190613862565b60405180910390f35b34801561095f575f80fd5b50610968611d1a565b005b348015610975575f80fd5b50610990600480360381019061098b91906139f8565b611dcb565b005b34801561099d575f80fd5b506109b860048036038101906109b391906137b4565b611f3b565b005b6060600380546109c990613a89565b80601f01602080910402602001604051908101604052809291908181526020018280546109f590613a89565b8015610a405780601f10610a1757610100808354040283529160200191610a40565b820191905f5260205f20905b815481529060010190602001808311610a2357829003601f168201915b5050505050905090565b5f610a5d610a5661208f565b8484612096565b6001905092915050565b600f5f9054906101000a900460ff1681565b610a8161208f565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0690613b03565b60405180910390fd5b5f4790505f8111610b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4c90613b91565b60405180910390fd5b5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610b9b90613bdc565b5f6040518083038185875af1925050503d805f8114610bd5576040519150601f19603f3d011682016040523d82523d5f602084013e610bda565b606091505b5050905080610c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1590613c3a565b60405180910390fd5b5050565b601a602052805f5260405f205f915054906101000a900460ff1681565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b610c7561208f565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfa90613b03565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b60135481565b60145481565b5f610ddf848484612259565b610e9c84610deb61208f565b610e97856040518060600160405280602881526020016146e66028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610e4e61208f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b7e9092919063ffffffff16565b612096565b600190509392505050565b610eaf61208f565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3490613b03565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d9050610f6081600161158a565b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fe9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061100d9190613c6c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611072573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110969190613c6c565b6040518363ffffffff1660e01b81526004016110b3929190613c97565b6020604051808303815f875af11580156110cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f39190613c6c565b60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061115e60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161158a565b61118a60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612be0565b5f4790505f6064605d61119c306113f2565b6111a69190613ceb565b6111b09190613d59565b90506111de3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612096565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f80600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161126496959493929190613dc2565b60606040518083038185885af1158015611280573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112a59190613e35565b505050505050565b5f6012905090565b5f6113596112c161208f565b846113548560015f6112d161208f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c7e90919063ffffffff16565b612096565b6001905092915050565b60105481565b600e5481565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600d5481565b60115481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61143f61208f565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c490613b03565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61159261208f565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611620576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161790613b03565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b61168061208f565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461170e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170590613b03565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f60019054906101000a900460ff1681565b60606004805461177590613a89565b80601f01602080910402602001604051908101604052809291908181526020018280546117a190613a89565b80156117ec5780601f106117c3576101008083540402835291602001916117ec565b820191905f5260205f20905b8154815290600101906020018083116117cf57829003601f168201915b5050505050905090565b6117fe61208f565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461188c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188390613b03565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361191b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191290613ef5565b60405180910390fd5b6119258282612be0565b5050565b61193161208f565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b690613b03565b60405180910390fd5b5f6119c9306113f2565b90505f8111611a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0490613f83565b60405180910390fd5b611a3930600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612259565b50565b60175481565b5f611b00611a4e61208f565b84611afb8560405180606001604052806025815260200161470e6025913960015f611a7761208f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b7e9092919063ffffffff16565b612096565b6001905092915050565b5f611b1d611b1661208f565b8484612259565b6001905092915050565b601b602052805f5260405f205f915054906101000a900460ff1681565b600a5481565b60155481565b611b5861208f565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdd90613b03565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611c80919061379b565b60405180910390a25050565b600c5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60125481565b611d2261208f565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da790613b03565b60405180910390fd5b5f600f5f6101000a81548160ff021916908315150217905550565b611dd361208f565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5890613b03565b60405180910390fd5b8360118190555081601281905550601254601154611e7f9190613fa1565b6010819055508260148190555080601581905550601554601454611ea39190613fa1565b601381905550601e6010541115611eef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee69061401e565b60405180910390fd5b601e6013541115611f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2c9061401e565b60405180910390fd5b50505050565b611f4361208f565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc890613b03565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fb906140ac565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612172576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121699061413a565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161224c9190613862565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122be906141c8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232c90614256565b60405180910390fd5b5f810361234c5761234783835f612cdb565b612b79565b600f5f9054906101000a900460ff16156127415761236861172b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123d657506123a661172b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561240e57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612448575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124615750600960149054906101000a900460ff16155b1561274057601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156125035750601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156125aa57600c5481111561254d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612544906142e4565b60405180910390fd5b600e54612559836113f2565b826125649190613fa1565b11156125a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259c9061434c565b60405180910390fd5b61273f565b601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156126475750601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561269657600c54811115612691576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612688906143da565b60405180910390fd5b61273e565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661273d57600e546126f0836113f2565b826126fb9190613fa1565b111561273c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127339061434c565b60405180910390fd5b5b5b5b5b5b5f61274b306113f2565b90505f600d5482101590508080156127705750600960149054906101000a900460ff16155b80156127c35750601b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612816575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612869575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156128ac576001600960146101000a81548160ff021916908315150217905550612891612f64565b5f600960146101000a81548160ff0219169083151502179055505b5f600960149054906101000a900460ff1615905060195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061295b575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612964575f90505b5f8115612b6957601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156129c257505f601354115b15612a5a576129ef60646129e16013548861318a90919063ffffffff16565b61320190919063ffffffff16565b905060135460155482612a029190613ceb565b612a0c9190613d59565b60165f828254612a1c9190613fa1565b9250508190555060135460145482612a349190613ceb565b612a3e9190613d59565b60175f828254612a4e9190613fa1565b92505081905550612b46565b601b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ab157505f601054115b15612b4557612ade6064612ad06010548861318a90919063ffffffff16565b61320190919063ffffffff16565b905060105460125482612af19190613ceb565b612afb9190613d59565b60165f828254612b0b9190613fa1565b9250508190555060105460115482612b239190613ceb565b612b2d9190613d59565b60175f828254612b3d9190613fa1565b925050819055505b5b5f811115612b5a57612b59873083612cdb565b5b8085612b6691906143f8565b94505b612b74878787612cdb565b505050505b505050565b5f838311158290612bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbc9190613692565b60405180910390fd5b505f8385612bd391906143f8565b9050809150509392505050565b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f808284612c8c9190613fa1565b905083811015612cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc890614475565b60405180910390fd5b8091505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d40906141c8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dae90614256565b60405180910390fd5b612dc283838361324a565b612e2b816040518060600160405280602681526020016146c0602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b7e9092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612eba815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c7e90919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612f579190613862565b60405180910390a3505050565b5f612f6e306113f2565b90505f601754601654612f819190613fa1565b90505f80831480612f9157505f82145b15612f9e57505050613188565b5f1515600f60019054906101000a900460ff16151503612fe5576014600d54612fc79190613ceb565b831115612fe0576014600d54612fdd9190613ceb565b92505b612ff1565b612fee306113f2565b92505b5f600283601654866130039190613ceb565b61300d9190613d59565b6130179190613d59565b90505f61302d828661324f90919063ffffffff16565b90505f47905061303c82613298565b5f613050824761324f90919063ffffffff16565b90505f61307a8761306c6017548561318a90919063ffffffff16565b61320190919063ffffffff16565b90505f818361308991906143f8565b90505f6016819055505f6017819055505f861180156130a757505f81115b156130f4576130b686826134ce565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185826016546040516130eb93929190614493565b60405180910390a15b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161313990613bdc565b5f6040518083038185875af1925050503d805f8114613173576040519150601f19603f3d011682016040523d82523d5f602084013e613178565b606091505b5050809750505050505050505050505b565b5f80830361319a575f90506131fb565b5f82846131a79190613ceb565b90508284826131b69190613d59565b146131f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ed90614538565b60405180910390fd5b809150505b92915050565b5f61324283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506135a7565b905092915050565b505050565b5f61329083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612b7e565b905092915050565b5f600267ffffffffffffffff8111156132b4576132b3614556565b5b6040519080825280602002602001820160405280156132e25781602001602082028036833780820191505090505b50905030815f815181106132f9576132f8614583565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561339d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133c19190613c6c565b816001815181106133d5576133d4614583565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061343b3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612096565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161349d959493929190614667565b5f604051808303815f87803b1580156134b4575f80fd5b505af11580156134c6573d5f803e3d5ffd5b505050505050565b6134fa3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612096565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b815260040161355f96959493929190613dc2565b60606040518083038185885af115801561357b573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906135a09190613e35565b5050505050565b5f80831182906135ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135e49190613692565b60405180910390fd5b505f83856135fb9190613d59565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561363f578082015181840152602081019050613624565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61366482613608565b61366e8185613612565b935061367e818560208601613622565b6136878161364a565b840191505092915050565b5f6020820190508181035f8301526136aa818461365a565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6136df826136b6565b9050919050565b6136ef816136d5565b81146136f9575f80fd5b50565b5f8135905061370a816136e6565b92915050565b5f819050919050565b61372281613710565b811461372c575f80fd5b50565b5f8135905061373d81613719565b92915050565b5f8060408385031215613759576137586136b2565b5b5f613766858286016136fc565b92505060206137778582860161372f565b9150509250929050565b5f8115159050919050565b61379581613781565b82525050565b5f6020820190506137ae5f83018461378c565b92915050565b5f602082840312156137c9576137c86136b2565b5b5f6137d6848285016136fc565b91505092915050565b5f819050919050565b5f6138026137fd6137f8846136b6565b6137df565b6136b6565b9050919050565b5f613813826137e8565b9050919050565b5f61382482613809565b9050919050565b6138348161381a565b82525050565b5f60208201905061384d5f83018461382b565b92915050565b61385c81613710565b82525050565b5f6020820190506138755f830184613853565b92915050565b5f805f60608486031215613892576138916136b2565b5b5f61389f868287016136fc565b93505060206138b0868287016136fc565b92505060406138c18682870161372f565b9150509250925092565b5f60ff82169050919050565b6138e0816138cb565b82525050565b5f6020820190506138f95f8301846138d7565b92915050565b613908816136d5565b82525050565b5f6020820190506139215f8301846138ff565b92915050565b61393081613781565b811461393a575f80fd5b50565b5f8135905061394b81613927565b92915050565b5f8060408385031215613967576139666136b2565b5b5f613974858286016136fc565b92505060206139858582860161393d565b9150509250929050565b5f602082840312156139a4576139a36136b2565b5b5f6139b18482850161393d565b91505092915050565b5f80604083850312156139d0576139cf6136b2565b5b5f6139dd858286016136fc565b92505060206139ee858286016136fc565b9150509250929050565b5f805f8060808587031215613a1057613a0f6136b2565b5b5f613a1d8782880161372f565b9450506020613a2e8782880161372f565b9350506040613a3f8782880161372f565b9250506060613a508782880161372f565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613aa057607f821691505b602082108103613ab357613ab2613a5c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613aed602083613612565b9150613af882613ab9565b602082019050919050565b5f6020820190508181035f830152613b1a81613ae1565b9050919050565b7f4554482062616c616e6365206d7573742062652067726561746572207468616e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b7b602283613612565b9150613b8682613b21565b604082019050919050565b5f6020820190508181035f830152613ba881613b6f565b9050919050565b5f81905092915050565b50565b5f613bc75f83613baf565b9150613bd282613bb9565b5f82019050919050565b5f613be682613bbc565b9150819050919050565b7f4661696c656420746f20636c656172204554482062616c616e636500000000005f82015250565b5f613c24601b83613612565b9150613c2f82613bf0565b602082019050919050565b5f6020820190508181035f830152613c5181613c18565b9050919050565b5f81519050613c66816136e6565b92915050565b5f60208284031215613c8157613c806136b2565b5b5f613c8e84828501613c58565b91505092915050565b5f604082019050613caa5f8301856138ff565b613cb760208301846138ff565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613cf582613710565b9150613d0083613710565b9250828202613d0e81613710565b91508282048414831517613d2557613d24613cbe565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613d6382613710565b9150613d6e83613710565b925082613d7e57613d7d613d2c565b5b828204905092915050565b5f819050919050565b5f613dac613da7613da284613d89565b6137df565b613710565b9050919050565b613dbc81613d92565b82525050565b5f60c082019050613dd55f8301896138ff565b613de26020830188613853565b613def6040830187613db3565b613dfc6060830186613db3565b613e0960808301856138ff565b613e1660a0830184613853565b979650505050505050565b5f81519050613e2f81613719565b92915050565b5f805f60608486031215613e4c57613e4b6136b2565b5b5f613e5986828701613e21565b9350506020613e6a86828701613e21565b9250506040613e7b86828701613e21565b9150509250925092565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613edf603983613612565b9150613eea82613e85565b604082019050919050565b5f6020820190508181035f830152613f0c81613ed3565b9050919050565b7f546f6b656e2062616c616e6365206d75737420626520677265617465722074685f8201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b5f613f6d602483613612565b9150613f7882613f13565b604082019050919050565b5f6020820190508181035f830152613f9a81613f61565b9050919050565b5f613fab82613710565b9150613fb683613710565b9250828201905080821115613fce57613fcd613cbe565b5b92915050565b7f4d4158203330252074617820616c6c6f776564000000000000000000000000005f82015250565b5f614008601383613612565b915061401382613fd4565b602082019050919050565b5f6020820190508181035f83015261403581613ffc565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614096602483613612565b91506140a18261403c565b604082019050919050565b5f6020820190508181035f8301526140c38161408a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614124602283613612565b915061412f826140ca565b604082019050919050565b5f6020820190508181035f83015261415181614118565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6141b2602583613612565b91506141bd82614158565b604082019050919050565b5f6020820190508181035f8301526141df816141a6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614240602383613612565b915061424b826141e6565b604082019050919050565b5f6020820190508181035f83015261426d81614234565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6142ce603583613612565b91506142d982614274565b604082019050919050565b5f6020820190508181035f8301526142fb816142c2565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614336601383613612565b915061434182614302565b602082019050919050565b5f6020820190508181035f8301526143638161432a565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6143c4603683613612565b91506143cf8261436a565b604082019050919050565b5f6020820190508181035f8301526143f1816143b8565b9050919050565b5f61440282613710565b915061440d83613710565b925082820390508181111561442557614424613cbe565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61445f601b83613612565b915061446a8261442b565b602082019050919050565b5f6020820190508181035f83015261448c81614453565b9050919050565b5f6060820190506144a65f830186613853565b6144b36020830185613853565b6144c06040830184613853565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f614522602183613612565b915061452d826144c8565b604082019050919050565b5f6020820190508181035f83015261454f81614516565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6145e2816136d5565b82525050565b5f6145f383836145d9565b60208301905092915050565b5f602082019050919050565b5f614615826145b0565b61461f81856145ba565b935061462a836145ca565b805f5b8381101561465a57815161464188826145e8565b975061464c836145ff565b92505060018101905061462d565b5085935050505092915050565b5f60a08201905061467a5f830188613853565b6146876020830187613db3565b8181036040830152614699818661460b565b90506146a860608301856138ff565b6146b56080830184613853565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f0e91c102e556635bd3b8baac8c9e3cdb532abcd17a298d8455c0833f168e8d564736f6c63430008150033
Deployed Bytecode
0x60806040526004361061025f575f3560e01c806370a0823111610143578063a9059cbb116100b5578063c3f70b5211610079578063c3f70b52146108c4578063dd62ed3e146108ee578063df6f93be1461092a578063e11d22cf14610954578063f1cd531a1461096a578063f2fde38b1461099257610266565b8063a9059cbb146107d0578063b62496f51461080c578063b69ef8a814610848578063be85750414610872578063c02466681461089c57610266565b8063945674fe11610107578063945674fe146106d857806395d89b41146107025780639a7a23d61461072c5780639ee2e924146107545780639fccce321461076a578063a457c2d71461079457610266565b806370a082311461060c578063715018a6146106485780637571336a1461065e578063863cf2cc146106865780638da5cb5b146106ae57610266565b806322eb6631116101dc57806346469afb116101a057806346469afb146104fe57806348d791551461052857806349bd5a5e146105525780634fbee1931461057c5780635de0f2a0146105b85780636c7e15c9146105e257610266565b806322eb66311461041c57806323b872dd146104465780632c28f57914610482578063313ce5671461049857806339509351146104c257610266565b80631694505e116102235780631694505e1461034c57806318160ddd146103765780631816467f146103a05780631a8145bb146103c85780631bff7898146103f257610266565b806306fdde031461026a578063095ea7b3146102945780630e947809146102d05780630f299cf1146102fa57806310d5de531461031057610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e6109ba565b60405161028b9190613692565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b59190613743565b610a4a565b6040516102c7919061379b565b60405180910390f35b3480156102db575f80fd5b506102e4610a67565b6040516102f1919061379b565b60405180910390f35b348015610305575f80fd5b5061030e610a79565b005b34801561031b575f80fd5b50610336600480360381019061033191906137b4565b610c22565b604051610343919061379b565b60405180910390f35b348015610357575f80fd5b50610360610c3f565b60405161036d919061383a565b60405180910390f35b348015610381575f80fd5b5061038a610c64565b6040516103979190613862565b60405180910390f35b3480156103ab575f80fd5b506103c660048036038101906103c191906137b4565b610c6d565b005b3480156103d3575f80fd5b506103dc610dc1565b6040516103e99190613862565b60405180910390f35b3480156103fd575f80fd5b50610406610dc7565b6040516104139190613862565b60405180910390f35b348015610427575f80fd5b50610430610dcd565b60405161043d9190613862565b60405180910390f35b348015610451575f80fd5b5061046c6004803603810190610467919061387b565b610dd3565b604051610479919061379b565b60405180910390f35b34801561048d575f80fd5b50610496610ea7565b005b3480156104a3575f80fd5b506104ac6112ad565b6040516104b991906138e6565b60405180910390f35b3480156104cd575f80fd5b506104e860048036038101906104e39190613743565b6112b5565b6040516104f5919061379b565b60405180910390f35b348015610509575f80fd5b50610512611363565b60405161051f9190613862565b60405180910390f35b348015610533575f80fd5b5061053c611369565b6040516105499190613862565b60405180910390f35b34801561055d575f80fd5b5061056661136f565b604051610573919061390e565b60405180910390f35b348015610587575f80fd5b506105a2600480360381019061059d91906137b4565b611394565b6040516105af919061379b565b60405180910390f35b3480156105c3575f80fd5b506105cc6113e6565b6040516105d99190613862565b60405180910390f35b3480156105ed575f80fd5b506105f66113ec565b6040516106039190613862565b60405180910390f35b348015610617575f80fd5b50610632600480360381019061062d91906137b4565b6113f2565b60405161063f9190613862565b60405180910390f35b348015610653575f80fd5b5061065c611437565b005b348015610669575f80fd5b50610684600480360381019061067f9190613951565b61158a565b005b348015610691575f80fd5b506106ac60048036038101906106a7919061398f565b611678565b005b3480156106b9575f80fd5b506106c261172b565b6040516106cf919061390e565b60405180910390f35b3480156106e3575f80fd5b506106ec611753565b6040516106f9919061379b565b60405180910390f35b34801561070d575f80fd5b50610716611766565b6040516107239190613692565b60405180910390f35b348015610737575f80fd5b50610752600480360381019061074d9190613951565b6117f6565b005b34801561075f575f80fd5b50610768611929565b005b348015610775575f80fd5b5061077e611a3c565b60405161078b9190613862565b60405180910390f35b34801561079f575f80fd5b506107ba60048036038101906107b59190613743565b611a42565b6040516107c7919061379b565b60405180910390f35b3480156107db575f80fd5b506107f660048036038101906107f19190613743565b611b0a565b604051610803919061379b565b60405180910390f35b348015610817575f80fd5b50610832600480360381019061082d91906137b4565b611b27565b60405161083f919061379b565b60405180910390f35b348015610853575f80fd5b5061085c611b44565b6040516108699190613862565b60405180910390f35b34801561087d575f80fd5b50610886611b4a565b6040516108939190613862565b60405180910390f35b3480156108a7575f80fd5b506108c260048036038101906108bd9190613951565b611b50565b005b3480156108cf575f80fd5b506108d8611c8c565b6040516108e59190613862565b60405180910390f35b3480156108f9575f80fd5b50610914600480360381019061090f91906139ba565b611c92565b6040516109219190613862565b60405180910390f35b348015610935575f80fd5b5061093e611d14565b60405161094b9190613862565b60405180910390f35b34801561095f575f80fd5b50610968611d1a565b005b348015610975575f80fd5b50610990600480360381019061098b91906139f8565b611dcb565b005b34801561099d575f80fd5b506109b860048036038101906109b391906137b4565b611f3b565b005b6060600380546109c990613a89565b80601f01602080910402602001604051908101604052809291908181526020018280546109f590613a89565b8015610a405780601f10610a1757610100808354040283529160200191610a40565b820191905f5260205f20905b815481529060010190602001808311610a2357829003601f168201915b5050505050905090565b5f610a5d610a5661208f565b8484612096565b6001905092915050565b600f5f9054906101000a900460ff1681565b610a8161208f565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0690613b03565b60405180910390fd5b5f4790505f8111610b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4c90613b91565b60405180910390fd5b5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051610b9b90613bdc565b5f6040518083038185875af1925050503d805f8114610bd5576040519150601f19603f3d011682016040523d82523d5f602084013e610bda565b606091505b5050905080610c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1590613c3a565b60405180910390fd5b5050565b601a602052805f5260405f205f915054906101000a900460ff1681565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b610c7561208f565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfa90613b03565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b60135481565b60145481565b5f610ddf848484612259565b610e9c84610deb61208f565b610e97856040518060600160405280602881526020016146e66028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610e4e61208f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b7e9092919063ffffffff16565b612096565b600190509392505050565b610eaf61208f565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3490613b03565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d9050610f6081600161158a565b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fe9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061100d9190613c6c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611072573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110969190613c6c565b6040518363ffffffff1660e01b81526004016110b3929190613c97565b6020604051808303815f875af11580156110cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f39190613c6c565b60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061115e60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161158a565b61118a60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612be0565b5f4790505f6064605d61119c306113f2565b6111a69190613ceb565b6111b09190613d59565b90506111de3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612096565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f80600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161126496959493929190613dc2565b60606040518083038185885af1158015611280573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112a59190613e35565b505050505050565b5f6012905090565b5f6113596112c161208f565b846113548560015f6112d161208f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c7e90919063ffffffff16565b612096565b6001905092915050565b60105481565b600e5481565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600d5481565b60115481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61143f61208f565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c490613b03565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61159261208f565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611620576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161790613b03565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b61168061208f565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461170e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170590613b03565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f60019054906101000a900460ff1681565b60606004805461177590613a89565b80601f01602080910402602001604051908101604052809291908181526020018280546117a190613a89565b80156117ec5780601f106117c3576101008083540402835291602001916117ec565b820191905f5260205f20905b8154815290600101906020018083116117cf57829003601f168201915b5050505050905090565b6117fe61208f565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461188c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188390613b03565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361191b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191290613ef5565b60405180910390fd5b6119258282612be0565b5050565b61193161208f565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b690613b03565b60405180910390fd5b5f6119c9306113f2565b90505f8111611a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0490613f83565b60405180910390fd5b611a3930600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612259565b50565b60175481565b5f611b00611a4e61208f565b84611afb8560405180606001604052806025815260200161470e6025913960015f611a7761208f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b7e9092919063ffffffff16565b612096565b6001905092915050565b5f611b1d611b1661208f565b8484612259565b6001905092915050565b601b602052805f5260405f205f915054906101000a900460ff1681565b600a5481565b60155481565b611b5861208f565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611be6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bdd90613b03565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611c80919061379b565b60405180910390a25050565b600c5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60125481565b611d2261208f565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611db0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da790613b03565b60405180910390fd5b5f600f5f6101000a81548160ff021916908315150217905550565b611dd361208f565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5890613b03565b60405180910390fd5b8360118190555081601281905550601254601154611e7f9190613fa1565b6010819055508260148190555080601581905550601554601454611ea39190613fa1565b601381905550601e6010541115611eef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee69061401e565b60405180910390fd5b601e6013541115611f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2c9061401e565b60405180910390fd5b50505050565b611f4361208f565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc890613b03565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fb906140ac565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612172576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121699061413a565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161224c9190613862565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122be906141c8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232c90614256565b60405180910390fd5b5f810361234c5761234783835f612cdb565b612b79565b600f5f9054906101000a900460ff16156127415761236861172b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123d657506123a661172b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561240e57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612448575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156124615750600960149054906101000a900460ff16155b1561274057601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156125035750601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156125aa57600c5481111561254d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612544906142e4565b60405180910390fd5b600e54612559836113f2565b826125649190613fa1565b11156125a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259c9061434c565b60405180910390fd5b61273f565b601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156126475750601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561269657600c54811115612691576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612688906143da565b60405180910390fd5b61273e565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661273d57600e546126f0836113f2565b826126fb9190613fa1565b111561273c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127339061434c565b60405180910390fd5b5b5b5b5b5b5f61274b306113f2565b90505f600d5482101590508080156127705750600960149054906101000a900460ff16155b80156127c35750601b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612816575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612869575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156128ac576001600960146101000a81548160ff021916908315150217905550612891612f64565b5f600960146101000a81548160ff0219169083151502179055505b5f600960149054906101000a900460ff1615905060195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061295b575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612964575f90505b5f8115612b6957601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156129c257505f601354115b15612a5a576129ef60646129e16013548861318a90919063ffffffff16565b61320190919063ffffffff16565b905060135460155482612a029190613ceb565b612a0c9190613d59565b60165f828254612a1c9190613fa1565b9250508190555060135460145482612a349190613ceb565b612a3e9190613d59565b60175f828254612a4e9190613fa1565b92505081905550612b46565b601b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ab157505f601054115b15612b4557612ade6064612ad06010548861318a90919063ffffffff16565b61320190919063ffffffff16565b905060105460125482612af19190613ceb565b612afb9190613d59565b60165f828254612b0b9190613fa1565b9250508190555060105460115482612b239190613ceb565b612b2d9190613d59565b60175f828254612b3d9190613fa1565b925050819055505b5b5f811115612b5a57612b59873083612cdb565b5b8085612b6691906143f8565b94505b612b74878787612cdb565b505050505b505050565b5f838311158290612bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbc9190613692565b60405180910390fd5b505f8385612bd391906143f8565b9050809150509392505050565b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f808284612c8c9190613fa1565b905083811015612cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc890614475565b60405180910390fd5b8091505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d40906141c8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dae90614256565b60405180910390fd5b612dc283838361324a565b612e2b816040518060600160405280602681526020016146c0602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b7e9092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612eba815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c7e90919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612f579190613862565b60405180910390a3505050565b5f612f6e306113f2565b90505f601754601654612f819190613fa1565b90505f80831480612f9157505f82145b15612f9e57505050613188565b5f1515600f60019054906101000a900460ff16151503612fe5576014600d54612fc79190613ceb565b831115612fe0576014600d54612fdd9190613ceb565b92505b612ff1565b612fee306113f2565b92505b5f600283601654866130039190613ceb565b61300d9190613d59565b6130179190613d59565b90505f61302d828661324f90919063ffffffff16565b90505f47905061303c82613298565b5f613050824761324f90919063ffffffff16565b90505f61307a8761306c6017548561318a90919063ffffffff16565b61320190919063ffffffff16565b90505f818361308991906143f8565b90505f6016819055505f6017819055505f861180156130a757505f81115b156130f4576130b686826134ce565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56185826016546040516130eb93929190614493565b60405180910390a15b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161313990613bdc565b5f6040518083038185875af1925050503d805f8114613173576040519150601f19603f3d011682016040523d82523d5f602084013e613178565b606091505b5050809750505050505050505050505b565b5f80830361319a575f90506131fb565b5f82846131a79190613ceb565b90508284826131b69190613d59565b146131f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ed90614538565b60405180910390fd5b809150505b92915050565b5f61324283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506135a7565b905092915050565b505050565b5f61329083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612b7e565b905092915050565b5f600267ffffffffffffffff8111156132b4576132b3614556565b5b6040519080825280602002602001820160405280156132e25781602001602082028036833780820191505090505b50905030815f815181106132f9576132f8614583565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561339d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133c19190613c6c565b816001815181106133d5576133d4614583565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061343b3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612096565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161349d959493929190614667565b5f604051808303815f87803b1580156134b4575f80fd5b505af11580156134c6573d5f803e3d5ffd5b505050505050565b6134fa3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612096565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b815260040161355f96959493929190613dc2565b60606040518083038185885af115801561357b573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906135a09190613e35565b5050505050565b5f80831182906135ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135e49190613692565b60405180910390fd5b505f83856135fb9190613d59565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561363f578082015181840152602081019050613624565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61366482613608565b61366e8185613612565b935061367e818560208601613622565b6136878161364a565b840191505092915050565b5f6020820190508181035f8301526136aa818461365a565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6136df826136b6565b9050919050565b6136ef816136d5565b81146136f9575f80fd5b50565b5f8135905061370a816136e6565b92915050565b5f819050919050565b61372281613710565b811461372c575f80fd5b50565b5f8135905061373d81613719565b92915050565b5f8060408385031215613759576137586136b2565b5b5f613766858286016136fc565b92505060206137778582860161372f565b9150509250929050565b5f8115159050919050565b61379581613781565b82525050565b5f6020820190506137ae5f83018461378c565b92915050565b5f602082840312156137c9576137c86136b2565b5b5f6137d6848285016136fc565b91505092915050565b5f819050919050565b5f6138026137fd6137f8846136b6565b6137df565b6136b6565b9050919050565b5f613813826137e8565b9050919050565b5f61382482613809565b9050919050565b6138348161381a565b82525050565b5f60208201905061384d5f83018461382b565b92915050565b61385c81613710565b82525050565b5f6020820190506138755f830184613853565b92915050565b5f805f60608486031215613892576138916136b2565b5b5f61389f868287016136fc565b93505060206138b0868287016136fc565b92505060406138c18682870161372f565b9150509250925092565b5f60ff82169050919050565b6138e0816138cb565b82525050565b5f6020820190506138f95f8301846138d7565b92915050565b613908816136d5565b82525050565b5f6020820190506139215f8301846138ff565b92915050565b61393081613781565b811461393a575f80fd5b50565b5f8135905061394b81613927565b92915050565b5f8060408385031215613967576139666136b2565b5b5f613974858286016136fc565b92505060206139858582860161393d565b9150509250929050565b5f602082840312156139a4576139a36136b2565b5b5f6139b18482850161393d565b91505092915050565b5f80604083850312156139d0576139cf6136b2565b5b5f6139dd858286016136fc565b92505060206139ee858286016136fc565b9150509250929050565b5f805f8060808587031215613a1057613a0f6136b2565b5b5f613a1d8782880161372f565b9450506020613a2e8782880161372f565b9350506040613a3f8782880161372f565b9250506060613a508782880161372f565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613aa057607f821691505b602082108103613ab357613ab2613a5c565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613aed602083613612565b9150613af882613ab9565b602082019050919050565b5f6020820190508181035f830152613b1a81613ae1565b9050919050565b7f4554482062616c616e6365206d7573742062652067726561746572207468616e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b7b602283613612565b9150613b8682613b21565b604082019050919050565b5f6020820190508181035f830152613ba881613b6f565b9050919050565b5f81905092915050565b50565b5f613bc75f83613baf565b9150613bd282613bb9565b5f82019050919050565b5f613be682613bbc565b9150819050919050565b7f4661696c656420746f20636c656172204554482062616c616e636500000000005f82015250565b5f613c24601b83613612565b9150613c2f82613bf0565b602082019050919050565b5f6020820190508181035f830152613c5181613c18565b9050919050565b5f81519050613c66816136e6565b92915050565b5f60208284031215613c8157613c806136b2565b5b5f613c8e84828501613c58565b91505092915050565b5f604082019050613caa5f8301856138ff565b613cb760208301846138ff565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613cf582613710565b9150613d0083613710565b9250828202613d0e81613710565b91508282048414831517613d2557613d24613cbe565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613d6382613710565b9150613d6e83613710565b925082613d7e57613d7d613d2c565b5b828204905092915050565b5f819050919050565b5f613dac613da7613da284613d89565b6137df565b613710565b9050919050565b613dbc81613d92565b82525050565b5f60c082019050613dd55f8301896138ff565b613de26020830188613853565b613def6040830187613db3565b613dfc6060830186613db3565b613e0960808301856138ff565b613e1660a0830184613853565b979650505050505050565b5f81519050613e2f81613719565b92915050565b5f805f60608486031215613e4c57613e4b6136b2565b5b5f613e5986828701613e21565b9350506020613e6a86828701613e21565b9250506040613e7b86828701613e21565b9150509250925092565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613edf603983613612565b9150613eea82613e85565b604082019050919050565b5f6020820190508181035f830152613f0c81613ed3565b9050919050565b7f546f6b656e2062616c616e6365206d75737420626520677265617465722074685f8201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b5f613f6d602483613612565b9150613f7882613f13565b604082019050919050565b5f6020820190508181035f830152613f9a81613f61565b9050919050565b5f613fab82613710565b9150613fb683613710565b9250828201905080821115613fce57613fcd613cbe565b5b92915050565b7f4d4158203330252074617820616c6c6f776564000000000000000000000000005f82015250565b5f614008601383613612565b915061401382613fd4565b602082019050919050565b5f6020820190508181035f83015261403581613ffc565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614096602483613612565b91506140a18261403c565b604082019050919050565b5f6020820190508181035f8301526140c38161408a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614124602283613612565b915061412f826140ca565b604082019050919050565b5f6020820190508181035f83015261415181614118565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6141b2602583613612565b91506141bd82614158565b604082019050919050565b5f6020820190508181035f8301526141df816141a6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614240602383613612565b915061424b826141e6565b604082019050919050565b5f6020820190508181035f83015261426d81614234565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6142ce603583613612565b91506142d982614274565b604082019050919050565b5f6020820190508181035f8301526142fb816142c2565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614336601383613612565b915061434182614302565b602082019050919050565b5f6020820190508181035f8301526143638161432a565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6143c4603683613612565b91506143cf8261436a565b604082019050919050565b5f6020820190508181035f8301526143f1816143b8565b9050919050565b5f61440282613710565b915061440d83613710565b925082820390508181111561442557614424613cbe565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61445f601b83613612565b915061446a8261442b565b602082019050919050565b5f6020820190508181035f83015261448c81614453565b9050919050565b5f6060820190506144a65f830186613853565b6144b36020830185613853565b6144c06040830184613853565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f614522602183613612565b915061452d826144c8565b604082019050919050565b5f6020820190508181035f83015261454f81614516565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6145e2816136d5565b82525050565b5f6145f383836145d9565b60208301905092915050565b5f602082019050919050565b5f614615826145b0565b61461f81856145ba565b935061462a836145ca565b805f5b8381101561465a57815161464188826145e8565b975061464c836145ff565b92505060018101905061462d565b5085935050505092915050565b5f60a08201905061467a5f830188613853565b6146876020830187613db3565b8181036040830152614699818661460b565b90506146a860608301856138ff565b6146b56080830184613853565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f0e91c102e556635bd3b8baac8c9e3cdb532abcd17a298d8455c0833f168e8d564736f6c63430008150033
Deployed Bytecode Sourcemap
17532:12618:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4795:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5709:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17985:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22015:311;;;;;;;;;;;;;:::i;:::-;;18558:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17686:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5116:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24107:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18267:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18166:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18200:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5886:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20960:1037;;;;;;;;;;;;;:::i;:::-;;5015:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6249:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18068:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17944:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17734:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24280:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17902:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18101:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5232:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10776:148;;;;;;;;;;;;;:::i;:::-;;22804:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22688:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10562:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18022:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4903:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23656:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22334:256;;;;;;;;;;;;;:::i;:::-;;18307:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6475:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5367:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18781:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17802:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18232:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23465:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17866:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5550:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18132:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22598:81;;;;;;;;;;;;;:::i;:::-;;22960:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10932:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4795:100;4849:13;4882:5;4875:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4795:100;:::o;5709:169::-;5792:4;5809:39;5818:12;:10;:12::i;:::-;5832:7;5841:6;5809:8;:39::i;:::-;5866:4;5859:11;;5709:169;;;;:::o;17985:30::-;;;;;;;;;;;;;:::o;22015:311::-;10699:12;:10;:12::i;:::-;10689:22;;:6;;;;;;;;;;;:22;;;10681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22071:18:::1;22092:21;22071:42;;22145:1;22132:10;:14;22124:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;22197:12;22222:9;;;;;;;;;;;22214:23;;22245:10;22214:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22196:64;;;22279:7;22271:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;22060:266;;22015:311::o:0;18558:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;17686:41::-;;;;;;;;;;;;;:::o;5116:108::-;5177:7;5204:12;;5197:19;;5116:108;:::o;24107:165::-;10699:12;:10;:12::i;:::-;10689:22;;:6;;;;;;;;;;;:22;;;10681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24219:9:::1;;;;;;;;;;;24188:41;;24205:12;24188:41;;;;;;;;;;;;24252:12;24240:9;;:24;;;;;;;;;;;;;;;;;;24107:165:::0;:::o;18267:33::-;;;;:::o;18166:27::-;;;;:::o;18200:25::-;;;;:::o;5886:355::-;6026:4;6043:36;6053:6;6061:9;6072:6;6043:9;:36::i;:::-;6090:121;6099:6;6107:12;:10;:12::i;:::-;6121:89;6159:6;6121:89;;;;;;;;;;;;;;;;;:11;:19;6133:6;6121:19;;;;;;;;;;;;;;;:33;6141:12;:10;:12::i;:::-;6121:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6090:8;:121::i;:::-;6229:4;6222:11;;5886:355;;;;;:::o;20960:1037::-;10699:12;:10;:12::i;:::-;10689:22;;:6;;;;;;;;;;;:22;;;10681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21013:35:::1;21070:42;21013:100;;21127:58;21161:16;21180:4;21127:25;:58::i;:::-;21214:16;21196:15;;:34;;;;;;;;;;;;;;;;;;21278:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21260:56;;;21325:4;21332:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21260:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21244:13;;:112;;;;;;;;;;;;;;;;;;21367:55;21401:13;;;;;;;;;;;21417:4;21367:25;:55::i;:::-;21433:58;21470:13;;;;;;;;;;;21486:4;21433:28;:58::i;:::-;21512:17;21532:21;21512:41;;21564:19;21618:3;21613:2;21586:24;21604:4;21586:9;:24::i;:::-;:29;;;;:::i;:::-;:35;;;;:::i;:::-;21564:57;;21652:62;21669:4;21684:15;;;;;;;;;;;21702:11;21652:8;:62::i;:::-;21727:15;;;;;;;;;;;:31;;;21766:9;21799:4;21819:11;21849:1;21896::::0;21939:9:::1;;;;;;;;;;;21963:15;21727:262;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20996:1001;;;20960:1037::o:0;5015:93::-;5073:5;5098:2;5091:9;;5015:93;:::o;6249:218::-;6337:4;6354:83;6363:12;:10;:12::i;:::-;6377:7;6386:50;6425:10;6386:11;:25;6398:12;:10;:12::i;:::-;6386:25;;;;;;;;;;;;;;;:34;6412:7;6386:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6354:8;:83::i;:::-;6455:4;6448:11;;6249:218;;;;:::o;18068:26::-;;;;:::o;17944:31::-;;;;:::o;17734:28::-;;;;;;;;;;;;;:::o;24280:125::-;24345:4;24369:19;:28;24389:7;24369:28;;;;;;;;;;;;;;;;;;;;;;;;;24362:35;;24280:125;;;:::o;17902:35::-;;;;:::o;18101:24::-;;;;:::o;5232:127::-;5306:7;5333:9;:18;5343:7;5333:18;;;;;;;;;;;;;;;;5326:25;;5232:127;;;:::o;10776:148::-;10699:12;:10;:12::i;:::-;10689:22;;:6;;;;;;;;;;;:22;;;10681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10883:1:::1;10846:40;;10867:6;;;;;;;;;;;10846:40;;;;;;;;;;;;10914:1;10897:6;;:19;;;;;;;;;;;;;;;;;;10776:148::o:0;22804:144::-;10699:12;:10;:12::i;:::-;10689:22;;:6;;;;;;;;;;;:22;;;10681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22936:4:::1;22894:31;:39;22926:6;22894:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22804:144:::0;;:::o;22688:107::-;10699:12;:10;:12::i;:::-;10689:22;;:6;;;;;;;;;;;:22;;;10681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22780:7:::1;22760:17;;:27;;;;;;;;;;;;;;;;;;22688:107:::0;:::o;10562:79::-;10600:7;10627:6;;;;;;;;;;;10620:13;;10562:79;:::o;18022:37::-;;;;;;;;;;;;;:::o;4903:104::-;4959:13;4992:7;4985:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4903:104;:::o;23656:245::-;10699:12;:10;:12::i;:::-;10689:22;;:6;;;;;;;;;;;:22;;;10681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23763:13:::1;;;;;;;;;;;23755:21;;:4;:21;;::::0;23747:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23852:41;23881:4;23887:5;23852:28;:41::i;:::-;23656:245:::0;;:::o;22334:256::-;10699:12;:10;:12::i;:::-;10689:22;;:6;;;;;;;;;;;:22;;;10681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22399:20:::1;22422:24;22440:4;22422:9;:24::i;:::-;22399:47;;22480:1;22465:12;:16;22457:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;22533:49;22551:4;22558:9;;;;;;;;;;;22569:12;22533:9;:49::i;:::-;22388:202;22334:256::o:0;18307:27::-;;;;:::o;6475:269::-;6568:4;6585:129;6594:12;:10;:12::i;:::-;6608:7;6617:96;6656:15;6617:96;;;;;;;;;;;;;;;;;:11;:25;6629:12;:10;:12::i;:::-;6617:25;;;;;;;;;;;;;;;:34;6643:7;6617:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6585:8;:129::i;:::-;6732:4;6725:11;;6475:269;;;;:::o;5367:175::-;5453:4;5470:42;5480:12;:10;:12::i;:::-;5494:9;5505:6;5470:9;:42::i;:::-;5530:4;5523:11;;5367:175;;;;:::o;18781:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;17802:22::-;;;;:::o;18232:25::-;;;;:::o;23465:182::-;10699:12;:10;:12::i;:::-;10689:22;;:6;;;;;;;;;;;:22;;;10681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23581:8:::1;23550:19;:28;23570:7;23550:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23621:7;23605:34;;;23630:8;23605:34;;;;;;:::i;:::-;;;;;;;;23465:182:::0;;:::o;17866:29::-;;;;:::o;5550:151::-;5639:7;5666:11;:18;5678:5;5666:18;;;;;;;;;;;;;;;:27;5685:7;5666:27;;;;;;;;;;;;;;;;5659:34;;5550:151;;;;:::o;18132:24::-;;;;:::o;22598:81::-;10699:12;:10;:12::i;:::-;10689:22;;:6;;;;;;;;;;;:22;;;10681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22666:5:::1;22652:11;;:19;;;;;;;;;;;;;;;;;;22598:81::o:0;22960:497::-;10699:12;:10;:12::i;:::-;10689:22;;:6;;;;;;;;;;;:22;;;10681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23132:7:::1;23120:9;:19;;;;23162:7;23150:9;:19;;;;23206:9;;23194;;:21;;;;:::i;:::-;23180:11;:35;;;;23239:8;23226:10;:21;;;;23271:8;23258:10;:21;;;;23318:10;;23305;;:23;;;;:::i;:::-;23290:12;:38;;;;23362:2;23347:11;;:17;;23339:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;23423:2;23407:12;;:18;;23399:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;22960:497:::0;;;;:::o;10932:169::-;10699:12;:10;:12::i;:::-;10689:22;;:6;;;;;;;;;;;:22;;;10681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11056:8:::1;11027:38;;11048:6;;;;;;;;;;;11027:38;;;;;;;;;;;;11085:8;11076:6;;:17;;;;;;;;;;;;;;;;;;10932:169:::0;:::o;148:98::-;201:7;228:10;221:17;;148:98;:::o;8151:381::-;8304:1;8287:19;;:5;:19;;;8279:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8385:1;8366:21;;:7;:21;;;8358:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8470:6;8440:11;:18;8452:5;8440:18;;;;;;;;;;;;;;;:27;8459:7;8440:27;;;;;;;;;;;;;;;:36;;;;8508:7;8492:32;;8501:5;8492:32;;;8517:6;8492:32;;;;;;:::i;:::-;;;;;;;;8151:381;;;:::o;24414:3112::-;24562:1;24546:18;;:4;:18;;;24538:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24639:1;24625:16;;:2;:16;;;24617:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24706:1;24696:6;:11;24693:92;;24724:28;24740:4;24746:2;24750:1;24724:15;:28::i;:::-;24767:7;;24693:92;24801:11;;;;;;;;;;;24798:1083;;;24858:7;:5;:7::i;:::-;24850:15;;:4;:15;;;;:49;;;;;24892:7;:5;:7::i;:::-;24886:13;;:2;:13;;;;24850:49;:86;;;;;24934:1;24920:16;;:2;:16;;;;24850:86;:128;;;;;24971:6;24957:21;;:2;:21;;;;24850:128;:160;;;;;25000:10;;;;;;;;;;;24999:11;24850:160;24828:1042;;;25094:25;:31;25120:4;25094:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;25130:31;:35;25162:2;25130:35;;;;;;;;;;;;;;;;;;;;;;;;;25129:36;25094:71;25090:765;;;25212:14;;25202:6;:24;;25194:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;25345:16;;25328:13;25338:2;25328:9;:13::i;:::-;25319:6;:22;;;;:::i;:::-;:42;;25311:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;25090:765;;;25464:25;:29;25490:2;25464:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;25498:31;:37;25530:4;25498:37;;;;;;;;;;;;;;;;;;;;;;;;;25497:38;25464:71;25460:395;;;25582:14;;25572:6;:24;;25564:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;25460:395;;;25702:31;:35;25734:2;25702:35;;;;;;;;;;;;;;;;;;;;;;;;;25698:157;;25795:16;;25778:13;25788:2;25778:9;:13::i;:::-;25769:6;:22;;;;:::i;:::-;:42;;25761:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;25698:157;25460:395;25090:765;24828:1042;24798:1083;25894:28;25925:24;25943:4;25925:9;:24::i;:::-;25894:55;;25963:12;26002:20;;25978;:44;;25963:59;;26054:7;:35;;;;;26079:10;;;;;;;;;;;26078:11;26054:35;:84;;;;;26107:25;:31;26133:4;26107:31;;;;;;;;;;;;;;;;;;;;;;;;;26106:32;26054:84;:127;;;;;26156:19;:25;26176:4;26156:25;;;;;;;;;;;;;;;;;;;;;;;;;26155:26;26054:127;:168;;;;;26199:19;:23;26219:2;26199:23;;;;;;;;;;;;;;;;;;;;;;;;;26198:24;26054:168;26036:306;;;26262:4;26249:10;;:17;;;;;;;;;;;;;;;;;;26284:10;:8;:10::i;:::-;26325:5;26312:10;;:18;;;;;;;;;;;;;;;;;;26036:306;26355:12;26371:10;;;;;;;;;;;26370:11;26355:26;;26483:19;:25;26503:4;26483:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;26512:19;:23;26532:2;26512:23;;;;;;;;;;;;;;;;;;;;;;;;;26483:52;26480:99;;;26562:5;26552:15;;26480:99;26592:12;26696:7;26693:779;;;26747:25;:29;26773:2;26747:29;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;26795:1;26780:12;;:16;26747:49;26743:576;;;26823:33;26852:3;26823:24;26834:12;;26823:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;26816:40;;26917:12;;26904:10;;26897:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;26875:18;;:54;;;;;;;:::i;:::-;;;;;;;;26984:12;;26971:10;;26964:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;26948:12;;:48;;;;;;;:::i;:::-;;;;;;;;26743:576;;;27057:25;:31;27083:4;27057:31;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;27106:1;27092:11;;:15;27057:50;27054:265;;;27135:32;27163:3;27135:23;27146:11;;27135:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;27128:39;;27227:11;;27215:9;;27208:4;:16;;;;:::i;:::-;:30;;;;:::i;:::-;27186:18;;:52;;;;;;;:::i;:::-;;;;;;;;27292:11;;27280:9;;27273:4;:16;;;;:::i;:::-;:30;;;;:::i;:::-;27257:12;;:46;;;;;;;:::i;:::-;;;;;;;;27054:265;26743:576;27346:1;27339:4;:8;27336:93;;;27371:42;27387:4;27401;27408;27371:15;:42::i;:::-;27336:93;27456:4;27446:14;;;;;:::i;:::-;;;26693:779;27485:33;27501:4;27507:2;27511:6;27485:15;:33::i;:::-;24527:2999;;;;24414:3112;;;;:::o;9039:193::-;9125:7;9158:1;9153;:6;;9161:12;9145:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9185:9;9201:1;9197;:5;;;;:::i;:::-;9185:17;;9223:1;9216:8;;;9039:193;;;;;:::o;23910:189::-;24027:5;23993:25;:31;24019:4;23993:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24085:5;24051:40;;24079:4;24051:40;;;;;;;;;;;;23910:189;;:::o;8705:182::-;8763:7;8783:9;8799:1;8795;:5;;;;:::i;:::-;8783:17;;8824:1;8819;:6;;8811:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8878:1;8871:8;;;8705:182;;;;:::o;6752:575::-;6910:1;6892:20;;:6;:20;;;6884:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6994:1;6973:23;;:9;:23;;;6965:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7050:47;7071:6;7079:9;7090:6;7050:20;:47::i;:::-;7131:71;7153:6;7131:71;;;;;;;;;;;;;;;;;:9;:17;7141:6;7131:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7111:9;:17;7121:6;7111:17;;;;;;;;;;;;;;;:91;;;;7236:32;7261:6;7236:9;:20;7246:9;7236:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7213:9;:20;7223:9;7213:20;;;;;;;;;;;;;;;:55;;;;7301:9;7284:35;;7293:6;7284:35;;;7312:6;7284:35;;;;;;:::i;:::-;;;;;;;;6752:575;;;:::o;28670:1477::-;28709:23;28735:24;28753:4;28735:9;:24::i;:::-;28709:50;;28770:25;28819:12;;28798:18;;:33;;;;:::i;:::-;28770:61;;28842:12;28890:1;28871:15;:20;:46;;;;28916:1;28895:17;:22;28871:46;28868:60;;;28920:7;;;;;28868:60;28965:5;28944:26;;:17;;;;;;;;;;;:26;;;28941:254;;29030:2;29007:20;;:25;;;;:::i;:::-;28989:15;:43;28986:125;;;29093:2;29070:20;;:25;;;;:::i;:::-;29052:43;;28986:125;28941:254;;;29159:24;29177:4;29159:9;:24::i;:::-;29141:42;;28941:254;29267:23;29352:1;29332:17;29311:18;;29293:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;29267:86;;29364:26;29393:36;29413:15;29393;:19;;:36;;;;:::i;:::-;29364:65;;29443:25;29471:21;29443:49;;29506:36;29523:18;29506:16;:36::i;:::-;29557:18;29578:44;29604:17;29578:21;:25;;:44;;;;:::i;:::-;29557:65;;29636:17;29656:51;29689:17;29656:28;29671:12;;29656:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;29636:71;;29718:23;29757:9;29744:10;:22;;;;:::i;:::-;29718:48;;29804:1;29783:18;:22;;;;29831:1;29816:12;:16;;;;29867:1;29849:15;:19;:42;;;;;29890:1;29872:15;:19;29849:42;29846:210;;;29907:46;29920:15;29937;29907:12;:46::i;:::-;29973:71;29988:18;30008:15;30025:18;;29973:71;;;;;;;;:::i;:::-;;;;;;;;29846:210;30090:9;;;;;;;;;;;30082:23;;30113:21;30082:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30069:70;;;;;28698:1449;;;;;;;;;28670:1477;:::o;9240:254::-;9298:7;9329:1;9324;:6;9320:47;;9354:1;9347:8;;;;9320:47;9380:9;9396:1;9392;:5;;;;:::i;:::-;9380:17;;9425:1;9420;9416;:5;;;;:::i;:::-;:10;9408:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9485:1;9478:8;;;9240:254;;;;;:::o;9502:132::-;9560:7;9587:39;9591:1;9594;9587:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;9580:46;;9502:132;;;;:::o;8540:125::-;;;;:::o;8895:136::-;8953:7;8980:43;8984:1;8987;8980:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;8973:50;;8895:136;;;;:::o;27535:597::-;27664:21;27702:1;27688:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27664:40;;27733:4;27715;27720:1;27715:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;27759:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27749:4;27754:1;27749:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27795:62;27812:4;27827:15;;;;;;;;;;;27845:11;27795:8;:62::i;:::-;27897:15;;;;;;;;;;;:66;;;27978:11;28004:1;28048:4;28075;28095:15;27897:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27590:542;27535:597;:::o;28141:520::-;28289:62;28306:4;28321:15;;;;;;;;;;;28339:11;28289:8;:62::i;:::-;28395:15;;;;;;;;;;;:31;;;28434:9;28467:4;28487:11;28513:1;28556;28607:4;28627:15;28395:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28141:520;;:::o;9642:279::-;9728:7;9760:1;9756;:5;9763:12;9748:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9787:9;9803:1;9799;:5;;;;:::i;:::-;9787:17;;9912:1;9905:8;;;9642:279;;;;;:::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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:619::-;5188:6;5196;5204;5253:2;5241:9;5232:7;5228:23;5224:32;5221:119;;;5259:79;;:::i;:::-;5221:119;5379:1;5404:53;5449:7;5440:6;5429:9;5425:22;5404:53;:::i;:::-;5394:63;;5350:117;5506:2;5532:53;5577:7;5568:6;5557:9;5553:22;5532:53;:::i;:::-;5522:63;;5477:118;5634:2;5660:53;5705:7;5696:6;5685:9;5681:22;5660:53;:::i;:::-;5650:63;;5605:118;5111:619;;;;;:::o;5736:86::-;5771:7;5811:4;5804:5;5800:16;5789:27;;5736:86;;;:::o;5828:112::-;5911:22;5927:5;5911:22;:::i;:::-;5906:3;5899:35;5828:112;;:::o;5946:214::-;6035:4;6073:2;6062:9;6058:18;6050:26;;6086:67;6150:1;6139:9;6135:17;6126:6;6086:67;:::i;:::-;5946:214;;;;:::o;6166:118::-;6253:24;6271:5;6253:24;:::i;:::-;6248:3;6241:37;6166:118;;:::o;6290:222::-;6383:4;6421:2;6410:9;6406:18;6398:26;;6434:71;6502:1;6491:9;6487:17;6478:6;6434:71;:::i;:::-;6290:222;;;;:::o;6518:116::-;6588:21;6603:5;6588:21;:::i;:::-;6581:5;6578:32;6568:60;;6624:1;6621;6614:12;6568:60;6518:116;:::o;6640:133::-;6683:5;6721:6;6708:20;6699:29;;6737:30;6761:5;6737:30;:::i;:::-;6640:133;;;;:::o;6779:468::-;6844:6;6852;6901:2;6889:9;6880:7;6876:23;6872:32;6869:119;;;6907:79;;:::i;:::-;6869:119;7027:1;7052:53;7097:7;7088:6;7077:9;7073:22;7052:53;:::i;:::-;7042:63;;6998:117;7154:2;7180:50;7222:7;7213:6;7202:9;7198:22;7180:50;:::i;:::-;7170:60;;7125:115;6779:468;;;;;:::o;7253:323::-;7309:6;7358:2;7346:9;7337:7;7333:23;7329:32;7326:119;;;7364:79;;:::i;:::-;7326:119;7484:1;7509:50;7551:7;7542:6;7531:9;7527:22;7509:50;:::i;:::-;7499:60;;7455:114;7253:323;;;;:::o;7582:474::-;7650:6;7658;7707:2;7695:9;7686:7;7682:23;7678:32;7675:119;;;7713:79;;:::i;:::-;7675:119;7833:1;7858:53;7903:7;7894:6;7883:9;7879:22;7858:53;:::i;:::-;7848:63;;7804:117;7960:2;7986:53;8031:7;8022:6;8011:9;8007:22;7986:53;:::i;:::-;7976:63;;7931:118;7582:474;;;;;:::o;8062:765::-;8148:6;8156;8164;8172;8221:3;8209:9;8200:7;8196:23;8192:33;8189:120;;;8228:79;;:::i;:::-;8189:120;8348:1;8373:53;8418:7;8409:6;8398:9;8394:22;8373:53;:::i;:::-;8363:63;;8319:117;8475:2;8501:53;8546:7;8537:6;8526:9;8522:22;8501:53;:::i;:::-;8491:63;;8446:118;8603:2;8629:53;8674:7;8665:6;8654:9;8650:22;8629:53;:::i;:::-;8619:63;;8574:118;8731:2;8757:53;8802:7;8793:6;8782:9;8778:22;8757:53;:::i;:::-;8747:63;;8702:118;8062:765;;;;;;;:::o;8833:180::-;8881:77;8878:1;8871:88;8978:4;8975:1;8968:15;9002:4;8999:1;8992:15;9019:320;9063:6;9100:1;9094:4;9090:12;9080:22;;9147:1;9141:4;9137:12;9168:18;9158:81;;9224:4;9216:6;9212:17;9202:27;;9158:81;9286:2;9278:6;9275:14;9255:18;9252:38;9249:84;;9305:18;;:::i;:::-;9249:84;9070:269;9019:320;;;:::o;9345:182::-;9485:34;9481:1;9473:6;9469:14;9462:58;9345:182;:::o;9533:366::-;9675:3;9696:67;9760:2;9755:3;9696:67;:::i;:::-;9689:74;;9772:93;9861:3;9772:93;:::i;:::-;9890:2;9885:3;9881:12;9874:19;;9533:366;;;:::o;9905:419::-;10071:4;10109:2;10098:9;10094:18;10086:26;;10158:9;10152:4;10148:20;10144:1;10133:9;10129:17;10122:47;10186:131;10312:4;10186:131;:::i;:::-;10178:139;;9905:419;;;:::o;10330:221::-;10470:34;10466:1;10458:6;10454:14;10447:58;10539:4;10534:2;10526:6;10522:15;10515:29;10330:221;:::o;10557:366::-;10699:3;10720:67;10784:2;10779:3;10720:67;:::i;:::-;10713:74;;10796:93;10885:3;10796:93;:::i;:::-;10914:2;10909:3;10905:12;10898:19;;10557:366;;;:::o;10929:419::-;11095:4;11133:2;11122:9;11118:18;11110:26;;11182:9;11176:4;11172:20;11168:1;11157:9;11153:17;11146:47;11210:131;11336:4;11210:131;:::i;:::-;11202:139;;10929:419;;;:::o;11354:147::-;11455:11;11492:3;11477:18;;11354:147;;;;:::o;11507:114::-;;:::o;11627:398::-;11786:3;11807:83;11888:1;11883:3;11807:83;:::i;:::-;11800:90;;11899:93;11988:3;11899:93;:::i;:::-;12017:1;12012:3;12008:11;12001:18;;11627:398;;;:::o;12031:379::-;12215:3;12237:147;12380:3;12237:147;:::i;:::-;12230:154;;12401:3;12394:10;;12031:379;;;:::o;12416:177::-;12556:29;12552:1;12544:6;12540:14;12533:53;12416:177;:::o;12599:366::-;12741:3;12762:67;12826:2;12821:3;12762:67;:::i;:::-;12755:74;;12838:93;12927:3;12838:93;:::i;:::-;12956:2;12951:3;12947:12;12940:19;;12599:366;;;:::o;12971:419::-;13137:4;13175:2;13164:9;13160:18;13152:26;;13224:9;13218:4;13214:20;13210:1;13199:9;13195:17;13188:47;13252:131;13378:4;13252:131;:::i;:::-;13244:139;;12971:419;;;:::o;13396:143::-;13453:5;13484:6;13478:13;13469:22;;13500:33;13527:5;13500:33;:::i;:::-;13396:143;;;;:::o;13545:351::-;13615:6;13664:2;13652:9;13643:7;13639:23;13635:32;13632:119;;;13670:79;;:::i;:::-;13632:119;13790:1;13815:64;13871:7;13862:6;13851:9;13847:22;13815:64;:::i;:::-;13805:74;;13761:128;13545:351;;;;:::o;13902:332::-;14023:4;14061:2;14050:9;14046:18;14038:26;;14074:71;14142:1;14131:9;14127:17;14118:6;14074:71;:::i;:::-;14155:72;14223:2;14212:9;14208:18;14199:6;14155:72;:::i;:::-;13902:332;;;;;:::o;14240:180::-;14288:77;14285:1;14278:88;14385:4;14382:1;14375:15;14409:4;14406:1;14399:15;14426:410;14466:7;14489:20;14507:1;14489:20;:::i;:::-;14484:25;;14523:20;14541:1;14523:20;:::i;:::-;14518:25;;14578:1;14575;14571:9;14600:30;14618:11;14600:30;:::i;:::-;14589:41;;14779:1;14770:7;14766:15;14763:1;14760:22;14740:1;14733:9;14713:83;14690:139;;14809:18;;:::i;:::-;14690:139;14474:362;14426:410;;;;:::o;14842:180::-;14890:77;14887:1;14880:88;14987:4;14984:1;14977:15;15011:4;15008:1;15001:15;15028:185;15068:1;15085:20;15103:1;15085:20;:::i;:::-;15080:25;;15119:20;15137:1;15119:20;:::i;:::-;15114:25;;15158:1;15148:35;;15163:18;;:::i;:::-;15148:35;15205:1;15202;15198:9;15193:14;;15028:185;;;;:::o;15219:85::-;15264:7;15293:5;15282:16;;15219:85;;;:::o;15310:158::-;15368:9;15401:61;15419:42;15428:32;15454:5;15428:32;:::i;:::-;15419:42;:::i;:::-;15401:61;:::i;:::-;15388:74;;15310:158;;;:::o;15474:147::-;15569:45;15608:5;15569:45;:::i;:::-;15564:3;15557:58;15474:147;;:::o;15627:807::-;15876:4;15914:3;15903:9;15899:19;15891:27;;15928:71;15996:1;15985:9;15981:17;15972:6;15928:71;:::i;:::-;16009:72;16077:2;16066:9;16062:18;16053:6;16009:72;:::i;:::-;16091:80;16167:2;16156:9;16152:18;16143:6;16091:80;:::i;:::-;16181;16257:2;16246:9;16242:18;16233:6;16181:80;:::i;:::-;16271:73;16339:3;16328:9;16324:19;16315:6;16271:73;:::i;:::-;16354;16422:3;16411:9;16407:19;16398:6;16354:73;:::i;:::-;15627:807;;;;;;;;;:::o;16440:143::-;16497:5;16528:6;16522:13;16513:22;;16544:33;16571:5;16544:33;:::i;:::-;16440:143;;;;:::o;16589:663::-;16677:6;16685;16693;16742:2;16730:9;16721:7;16717:23;16713:32;16710:119;;;16748:79;;:::i;:::-;16710:119;16868:1;16893:64;16949:7;16940:6;16929:9;16925:22;16893:64;:::i;:::-;16883:74;;16839:128;17006:2;17032:64;17088:7;17079:6;17068:9;17064:22;17032:64;:::i;:::-;17022:74;;16977:129;17145:2;17171:64;17227:7;17218:6;17207:9;17203:22;17171:64;:::i;:::-;17161:74;;17116:129;16589:663;;;;;:::o;17258:244::-;17398:34;17394:1;17386:6;17382:14;17375:58;17467:27;17462:2;17454:6;17450:15;17443:52;17258:244;:::o;17508:366::-;17650:3;17671:67;17735:2;17730:3;17671:67;:::i;:::-;17664:74;;17747:93;17836:3;17747:93;:::i;:::-;17865:2;17860:3;17856:12;17849:19;;17508:366;;;:::o;17880:419::-;18046:4;18084:2;18073:9;18069:18;18061:26;;18133:9;18127:4;18123:20;18119:1;18108:9;18104:17;18097:47;18161:131;18287:4;18161:131;:::i;:::-;18153:139;;17880:419;;;:::o;18305:223::-;18445:34;18441:1;18433:6;18429:14;18422:58;18514:6;18509:2;18501:6;18497:15;18490:31;18305:223;:::o;18534:366::-;18676:3;18697:67;18761:2;18756:3;18697:67;:::i;:::-;18690:74;;18773:93;18862:3;18773:93;:::i;:::-;18891:2;18886:3;18882:12;18875:19;;18534:366;;;:::o;18906:419::-;19072:4;19110:2;19099:9;19095:18;19087:26;;19159:9;19153:4;19149:20;19145:1;19134:9;19130:17;19123:47;19187:131;19313:4;19187:131;:::i;:::-;19179:139;;18906:419;;;:::o;19331:191::-;19371:3;19390:20;19408:1;19390:20;:::i;:::-;19385:25;;19424:20;19442:1;19424:20;:::i;:::-;19419:25;;19467:1;19464;19460:9;19453:16;;19488:3;19485:1;19482:10;19479:36;;;19495:18;;:::i;:::-;19479:36;19331:191;;;;:::o;19528:169::-;19668:21;19664:1;19656:6;19652:14;19645:45;19528:169;:::o;19703:366::-;19845:3;19866:67;19930:2;19925:3;19866:67;:::i;:::-;19859:74;;19942:93;20031:3;19942:93;:::i;:::-;20060:2;20055:3;20051:12;20044:19;;19703:366;;;:::o;20075:419::-;20241:4;20279:2;20268:9;20264:18;20256:26;;20328:9;20322:4;20318:20;20314:1;20303:9;20299:17;20292:47;20356:131;20482:4;20356:131;:::i;:::-;20348:139;;20075:419;;;:::o;20500:223::-;20640:34;20636:1;20628:6;20624:14;20617:58;20709:6;20704:2;20696:6;20692:15;20685:31;20500:223;:::o;20729:366::-;20871:3;20892:67;20956:2;20951:3;20892:67;:::i;:::-;20885:74;;20968:93;21057:3;20968:93;:::i;:::-;21086:2;21081:3;21077:12;21070:19;;20729:366;;;:::o;21101:419::-;21267:4;21305:2;21294:9;21290:18;21282:26;;21354:9;21348:4;21344:20;21340:1;21329:9;21325:17;21318:47;21382:131;21508:4;21382:131;:::i;:::-;21374:139;;21101:419;;;:::o;21526:221::-;21666:34;21662:1;21654:6;21650:14;21643:58;21735:4;21730:2;21722:6;21718:15;21711:29;21526:221;:::o;21753:366::-;21895:3;21916:67;21980:2;21975:3;21916:67;:::i;:::-;21909:74;;21992:93;22081:3;21992:93;:::i;:::-;22110:2;22105:3;22101:12;22094:19;;21753:366;;;:::o;22125:419::-;22291:4;22329:2;22318:9;22314:18;22306:26;;22378:9;22372:4;22368:20;22364:1;22353:9;22349:17;22342:47;22406:131;22532:4;22406:131;:::i;:::-;22398:139;;22125:419;;;:::o;22550:224::-;22690:34;22686:1;22678:6;22674:14;22667:58;22759:7;22754:2;22746:6;22742:15;22735:32;22550:224;:::o;22780:366::-;22922:3;22943:67;23007:2;23002:3;22943:67;:::i;:::-;22936:74;;23019:93;23108:3;23019:93;:::i;:::-;23137:2;23132:3;23128:12;23121:19;;22780:366;;;:::o;23152:419::-;23318:4;23356:2;23345:9;23341:18;23333:26;;23405:9;23399:4;23395:20;23391:1;23380:9;23376:17;23369:47;23433:131;23559:4;23433:131;:::i;:::-;23425:139;;23152:419;;;:::o;23577:222::-;23717:34;23713:1;23705:6;23701:14;23694:58;23786:5;23781:2;23773:6;23769:15;23762:30;23577:222;:::o;23805:366::-;23947:3;23968:67;24032:2;24027:3;23968:67;:::i;:::-;23961:74;;24044:93;24133:3;24044:93;:::i;:::-;24162:2;24157:3;24153:12;24146:19;;23805:366;;;:::o;24177:419::-;24343:4;24381:2;24370:9;24366:18;24358:26;;24430:9;24424:4;24420:20;24416:1;24405:9;24401:17;24394:47;24458:131;24584:4;24458:131;:::i;:::-;24450:139;;24177:419;;;:::o;24602:240::-;24742:34;24738:1;24730:6;24726:14;24719:58;24811:23;24806:2;24798:6;24794:15;24787:48;24602:240;:::o;24848:366::-;24990:3;25011:67;25075:2;25070:3;25011:67;:::i;:::-;25004:74;;25087:93;25176:3;25087:93;:::i;:::-;25205:2;25200:3;25196:12;25189:19;;24848:366;;;:::o;25220:419::-;25386:4;25424:2;25413:9;25409:18;25401:26;;25473:9;25467:4;25463:20;25459:1;25448:9;25444:17;25437:47;25501:131;25627:4;25501:131;:::i;:::-;25493:139;;25220:419;;;:::o;25645:169::-;25785:21;25781:1;25773:6;25769:14;25762:45;25645:169;:::o;25820:366::-;25962:3;25983:67;26047:2;26042:3;25983:67;:::i;:::-;25976:74;;26059:93;26148:3;26059:93;:::i;:::-;26177:2;26172:3;26168:12;26161:19;;25820:366;;;:::o;26192:419::-;26358:4;26396:2;26385:9;26381:18;26373:26;;26445:9;26439:4;26435:20;26431:1;26420:9;26416:17;26409:47;26473:131;26599:4;26473:131;:::i;:::-;26465:139;;26192:419;;;:::o;26617:241::-;26757:34;26753:1;26745:6;26741:14;26734:58;26826:24;26821:2;26813:6;26809:15;26802:49;26617:241;:::o;26864:366::-;27006:3;27027:67;27091:2;27086:3;27027:67;:::i;:::-;27020:74;;27103:93;27192:3;27103:93;:::i;:::-;27221:2;27216:3;27212:12;27205:19;;26864:366;;;:::o;27236:419::-;27402:4;27440:2;27429:9;27425:18;27417:26;;27489:9;27483:4;27479:20;27475:1;27464:9;27460:17;27453:47;27517:131;27643:4;27517:131;:::i;:::-;27509:139;;27236:419;;;:::o;27661:194::-;27701:4;27721:20;27739:1;27721:20;:::i;:::-;27716:25;;27755:20;27773:1;27755:20;:::i;:::-;27750:25;;27799:1;27796;27792:9;27784:17;;27823:1;27817:4;27814:11;27811:37;;;27828:18;;:::i;:::-;27811:37;27661:194;;;;:::o;27861:177::-;28001:29;27997:1;27989:6;27985:14;27978:53;27861:177;:::o;28044:366::-;28186:3;28207:67;28271:2;28266:3;28207:67;:::i;:::-;28200:74;;28283:93;28372:3;28283:93;:::i;:::-;28401:2;28396:3;28392:12;28385:19;;28044:366;;;:::o;28416:419::-;28582:4;28620:2;28609:9;28605:18;28597:26;;28669:9;28663:4;28659:20;28655:1;28644:9;28640:17;28633:47;28697:131;28823:4;28697:131;:::i;:::-;28689:139;;28416:419;;;:::o;28841:442::-;28990:4;29028:2;29017:9;29013:18;29005:26;;29041:71;29109:1;29098:9;29094:17;29085:6;29041:71;:::i;:::-;29122:72;29190:2;29179:9;29175:18;29166:6;29122:72;:::i;:::-;29204;29272:2;29261:9;29257:18;29248:6;29204:72;:::i;:::-;28841:442;;;;;;:::o;29289:220::-;29429:34;29425:1;29417:6;29413:14;29406:58;29498:3;29493:2;29485:6;29481:15;29474:28;29289:220;:::o;29515:366::-;29657:3;29678:67;29742:2;29737:3;29678:67;:::i;:::-;29671:74;;29754:93;29843:3;29754:93;:::i;:::-;29872:2;29867:3;29863:12;29856:19;;29515:366;;;:::o;29887:419::-;30053:4;30091:2;30080:9;30076:18;30068:26;;30140:9;30134:4;30130:20;30126:1;30115:9;30111:17;30104:47;30168:131;30294:4;30168:131;:::i;:::-;30160:139;;29887:419;;;:::o;30312:180::-;30360:77;30357:1;30350:88;30457:4;30454:1;30447:15;30481:4;30478:1;30471:15;30498:180;30546:77;30543:1;30536:88;30643:4;30640:1;30633:15;30667:4;30664:1;30657:15;30684:114;30751:6;30785:5;30779:12;30769:22;;30684:114;;;:::o;30804:184::-;30903:11;30937:6;30932:3;30925:19;30977:4;30972:3;30968:14;30953:29;;30804:184;;;;:::o;30994:132::-;31061:4;31084:3;31076:11;;31114:4;31109:3;31105:14;31097:22;;30994:132;;;:::o;31132:108::-;31209:24;31227:5;31209:24;:::i;:::-;31204:3;31197:37;31132:108;;:::o;31246:179::-;31315:10;31336:46;31378:3;31370:6;31336:46;:::i;:::-;31414:4;31409:3;31405:14;31391:28;;31246:179;;;;:::o;31431:113::-;31501:4;31533;31528:3;31524:14;31516:22;;31431:113;;;:::o;31580:732::-;31699:3;31728:54;31776:5;31728:54;:::i;:::-;31798:86;31877:6;31872:3;31798:86;:::i;:::-;31791:93;;31908:56;31958:5;31908:56;:::i;:::-;31987:7;32018:1;32003:284;32028:6;32025:1;32022:13;32003:284;;;32104:6;32098:13;32131:63;32190:3;32175:13;32131:63;:::i;:::-;32124:70;;32217:60;32270:6;32217:60;:::i;:::-;32207:70;;32063:224;32050:1;32047;32043:9;32038:14;;32003:284;;;32007:14;32303:3;32296:10;;31704:608;;;31580:732;;;;:::o;32318:831::-;32581:4;32619:3;32608:9;32604:19;32596:27;;32633:71;32701:1;32690:9;32686:17;32677:6;32633:71;:::i;:::-;32714:80;32790:2;32779:9;32775:18;32766:6;32714:80;:::i;:::-;32841:9;32835:4;32831:20;32826:2;32815:9;32811:18;32804:48;32869:108;32972:4;32963:6;32869:108;:::i;:::-;32861:116;;32987:72;33055:2;33044:9;33040:18;33031:6;32987:72;:::i;:::-;33069:73;33137:3;33126:9;33122:19;33113:6;33069:73;:::i;:::-;32318:831;;;;;;;;:::o
Swarm Source
ipfs://f0e91c102e556635bd3b8baac8c9e3cdb532abcd17a298d8455c0833f168e8d5
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,113.26 | 0.0987 | $307.28 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.