ERC-20
Overview
Max Total Supply
1,000,000,000 PΩX
Holders
39
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
1,167,154.768132169645531617 PΩXValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
PXToken
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-11-17 */ // SPDX-License-Identifier: MIT pragma solidity =0.8.10; pragma experimental ABIEncoderV2; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(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 += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(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); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(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 {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 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 (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); 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 (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract PXToken is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address public marketingWallet; address public devWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; uint256 public percentForLPBurn = 25; bool public lpBurnEnabled = true; uint256 public lpBurnFrequency = 3600 seconds; uint256 public lastLpBurnTime; uint256 public manualBurnFrequency = 30 minutes; uint256 public lastManualLpBurnTime; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; mapping(address => uint256) private _holderLastTransferTimestamp; bool public transferDelayEnabled = true; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellDevFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; 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 marketingWalletUpdated( address indexed newWallet, address indexed oldWallet ); event devWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event AutoNukeLP(); event ManualNukeLP(); constructor() ERC20(unicode"PΩX", unicode"PΩX") { 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 _buyMarketingFee = 0; uint256 _buyLiquidityFee = 0; uint256 _buyDevFee = 2; uint256 _sellMarketingFee = 0; uint256 _sellLiquidityFee = 0; uint256 _sellDevFee = 2; uint256 totalSupply = 1_000_000_000 * 1e18; maxTransactionAmount = 20_000_000 * 1e18; maxWallet = 30_000_000 * 1e18; swapTokensAtAmount = (totalSupply * 5) / 10000; buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; marketingWallet = address(0x7E379cD3Afa7bE2b45D7198010EC8ac0BfE10bBd); devWallet = address(0x7E379cD3Afa7bE2b45D7198010EC8ac0BfE10bBd); excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, totalSupply); } receive() external payable {} function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; lastLpBurnTime = block.timestamp; } function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } function disableTransferDelay() external onlyOwner returns (bool) { transferDelayEnabled = false; return true; } function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply." ); swapTokensAtAmount = newAmount; return true; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function updateBuyFees( uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee ) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyDevFee = _devFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; require(buyTotalFees <= 5, "Must keep fees at 5% or less"); } function updateSellFees( uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee ) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellDevFee = _devFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; require(sellTotalFees <= 5, "Must keep fees at 5% or less"); } 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 isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } event BoughtEarly(address indexed sniper); 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 (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } if (transferDelayEnabled) { if ( to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair) ) { require( _holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed." ); _holderLastTransferTimestamp[tx.origin] = block.number; } } if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount." ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } if ( !swapping && automatedMarketMakerPairs[to] && lpBurnEnabled && block.timestamp >= lastLpBurnTime + lpBurnFrequency && !_isExcludedFromFees[from] ) { autoBurnLiquidityPairTokens(); } bool takeFee = !swapping; if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; if (takeFee) { if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees; tokensForDev += (fees * sellDevFee) / sellTotalFees; tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees; } else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForDev += (fees * buyDevFee) / buyTotalFees; tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, deadAddress, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 20) { contractBalance = swapTokensAtAmount * 20; } 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 ethForMarketing = ethBalance.mul(tokensForMarketing).div( totalTokensToSwap ); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; (success, ) = address(devWallet).call{value: ethForDev}(""); if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETH, ethForLiquidity, tokensForLiquidity ); } (success, ) = address(marketingWallet).call{ value: address(this).balance }(""); } function setAutoLPBurnSettings( uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled ) external onlyOwner { require( _frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes" ); require( _percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%" ); lpBurnFrequency = _frequencyInSeconds; percentForLPBurn = _percent; lpBurnEnabled = _Enabled; } function autoBurnLiquidityPairTokens() internal returns (bool) { lastLpBurnTime = block.timestamp; uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div( 10000 ); if (amountToBurn > 0) { super._transfer(uniswapV2Pair, address(0xdead), amountToBurn); } IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair); pair.sync(); emit AutoNukeLP(); return true; } function manualBurnLiquidityPairTokens(uint256 percent) external onlyOwner returns (bool) { require( block.timestamp > lastManualLpBurnTime + manualBurnFrequency, "Must wait for cooldown to finish" ); require(percent <= 1000, "May not nuke more than 10% of tokens in LP"); lastManualLpBurnTime = block.timestamp; uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000); if (amountToBurn > 0) { super._transfer(uniswapV2Pair, address(0xdead), amountToBurn); } IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair); pair.sync(); emit ManualNukeLP(); return true; } }
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":"sniper","type":"address"}],"name":"BoughtEarly","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","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":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526019600b556001600c60006101000a81548160ff021916908315150217905550610e10600d55610708600f556001601160006101000a81548160ff0219169083151502179055506000601160016101000a81548160ff0219169083151502179055506000601160026101000a81548160ff0219169083151502179055506001601360006101000a81548160ff021916908315150217905550348015620000a957600080fd5b506040518060400160405280600481526020017f50cea958000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f50cea9580000000000000000000000000000000000000000000000000000000081525081600390805190602001906200012e92919062000b0d565b5080600490805190602001906200014792919062000b0d565b5050506200016a6200015e620005cd60201b60201c565b620005d560201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001968160016200069b60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000216573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023c919062000c27565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ca919062000c27565b6040518363ffffffff1660e01b8152600401620002e992919062000c6a565b6020604051808303816000875af115801562000309573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032f919062000c27565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200037760a05160016200069b60201b60201c565b6200038c60a05160016200078560201b60201c565b60008060006002905060008060006002905060006b033b2e3c9fd0803ce800000090506a108b2a2c280290940000006008819055506a18d0bf423c03d8de000000600a81905550612710600582620003e5919062000cd0565b620003f1919062000d60565b60098190555086601581905550856016819055508460178190555060175460165460155462000421919062000d98565b6200042d919062000d98565b6014819055508360198190555082601a8190555081601b81905550601b54601a546019546200045d919062000d98565b62000469919062000d98565b601881905550737e379cd3afa7be2b45d7198010ec8ac0bfe10bbd600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737e379cd3afa7be2b45d7198010ec8ac0bfe10bbd600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200053b6200052d6200082660201b60201c565b60016200085060201b60201c565b6200054e3060016200085060201b60201c565b6200056361dead60016200085060201b60201c565b62000585620005776200082660201b60201c565b60016200069b60201b60201c565b620005983060016200069b60201b60201c565b620005ad61dead60016200069b60201b60201c565b620005bf33826200098a60201b60201c565b505050505050505062000fb7565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620006ab620005cd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620006d16200082660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200072a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007219062000e56565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000860620005cd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620008866200082660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620008df576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008d69062000e56565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200097e919062000e95565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620009fd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009f49062000f02565b60405180910390fd5b62000a116000838362000b0360201b60201c565b806002600082825462000a25919062000d98565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000a7c919062000d98565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000ae3919062000f35565b60405180910390a362000aff6000838362000b0860201b60201c565b5050565b505050565b505050565b82805462000b1b9062000f81565b90600052602060002090601f01602090048101928262000b3f576000855562000b8b565b82601f1062000b5a57805160ff191683800117855562000b8b565b8280016001018555821562000b8b579182015b8281111562000b8a57825182559160200191906001019062000b6d565b5b50905062000b9a919062000b9e565b5090565b5b8082111562000bb957600081600090555060010162000b9f565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000bef8262000bc2565b9050919050565b62000c018162000be2565b811462000c0d57600080fd5b50565b60008151905062000c218162000bf6565b92915050565b60006020828403121562000c405762000c3f62000bbd565b5b600062000c508482850162000c10565b91505092915050565b62000c648162000be2565b82525050565b600060408201905062000c81600083018562000c59565b62000c90602083018462000c59565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000cdd8262000c97565b915062000cea8362000c97565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000d265762000d2562000ca1565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000d6d8262000c97565b915062000d7a8362000c97565b92508262000d8d5762000d8c62000d31565b5b828204905092915050565b600062000da58262000c97565b915062000db28362000c97565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000dea5762000de962000ca1565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000e3e60208362000df5565b915062000e4b8262000e06565b602082019050919050565b6000602082019050818103600083015262000e718162000e2f565b9050919050565b60008115159050919050565b62000e8f8162000e78565b82525050565b600060208201905062000eac600083018462000e84565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000eea601f8362000df5565b915062000ef78262000eb2565b602082019050919050565b6000602082019050818103600083015262000f1d8162000edb565b9050919050565b62000f2f8162000c97565b82525050565b600060208201905062000f4c600083018462000f24565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000f9a57607f821691505b6020821081141562000fb15762000fb062000f52565b5b50919050565b60805160a0516155426200103f600039600081816110d2015281816118e2015281816121e101528181612298015281816122c50152818161290901528181613a0d01528181613ac60152613af3015260008181610ec0015281816128b101528181613c6901528181613d4a01528181613d7101528181613e0d0152613e3401526155426000f3fe6080604052600436106103855760003560e01c80638da5cb5b116101d1578063bbc0c74211610102578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b14610d33578063f637434214610d5c578063f8b45b0514610d87578063fe72b27a14610db25761038c565b8063dd62ed3e14610c75578063e2f4560514610cb2578063e884f26014610cdd578063f11a24d314610d085761038c565b8063c876d0b9116100dc578063c876d0b914610bb7578063c8c8ebe414610be2578063d257b34f14610c0d578063d85ba06314610c4a5761038c565b8063bbc0c74214610b3a578063c024666814610b65578063c17b5b8c14610b8e5761038c565b80639ec22c0e1161016f578063a457c2d711610149578063a457c2d714610a58578063a4c82a0014610a95578063a9059cbb14610ac0578063b62496f514610afd5761038c565b80639ec22c0e146109d75780639fccce3214610a02578063a0d82dc514610a2d5761038c565b8063924de9b7116101ab578063924de9b71461092f57806395d89b41146109585780639a7a23d6146109835780639c3b4fdc146109ac5761038c565b80638da5cb5b146108ae5780638ea5220f146108d957806392136913146109045761038c565b806339509351116102b6578063715018a61161025457806375f0a8741161022357806375f0a874146108185780637bce5a04146108435780638095d5641461086e5780638a8c523c146108975761038c565b8063715018a614610784578063730c18881461079b578063751039fc146107c45780637571336a146107ef5761038c565b80634fbee193116102905780634fbee193146106b45780636a486a8e146106f15780636ddd17131461071c57806370a08231146107475761038c565b8063395093511461062157806349bd5a5e1461065e5780634a62bb65146106895761038c565b80631a8145bb1161032357806327c8f835116102fd57806327c8f835146105755780632c3e486c146105a05780632e82f1a0146105cb578063313ce567146105f65761038c565b80631a8145bb146104e25780631f3fed8f1461050d57806323b872dd146105385761038c565b80631694505e1161035f5780631694505e1461043657806318160ddd14610461578063184c16c51461048c578063199ffc72146104b75761038c565b806306fdde0314610391578063095ea7b3146103bc57806310d5de53146103f95761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103a6610def565b6040516103b39190613f7c565b60405180910390f35b3480156103c857600080fd5b506103e360048036038101906103de9190614037565b610e81565b6040516103f09190614092565b60405180910390f35b34801561040557600080fd5b50610420600480360381019061041b91906140ad565b610e9f565b60405161042d9190614092565b60405180910390f35b34801561044257600080fd5b5061044b610ebe565b6040516104589190614139565b60405180910390f35b34801561046d57600080fd5b50610476610ee2565b6040516104839190614163565b60405180910390f35b34801561049857600080fd5b506104a1610eec565b6040516104ae9190614163565b60405180910390f35b3480156104c357600080fd5b506104cc610ef2565b6040516104d99190614163565b60405180910390f35b3480156104ee57600080fd5b506104f7610ef8565b6040516105049190614163565b60405180910390f35b34801561051957600080fd5b50610522610efe565b60405161052f9190614163565b60405180910390f35b34801561054457600080fd5b5061055f600480360381019061055a919061417e565b610f04565b60405161056c9190614092565b60405180910390f35b34801561058157600080fd5b5061058a610ffc565b60405161059791906141e0565b60405180910390f35b3480156105ac57600080fd5b506105b5611002565b6040516105c29190614163565b60405180910390f35b3480156105d757600080fd5b506105e0611008565b6040516105ed9190614092565b60405180910390f35b34801561060257600080fd5b5061060b61101b565b6040516106189190614217565b60405180910390f35b34801561062d57600080fd5b5061064860048036038101906106439190614037565b611024565b6040516106559190614092565b60405180910390f35b34801561066a57600080fd5b506106736110d0565b60405161068091906141e0565b60405180910390f35b34801561069557600080fd5b5061069e6110f4565b6040516106ab9190614092565b60405180910390f35b3480156106c057600080fd5b506106db60048036038101906106d691906140ad565b611107565b6040516106e89190614092565b60405180910390f35b3480156106fd57600080fd5b5061070661115d565b6040516107139190614163565b60405180910390f35b34801561072857600080fd5b50610731611163565b60405161073e9190614092565b60405180910390f35b34801561075357600080fd5b5061076e600480360381019061076991906140ad565b611176565b60405161077b9190614163565b60405180910390f35b34801561079057600080fd5b506107996111be565b005b3480156107a757600080fd5b506107c260048036038101906107bd919061425e565b611246565b005b3480156107d057600080fd5b506107d9611386565b6040516107e69190614092565b60405180910390f35b3480156107fb57600080fd5b50610816600480360381019061081191906142b1565b611426565b005b34801561082457600080fd5b5061082d6114fd565b60405161083a91906141e0565b60405180910390f35b34801561084f57600080fd5b50610858611523565b6040516108659190614163565b60405180910390f35b34801561087a57600080fd5b50610895600480360381019061089091906142f1565b611529565b005b3480156108a357600080fd5b506108ac611628565b005b3480156108ba57600080fd5b506108c36116e3565b6040516108d091906141e0565b60405180910390f35b3480156108e557600080fd5b506108ee61170d565b6040516108fb91906141e0565b60405180910390f35b34801561091057600080fd5b50610919611733565b6040516109269190614163565b60405180910390f35b34801561093b57600080fd5b5061095660048036038101906109519190614344565b611739565b005b34801561096457600080fd5b5061096d6117d2565b60405161097a9190613f7c565b60405180910390f35b34801561098f57600080fd5b506109aa60048036038101906109a591906142b1565b611864565b005b3480156109b857600080fd5b506109c161197d565b6040516109ce9190614163565b60405180910390f35b3480156109e357600080fd5b506109ec611983565b6040516109f99190614163565b60405180910390f35b348015610a0e57600080fd5b50610a17611989565b604051610a249190614163565b60405180910390f35b348015610a3957600080fd5b50610a4261198f565b604051610a4f9190614163565b60405180910390f35b348015610a6457600080fd5b50610a7f6004803603810190610a7a9190614037565b611995565b604051610a8c9190614092565b60405180910390f35b348015610aa157600080fd5b50610aaa611a80565b604051610ab79190614163565b60405180910390f35b348015610acc57600080fd5b50610ae76004803603810190610ae29190614037565b611a86565b604051610af49190614092565b60405180910390f35b348015610b0957600080fd5b50610b246004803603810190610b1f91906140ad565b611aa4565b604051610b319190614092565b60405180910390f35b348015610b4657600080fd5b50610b4f611ac4565b604051610b5c9190614092565b60405180910390f35b348015610b7157600080fd5b50610b8c6004803603810190610b8791906142b1565b611ad7565b005b348015610b9a57600080fd5b50610bb56004803603810190610bb091906142f1565b611bfc565b005b348015610bc357600080fd5b50610bcc611cfb565b604051610bd99190614092565b60405180910390f35b348015610bee57600080fd5b50610bf7611d0e565b604051610c049190614163565b60405180910390f35b348015610c1957600080fd5b50610c346004803603810190610c2f9190614371565b611d14565b604051610c419190614092565b60405180910390f35b348015610c5657600080fd5b50610c5f611e69565b604051610c6c9190614163565b60405180910390f35b348015610c8157600080fd5b50610c9c6004803603810190610c97919061439e565b611e6f565b604051610ca99190614163565b60405180910390f35b348015610cbe57600080fd5b50610cc7611ef6565b604051610cd49190614163565b60405180910390f35b348015610ce957600080fd5b50610cf2611efc565b604051610cff9190614092565b60405180910390f35b348015610d1457600080fd5b50610d1d611f9c565b604051610d2a9190614163565b60405180910390f35b348015610d3f57600080fd5b50610d5a6004803603810190610d5591906140ad565b611fa2565b005b348015610d6857600080fd5b50610d7161209a565b604051610d7e9190614163565b60405180910390f35b348015610d9357600080fd5b50610d9c6120a0565b604051610da99190614163565b60405180910390f35b348015610dbe57600080fd5b50610dd96004803603810190610dd49190614371565b6120a6565b604051610de69190614092565b60405180910390f35b606060038054610dfe9061440d565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2a9061440d565b8015610e775780601f10610e4c57610100808354040283529160200191610e77565b820191906000526020600020905b815481529060010190602001808311610e5a57829003601f168201915b5050505050905090565b6000610e95610e8e61237e565b8484612386565b6001905092915050565b602080528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b600f5481565b600b5481565b601d5481565b601c5481565b6000610f11848484612551565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f5c61237e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd3906144b1565b60405180910390fd5b610ff085610fe861237e565b858403612386565b60019150509392505050565b61dead81565b600d5481565b600c60009054906101000a900460ff1681565b60006012905090565b60006110c661103161237e565b84846001600061103f61237e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110c19190614500565b612386565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601160009054906101000a900460ff1681565b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60185481565b601160029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111c661237e565b73ffffffffffffffffffffffffffffffffffffffff166111e46116e3565b73ffffffffffffffffffffffffffffffffffffffff161461123a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611231906145a2565b60405180910390fd5b61124460006132e9565b565b61124e61237e565b73ffffffffffffffffffffffffffffffffffffffff1661126c6116e3565b73ffffffffffffffffffffffffffffffffffffffff16146112c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b9906145a2565b60405180910390fd5b610258831015611307576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fe90614634565b60405180910390fd5b6103e8821115801561131a575060008210155b611359576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611350906146c6565b60405180910390fd5b82600d8190555081600b8190555080600c60006101000a81548160ff021916908315150217905550505050565b600061139061237e565b73ffffffffffffffffffffffffffffffffffffffff166113ae6116e3565b73ffffffffffffffffffffffffffffffffffffffff1614611404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fb906145a2565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b61142e61237e565b73ffffffffffffffffffffffffffffffffffffffff1661144c6116e3565b73ffffffffffffffffffffffffffffffffffffffff16146114a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611499906145a2565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b61153161237e565b73ffffffffffffffffffffffffffffffffffffffff1661154f6116e3565b73ffffffffffffffffffffffffffffffffffffffff16146115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159c906145a2565b60405180910390fd5b8260158190555081601681905550806017819055506017546016546015546115cd9190614500565b6115d79190614500565b60148190555060056014541115611623576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161a90614732565b60405180910390fd5b505050565b61163061237e565b73ffffffffffffffffffffffffffffffffffffffff1661164e6116e3565b73ffffffffffffffffffffffffffffffffffffffff16146116a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169b906145a2565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff02191690831515021790555042600e81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b61174161237e565b73ffffffffffffffffffffffffffffffffffffffff1661175f6116e3565b73ffffffffffffffffffffffffffffffffffffffff16146117b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ac906145a2565b60405180910390fd5b80601160026101000a81548160ff02191690831515021790555050565b6060600480546117e19061440d565b80601f016020809104026020016040519081016040528092919081815260200182805461180d9061440d565b801561185a5780601f1061182f5761010080835404028352916020019161185a565b820191906000526020600020905b81548152906001019060200180831161183d57829003601f168201915b5050505050905090565b61186c61237e565b73ffffffffffffffffffffffffffffffffffffffff1661188a6116e3565b73ffffffffffffffffffffffffffffffffffffffff16146118e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d7906145a2565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561196f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611966906147c4565b60405180910390fd5b61197982826133af565b5050565b60175481565b60105481565b601e5481565b601b5481565b600080600160006119a461237e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5890614856565b60405180910390fd5b611a75611a6c61237e565b85858403612386565b600191505092915050565b600e5481565b6000611a9a611a9361237e565b8484612551565b6001905092915050565b60216020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b611adf61237e565b73ffffffffffffffffffffffffffffffffffffffff16611afd6116e3565b73ffffffffffffffffffffffffffffffffffffffff1614611b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4a906145a2565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611bf09190614092565b60405180910390a25050565b611c0461237e565b73ffffffffffffffffffffffffffffffffffffffff16611c226116e3565b73ffffffffffffffffffffffffffffffffffffffff1614611c78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6f906145a2565b60405180910390fd5b8260198190555081601a8190555080601b81905550601b54601a54601954611ca09190614500565b611caa9190614500565b60188190555060056018541115611cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ced90614732565b60405180910390fd5b505050565b601360009054906101000a900460ff1681565b60085481565b6000611d1e61237e565b73ffffffffffffffffffffffffffffffffffffffff16611d3c6116e3565b73ffffffffffffffffffffffffffffffffffffffff1614611d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d89906145a2565b60405180910390fd5b620186a06001611da0610ee2565b611daa9190614876565b611db491906148ff565b821015611df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ded906149a2565b60405180910390fd5b6103e86005611e03610ee2565b611e0d9190614876565b611e1791906148ff565b821115611e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5090614a34565b60405180910390fd5b8160098190555060019050919050565b60145481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b6000611f0661237e565b73ffffffffffffffffffffffffffffffffffffffff16611f246116e3565b73ffffffffffffffffffffffffffffffffffffffff1614611f7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f71906145a2565b60405180910390fd5b6000601360006101000a81548160ff0219169083151502179055506001905090565b60165481565b611faa61237e565b73ffffffffffffffffffffffffffffffffffffffff16611fc86116e3565b73ffffffffffffffffffffffffffffffffffffffff161461201e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612015906145a2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561208e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208590614ac6565b60405180910390fd5b612097816132e9565b50565b601a5481565b600a5481565b60006120b061237e565b73ffffffffffffffffffffffffffffffffffffffff166120ce6116e3565b73ffffffffffffffffffffffffffffffffffffffff1614612124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211b906145a2565b60405180910390fd5b600f546010546121349190614500565b4211612175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216c90614b32565b60405180910390fd5b6103e88211156121ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b190614bc4565b60405180910390fd5b4260108190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040161221c91906141e0565b602060405180830381865afa158015612239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225d9190614bf9565b9050600061228861271061227a868561345090919063ffffffff16565b61346690919063ffffffff16565b905060008111156122c1576122c07f000000000000000000000000000000000000000000000000000000000000000061dead8361347c565b5b60007f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561232e57600080fd5b505af1158015612342573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ed90614c98565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245d90614d2a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125449190614163565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b890614dbc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262890614e4e565b60405180910390fd5b600081141561264b576126468383600061347c565b6132e4565b601160009054906101000a900460ff1615612d0e576126686116e3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126d657506126a66116e3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561270f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612749575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127625750600560149054906101000a900460ff16155b15612d0d57601160019054906101000a900460ff1661285c57601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061281c5750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61285b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285290614eba565b60405180910390fd5b5b601360009054906101000a900460ff1615612a24576128796116e3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561290057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561295857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612a235743601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106129de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d590614f72565b60405180910390fd5b43601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ac75750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b6e57600854811115612b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0890615004565b60405180910390fd5b600a54612b1d83611176565b82612b289190614500565b1115612b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6090615070565b60405180910390fd5b612d0c565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c115750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c6057600854811115612c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5290615102565b60405180910390fd5b612d0b565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d0a57600a54612cbd83611176565b82612cc89190614500565b1115612d09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0090615070565b60405180910390fd5b5b5b5b5b5b6000612d1930611176565b905060006009548210159050808015612d3e5750601160029054906101000a900460ff165b8015612d575750600560149054906101000a900460ff16155b8015612dad5750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e035750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e595750601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e9d576001600560146101000a81548160ff021916908315150217905550612e816136fd565b6000600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff16158015612f035750602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015612f1b5750600c60009054906101000a900460ff165b8015612f365750600d54600e54612f329190614500565b4210155b8015612f8c5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f9b57612f996139e4565b505b6000600560149054906101000a900460ff16159050601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130515750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561305b57600090505b600081156132d457602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130be57506000601854115b1561318b576130eb60646130dd6018548861345090919063ffffffff16565b61346690919063ffffffff16565b9050601854601a54826130fe9190614876565b61310891906148ff565b601d60008282546131199190614500565b92505081905550601854601b54826131319190614876565b61313b91906148ff565b601e600082825461314c9190614500565b92505081905550601854601954826131649190614876565b61316e91906148ff565b601c600082825461317f9190614500565b925050819055506132b0565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131e657506000601454115b156132af5761321360646132056014548861345090919063ffffffff16565b61346690919063ffffffff16565b9050601454601654826132269190614876565b61323091906148ff565b601d60008282546132419190614500565b92505081905550601454601754826132599190614876565b61326391906148ff565b601e60008282546132749190614500565b925050819055506014546015548261328c9190614876565b61329691906148ff565b601c60008282546132a79190614500565b925050819055505b5b60008111156132c5576132c487308361347c565b5b80856132d19190615122565b94505b6132df87878761347c565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000818361345e9190614876565b905092915050565b6000818361347491906148ff565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156134ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134e390614dbc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561355c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161355390614e4e565b60405180910390fd5b613567838383613baa565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156135ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135e4906151c8565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546136809190614500565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136e49190614163565b60405180910390a36136f7848484613baf565b50505050565b600061370830611176565b90506000601e54601c54601d5461371f9190614500565b6137299190614500565b905060008083148061373b5750600082145b15613748575050506139e2565b60146009546137579190614876565b83111561377057601460095461376d9190614876565b92505b6000600283601d54866137839190614876565b61378d91906148ff565b61379791906148ff565b905060006137ae8286613bb490919063ffffffff16565b905060004790506137be82613bca565b60006137d38247613bb490919063ffffffff16565b905060006137fe876137f0601c548561345090919063ffffffff16565b61346690919063ffffffff16565b905060006138298861381b601e548661345090919063ffffffff16565b61346690919063ffffffff16565b9050600081838561383a9190615122565b6138449190615122565b90506000601d819055506000601c819055506000601e81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516138a490615219565b60006040518083038185875af1925050503d80600081146138e1576040519150601f19603f3d011682016040523d82523d6000602084013e6138e6565b606091505b5050809850506000871180156138fc5750600081115b156139495761390b8782613e07565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601d546040516139409392919061522e565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161398f90615219565b60006040518083038185875af1925050503d80600081146139cc576040519150601f19603f3d011682016040523d82523d6000602084013e6139d1565b606091505b505080985050505050505050505050505b565b600042600e8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401613a4891906141e0565b602060405180830381865afa158015613a65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a899190614bf9565b90506000613ab6612710613aa8600b548561345090919063ffffffff16565b61346690919063ffffffff16565b90506000811115613aef57613aee7f000000000000000000000000000000000000000000000000000000000000000061dead8361347c565b5b60007f000000000000000000000000000000000000000000000000000000000000000090508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613b5c57600080fd5b505af1158015613b70573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b505050565b505050565b60008183613bc29190615122565b905092915050565b6000600267ffffffffffffffff811115613be757613be6615265565b5b604051908082528060200260200182016040528015613c155781602001602082028036833780820191505090505b5090503081600081518110613c2d57613c2c615294565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cf691906152d8565b81600181518110613d0a57613d09615294565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d6f307f000000000000000000000000000000000000000000000000000000000000000084612386565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613dd19594939291906153fe565b600060405180830381600087803b158015613deb57600080fd5b505af1158015613dff573d6000803e3d6000fd5b505050505050565b613e32307f000000000000000000000000000000000000000000000000000000000000000084612386565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613e9996959493929190615458565b60606040518083038185885af1158015613eb7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613edc91906154b9565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613f1d578082015181840152602081019050613f02565b83811115613f2c576000848401525b50505050565b6000601f19601f8301169050919050565b6000613f4e82613ee3565b613f588185613eee565b9350613f68818560208601613eff565b613f7181613f32565b840191505092915050565b60006020820190508181036000830152613f968184613f43565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613fce82613fa3565b9050919050565b613fde81613fc3565b8114613fe957600080fd5b50565b600081359050613ffb81613fd5565b92915050565b6000819050919050565b61401481614001565b811461401f57600080fd5b50565b6000813590506140318161400b565b92915050565b6000806040838503121561404e5761404d613f9e565b5b600061405c85828601613fec565b925050602061406d85828601614022565b9150509250929050565b60008115159050919050565b61408c81614077565b82525050565b60006020820190506140a76000830184614083565b92915050565b6000602082840312156140c3576140c2613f9e565b5b60006140d184828501613fec565b91505092915050565b6000819050919050565b60006140ff6140fa6140f584613fa3565b6140da565b613fa3565b9050919050565b6000614111826140e4565b9050919050565b600061412382614106565b9050919050565b61413381614118565b82525050565b600060208201905061414e600083018461412a565b92915050565b61415d81614001565b82525050565b60006020820190506141786000830184614154565b92915050565b60008060006060848603121561419757614196613f9e565b5b60006141a586828701613fec565b93505060206141b686828701613fec565b92505060406141c786828701614022565b9150509250925092565b6141da81613fc3565b82525050565b60006020820190506141f560008301846141d1565b92915050565b600060ff82169050919050565b614211816141fb565b82525050565b600060208201905061422c6000830184614208565b92915050565b61423b81614077565b811461424657600080fd5b50565b60008135905061425881614232565b92915050565b60008060006060848603121561427757614276613f9e565b5b600061428586828701614022565b935050602061429686828701614022565b92505060406142a786828701614249565b9150509250925092565b600080604083850312156142c8576142c7613f9e565b5b60006142d685828601613fec565b92505060206142e785828601614249565b9150509250929050565b60008060006060848603121561430a57614309613f9e565b5b600061431886828701614022565b935050602061432986828701614022565b925050604061433a86828701614022565b9150509250925092565b60006020828403121561435a57614359613f9e565b5b600061436884828501614249565b91505092915050565b60006020828403121561438757614386613f9e565b5b600061439584828501614022565b91505092915050565b600080604083850312156143b5576143b4613f9e565b5b60006143c385828601613fec565b92505060206143d485828601613fec565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061442557607f821691505b60208210811415614439576144386143de565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061449b602883613eee565b91506144a68261443f565b604082019050919050565b600060208201905081810360008301526144ca8161448e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061450b82614001565b915061451683614001565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561454b5761454a6144d1565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061458c602083613eee565b915061459782614556565b602082019050919050565b600060208201905081810360008301526145bb8161457f565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b600061461e603383613eee565b9150614629826145c2565b604082019050919050565b6000602082019050818103600083015261464d81614611565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b60006146b0603083613eee565b91506146bb82614654565b604082019050919050565b600060208201905081810360008301526146df816146a3565b9050919050565b7f4d757374206b6565702066656573206174203525206f72206c65737300000000600082015250565b600061471c601c83613eee565b9150614727826146e6565b602082019050919050565b6000602082019050818103600083015261474b8161470f565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006147ae603983613eee565b91506147b982614752565b604082019050919050565b600060208201905081810360008301526147dd816147a1565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614840602583613eee565b915061484b826147e4565b604082019050919050565b6000602082019050818103600083015261486f81614833565b9050919050565b600061488182614001565b915061488c83614001565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156148c5576148c46144d1565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061490a82614001565b915061491583614001565b925082614925576149246148d0565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061498c603583613eee565b915061499782614930565b604082019050919050565b600060208201905081810360008301526149bb8161497f565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614a1e603483613eee565b9150614a29826149c2565b604082019050919050565b60006020820190508181036000830152614a4d81614a11565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614ab0602683613eee565b9150614abb82614a54565b604082019050919050565b60006020820190508181036000830152614adf81614aa3565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614b1c602083613eee565b9150614b2782614ae6565b602082019050919050565b60006020820190508181036000830152614b4b81614b0f565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000614bae602a83613eee565b9150614bb982614b52565b604082019050919050565b60006020820190508181036000830152614bdd81614ba1565b9050919050565b600081519050614bf38161400b565b92915050565b600060208284031215614c0f57614c0e613f9e565b5b6000614c1d84828501614be4565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614c82602483613eee565b9150614c8d82614c26565b604082019050919050565b60006020820190508181036000830152614cb181614c75565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d14602283613eee565b9150614d1f82614cb8565b604082019050919050565b60006020820190508181036000830152614d4381614d07565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614da6602583613eee565b9150614db182614d4a565b604082019050919050565b60006020820190508181036000830152614dd581614d99565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614e38602383613eee565b9150614e4382614ddc565b604082019050919050565b60006020820190508181036000830152614e6781614e2b565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614ea4601683613eee565b9150614eaf82614e6e565b602082019050919050565b60006020820190508181036000830152614ed381614e97565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614f5c604983613eee565b9150614f6782614eda565b606082019050919050565b60006020820190508181036000830152614f8b81614f4f565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614fee603583613eee565b9150614ff982614f92565b604082019050919050565b6000602082019050818103600083015261501d81614fe1565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061505a601383613eee565b915061506582615024565b602082019050919050565b600060208201905081810360008301526150898161504d565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006150ec603683613eee565b91506150f782615090565b604082019050919050565b6000602082019050818103600083015261511b816150df565b9050919050565b600061512d82614001565b915061513883614001565b92508282101561514b5761514a6144d1565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006151b2602683613eee565b91506151bd82615156565b604082019050919050565b600060208201905081810360008301526151e1816151a5565b9050919050565b600081905092915050565b50565b60006152036000836151e8565b915061520e826151f3565b600082019050919050565b6000615224826151f6565b9150819050919050565b60006060820190506152436000830186614154565b6152506020830185614154565b61525d6040830184614154565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506152d281613fd5565b92915050565b6000602082840312156152ee576152ed613f9e565b5b60006152fc848285016152c3565b91505092915050565b6000819050919050565b600061532a61532561532084615305565b6140da565b614001565b9050919050565b61533a8161530f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61537581613fc3565b82525050565b6000615387838361536c565b60208301905092915050565b6000602082019050919050565b60006153ab82615340565b6153b5818561534b565b93506153c08361535c565b8060005b838110156153f15781516153d8888261537b565b97506153e383615393565b9250506001810190506153c4565b5085935050505092915050565b600060a0820190506154136000830188614154565b6154206020830187615331565b818103604083015261543281866153a0565b905061544160608301856141d1565b61544e6080830184614154565b9695505050505050565b600060c08201905061546d60008301896141d1565b61547a6020830188614154565b6154876040830187615331565b6154946060830186615331565b6154a160808301856141d1565b6154ae60a0830184614154565b979650505050505050565b6000806000606084860312156154d2576154d1613f9e565b5b60006154e086828701614be4565b93505060206154f186828701614be4565b925050604061550286828701614be4565b915050925092509256fea26469706673582212206fc21dbe800625fa53302c6e12c0d5cad8929815fb924467bea99ab52ce1112364736f6c634300080a0033
Deployed Bytecode
0x6080604052600436106103855760003560e01c80638da5cb5b116101d1578063bbc0c74211610102578063dd62ed3e116100a0578063f2fde38b1161006f578063f2fde38b14610d33578063f637434214610d5c578063f8b45b0514610d87578063fe72b27a14610db25761038c565b8063dd62ed3e14610c75578063e2f4560514610cb2578063e884f26014610cdd578063f11a24d314610d085761038c565b8063c876d0b9116100dc578063c876d0b914610bb7578063c8c8ebe414610be2578063d257b34f14610c0d578063d85ba06314610c4a5761038c565b8063bbc0c74214610b3a578063c024666814610b65578063c17b5b8c14610b8e5761038c565b80639ec22c0e1161016f578063a457c2d711610149578063a457c2d714610a58578063a4c82a0014610a95578063a9059cbb14610ac0578063b62496f514610afd5761038c565b80639ec22c0e146109d75780639fccce3214610a02578063a0d82dc514610a2d5761038c565b8063924de9b7116101ab578063924de9b71461092f57806395d89b41146109585780639a7a23d6146109835780639c3b4fdc146109ac5761038c565b80638da5cb5b146108ae5780638ea5220f146108d957806392136913146109045761038c565b806339509351116102b6578063715018a61161025457806375f0a8741161022357806375f0a874146108185780637bce5a04146108435780638095d5641461086e5780638a8c523c146108975761038c565b8063715018a614610784578063730c18881461079b578063751039fc146107c45780637571336a146107ef5761038c565b80634fbee193116102905780634fbee193146106b45780636a486a8e146106f15780636ddd17131461071c57806370a08231146107475761038c565b8063395093511461062157806349bd5a5e1461065e5780634a62bb65146106895761038c565b80631a8145bb1161032357806327c8f835116102fd57806327c8f835146105755780632c3e486c146105a05780632e82f1a0146105cb578063313ce567146105f65761038c565b80631a8145bb146104e25780631f3fed8f1461050d57806323b872dd146105385761038c565b80631694505e1161035f5780631694505e1461043657806318160ddd14610461578063184c16c51461048c578063199ffc72146104b75761038c565b806306fdde0314610391578063095ea7b3146103bc57806310d5de53146103f95761038c565b3661038c57005b600080fd5b34801561039d57600080fd5b506103a6610def565b6040516103b39190613f7c565b60405180910390f35b3480156103c857600080fd5b506103e360048036038101906103de9190614037565b610e81565b6040516103f09190614092565b60405180910390f35b34801561040557600080fd5b50610420600480360381019061041b91906140ad565b610e9f565b60405161042d9190614092565b60405180910390f35b34801561044257600080fd5b5061044b610ebe565b6040516104589190614139565b60405180910390f35b34801561046d57600080fd5b50610476610ee2565b6040516104839190614163565b60405180910390f35b34801561049857600080fd5b506104a1610eec565b6040516104ae9190614163565b60405180910390f35b3480156104c357600080fd5b506104cc610ef2565b6040516104d99190614163565b60405180910390f35b3480156104ee57600080fd5b506104f7610ef8565b6040516105049190614163565b60405180910390f35b34801561051957600080fd5b50610522610efe565b60405161052f9190614163565b60405180910390f35b34801561054457600080fd5b5061055f600480360381019061055a919061417e565b610f04565b60405161056c9190614092565b60405180910390f35b34801561058157600080fd5b5061058a610ffc565b60405161059791906141e0565b60405180910390f35b3480156105ac57600080fd5b506105b5611002565b6040516105c29190614163565b60405180910390f35b3480156105d757600080fd5b506105e0611008565b6040516105ed9190614092565b60405180910390f35b34801561060257600080fd5b5061060b61101b565b6040516106189190614217565b60405180910390f35b34801561062d57600080fd5b5061064860048036038101906106439190614037565b611024565b6040516106559190614092565b60405180910390f35b34801561066a57600080fd5b506106736110d0565b60405161068091906141e0565b60405180910390f35b34801561069557600080fd5b5061069e6110f4565b6040516106ab9190614092565b60405180910390f35b3480156106c057600080fd5b506106db60048036038101906106d691906140ad565b611107565b6040516106e89190614092565b60405180910390f35b3480156106fd57600080fd5b5061070661115d565b6040516107139190614163565b60405180910390f35b34801561072857600080fd5b50610731611163565b60405161073e9190614092565b60405180910390f35b34801561075357600080fd5b5061076e600480360381019061076991906140ad565b611176565b60405161077b9190614163565b60405180910390f35b34801561079057600080fd5b506107996111be565b005b3480156107a757600080fd5b506107c260048036038101906107bd919061425e565b611246565b005b3480156107d057600080fd5b506107d9611386565b6040516107e69190614092565b60405180910390f35b3480156107fb57600080fd5b50610816600480360381019061081191906142b1565b611426565b005b34801561082457600080fd5b5061082d6114fd565b60405161083a91906141e0565b60405180910390f35b34801561084f57600080fd5b50610858611523565b6040516108659190614163565b60405180910390f35b34801561087a57600080fd5b50610895600480360381019061089091906142f1565b611529565b005b3480156108a357600080fd5b506108ac611628565b005b3480156108ba57600080fd5b506108c36116e3565b6040516108d091906141e0565b60405180910390f35b3480156108e557600080fd5b506108ee61170d565b6040516108fb91906141e0565b60405180910390f35b34801561091057600080fd5b50610919611733565b6040516109269190614163565b60405180910390f35b34801561093b57600080fd5b5061095660048036038101906109519190614344565b611739565b005b34801561096457600080fd5b5061096d6117d2565b60405161097a9190613f7c565b60405180910390f35b34801561098f57600080fd5b506109aa60048036038101906109a591906142b1565b611864565b005b3480156109b857600080fd5b506109c161197d565b6040516109ce9190614163565b60405180910390f35b3480156109e357600080fd5b506109ec611983565b6040516109f99190614163565b60405180910390f35b348015610a0e57600080fd5b50610a17611989565b604051610a249190614163565b60405180910390f35b348015610a3957600080fd5b50610a4261198f565b604051610a4f9190614163565b60405180910390f35b348015610a6457600080fd5b50610a7f6004803603810190610a7a9190614037565b611995565b604051610a8c9190614092565b60405180910390f35b348015610aa157600080fd5b50610aaa611a80565b604051610ab79190614163565b60405180910390f35b348015610acc57600080fd5b50610ae76004803603810190610ae29190614037565b611a86565b604051610af49190614092565b60405180910390f35b348015610b0957600080fd5b50610b246004803603810190610b1f91906140ad565b611aa4565b604051610b319190614092565b60405180910390f35b348015610b4657600080fd5b50610b4f611ac4565b604051610b5c9190614092565b60405180910390f35b348015610b7157600080fd5b50610b8c6004803603810190610b8791906142b1565b611ad7565b005b348015610b9a57600080fd5b50610bb56004803603810190610bb091906142f1565b611bfc565b005b348015610bc357600080fd5b50610bcc611cfb565b604051610bd99190614092565b60405180910390f35b348015610bee57600080fd5b50610bf7611d0e565b604051610c049190614163565b60405180910390f35b348015610c1957600080fd5b50610c346004803603810190610c2f9190614371565b611d14565b604051610c419190614092565b60405180910390f35b348015610c5657600080fd5b50610c5f611e69565b604051610c6c9190614163565b60405180910390f35b348015610c8157600080fd5b50610c9c6004803603810190610c97919061439e565b611e6f565b604051610ca99190614163565b60405180910390f35b348015610cbe57600080fd5b50610cc7611ef6565b604051610cd49190614163565b60405180910390f35b348015610ce957600080fd5b50610cf2611efc565b604051610cff9190614092565b60405180910390f35b348015610d1457600080fd5b50610d1d611f9c565b604051610d2a9190614163565b60405180910390f35b348015610d3f57600080fd5b50610d5a6004803603810190610d5591906140ad565b611fa2565b005b348015610d6857600080fd5b50610d7161209a565b604051610d7e9190614163565b60405180910390f35b348015610d9357600080fd5b50610d9c6120a0565b604051610da99190614163565b60405180910390f35b348015610dbe57600080fd5b50610dd96004803603810190610dd49190614371565b6120a6565b604051610de69190614092565b60405180910390f35b606060038054610dfe9061440d565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2a9061440d565b8015610e775780601f10610e4c57610100808354040283529160200191610e77565b820191906000526020600020905b815481529060010190602001808311610e5a57829003601f168201915b5050505050905090565b6000610e95610e8e61237e565b8484612386565b6001905092915050565b602080528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b600f5481565b600b5481565b601d5481565b601c5481565b6000610f11848484612551565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f5c61237e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd3906144b1565b60405180910390fd5b610ff085610fe861237e565b858403612386565b60019150509392505050565b61dead81565b600d5481565b600c60009054906101000a900460ff1681565b60006012905090565b60006110c661103161237e565b84846001600061103f61237e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110c19190614500565b612386565b6001905092915050565b7f000000000000000000000000277e1143245404984832b0e95905f2d5e8c99b6681565b601160009054906101000a900460ff1681565b6000601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60185481565b601160029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111c661237e565b73ffffffffffffffffffffffffffffffffffffffff166111e46116e3565b73ffffffffffffffffffffffffffffffffffffffff161461123a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611231906145a2565b60405180910390fd5b61124460006132e9565b565b61124e61237e565b73ffffffffffffffffffffffffffffffffffffffff1661126c6116e3565b73ffffffffffffffffffffffffffffffffffffffff16146112c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b9906145a2565b60405180910390fd5b610258831015611307576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fe90614634565b60405180910390fd5b6103e8821115801561131a575060008210155b611359576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611350906146c6565b60405180910390fd5b82600d8190555081600b8190555080600c60006101000a81548160ff021916908315150217905550505050565b600061139061237e565b73ffffffffffffffffffffffffffffffffffffffff166113ae6116e3565b73ffffffffffffffffffffffffffffffffffffffff1614611404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fb906145a2565b60405180910390fd5b6000601160006101000a81548160ff0219169083151502179055506001905090565b61142e61237e565b73ffffffffffffffffffffffffffffffffffffffff1661144c6116e3565b73ffffffffffffffffffffffffffffffffffffffff16146114a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611499906145a2565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b61153161237e565b73ffffffffffffffffffffffffffffffffffffffff1661154f6116e3565b73ffffffffffffffffffffffffffffffffffffffff16146115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159c906145a2565b60405180910390fd5b8260158190555081601681905550806017819055506017546016546015546115cd9190614500565b6115d79190614500565b60148190555060056014541115611623576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161a90614732565b60405180910390fd5b505050565b61163061237e565b73ffffffffffffffffffffffffffffffffffffffff1661164e6116e3565b73ffffffffffffffffffffffffffffffffffffffff16146116a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169b906145a2565b60405180910390fd5b6001601160016101000a81548160ff0219169083151502179055506001601160026101000a81548160ff02191690831515021790555042600e81905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b61174161237e565b73ffffffffffffffffffffffffffffffffffffffff1661175f6116e3565b73ffffffffffffffffffffffffffffffffffffffff16146117b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ac906145a2565b60405180910390fd5b80601160026101000a81548160ff02191690831515021790555050565b6060600480546117e19061440d565b80601f016020809104026020016040519081016040528092919081815260200182805461180d9061440d565b801561185a5780601f1061182f5761010080835404028352916020019161185a565b820191906000526020600020905b81548152906001019060200180831161183d57829003601f168201915b5050505050905090565b61186c61237e565b73ffffffffffffffffffffffffffffffffffffffff1661188a6116e3565b73ffffffffffffffffffffffffffffffffffffffff16146118e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d7906145a2565b60405180910390fd5b7f000000000000000000000000277e1143245404984832b0e95905f2d5e8c99b6673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561196f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611966906147c4565b60405180910390fd5b61197982826133af565b5050565b60175481565b60105481565b601e5481565b601b5481565b600080600160006119a461237e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5890614856565b60405180910390fd5b611a75611a6c61237e565b85858403612386565b600191505092915050565b600e5481565b6000611a9a611a9361237e565b8484612551565b6001905092915050565b60216020528060005260406000206000915054906101000a900460ff1681565b601160019054906101000a900460ff1681565b611adf61237e565b73ffffffffffffffffffffffffffffffffffffffff16611afd6116e3565b73ffffffffffffffffffffffffffffffffffffffff1614611b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4a906145a2565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611bf09190614092565b60405180910390a25050565b611c0461237e565b73ffffffffffffffffffffffffffffffffffffffff16611c226116e3565b73ffffffffffffffffffffffffffffffffffffffff1614611c78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6f906145a2565b60405180910390fd5b8260198190555081601a8190555080601b81905550601b54601a54601954611ca09190614500565b611caa9190614500565b60188190555060056018541115611cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ced90614732565b60405180910390fd5b505050565b601360009054906101000a900460ff1681565b60085481565b6000611d1e61237e565b73ffffffffffffffffffffffffffffffffffffffff16611d3c6116e3565b73ffffffffffffffffffffffffffffffffffffffff1614611d92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d89906145a2565b60405180910390fd5b620186a06001611da0610ee2565b611daa9190614876565b611db491906148ff565b821015611df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ded906149a2565b60405180910390fd5b6103e86005611e03610ee2565b611e0d9190614876565b611e1791906148ff565b821115611e59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5090614a34565b60405180910390fd5b8160098190555060019050919050565b60145481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b6000611f0661237e565b73ffffffffffffffffffffffffffffffffffffffff16611f246116e3565b73ffffffffffffffffffffffffffffffffffffffff1614611f7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f71906145a2565b60405180910390fd5b6000601360006101000a81548160ff0219169083151502179055506001905090565b60165481565b611faa61237e565b73ffffffffffffffffffffffffffffffffffffffff16611fc86116e3565b73ffffffffffffffffffffffffffffffffffffffff161461201e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612015906145a2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561208e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208590614ac6565b60405180910390fd5b612097816132e9565b50565b601a5481565b600a5481565b60006120b061237e565b73ffffffffffffffffffffffffffffffffffffffff166120ce6116e3565b73ffffffffffffffffffffffffffffffffffffffff1614612124576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211b906145a2565b60405180910390fd5b600f546010546121349190614500565b4211612175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216c90614b32565b60405180910390fd5b6103e88211156121ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b190614bc4565b60405180910390fd5b4260108190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f000000000000000000000000277e1143245404984832b0e95905f2d5e8c99b666040518263ffffffff1660e01b815260040161221c91906141e0565b602060405180830381865afa158015612239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225d9190614bf9565b9050600061228861271061227a868561345090919063ffffffff16565b61346690919063ffffffff16565b905060008111156122c1576122c07f000000000000000000000000277e1143245404984832b0e95905f2d5e8c99b6661dead8361347c565b5b60007f000000000000000000000000277e1143245404984832b0e95905f2d5e8c99b6690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561232e57600080fd5b505af1158015612342573d6000803e3d6000fd5b505050507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb60405160405180910390a160019350505050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ed90614c98565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245d90614d2a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125449190614163565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b890614dbc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262890614e4e565b60405180910390fd5b600081141561264b576126468383600061347c565b6132e4565b601160009054906101000a900460ff1615612d0e576126686116e3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126d657506126a66116e3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561270f5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612749575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127625750600560149054906101000a900460ff16155b15612d0d57601160019054906101000a900460ff1661285c57601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061281c5750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61285b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285290614eba565b60405180910390fd5b5b601360009054906101000a900460ff1615612a24576128796116e3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561290057507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561295857507f000000000000000000000000277e1143245404984832b0e95905f2d5e8c99b6673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612a235743601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106129de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d590614f72565b60405180910390fd5b43601260003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ac75750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b6e57600854811115612b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0890615004565b60405180910390fd5b600a54612b1d83611176565b82612b289190614500565b1115612b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6090615070565b60405180910390fd5b612d0c565b602160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c115750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612c6057600854811115612c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5290615102565b60405180910390fd5b612d0b565b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d0a57600a54612cbd83611176565b82612cc89190614500565b1115612d09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0090615070565b60405180910390fd5b5b5b5b5b5b6000612d1930611176565b905060006009548210159050808015612d3e5750601160029054906101000a900460ff165b8015612d575750600560149054906101000a900460ff16155b8015612dad5750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e035750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e595750601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e9d576001600560146101000a81548160ff021916908315150217905550612e816136fd565b6000600560146101000a81548160ff0219169083151502179055505b600560149054906101000a900460ff16158015612f035750602160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015612f1b5750600c60009054906101000a900460ff165b8015612f365750600d54600e54612f329190614500565b4210155b8015612f8c5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f9b57612f996139e4565b505b6000600560149054906101000a900460ff16159050601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130515750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561305b57600090505b600081156132d457602160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130be57506000601854115b1561318b576130eb60646130dd6018548861345090919063ffffffff16565b61346690919063ffffffff16565b9050601854601a54826130fe9190614876565b61310891906148ff565b601d60008282546131199190614500565b92505081905550601854601b54826131319190614876565b61313b91906148ff565b601e600082825461314c9190614500565b92505081905550601854601954826131649190614876565b61316e91906148ff565b601c600082825461317f9190614500565b925050819055506132b0565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131e657506000601454115b156132af5761321360646132056014548861345090919063ffffffff16565b61346690919063ffffffff16565b9050601454601654826132269190614876565b61323091906148ff565b601d60008282546132419190614500565b92505081905550601454601754826132599190614876565b61326391906148ff565b601e60008282546132749190614500565b925050819055506014546015548261328c9190614876565b61329691906148ff565b601c60008282546132a79190614500565b925050819055505b5b60008111156132c5576132c487308361347c565b5b80856132d19190615122565b94505b6132df87878761347c565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000818361345e9190614876565b905092915050565b6000818361347491906148ff565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156134ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134e390614dbc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561355c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161355390614e4e565b60405180910390fd5b613567838383613baa565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156135ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135e4906151c8565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546136809190614500565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516136e49190614163565b60405180910390a36136f7848484613baf565b50505050565b600061370830611176565b90506000601e54601c54601d5461371f9190614500565b6137299190614500565b905060008083148061373b5750600082145b15613748575050506139e2565b60146009546137579190614876565b83111561377057601460095461376d9190614876565b92505b6000600283601d54866137839190614876565b61378d91906148ff565b61379791906148ff565b905060006137ae8286613bb490919063ffffffff16565b905060004790506137be82613bca565b60006137d38247613bb490919063ffffffff16565b905060006137fe876137f0601c548561345090919063ffffffff16565b61346690919063ffffffff16565b905060006138298861381b601e548661345090919063ffffffff16565b61346690919063ffffffff16565b9050600081838561383a9190615122565b6138449190615122565b90506000601d819055506000601c819055506000601e81905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516138a490615219565b60006040518083038185875af1925050503d80600081146138e1576040519150601f19603f3d011682016040523d82523d6000602084013e6138e6565b606091505b5050809850506000871180156138fc5750600081115b156139495761390b8782613e07565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618682601d546040516139409392919061522e565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161398f90615219565b60006040518083038185875af1925050503d80600081146139cc576040519150601f19603f3d011682016040523d82523d6000602084013e6139d1565b606091505b505080985050505050505050505050505b565b600042600e8190555060003073ffffffffffffffffffffffffffffffffffffffff166370a082317f000000000000000000000000277e1143245404984832b0e95905f2d5e8c99b666040518263ffffffff1660e01b8152600401613a4891906141e0565b602060405180830381865afa158015613a65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a899190614bf9565b90506000613ab6612710613aa8600b548561345090919063ffffffff16565b61346690919063ffffffff16565b90506000811115613aef57613aee7f000000000000000000000000277e1143245404984832b0e95905f2d5e8c99b6661dead8361347c565b5b60007f000000000000000000000000277e1143245404984832b0e95905f2d5e8c99b6690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613b5c57600080fd5b505af1158015613b70573d6000803e3d6000fd5b505050507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d60405160405180910390a16001935050505090565b505050565b505050565b60008183613bc29190615122565b905092915050565b6000600267ffffffffffffffff811115613be757613be6615265565b5b604051908082528060200260200182016040528015613c155781602001602082028036833780820191505090505b5090503081600081518110613c2d57613c2c615294565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cf691906152d8565b81600181518110613d0a57613d09615294565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d6f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612386565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613dd19594939291906153fe565b600060405180830381600087803b158015613deb57600080fd5b505af1158015613dff573d6000803e3d6000fd5b505050505050565b613e32307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612386565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401613e9996959493929190615458565b60606040518083038185885af1158015613eb7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613edc91906154b9565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613f1d578082015181840152602081019050613f02565b83811115613f2c576000848401525b50505050565b6000601f19601f8301169050919050565b6000613f4e82613ee3565b613f588185613eee565b9350613f68818560208601613eff565b613f7181613f32565b840191505092915050565b60006020820190508181036000830152613f968184613f43565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613fce82613fa3565b9050919050565b613fde81613fc3565b8114613fe957600080fd5b50565b600081359050613ffb81613fd5565b92915050565b6000819050919050565b61401481614001565b811461401f57600080fd5b50565b6000813590506140318161400b565b92915050565b6000806040838503121561404e5761404d613f9e565b5b600061405c85828601613fec565b925050602061406d85828601614022565b9150509250929050565b60008115159050919050565b61408c81614077565b82525050565b60006020820190506140a76000830184614083565b92915050565b6000602082840312156140c3576140c2613f9e565b5b60006140d184828501613fec565b91505092915050565b6000819050919050565b60006140ff6140fa6140f584613fa3565b6140da565b613fa3565b9050919050565b6000614111826140e4565b9050919050565b600061412382614106565b9050919050565b61413381614118565b82525050565b600060208201905061414e600083018461412a565b92915050565b61415d81614001565b82525050565b60006020820190506141786000830184614154565b92915050565b60008060006060848603121561419757614196613f9e565b5b60006141a586828701613fec565b93505060206141b686828701613fec565b92505060406141c786828701614022565b9150509250925092565b6141da81613fc3565b82525050565b60006020820190506141f560008301846141d1565b92915050565b600060ff82169050919050565b614211816141fb565b82525050565b600060208201905061422c6000830184614208565b92915050565b61423b81614077565b811461424657600080fd5b50565b60008135905061425881614232565b92915050565b60008060006060848603121561427757614276613f9e565b5b600061428586828701614022565b935050602061429686828701614022565b92505060406142a786828701614249565b9150509250925092565b600080604083850312156142c8576142c7613f9e565b5b60006142d685828601613fec565b92505060206142e785828601614249565b9150509250929050565b60008060006060848603121561430a57614309613f9e565b5b600061431886828701614022565b935050602061432986828701614022565b925050604061433a86828701614022565b9150509250925092565b60006020828403121561435a57614359613f9e565b5b600061436884828501614249565b91505092915050565b60006020828403121561438757614386613f9e565b5b600061439584828501614022565b91505092915050565b600080604083850312156143b5576143b4613f9e565b5b60006143c385828601613fec565b92505060206143d485828601613fec565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061442557607f821691505b60208210811415614439576144386143de565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061449b602883613eee565b91506144a68261443f565b604082019050919050565b600060208201905081810360008301526144ca8161448e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061450b82614001565b915061451683614001565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561454b5761454a6144d1565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061458c602083613eee565b915061459782614556565b602082019050919050565b600060208201905081810360008301526145bb8161457f565b9050919050565b7f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e20746860008201527f616e206576657279203130206d696e7574657300000000000000000000000000602082015250565b600061461e603383613eee565b9150614629826145c2565b604082019050919050565b6000602082019050818103600083015261464d81614611565b9050919050565b7f4d75737420736574206175746f204c50206275726e2070657263656e7420626560008201527f747765656e20302520616e642031302500000000000000000000000000000000602082015250565b60006146b0603083613eee565b91506146bb82614654565b604082019050919050565b600060208201905081810360008301526146df816146a3565b9050919050565b7f4d757374206b6565702066656573206174203525206f72206c65737300000000600082015250565b600061471c601c83613eee565b9150614727826146e6565b602082019050919050565b6000602082019050818103600083015261474b8161470f565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006147ae603983613eee565b91506147b982614752565b604082019050919050565b600060208201905081810360008301526147dd816147a1565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614840602583613eee565b915061484b826147e4565b604082019050919050565b6000602082019050818103600083015261486f81614833565b9050919050565b600061488182614001565b915061488c83614001565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156148c5576148c46144d1565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061490a82614001565b915061491583614001565b925082614925576149246148d0565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061498c603583613eee565b915061499782614930565b604082019050919050565b600060208201905081810360008301526149bb8161497f565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614a1e603483613eee565b9150614a29826149c2565b604082019050919050565b60006020820190508181036000830152614a4d81614a11565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614ab0602683613eee565b9150614abb82614a54565b604082019050919050565b60006020820190508181036000830152614adf81614aa3565b9050919050565b7f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e697368600082015250565b6000614b1c602083613eee565b9150614b2782614ae6565b602082019050919050565b60006020820190508181036000830152614b4b81614b0f565b9050919050565b7f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60008201527f6b656e7320696e204c5000000000000000000000000000000000000000000000602082015250565b6000614bae602a83613eee565b9150614bb982614b52565b604082019050919050565b60006020820190508181036000830152614bdd81614ba1565b9050919050565b600081519050614bf38161400b565b92915050565b600060208284031215614c0f57614c0e613f9e565b5b6000614c1d84828501614be4565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614c82602483613eee565b9150614c8d82614c26565b604082019050919050565b60006020820190508181036000830152614cb181614c75565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614d14602283613eee565b9150614d1f82614cb8565b604082019050919050565b60006020820190508181036000830152614d4381614d07565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614da6602583613eee565b9150614db182614d4a565b604082019050919050565b60006020820190508181036000830152614dd581614d99565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614e38602383613eee565b9150614e4382614ddc565b604082019050919050565b60006020820190508181036000830152614e6781614e2b565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614ea4601683613eee565b9150614eaf82614e6e565b602082019050919050565b60006020820190508181036000830152614ed381614e97565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614f5c604983613eee565b9150614f6782614eda565b606082019050919050565b60006020820190508181036000830152614f8b81614f4f565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614fee603583613eee565b9150614ff982614f92565b604082019050919050565b6000602082019050818103600083015261501d81614fe1565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061505a601383613eee565b915061506582615024565b602082019050919050565b600060208201905081810360008301526150898161504d565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006150ec603683613eee565b91506150f782615090565b604082019050919050565b6000602082019050818103600083015261511b816150df565b9050919050565b600061512d82614001565b915061513883614001565b92508282101561514b5761514a6144d1565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006151b2602683613eee565b91506151bd82615156565b604082019050919050565b600060208201905081810360008301526151e1816151a5565b9050919050565b600081905092915050565b50565b60006152036000836151e8565b915061520e826151f3565b600082019050919050565b6000615224826151f6565b9150819050919050565b60006060820190506152436000830186614154565b6152506020830185614154565b61525d6040830184614154565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506152d281613fd5565b92915050565b6000602082840312156152ee576152ed613f9e565b5b60006152fc848285016152c3565b91505092915050565b6000819050919050565b600061532a61532561532084615305565b6140da565b614001565b9050919050565b61533a8161530f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61537581613fc3565b82525050565b6000615387838361536c565b60208301905092915050565b6000602082019050919050565b60006153ab82615340565b6153b5818561534b565b93506153c08361535c565b8060005b838110156153f15781516153d8888261537b565b97506153e383615393565b9250506001810190506153c4565b5085935050505092915050565b600060a0820190506154136000830188614154565b6154206020830187615331565b818103604083015261543281866153a0565b905061544160608301856141d1565b61544e6080830184614154565b9695505050505050565b600060c08201905061546d60008301896141d1565b61547a6020830188614154565b6154876040830187615331565b6154946060830186615331565b6154a160808301856141d1565b6154ae60a0830184614154565b979650505050505050565b6000806000606084860312156154d2576154d1613f9e565b5b60006154e086828701614be4565b93505060206154f186828701614be4565b925050604061550286828701614be4565b915050925092509256fea26469706673582212206fc21dbe800625fa53302c6e12c0d5cad8929815fb924467bea99ab52ce1112364736f6c634300080a0033
Deployed Bytecode Sourcemap
14899:16428:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2648:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3548:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16322:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14976:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2963:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15528:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15356:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16187:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16147;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3723:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15079:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15438:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15399:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2864:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4221:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15034:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15626:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22011:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16004:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15706:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3077:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;798:103;;;;;;;;;;;;;:::i;:::-;;29385:555;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19432:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20203:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15171:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15899;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20486:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19271:155;;;;;;;;;;;;;:::i;:::-;;579:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15208:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16039:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20378:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2754:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21503:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15973:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15582:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16227:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16115:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4442:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15490:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3210:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16392:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15666:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21313:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20895:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15817:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15241:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19700:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15865:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3391:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15283:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19559:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15936:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;907:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16077:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15323:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30506:818;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2648:100;2702:13;2735:5;2728:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2648:100;:::o;3548:169::-;3631:4;3648:39;3657:12;:10;:12::i;:::-;3671:7;3680:6;3648:8;:39::i;:::-;3705:4;3698:11;;3548:169;;;;:::o;16322:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;14976:51::-;;;:::o;2963:108::-;3024:7;3051:12;;3044:19;;2963:108;:::o;15528:47::-;;;;:::o;15356:36::-;;;;:::o;16187:33::-;;;;:::o;16147:::-;;;;:::o;3723:492::-;3863:4;3880:36;3890:6;3898:9;3909:6;3880:9;:36::i;:::-;3929:24;3956:11;:19;3968:6;3956:19;;;;;;;;;;;;;;;:33;3976:12;:10;:12::i;:::-;3956:33;;;;;;;;;;;;;;;;3929:60;;4028:6;4008:16;:26;;4000:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4115:57;4124:6;4132:12;:10;:12::i;:::-;4165:6;4146:16;:25;4115:8;:57::i;:::-;4203:4;4196:11;;;3723:492;;;;;:::o;15079:53::-;15125:6;15079:53;:::o;15438:45::-;;;;:::o;15399:32::-;;;;;;;;;;;;;:::o;2864:93::-;2922:5;2947:2;2940:9;;2864:93;:::o;4221:215::-;4309:4;4326:80;4335:12;:10;:12::i;:::-;4349:7;4395:10;4358:11;:25;4370:12;:10;:12::i;:::-;4358:25;;;;;;;;;;;;;;;:34;4384:7;4358:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4326:8;:80::i;:::-;4424:4;4417:11;;4221:215;;;;:::o;15034:38::-;;;:::o;15626:33::-;;;;;;;;;;;;;:::o;22011:126::-;22077:4;22101:19;:28;22121:7;22101:28;;;;;;;;;;;;;;;;;;;;;;;;;22094:35;;22011:126;;;:::o;16004:28::-;;;;:::o;15706:31::-;;;;;;;;;;;;;:::o;3077:127::-;3151:7;3178:9;:18;3188:7;3178:18;;;;;;;;;;;;;;;;3171:25;;3077:127;;;:::o;798:103::-;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;863:30:::1;890:1;863:18;:30::i;:::-;798:103::o:0;29385:555::-;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29587:3:::1;29564:19;:26;;29542:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;29714:4;29702:8;:16;;:33;;;;;29734:1;29722:8;:13;;29702:33;29680:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;29840:19;29822:15;:37;;;;29889:8;29870:16;:27;;;;29924:8;29908:13;;:24;;;;;;;;;;;;;;;;;;29385:555:::0;;;:::o;19432:121::-;19484:4;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19518:5:::1;19501:14;;:22;;;;;;;;;;;;;;;;;;19541:4;19534:11;;19432:121:::0;:::o;20203:167::-;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20358:4:::1;20316:31;:39;20348:6;20316:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;20203:167:::0;;:::o;15171:30::-;;;;;;;;;;;;;:::o;15899:::-;;;;:::o;20486:401::-;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20654:13:::1;20636:15;:31;;;;20696:13;20678:15;:31;;;;20732:7;20720:9;:19;;;;20801:9;;20783:15;;20765;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;20750:12;:60;;;;20845:1;20829:12;;:17;;20821:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;20486:401:::0;;;:::o;19271:155::-;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19342:4:::1;19326:13;;:20;;;;;;;;;;;;;;;;;;19371:4;19357:11;;:18;;;;;;;;;;;;;;;;;;19403:15;19386:14;:32;;;;19271:155::o:0;579:87::-;625:7;652:6;;;;;;;;;;;645:13;;579:87;:::o;15208:24::-;;;;;;;;;;;;;:::o;16039:31::-;;;;:::o;20378:100::-;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20463:7:::1;20449:11;;:21;;;;;;;;;;;;;;;;;;20378:100:::0;:::o;2754:104::-;2810:13;2843:7;2836:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2754:104;:::o;21503:304::-;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21647:13:::1;21639:21;;:4;:21;;;;21617:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;21758:41;21787:4;21793:5;21758:28;:41::i;:::-;21503:304:::0;;:::o;15973:24::-;;;;:::o;15582:35::-;;;;:::o;16227:27::-;;;;:::o;16115:25::-;;;;:::o;4442:413::-;4535:4;4552:24;4579:11;:25;4591:12;:10;:12::i;:::-;4579:25;;;;;;;;;;;;;;;:34;4605:7;4579:34;;;;;;;;;;;;;;;;4552:61;;4652:15;4632:16;:35;;4624:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4745:67;4754:12;:10;:12::i;:::-;4768:7;4796:15;4777:16;:34;4745:8;:67::i;:::-;4843:4;4836:11;;;4442:413;;;;:::o;15490:29::-;;;;:::o;3210:175::-;3296:4;3313:42;3323:12;:10;:12::i;:::-;3337:9;3348:6;3313:9;:42::i;:::-;3373:4;3366:11;;3210:175;;;;:::o;16392:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;15666:33::-;;;;;;;;;;;;;:::o;21313:182::-;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21429:8:::1;21398:19;:28;21418:7;21398:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21469:7;21453:34;;;21478:8;21453:34;;;;;;:::i;:::-;;;;;;;;21313:182:::0;;:::o;20895:410::-;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21065:13:::1;21046:16;:32;;;;21108:13;21089:16;:32;;;;21145:7;21132:10;:20;;;;21217:10;;21198:16;;21179;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;21163:13;:64;;;;21263:1;21246:13;;:18;;21238:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;20895:410:::0;;;:::o;15817:39::-;;;;;;;;;;;;;:::o;15241:35::-;;;;:::o;19700:497::-;19808:4;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19887:6:::1;19882:1;19866:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19865:28;;;;:::i;:::-;19852:9;:41;;19830:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;20042:4;20037:1;20021:13;:11;:13::i;:::-;:17;;;;:::i;:::-;20020:26;;;;:::i;:::-;20007:9;:39;;19985:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;20158:9;20137:18;:30;;;;20185:4;20178:11;;19700:497:::0;;;:::o;15865:27::-;;;;:::o;3391:151::-;3480:7;3507:11;:18;3519:5;3507:18;;;;;;;;;;;;;;;:27;3526:7;3507:27;;;;;;;;;;;;;;;;3500:34;;3391:151;;;;:::o;15283:33::-;;;;:::o;19559:135::-;19619:4;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19659:5:::1;19636:20;;:28;;;;;;;;;;;;;;;;;;19682:4;19675:11;;19559:135:::0;:::o;15936:30::-;;;;:::o;907:201::-;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1016:1:::1;996:22;;:8;:22;;;;988:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1072:28;1091:8;1072:18;:28::i;:::-;907:201:::0;:::o;16077:31::-;;;;:::o;15323:24::-;;;;:::o;30506:818::-;30617:4;723:12;:10;:12::i;:::-;712:23;;:7;:5;:7::i;:::-;:23;;;704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30702:19:::1;;30679:20;;:42;;;;:::i;:::-;30661:15;:60;30639:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;30811:4;30800:7;:15;;30792:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;30896:15;30873:20;:38;;;;30922:28;30953:4;:14;;;30968:13;30953:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30922:60;;30993:20;31016:44;31054:5;31016:33;31041:7;31016:20;:24;;:33;;;;:::i;:::-;:37;;:44;;;;:::i;:::-;30993:67;;31090:1;31075:12;:16;31071:110;;;31108:61;31124:13;31147:6;31156:12;31108:15;:61::i;:::-;31071:110;31191:19;31228:13;31191:51;;31253:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;31280:14;;;;;;;;;;31312:4;31305:11;;;;;30506:818:::0;;;:::o;129:98::-;182:7;209:10;202:17;;129:98;:::o;6602:380::-;6755:1;6738:19;;:5;:19;;;;6730:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6836:1;6817:21;;:7;:21;;;;6809:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6920:6;6890:11;:18;6902:5;6890:18;;;;;;;;;;;;;;;:27;6909:7;6890:27;;;;;;;;;;;;;;;:36;;;;6958:7;6942:32;;6951:5;6942:32;;;6967:6;6942:32;;;;;;:::i;:::-;;;;;;;;6602:380;;;:::o;22195:4614::-;22343:1;22327:18;;:4;:18;;;;22319:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22420:1;22406:16;;:2;:16;;;;22398:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22489:1;22479:6;:11;22475:93;;;22507:28;22523:4;22529:2;22533:1;22507:15;:28::i;:::-;22550:7;;22475:93;22584:14;;;;;;;;;;;22580:2296;;;22645:7;:5;:7::i;:::-;22637:15;;:4;:15;;;;:49;;;;;22679:7;:5;:7::i;:::-;22673:13;;:2;:13;;;;22637:49;:86;;;;;22721:1;22707:16;;:2;:16;;;;22637:86;:128;;;;;22758:6;22744:21;;:2;:21;;;;22637:128;:158;;;;;22787:8;;;;;;;;;;;22786:9;22637:158;22615:2250;;;22835:13;;;;;;;;;;;22830:223;;22907:19;:25;22927:4;22907:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;22936:19;:23;22956:2;22936:23;;;;;;;;;;;;;;;;;;;;;;;;;22907:52;22873:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;22830:223;23077:20;;;;;;;;;;;23073:641;;;23158:7;:5;:7::i;:::-;23152:13;;:2;:13;;;;:72;;;;;23208:15;23194:30;;:2;:30;;;;23152:72;:129;;;;;23267:13;23253:28;;:2;:28;;;;23152:129;23122:573;;;23445:12;23370:28;:39;23399:9;23370:39;;;;;;;;;;;;;;;;:87;23332:258;;;;;;;;;;;;:::i;:::-;;;;;;;;;23659:12;23617:28;:39;23646:9;23617:39;;;;;;;;;;;;;;;:54;;;;23122:573;23073:641;23758:25;:31;23784:4;23758:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;23815:31;:35;23847:2;23815:35;;;;;;;;;;;;;;;;;;;;;;;;;23814:36;23758:92;23732:1118;;;23937:20;;23927:6;:30;;23893:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;24145:9;;24128:13;24138:2;24128:9;:13::i;:::-;24119:6;:22;;;;:::i;:::-;:35;;24085:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;23732:1118;;;24294:25;:29;24320:2;24294:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;24349:31;:37;24381:4;24349:37;;;;;;;;;;;;;;;;;;;;;;;;;24348:38;24294:92;24268:582;;;24473:20;;24463:6;:30;;24429:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;24268:582;;;24630:31;:35;24662:2;24630:35;;;;;;;;;;;;;;;;;;;;;;;;;24625:225;;24750:9;;24733:13;24743:2;24733:9;:13::i;:::-;24724:6;:22;;;;:::i;:::-;:35;;24690:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;24625:225;24268:582;23732:1118;22615:2250;22580:2296;24888:28;24919:24;24937:4;24919:9;:24::i;:::-;24888:55;;24956:12;24995:18;;24971:20;:42;;24956:57;;25044:7;:35;;;;;25068:11;;;;;;;;;;;25044:35;:61;;;;;25097:8;;;;;;;;;;;25096:9;25044:61;:110;;;;;25123:25;:31;25149:4;25123:31;;;;;;;;;;;;;;;;;;;;;;;;;25122:32;25044:110;:153;;;;;25172:19;:25;25192:4;25172:25;;;;;;;;;;;;;;;;;;;;;;;;;25171:26;25044:153;:194;;;;;25215:19;:23;25235:2;25215:23;;;;;;;;;;;;;;;;;;;;;;;;;25214:24;25044:194;25026:326;;;25276:4;25265:8;;:15;;;;;;;;;;;;;;;;;;25297:10;:8;:10::i;:::-;25335:5;25324:8;;:16;;;;;;;;;;;;;;;;;;25026:326;25383:8;;;;;;;;;;;25382:9;:55;;;;;25408:25;:29;25434:2;25408:29;;;;;;;;;;;;;;;;;;;;;;;;;25382:55;:85;;;;;25454:13;;;;;;;;;;;25382:85;:153;;;;;25520:15;;25503:14;;:32;;;;:::i;:::-;25484:15;:51;;25382:153;:196;;;;;25553:19;:25;25573:4;25553:25;;;;;;;;;;;;;;;;;;;;;;;;;25552:26;25382:196;25364:282;;;25605:29;:27;:29::i;:::-;;25364:282;25658:12;25674:8;;;;;;;;;;;25673:9;25658:24;;25699:19;:25;25719:4;25699:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25728:19;:23;25748:2;25728:23;;;;;;;;;;;;;;;;;;;;;;;;;25699:52;25695:100;;;25778:5;25768:15;;25695:100;25807:12;25838:7;25834:922;;;25866:25;:29;25892:2;25866:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;25915:1;25899:13;;:17;25866:50;25862:745;;;25944:34;25974:3;25944:25;25955:13;;25944:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;25937:41;;26047:13;;26027:16;;26020:4;:23;;;;:::i;:::-;26019:41;;;;:::i;:::-;25997:18;;:63;;;;;;;:::i;:::-;;;;;;;;26117:13;;26103:10;;26096:4;:17;;;;:::i;:::-;26095:35;;;;:::i;:::-;26079:12;;:51;;;;;;;:::i;:::-;;;;;;;;26199:13;;26179:16;;26172:4;:23;;;;:::i;:::-;26171:41;;;;:::i;:::-;26149:18;;:63;;;;;;;:::i;:::-;;;;;;;;25862:745;;;26251:25;:31;26277:4;26251:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;26301:1;26286:12;;:16;26251:51;26247:360;;;26330:33;26359:3;26330:24;26341:12;;26330:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;26323:40;;26431:12;;26412:15;;26405:4;:22;;;;:::i;:::-;26404:39;;;;:::i;:::-;26382:18;;:61;;;;;;;:::i;:::-;;;;;;;;26499:12;;26486:9;;26479:4;:16;;;;:::i;:::-;26478:33;;;;:::i;:::-;26462:12;;:49;;;;;;;:::i;:::-;;;;;;;;26579:12;;26560:15;;26553:4;:22;;;;:::i;:::-;26552:39;;;;:::i;:::-;26530:18;;:61;;;;;;;:::i;:::-;;;;;;;;26247:360;25862:745;26634:1;26627:4;:8;26623:91;;;26656:42;26672:4;26686;26693;26656:15;:42::i;:::-;26623:91;26740:4;26730:14;;;;;:::i;:::-;;;25834:922;26768:33;26784:4;26790:2;26794:6;26768:15;:33::i;:::-;22308:4501;;;;22195:4614;;;;:::o;1114:191::-;1188:16;1207:6;;;;;;;;;;;1188:25;;1233:8;1224:6;;:17;;;;;;;;;;;;;;;;;;1288:8;1257:40;;1278:8;1257:40;;;;;;;;;;;;1177:128;1114:191;:::o;21815:188::-;21932:5;21898:25;:31;21924:4;21898:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;21989:5;21955:40;;21983:4;21955:40;;;;;;;;;;;;21815:188;;:::o;8590:98::-;8648:7;8679:1;8675;:5;;;;:::i;:::-;8668:12;;8590:98;;;;:::o;8694:::-;8752:7;8783:1;8779;:5;;;;:::i;:::-;8772:12;;8694:98;;;;:::o;4861:733::-;5019:1;5001:20;;:6;:20;;;;4993:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5103:1;5082:23;;:9;:23;;;;5074:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5158:47;5179:6;5187:9;5198:6;5158:20;:47::i;:::-;5218:21;5242:9;:17;5252:6;5242:17;;;;;;;;;;;;;;;;5218:41;;5295:6;5278:13;:23;;5270:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5416:6;5400:13;:22;5380:9;:17;5390:6;5380:17;;;;;;;;;;;;;;;:42;;;;5468:6;5444:9;:20;5454:9;5444:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5509:9;5492:35;;5501:6;5492:35;;;5520:6;5492:35;;;;;;:::i;:::-;;;;;;;;5540:46;5560:6;5568:9;5579:6;5540:19;:46::i;:::-;4982:612;4861:733;;;:::o;27672:1705::-;27711:23;27737:24;27755:4;27737:9;:24::i;:::-;27711:50;;27772:25;27868:12;;27834:18;;27800;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;27772:108;;27891:12;27939:1;27920:15;:20;:46;;;;27965:1;27944:17;:22;27920:46;27916:85;;;27983:7;;;;;27916:85;28056:2;28035:18;;:23;;;;:::i;:::-;28017:15;:41;28013:115;;;28114:2;28093:18;;:23;;;;:::i;:::-;28075:41;;28013:115;28138:23;28251:1;28218:17;28183:18;;28165:15;:36;;;;:::i;:::-;28164:71;;;;:::i;:::-;:88;;;;:::i;:::-;28138:114;;28263:26;28292:36;28312:15;28292;:19;;:36;;;;:::i;:::-;28263:65;;28341:25;28369:21;28341:49;;28403:36;28420:18;28403:16;:36::i;:::-;28452:18;28473:44;28499:17;28473:21;:25;;:44;;;;:::i;:::-;28452:65;;28530:23;28556:81;28609:17;28556:34;28571:18;;28556:10;:14;;:34;;;;:::i;:::-;:38;;:81;;;;:::i;:::-;28530:107;;28648:17;28668:51;28701:17;28668:28;28683:12;;28668:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;28648:71;;28732:23;28789:9;28771:15;28758:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;28732:66;;28832:1;28811:18;:22;;;;28865:1;28844:18;:22;;;;28892:1;28877:12;:16;;;;28928:9;;;;;;;;;;;28920:23;;28951:9;28920:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28906:59;;;;;29000:1;28982:15;:19;:42;;;;;29023:1;29005:15;:19;28982:42;28978:278;;;29041:46;29054:15;29071;29041:12;:46::i;:::-;29107:137;29140:18;29177:15;29211:18;;29107:137;;;;;;;;:::i;:::-;;;;;;;;28978:278;29290:15;;;;;;;;;;;29282:29;;29333:21;29282:87;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29268:101;;;;;27700:1677;;;;;;;;;;27672:1705;:::o;29948:550::-;30005:4;30039:15;30022:14;:32;;;;30065:28;30096:4;:14;;;30111:13;30096:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30065:60;;30136:20;30159:77;30220:5;30159:42;30184:16;;30159:20;:24;;:42;;;;:::i;:::-;:46;;:77;;;;:::i;:::-;30136:100;;30266:1;30251:12;:16;30247:110;;;30284:61;30300:13;30323:6;30332:12;30284:15;:61::i;:::-;30247:110;30367:19;30404:13;30367:51;;30429:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30456:12;;;;;;;;;;30486:4;30479:11;;;;;29948:550;:::o;6988:125::-;;;;:::o;7119:124::-;;;;:::o;8484:98::-;8542:7;8573:1;8569;:5;;;;:::i;:::-;8562:12;;8484:98;;;;:::o;26817:475::-;26883:21;26921:1;26907:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26883:40;;26952:4;26934;26939:1;26934:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26978:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26968:4;26973:1;26968:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;27013:62;27030:4;27045:15;27063:11;27013:8;:62::i;:::-;27088:15;:66;;;27169:11;27195:1;27211:4;27238;27258:15;27088:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26872:420;26817:475;:::o;27300:364::-;27381:62;27398:4;27413:15;27431:11;27381:8;:62::i;:::-;27454:15;:31;;;27493:9;27526:4;27546:11;27572:1;27588;15125:6;27630:15;27454:202;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27300:364;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:60::-;3857:3;3878:5;3871:12;;3829:60;;;:::o;3895:142::-;3945:9;3978:53;3996:34;4005:24;4023:5;4005:24;:::i;:::-;3996:34;:::i;:::-;3978:53;:::i;:::-;3965:66;;3895:142;;;:::o;4043:126::-;4093:9;4126:37;4157:5;4126:37;:::i;:::-;4113:50;;4043:126;;;:::o;4175:153::-;4252:9;4285:37;4316:5;4285:37;:::i;:::-;4272:50;;4175:153;;;:::o;4334:185::-;4448:64;4506:5;4448:64;:::i;:::-;4443:3;4436:77;4334:185;;:::o;4525:276::-;4645:4;4683:2;4672:9;4668:18;4660:26;;4696:98;4791:1;4780:9;4776:17;4767:6;4696:98;:::i;:::-;4525:276;;;;:::o;4807:118::-;4894:24;4912:5;4894:24;:::i;:::-;4889:3;4882:37;4807:118;;:::o;4931:222::-;5024:4;5062:2;5051:9;5047:18;5039:26;;5075:71;5143:1;5132:9;5128:17;5119:6;5075:71;:::i;:::-;4931:222;;;;:::o;5159:619::-;5236:6;5244;5252;5301:2;5289:9;5280:7;5276:23;5272:32;5269:119;;;5307:79;;:::i;:::-;5269:119;5427:1;5452:53;5497:7;5488:6;5477:9;5473:22;5452:53;:::i;:::-;5442:63;;5398:117;5554:2;5580:53;5625:7;5616:6;5605:9;5601:22;5580:53;:::i;:::-;5570:63;;5525:118;5682:2;5708:53;5753:7;5744:6;5733:9;5729:22;5708:53;:::i;:::-;5698:63;;5653:118;5159:619;;;;;:::o;5784:118::-;5871:24;5889:5;5871:24;:::i;:::-;5866:3;5859:37;5784:118;;:::o;5908:222::-;6001:4;6039:2;6028:9;6024:18;6016:26;;6052:71;6120:1;6109:9;6105:17;6096:6;6052:71;:::i;:::-;5908:222;;;;:::o;6136:86::-;6171:7;6211:4;6204:5;6200:16;6189:27;;6136:86;;;:::o;6228:112::-;6311:22;6327:5;6311:22;:::i;:::-;6306:3;6299:35;6228:112;;:::o;6346:214::-;6435:4;6473:2;6462:9;6458:18;6450:26;;6486:67;6550:1;6539:9;6535:17;6526:6;6486:67;:::i;:::-;6346:214;;;;:::o;6566:116::-;6636:21;6651:5;6636:21;:::i;:::-;6629:5;6626:32;6616:60;;6672:1;6669;6662:12;6616:60;6566:116;:::o;6688:133::-;6731:5;6769:6;6756:20;6747:29;;6785:30;6809:5;6785:30;:::i;:::-;6688:133;;;;:::o;6827:613::-;6901:6;6909;6917;6966:2;6954:9;6945:7;6941:23;6937:32;6934:119;;;6972:79;;:::i;:::-;6934:119;7092:1;7117:53;7162:7;7153:6;7142:9;7138:22;7117:53;:::i;:::-;7107:63;;7063:117;7219:2;7245:53;7290:7;7281:6;7270:9;7266:22;7245:53;:::i;:::-;7235:63;;7190:118;7347:2;7373:50;7415:7;7406:6;7395:9;7391:22;7373:50;:::i;:::-;7363:60;;7318:115;6827:613;;;;;:::o;7446:468::-;7511:6;7519;7568:2;7556:9;7547:7;7543:23;7539:32;7536:119;;;7574:79;;:::i;:::-;7536:119;7694:1;7719:53;7764:7;7755:6;7744:9;7740:22;7719:53;:::i;:::-;7709:63;;7665:117;7821:2;7847:50;7889:7;7880:6;7869:9;7865:22;7847:50;:::i;:::-;7837:60;;7792:115;7446:468;;;;;:::o;7920:619::-;7997:6;8005;8013;8062:2;8050:9;8041:7;8037:23;8033:32;8030:119;;;8068:79;;:::i;:::-;8030:119;8188:1;8213:53;8258:7;8249:6;8238:9;8234:22;8213:53;:::i;:::-;8203:63;;8159:117;8315:2;8341:53;8386:7;8377:6;8366:9;8362:22;8341:53;:::i;:::-;8331:63;;8286:118;8443:2;8469:53;8514:7;8505:6;8494:9;8490:22;8469:53;:::i;:::-;8459:63;;8414:118;7920:619;;;;;:::o;8545:323::-;8601:6;8650:2;8638:9;8629:7;8625:23;8621:32;8618:119;;;8656:79;;:::i;:::-;8618:119;8776:1;8801:50;8843:7;8834:6;8823:9;8819:22;8801:50;:::i;:::-;8791:60;;8747:114;8545:323;;;;:::o;8874:329::-;8933:6;8982:2;8970:9;8961:7;8957:23;8953:32;8950:119;;;8988:79;;:::i;:::-;8950:119;9108:1;9133:53;9178:7;9169:6;9158:9;9154:22;9133:53;:::i;:::-;9123:63;;9079:117;8874:329;;;;:::o;9209:474::-;9277:6;9285;9334:2;9322:9;9313:7;9309:23;9305:32;9302:119;;;9340:79;;:::i;:::-;9302:119;9460:1;9485:53;9530:7;9521:6;9510:9;9506:22;9485:53;:::i;:::-;9475:63;;9431:117;9587:2;9613:53;9658:7;9649:6;9638:9;9634:22;9613:53;:::i;:::-;9603:63;;9558:118;9209:474;;;;;:::o;9689:180::-;9737:77;9734:1;9727:88;9834:4;9831:1;9824:15;9858:4;9855:1;9848:15;9875:320;9919:6;9956:1;9950:4;9946:12;9936:22;;10003:1;9997:4;9993:12;10024:18;10014:81;;10080:4;10072:6;10068:17;10058:27;;10014:81;10142:2;10134:6;10131:14;10111:18;10108:38;10105:84;;;10161:18;;:::i;:::-;10105:84;9926:269;9875:320;;;:::o;10201:227::-;10341:34;10337:1;10329:6;10325:14;10318:58;10410:10;10405:2;10397:6;10393:15;10386:35;10201:227;:::o;10434:366::-;10576:3;10597:67;10661:2;10656:3;10597:67;:::i;:::-;10590:74;;10673:93;10762:3;10673:93;:::i;:::-;10791:2;10786:3;10782:12;10775:19;;10434:366;;;:::o;10806:419::-;10972:4;11010:2;10999:9;10995:18;10987:26;;11059:9;11053:4;11049:20;11045:1;11034:9;11030:17;11023:47;11087:131;11213:4;11087:131;:::i;:::-;11079:139;;10806:419;;;:::o;11231:180::-;11279:77;11276:1;11269:88;11376:4;11373:1;11366:15;11400:4;11397:1;11390:15;11417:305;11457:3;11476:20;11494:1;11476:20;:::i;:::-;11471:25;;11510:20;11528:1;11510:20;:::i;:::-;11505:25;;11664:1;11596:66;11592:74;11589:1;11586:81;11583:107;;;11670:18;;:::i;:::-;11583:107;11714:1;11711;11707:9;11700:16;;11417:305;;;;:::o;11728:182::-;11868:34;11864:1;11856:6;11852:14;11845:58;11728:182;:::o;11916:366::-;12058:3;12079:67;12143:2;12138:3;12079:67;:::i;:::-;12072:74;;12155:93;12244:3;12155:93;:::i;:::-;12273:2;12268:3;12264:12;12257:19;;11916:366;;;:::o;12288:419::-;12454:4;12492:2;12481:9;12477:18;12469:26;;12541:9;12535:4;12531:20;12527:1;12516:9;12512:17;12505:47;12569:131;12695:4;12569:131;:::i;:::-;12561:139;;12288:419;;;:::o;12713:238::-;12853:34;12849:1;12841:6;12837:14;12830:58;12922:21;12917:2;12909:6;12905:15;12898:46;12713:238;:::o;12957:366::-;13099:3;13120:67;13184:2;13179:3;13120:67;:::i;:::-;13113:74;;13196:93;13285:3;13196:93;:::i;:::-;13314:2;13309:3;13305:12;13298:19;;12957:366;;;:::o;13329:419::-;13495:4;13533:2;13522:9;13518:18;13510:26;;13582:9;13576:4;13572:20;13568:1;13557:9;13553:17;13546:47;13610:131;13736:4;13610:131;:::i;:::-;13602:139;;13329:419;;;:::o;13754:235::-;13894:34;13890:1;13882:6;13878:14;13871:58;13963:18;13958:2;13950:6;13946:15;13939:43;13754:235;:::o;13995:366::-;14137:3;14158:67;14222:2;14217:3;14158:67;:::i;:::-;14151:74;;14234:93;14323:3;14234:93;:::i;:::-;14352:2;14347:3;14343:12;14336:19;;13995:366;;;:::o;14367:419::-;14533:4;14571:2;14560:9;14556:18;14548:26;;14620:9;14614:4;14610:20;14606:1;14595:9;14591:17;14584:47;14648:131;14774:4;14648:131;:::i;:::-;14640:139;;14367:419;;;:::o;14792:178::-;14932:30;14928:1;14920:6;14916:14;14909:54;14792:178;:::o;14976:366::-;15118:3;15139:67;15203:2;15198:3;15139:67;:::i;:::-;15132:74;;15215:93;15304:3;15215:93;:::i;:::-;15333:2;15328:3;15324:12;15317:19;;14976:366;;;:::o;15348:419::-;15514:4;15552:2;15541:9;15537:18;15529:26;;15601:9;15595:4;15591:20;15587:1;15576:9;15572:17;15565:47;15629:131;15755:4;15629:131;:::i;:::-;15621:139;;15348:419;;;:::o;15773:244::-;15913:34;15909:1;15901:6;15897:14;15890:58;15982:27;15977:2;15969:6;15965:15;15958:52;15773:244;:::o;16023:366::-;16165:3;16186:67;16250:2;16245:3;16186:67;:::i;:::-;16179:74;;16262:93;16351:3;16262:93;:::i;:::-;16380:2;16375:3;16371:12;16364:19;;16023:366;;;:::o;16395:419::-;16561:4;16599:2;16588:9;16584:18;16576:26;;16648:9;16642:4;16638:20;16634:1;16623:9;16619:17;16612:47;16676:131;16802:4;16676:131;:::i;:::-;16668:139;;16395:419;;;:::o;16820:224::-;16960:34;16956:1;16948:6;16944:14;16937:58;17029:7;17024:2;17016:6;17012:15;17005:32;16820:224;:::o;17050:366::-;17192:3;17213:67;17277:2;17272:3;17213:67;:::i;:::-;17206:74;;17289:93;17378:3;17289:93;:::i;:::-;17407:2;17402:3;17398:12;17391:19;;17050:366;;;:::o;17422:419::-;17588:4;17626:2;17615:9;17611:18;17603:26;;17675:9;17669:4;17665:20;17661:1;17650:9;17646:17;17639:47;17703:131;17829:4;17703:131;:::i;:::-;17695:139;;17422:419;;;:::o;17847:348::-;17887:7;17910:20;17928:1;17910:20;:::i;:::-;17905:25;;17944:20;17962:1;17944:20;:::i;:::-;17939:25;;18132:1;18064:66;18060:74;18057:1;18054:81;18049:1;18042:9;18035:17;18031:105;18028:131;;;18139:18;;:::i;:::-;18028:131;18187:1;18184;18180:9;18169:20;;17847:348;;;;:::o;18201:180::-;18249:77;18246:1;18239:88;18346:4;18343:1;18336:15;18370:4;18367:1;18360:15;18387:185;18427:1;18444:20;18462:1;18444:20;:::i;:::-;18439:25;;18478:20;18496:1;18478:20;:::i;:::-;18473:25;;18517:1;18507:35;;18522:18;;:::i;:::-;18507:35;18564:1;18561;18557:9;18552:14;;18387:185;;;;:::o;18578:240::-;18718:34;18714:1;18706:6;18702:14;18695:58;18787:23;18782:2;18774:6;18770:15;18763:48;18578:240;:::o;18824:366::-;18966:3;18987:67;19051:2;19046:3;18987:67;:::i;:::-;18980:74;;19063:93;19152:3;19063:93;:::i;:::-;19181:2;19176:3;19172:12;19165:19;;18824:366;;;:::o;19196:419::-;19362:4;19400:2;19389:9;19385:18;19377:26;;19449:9;19443:4;19439:20;19435:1;19424:9;19420:17;19413:47;19477:131;19603:4;19477:131;:::i;:::-;19469:139;;19196:419;;;:::o;19621:239::-;19761:34;19757:1;19749:6;19745:14;19738:58;19830:22;19825:2;19817:6;19813:15;19806:47;19621:239;:::o;19866:366::-;20008:3;20029:67;20093:2;20088:3;20029:67;:::i;:::-;20022:74;;20105:93;20194:3;20105:93;:::i;:::-;20223:2;20218:3;20214:12;20207:19;;19866:366;;;:::o;20238:419::-;20404:4;20442:2;20431:9;20427:18;20419:26;;20491:9;20485:4;20481:20;20477:1;20466:9;20462:17;20455:47;20519:131;20645:4;20519:131;:::i;:::-;20511:139;;20238:419;;;:::o;20663:225::-;20803:34;20799:1;20791:6;20787:14;20780:58;20872:8;20867:2;20859:6;20855:15;20848:33;20663:225;:::o;20894:366::-;21036:3;21057:67;21121:2;21116:3;21057:67;:::i;:::-;21050:74;;21133:93;21222:3;21133:93;:::i;:::-;21251:2;21246:3;21242:12;21235:19;;20894:366;;;:::o;21266:419::-;21432:4;21470:2;21459:9;21455:18;21447:26;;21519:9;21513:4;21509:20;21505:1;21494:9;21490:17;21483:47;21547:131;21673:4;21547:131;:::i;:::-;21539:139;;21266:419;;;:::o;21691:182::-;21831:34;21827:1;21819:6;21815:14;21808:58;21691:182;:::o;21879:366::-;22021:3;22042:67;22106:2;22101:3;22042:67;:::i;:::-;22035:74;;22118:93;22207:3;22118:93;:::i;:::-;22236:2;22231:3;22227:12;22220:19;;21879:366;;;:::o;22251:419::-;22417:4;22455:2;22444:9;22440:18;22432:26;;22504:9;22498:4;22494:20;22490:1;22479:9;22475:17;22468:47;22532:131;22658:4;22532:131;:::i;:::-;22524:139;;22251:419;;;:::o;22676:229::-;22816:34;22812:1;22804:6;22800:14;22793:58;22885:12;22880:2;22872:6;22868:15;22861:37;22676:229;:::o;22911:366::-;23053:3;23074:67;23138:2;23133:3;23074:67;:::i;:::-;23067:74;;23150:93;23239:3;23150:93;:::i;:::-;23268:2;23263:3;23259:12;23252:19;;22911:366;;;:::o;23283:419::-;23449:4;23487:2;23476:9;23472:18;23464:26;;23536:9;23530:4;23526:20;23522:1;23511:9;23507:17;23500:47;23564:131;23690:4;23564:131;:::i;:::-;23556:139;;23283:419;;;:::o;23708:143::-;23765:5;23796:6;23790:13;23781:22;;23812:33;23839:5;23812:33;:::i;:::-;23708:143;;;;:::o;23857:351::-;23927:6;23976:2;23964:9;23955:7;23951:23;23947:32;23944:119;;;23982:79;;:::i;:::-;23944:119;24102:1;24127:64;24183:7;24174:6;24163:9;24159:22;24127:64;:::i;:::-;24117:74;;24073:128;23857:351;;;;:::o;24214:223::-;24354:34;24350:1;24342:6;24338:14;24331:58;24423:6;24418:2;24410:6;24406:15;24399:31;24214:223;:::o;24443:366::-;24585:3;24606:67;24670:2;24665:3;24606:67;:::i;:::-;24599:74;;24682:93;24771:3;24682:93;:::i;:::-;24800:2;24795:3;24791:12;24784:19;;24443:366;;;:::o;24815:419::-;24981:4;25019:2;25008:9;25004:18;24996:26;;25068:9;25062:4;25058:20;25054:1;25043:9;25039:17;25032:47;25096:131;25222:4;25096:131;:::i;:::-;25088:139;;24815:419;;;:::o;25240:221::-;25380:34;25376:1;25368:6;25364:14;25357:58;25449:4;25444:2;25436:6;25432:15;25425:29;25240:221;:::o;25467:366::-;25609:3;25630:67;25694:2;25689:3;25630:67;:::i;:::-;25623:74;;25706:93;25795:3;25706:93;:::i;:::-;25824:2;25819:3;25815:12;25808:19;;25467:366;;;:::o;25839:419::-;26005:4;26043:2;26032:9;26028:18;26020:26;;26092:9;26086:4;26082:20;26078:1;26067:9;26063:17;26056:47;26120:131;26246:4;26120:131;:::i;:::-;26112:139;;25839:419;;;:::o;26264:224::-;26404:34;26400:1;26392:6;26388:14;26381:58;26473:7;26468:2;26460:6;26456:15;26449:32;26264:224;:::o;26494:366::-;26636:3;26657:67;26721:2;26716:3;26657:67;:::i;:::-;26650:74;;26733:93;26822:3;26733:93;:::i;:::-;26851:2;26846:3;26842:12;26835:19;;26494:366;;;:::o;26866:419::-;27032:4;27070:2;27059:9;27055:18;27047:26;;27119:9;27113:4;27109:20;27105:1;27094:9;27090:17;27083:47;27147:131;27273:4;27147:131;:::i;:::-;27139:139;;26866:419;;;:::o;27291:222::-;27431:34;27427:1;27419:6;27415:14;27408:58;27500:5;27495:2;27487:6;27483:15;27476:30;27291:222;:::o;27519:366::-;27661:3;27682:67;27746:2;27741:3;27682:67;:::i;:::-;27675:74;;27758:93;27847:3;27758:93;:::i;:::-;27876:2;27871:3;27867:12;27860:19;;27519:366;;;:::o;27891:419::-;28057:4;28095:2;28084:9;28080:18;28072:26;;28144:9;28138:4;28134:20;28130:1;28119:9;28115:17;28108:47;28172:131;28298:4;28172:131;:::i;:::-;28164:139;;27891:419;;;:::o;28316:172::-;28456:24;28452:1;28444:6;28440:14;28433:48;28316:172;:::o;28494:366::-;28636:3;28657:67;28721:2;28716:3;28657:67;:::i;:::-;28650:74;;28733:93;28822:3;28733:93;:::i;:::-;28851:2;28846:3;28842:12;28835:19;;28494:366;;;:::o;28866:419::-;29032:4;29070:2;29059:9;29055:18;29047:26;;29119:9;29113:4;29109:20;29105:1;29094:9;29090:17;29083:47;29147:131;29273:4;29147:131;:::i;:::-;29139:139;;28866:419;;;:::o;29291:297::-;29431:34;29427:1;29419:6;29415:14;29408:58;29500:34;29495:2;29487:6;29483:15;29476:59;29569:11;29564:2;29556:6;29552:15;29545:36;29291:297;:::o;29594:366::-;29736:3;29757:67;29821:2;29816:3;29757:67;:::i;:::-;29750:74;;29833:93;29922:3;29833:93;:::i;:::-;29951:2;29946:3;29942:12;29935:19;;29594:366;;;:::o;29966:419::-;30132:4;30170:2;30159:9;30155:18;30147:26;;30219:9;30213:4;30209:20;30205:1;30194:9;30190:17;30183:47;30247:131;30373:4;30247:131;:::i;:::-;30239:139;;29966:419;;;:::o;30391:240::-;30531:34;30527:1;30519:6;30515:14;30508:58;30600:23;30595:2;30587:6;30583:15;30576:48;30391:240;:::o;30637:366::-;30779:3;30800:67;30864:2;30859:3;30800:67;:::i;:::-;30793:74;;30876:93;30965:3;30876:93;:::i;:::-;30994:2;30989:3;30985:12;30978:19;;30637:366;;;:::o;31009:419::-;31175:4;31213:2;31202:9;31198:18;31190:26;;31262:9;31256:4;31252:20;31248:1;31237:9;31233:17;31226:47;31290:131;31416:4;31290:131;:::i;:::-;31282:139;;31009:419;;;:::o;31434:169::-;31574:21;31570:1;31562:6;31558:14;31551:45;31434:169;:::o;31609:366::-;31751:3;31772:67;31836:2;31831:3;31772:67;:::i;:::-;31765:74;;31848:93;31937:3;31848:93;:::i;:::-;31966:2;31961:3;31957:12;31950:19;;31609:366;;;:::o;31981:419::-;32147:4;32185:2;32174:9;32170:18;32162:26;;32234:9;32228:4;32224:20;32220:1;32209:9;32205:17;32198:47;32262:131;32388:4;32262:131;:::i;:::-;32254:139;;31981:419;;;:::o;32406:241::-;32546:34;32542:1;32534:6;32530:14;32523:58;32615:24;32610:2;32602:6;32598:15;32591:49;32406:241;:::o;32653:366::-;32795:3;32816:67;32880:2;32875:3;32816:67;:::i;:::-;32809:74;;32892:93;32981:3;32892:93;:::i;:::-;33010:2;33005:3;33001:12;32994:19;;32653:366;;;:::o;33025:419::-;33191:4;33229:2;33218:9;33214:18;33206:26;;33278:9;33272:4;33268:20;33264:1;33253:9;33249:17;33242:47;33306:131;33432:4;33306:131;:::i;:::-;33298:139;;33025:419;;;:::o;33450:191::-;33490:4;33510:20;33528:1;33510:20;:::i;:::-;33505:25;;33544:20;33562:1;33544:20;:::i;:::-;33539:25;;33583:1;33580;33577:8;33574:34;;;33588:18;;:::i;:::-;33574:34;33633:1;33630;33626:9;33618:17;;33450:191;;;;:::o;33647:225::-;33787:34;33783:1;33775:6;33771:14;33764:58;33856:8;33851:2;33843:6;33839:15;33832:33;33647:225;:::o;33878:366::-;34020:3;34041:67;34105:2;34100:3;34041:67;:::i;:::-;34034:74;;34117:93;34206:3;34117:93;:::i;:::-;34235:2;34230:3;34226:12;34219:19;;33878:366;;;:::o;34250:419::-;34416:4;34454:2;34443:9;34439:18;34431:26;;34503:9;34497:4;34493:20;34489:1;34478:9;34474:17;34467:47;34531:131;34657:4;34531:131;:::i;:::-;34523:139;;34250:419;;;:::o;34675:147::-;34776:11;34813:3;34798:18;;34675:147;;;;:::o;34828:114::-;;:::o;34948:398::-;35107:3;35128:83;35209:1;35204:3;35128:83;:::i;:::-;35121:90;;35220:93;35309:3;35220:93;:::i;:::-;35338:1;35333:3;35329:11;35322:18;;34948:398;;;:::o;35352:379::-;35536:3;35558:147;35701:3;35558:147;:::i;:::-;35551:154;;35722:3;35715:10;;35352:379;;;:::o;35737:442::-;35886:4;35924:2;35913:9;35909:18;35901:26;;35937:71;36005:1;35994:9;35990:17;35981:6;35937:71;:::i;:::-;36018:72;36086:2;36075:9;36071:18;36062:6;36018:72;:::i;:::-;36100;36168:2;36157:9;36153:18;36144:6;36100:72;:::i;:::-;35737:442;;;;;;:::o;36185:180::-;36233:77;36230:1;36223:88;36330:4;36327:1;36320:15;36354:4;36351:1;36344:15;36371:180;36419:77;36416:1;36409:88;36516:4;36513:1;36506:15;36540:4;36537:1;36530:15;36557:143;36614:5;36645:6;36639:13;36630:22;;36661:33;36688:5;36661:33;:::i;:::-;36557:143;;;;:::o;36706:351::-;36776:6;36825:2;36813:9;36804:7;36800:23;36796:32;36793:119;;;36831:79;;:::i;:::-;36793:119;36951:1;36976:64;37032:7;37023:6;37012:9;37008:22;36976:64;:::i;:::-;36966:74;;36922:128;36706:351;;;;:::o;37063:85::-;37108:7;37137:5;37126:16;;37063:85;;;:::o;37154:158::-;37212:9;37245:61;37263:42;37272:32;37298:5;37272:32;:::i;:::-;37263:42;:::i;:::-;37245:61;:::i;:::-;37232:74;;37154:158;;;:::o;37318:147::-;37413:45;37452:5;37413:45;:::i;:::-;37408:3;37401:58;37318:147;;:::o;37471:114::-;37538:6;37572:5;37566:12;37556:22;;37471:114;;;:::o;37591:184::-;37690:11;37724:6;37719:3;37712:19;37764:4;37759:3;37755:14;37740:29;;37591:184;;;;:::o;37781:132::-;37848:4;37871:3;37863:11;;37901:4;37896:3;37892:14;37884:22;;37781:132;;;:::o;37919:108::-;37996:24;38014:5;37996:24;:::i;:::-;37991:3;37984:37;37919:108;;:::o;38033:179::-;38102:10;38123:46;38165:3;38157:6;38123:46;:::i;:::-;38201:4;38196:3;38192:14;38178:28;;38033:179;;;;:::o;38218:113::-;38288:4;38320;38315:3;38311:14;38303:22;;38218:113;;;:::o;38367:732::-;38486:3;38515:54;38563:5;38515:54;:::i;:::-;38585:86;38664:6;38659:3;38585:86;:::i;:::-;38578:93;;38695:56;38745:5;38695:56;:::i;:::-;38774:7;38805:1;38790:284;38815:6;38812:1;38809:13;38790:284;;;38891:6;38885:13;38918:63;38977:3;38962:13;38918:63;:::i;:::-;38911:70;;39004:60;39057:6;39004:60;:::i;:::-;38994:70;;38850:224;38837:1;38834;38830:9;38825:14;;38790:284;;;38794:14;39090:3;39083:10;;38491:608;;;38367:732;;;;:::o;39105:831::-;39368:4;39406:3;39395:9;39391:19;39383:27;;39420:71;39488:1;39477:9;39473:17;39464:6;39420:71;:::i;:::-;39501:80;39577:2;39566:9;39562:18;39553:6;39501:80;:::i;:::-;39628:9;39622:4;39618:20;39613:2;39602:9;39598:18;39591:48;39656:108;39759:4;39750:6;39656:108;:::i;:::-;39648:116;;39774:72;39842:2;39831:9;39827:18;39818:6;39774:72;:::i;:::-;39856:73;39924:3;39913:9;39909:19;39900:6;39856:73;:::i;:::-;39105:831;;;;;;;;:::o;39942:807::-;40191:4;40229:3;40218:9;40214:19;40206:27;;40243:71;40311:1;40300:9;40296:17;40287:6;40243:71;:::i;:::-;40324:72;40392:2;40381:9;40377:18;40368:6;40324:72;:::i;:::-;40406:80;40482:2;40471:9;40467:18;40458:6;40406:80;:::i;:::-;40496;40572:2;40561:9;40557:18;40548:6;40496:80;:::i;:::-;40586:73;40654:3;40643:9;40639:19;40630:6;40586:73;:::i;:::-;40669;40737:3;40726:9;40722:19;40713:6;40669:73;:::i;:::-;39942:807;;;;;;;;;:::o;40755:663::-;40843:6;40851;40859;40908:2;40896:9;40887:7;40883:23;40879:32;40876:119;;;40914:79;;:::i;:::-;40876:119;41034:1;41059:64;41115:7;41106:6;41095:9;41091:22;41059:64;:::i;:::-;41049:74;;41005:128;41172:2;41198:64;41254:7;41245:6;41234:9;41230:22;41198:64;:::i;:::-;41188:74;;41143:129;41311:2;41337:64;41393:7;41384:6;41373:9;41369:22;41337:64;:::i;:::-;41327:74;;41282:129;40755:663;;;;;:::o
Swarm Source
ipfs://6fc21dbe800625fa53302c6e12c0d5cad8929815fb924467bea99ab52ce11123
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.