Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 36 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 16504401 | 712 days ago | IN | 0 ETH | 0.00073812 | ||||
Approve | 16504392 | 712 days ago | IN | 0 ETH | 0.00047486 | ||||
Approve | 16504385 | 712 days ago | IN | 0 ETH | 0.00065854 | ||||
Approve | 16178525 | 757 days ago | IN | 0 ETH | 0.00103292 | ||||
Approve | 16175462 | 758 days ago | IN | 0 ETH | 0.00061492 | ||||
Approve | 16175379 | 758 days ago | IN | 0 ETH | 0.00073237 | ||||
Approve | 16175269 | 758 days ago | IN | 0 ETH | 0.0007158 | ||||
Remove Limits | 16175157 | 758 days ago | IN | 0 ETH | 0.00042786 | ||||
Approve | 16175150 | 758 days ago | IN | 0 ETH | 0.0006417 | ||||
Approve | 16175101 | 758 days ago | IN | 0 ETH | 0.00067995 | ||||
Disable Transfer... | 16174986 | 758 days ago | IN | 0 ETH | 0.00038181 | ||||
Approve | 16174956 | 758 days ago | IN | 0 ETH | 0.00064317 | ||||
Approve | 16174932 | 758 days ago | IN | 0 ETH | 0.00074266 | ||||
Approve | 16174896 | 758 days ago | IN | 0 ETH | 0.00067175 | ||||
Approve | 16174820 | 758 days ago | IN | 0 ETH | 0.00063947 | ||||
Approve | 16174791 | 758 days ago | IN | 0 ETH | 0.00070323 | ||||
Approve | 16174760 | 758 days ago | IN | 0 ETH | 0.00094524 | ||||
Approve | 16174758 | 758 days ago | IN | 0 ETH | 0.00102568 | ||||
Approve | 16174757 | 758 days ago | IN | 0 ETH | 0.00103504 | ||||
Approve | 16174754 | 758 days ago | IN | 0 ETH | 0.00109114 | ||||
Approve | 16174752 | 758 days ago | IN | 0 ETH | 0.00118282 | ||||
Approve | 16174745 | 758 days ago | IN | 0 ETH | 0.00113553 | ||||
Remove Limits | 16174730 | 758 days ago | IN | 0 ETH | 0.00100329 | ||||
Enable Trading | 16174726 | 758 days ago | IN | 0 ETH | 0.00168959 | ||||
Approve | 16174721 | 758 days ago | IN | 0 ETH | 0.00141859 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
16175421 | 758 days ago | 0.00007447 ETH | ||||
16175421 | 758 days ago | 0.00014894 ETH | ||||
16175421 | 758 days ago | 0.00003723 ETH | ||||
16175421 | 758 days ago | 0.00026064 ETH | ||||
16175389 | 758 days ago | 0.00012605 ETH | ||||
16175389 | 758 days ago | 0.00011476 ETH | ||||
16175389 | 758 days ago | 0.00004013 ETH | ||||
16175389 | 758 days ago | 0.00028095 ETH | ||||
16175353 | 758 days ago | 0.00014505 ETH | ||||
16175353 | 758 days ago | 0.00007252 ETH | ||||
16175353 | 758 days ago | 0.00003626 ETH | ||||
16175353 | 758 days ago | 0.00025384 ETH | ||||
16175327 | 758 days ago | 0.00005707 ETH | ||||
16175327 | 758 days ago | 0.00011414 ETH | ||||
16175327 | 758 days ago | 0.00002853 ETH | ||||
16175327 | 758 days ago | 0.00019975 ETH | ||||
16175319 | 758 days ago | 0.00005708 ETH | ||||
16175319 | 758 days ago | 0.00011416 ETH | ||||
16175319 | 758 days ago | 0.00002854 ETH | ||||
16175319 | 758 days ago | 0.00019978 ETH | ||||
16175261 | 758 days ago | 0.00011032 ETH | ||||
16175261 | 758 days ago | 0.00005574 ETH | ||||
16175261 | 758 days ago | 0.00002767 ETH | ||||
16175261 | 758 days ago | 0.00019374 ETH | ||||
16175230 | 758 days ago | 0.00005037 ETH |
Loading...
Loading
Contract Name:
RecoveR
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-12-13 */ /* The bull will always overpower the bear. We are Recovery. Up we go. No TG. Locked and renounced. */ // SPDX-License-Identifier: Unlicense pragma solidity 0.8.11; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _createInitialSupply(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() external virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IDexRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } interface IDexFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } contract RecoveR is ERC20, Ownable { uint256 public maxBuyAmount; uint256 public maxSellAmount; uint256 public maxWalletAmount; IDexRouter public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool private swapping; uint256 public swapTokensAtAmount; address public operationsAddress; address public TaxAddress; uint256 public tradingActiveBlock = 0; // 0 means trading is not active bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch bool public transferDelayEnabled = true; uint256 public buyTotalFees; uint256 public buyOperationsFee; uint256 public buyLiquidityFee; uint256 public buyTaxFee; uint256 public sellTotalFees; uint256 public sellOperationsFee; uint256 public sellLiquidityFee; uint256 public sellTaxFee; uint256 public tokensForOperations; uint256 public tokensForLiquidity; uint256 public tokensForTax; /******************/ // exlcude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event EnabledTrading(); event RemovedLimits(); event ExcludeFromFees(address indexed account, bool isExcluded); event UpdatedMaxBuyAmount(uint256 newAmount); event UpdatedMaxSellAmount(uint256 newAmount); event UpdatedMaxWalletAmount(uint256 newAmount); event UpdatedOperationsAddress(address indexed newWallet); event UpdatedTaxAddress(address indexed newWallet); event MaxTransactionExclusion(address _address, bool excluded); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event TransferForeignToken(address token, uint256 amount); constructor() ERC20( "Recovery", "RecoveR") { address newOwner = msg.sender; IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IDexFactory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 totalSupply = 1 * 1e8 * 1e18; maxBuyAmount = totalSupply * 1 / 10000; maxSellAmount = totalSupply * 1 / 10000; maxWalletAmount = totalSupply * 2 / 10000; swapTokensAtAmount = totalSupply * 2 / 1000000; buyOperationsFee = 1; buyLiquidityFee = 1; buyTaxFee = 1; buyTotalFees = buyOperationsFee + buyLiquidityFee + buyTaxFee; sellOperationsFee = 1; sellLiquidityFee = 1; sellTaxFee = 1; sellTotalFees = sellOperationsFee + sellLiquidityFee + sellTaxFee; _excludeFromMaxTransaction(newOwner, true); _excludeFromMaxTransaction(address(this), true); _excludeFromMaxTransaction(address(0xdead), true); excludeFromFees(newOwner, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); operationsAddress = address(0x0178Da41386Be4C6fE156f22723e3000DbCCF19f); // change this address to wallet u want for operations TaxAddress = address(0x0178Da41386Be4C6fE156f22723e3000DbCCF19f); // change this address to the one for tax _createInitialSupply(newOwner, totalSupply); transferOwnership(newOwner); } receive() external payable {} // once enabled, can never be turned off function enableTrading() external onlyOwner { require(!tradingActive, "Cannot reenable trading"); tradingActive = true; swapEnabled = true; tradingActiveBlock = block.number; emit EnabledTrading(); } // remove limits after token is stable function removeLimits() external onlyOwner { limitsInEffect = false; transferDelayEnabled = false; emit RemovedLimits(); } // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner { transferDelayEnabled = false; } function updateMaxBuyAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max buy amount lower than 0.1%"); maxBuyAmount = newNum * (2**18); emit UpdatedMaxBuyAmount(maxBuyAmount); } function updateMaxSellAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max sell amount lower than 0.1%"); maxSellAmount = newNum * (1**18); emit UpdatedMaxSellAmount(maxSellAmount); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 3 / 1000)/1e18, "Cannot set max wallet amount lower than 0.3%"); maxWalletAmount = newNum * (4**18); emit UpdatedMaxWalletAmount(maxWalletAmount); } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner { require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= totalSupply() * 1 / 1000, "Swap amount cannot be higher than 0.1% total supply."); swapTokensAtAmount = newAmount; } function _excludeFromMaxTransaction(address updAds, bool isExcluded) private { _isExcludedMaxTransactionAmount[updAds] = isExcluded; emit MaxTransactionExclusion(updAds, isExcluded); } function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner { if(!isEx){ require(updAds != uniswapV2Pair, "Cannot remove uniswap pair from max txn"); } _isExcludedMaxTransactionAmount[updAds] = isEx; } function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; _excludeFromMaxTransaction(pair, value); emit SetAutomatedMarketMakerPair(pair, value); } function updateBuyFees(uint256 _operationsFee, uint256 _liquidityFee, uint256 _TaxFee) external onlyOwner { buyOperationsFee = _operationsFee; buyLiquidityFee = _liquidityFee; buyTaxFee = _TaxFee; buyTotalFees = buyOperationsFee + buyLiquidityFee + buyTaxFee; require(buyTotalFees <= 15, "Must keep fees at 15% or less"); } function updateSellFees(uint256 _operationsFee, uint256 _liquidityFee, uint256 _TaxFee) external onlyOwner { sellOperationsFee = _operationsFee; sellLiquidityFee = _liquidityFee; sellTaxFee = _TaxFee; sellTotalFees = sellOperationsFee + sellLiquidityFee + sellTaxFee; require(sellTotalFees <= 20, "Must keep fees at 20% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function _transfer(address from, address to, uint256 amount) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "amount must be greater than 0"); if(limitsInEffect){ if (from != owner() && to != owner() && to != address(0) && to != address(0xdead)){ if(!tradingActive){ require(_isExcludedMaxTransactionAmount[from] || _isExcludedMaxTransactionAmount[to], "Trading is not active."); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled){ if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)){ require(_holderLastTransferTimestamp[tx.origin] < block.number - 4 && _holderLastTransferTimestamp[to] < block.number - 4, "_transfer:: Transfer Delay enabled. Try again later."); _holderLastTransferTimestamp[tx.origin] = block.number; _holderLastTransferTimestamp[to] = block.number; } } //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy."); require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxSellAmount, "Sell transfer amount exceeds the max sell."); } else if (!_isExcludedMaxTransactionAmount[to] && !_isExcludedMaxTransactionAmount[from]){ require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if(canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { swapping = true; swapBack(); swapping = false; } bool takeFee = true; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; uint256 penaltyAmount = 0; // only take fees on buys/sells, do not take on wallet transfers if(takeFee){ // bot/sniper penalty. Tokens get transferred to marketing wallet to allow potential refund. if(tradingActiveBlock >= block.number + 1 && automatedMarketMakerPairs[from]){ penaltyAmount = amount * 99 / 100; super._transfer(from, operationsAddress, penaltyAmount); } // on sell else if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount * sellTotalFees /100; tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForOperations += fees * sellOperationsFee / sellTotalFees; tokensForTax += fees * sellTaxFee / sellTotalFees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount * buyTotalFees / 100; tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForOperations += fees * buyOperationsFee / buyTotalFees; tokensForTax += fees * buyTaxFee / buyTotalFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees + penaltyAmount; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(0xdead), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForOperations + tokensForTax; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} if(contractBalance > swapTokensAtAmount * 10){ contractBalance = swapTokensAtAmount * 10; } bool success; // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; swapTokensForEth(contractBalance - liquidityTokens); uint256 ethBalance = address(this).balance; uint256 ethForLiquidity = ethBalance; uint256 ethForOperations = ethBalance * tokensForOperations / (totalTokensToSwap - (tokensForLiquidity/2)); uint256 ethForTax = ethBalance * tokensForTax / (totalTokensToSwap - (tokensForLiquidity/2)); ethForLiquidity -= ethForOperations + ethForTax; tokensForLiquidity = 0; tokensForOperations = 0; tokensForTax = 0; if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); } (success,) = address(TaxAddress).call{value: ethForTax}(""); (success,) = address(operationsAddress).call{value: address(this).balance}(""); } function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) { require(_token != address(0), "_token address cannot be 0"); require(_token != address(this), "Can't withdraw native tokens"); uint256 _contractBalance = IERC20(_token).balanceOf(address(this)); _sent = IERC20(_token).transfer(_to, _contractBalance); emit TransferForeignToken(_token, _contractBalance); } // withdraw ETH if stuck or someone sends to the address function withdrawStuckETH() external onlyOwner { bool success; (success,) = address(msg.sender).call{value: address(this).balance}(""); } function setOperationsAddress(address _operationsAddress) external onlyOwner { require(_operationsAddress != address(0), "_operationsAddress address cannot be 0"); operationsAddress = payable(_operationsAddress); emit UpdatedOperationsAddress(_operationsAddress); } function setTaxAddress(address _TaxAddress) external onlyOwner { require(_TaxAddress != address(0), "_TaxAddress address cannot be 0"); TaxAddress = payable(_TaxAddress); emit UpdatedTaxAddress(_TaxAddress); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedOperationsAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedTaxAddress","type":"event"},{"inputs":[],"name":"TaxAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxFee","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"setOperationsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_TaxAddress","type":"address"}],"name":"setTaxAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_TaxFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_TaxFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526000600d556001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600e60026101000a81548160ff0219169083151502179055506001601060006101000a81548160ff0219169083151502179055503480156200008257600080fd5b506040518060400160405280600881526020017f5265636f766572790000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f5265636f7665520000000000000000000000000000000000000000000000000081525081600390805190602001906200010792919062000c15565b5080600490805190602001906200012092919062000c15565b5050506000620001356200065160201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620002058160016200065960201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000285573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ab919062000d2f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000313573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000339919062000d2f565b6040518363ffffffff1660e01b81526004016200035892919062000d72565b6020604051808303816000875af115801562000378573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039e919062000d2f565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003e660a0516001620006ef60201b60201c565b60006a52b7d2dcc80cd2e4000000905061271060018262000408919062000dd8565b62000414919062000e68565b6006819055506127106001826200042c919062000dd8565b62000438919062000e68565b60078190555061271060028262000450919062000dd8565b6200045c919062000e68565b600881905550620f424060028262000475919062000dd8565b62000481919062000e68565b600a81905550600160128190555060016013819055506001601481905550601454601354601254620004b4919062000ea0565b620004c0919062000ea0565b601181905550600160168190555060016017819055506001601881905550601854601754601654620004f3919062000ea0565b620004ff919062000ea0565b601581905550620005188360016200065960201b60201c565b6200052b3060016200065960201b60201c565b6200054061dead60016200065960201b60201c565b62000553836001620007a260201b60201c565b62000566306001620007a260201b60201c565b6200057b61dead6001620007a260201b60201c565b730178da41386be4c6fe156f22723e3000dbccf19f600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730178da41386be4c6fe156f22723e3000dbccf19f600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620006378382620008ef60201b60201c565b620006488362000a4060201b60201c565b50505062001184565b600033905090565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051620006e392919062000f1a565b60405180910390a15050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200075882826200065960201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b620007b26200065160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000844576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200083b9062000fa8565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008e3919062000fca565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000962576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009599062001037565b60405180910390fd5b806002600082825462000976919062000ea0565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620009cd919062000ea0565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000a3491906200106a565b60405180910390a35050565b62000a506200065160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000ae2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ad99062000fa8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000b55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b4c90620010fd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b82805462000c23906200114e565b90600052602060002090601f01602090048101928262000c47576000855562000c93565b82601f1062000c6257805160ff191683800117855562000c93565b8280016001018555821562000c93579182015b8281111562000c9257825182559160200191906001019062000c75565b5b50905062000ca2919062000ca6565b5090565b5b8082111562000cc157600081600090555060010162000ca7565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000cf78262000cca565b9050919050565b62000d098162000cea565b811462000d1557600080fd5b50565b60008151905062000d298162000cfe565b92915050565b60006020828403121562000d485762000d4762000cc5565b5b600062000d588482850162000d18565b91505092915050565b62000d6c8162000cea565b82525050565b600060408201905062000d89600083018562000d61565b62000d98602083018462000d61565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000de58262000d9f565b915062000df28362000d9f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e2e5762000e2d62000da9565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e758262000d9f565b915062000e828362000d9f565b92508262000e955762000e9462000e39565b5b828204905092915050565b600062000ead8262000d9f565b915062000eba8362000d9f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000ef25762000ef162000da9565b5b828201905092915050565b60008115159050919050565b62000f148162000efd565b82525050565b600060408201905062000f31600083018562000d61565b62000f40602083018462000f09565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000f9060208362000f47565b915062000f9d8262000f58565b602082019050919050565b6000602082019050818103600083015262000fc38162000f81565b9050919050565b600060208201905062000fe1600083018462000f09565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200101f601f8362000f47565b91506200102c8262000fe7565b602082019050919050565b60006020820190508181036000830152620010528162001010565b9050919050565b620010648162000d9f565b82525050565b600060208201905062001081600083018462001059565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000620010e560268362000f47565b9150620010f28262001087565b604082019050919050565b600060208201905081810360008301526200111881620010d6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200116757607f821691505b602082108114156200117e576200117d6200111f565b5b50919050565b60805160a051615ecc620011e9600039600081816112ba0152818161165901528181611dc5015261319d015260008181610ded01528181613146015281816142fc015281816143dd01528181614404015281816144a001526144c70152615ecc6000f3fe60806040526004361061036f5760003560e01c8063941fa5cd116101c6578063d85ba063116100f7578063ee40166e11610095578063f5648a4f1161006f578063f5648a4f14610c83578063f637434214610c9a578063f8a25a9414610cc5578063fb002c9714610cf057610376565b8063ee40166e14610c04578063f11a24d314610c2f578063f2fde38b14610c5a57610376565b8063e2f45605116100d1578063e2f4560514610b6c578063e884f26014610b97578063e98d8d1514610bae578063ea4cfe1214610bd957610376565b8063d85ba06314610adb578063dc3f0d0f14610b06578063dd62ed3e14610b2f57610376565b8063b62496f511610164578063c17b5b8c1161013e578063c17b5b8c14610a35578063c18bc19514610a5e578063c876d0b914610a87578063d257b34f14610ab257610376565b8063b62496f5146109a4578063bbc0c742146109e1578063c024666814610a0c57610376565b8063a1883d26116101a0578063a1883d26146108d6578063a457c2d7146108ff578063a9059cbb1461093c578063aa4bde281461097957610376565b8063941fa5cd1461085757806395d89b41146108825780639a7a23d6146108ad57610376565b80635a139dd4116102a0578063751039fc1161023e5780638366e79a116102185780638366e79a146107ad57806388e765ff146107ea5780638a8c523c146108155780638da5cb5b1461082c57610376565b8063751039fc146107445780637571336a1461075b5780638095d5641461078457610376565b80636d7adcad1161027a5780636d7adcad1461069a5780636ddd1713146106c557806370a08231146106f0578063715018a61461072d57610376565b80635a139dd41461061957806366d602ae146106445780636a486a8e1461066f57610376565b80632be32b611161030d578063499b8394116102e7578063499b83941461056f57806349bd5a5e146105985780634a62bb65146105c35780634f77f6c0146105ee57610376565b80632be32b61146104de578063313ce56714610507578063395093511461053257610376565b80631694505e116103495780631694505e1461042057806318160ddd1461044b5780631a8145bb1461047657806323b872dd146104a157610376565b806306fdde031461037b578063095ea7b3146103a657806310d5de53146103e357610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d1b565b60405161039d919061460f565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c891906146ca565b610dad565b6040516103da9190614725565b60405180910390f35b3480156103ef57600080fd5b5061040a60048036038101906104059190614740565b610dcb565b6040516104179190614725565b60405180910390f35b34801561042c57600080fd5b50610435610deb565b60405161044291906147cc565b60405180910390f35b34801561045757600080fd5b50610460610e0f565b60405161046d91906147f6565b60405180910390f35b34801561048257600080fd5b5061048b610e19565b60405161049891906147f6565b60405180910390f35b3480156104ad57600080fd5b506104c860048036038101906104c39190614811565b610e1f565b6040516104d59190614725565b60405180910390f35b3480156104ea57600080fd5b5061050560048036038101906105009190614864565b610f17565b005b34801561051357600080fd5b5061051c611075565b60405161052991906148ad565b60405180910390f35b34801561053e57600080fd5b50610559600480360381019061055491906146ca565b61107e565b6040516105669190614725565b60405180910390f35b34801561057b57600080fd5b5061059660048036038101906105919190614740565b61112a565b005b3480156105a457600080fd5b506105ad6112b8565b6040516105ba91906148d7565b60405180910390f35b3480156105cf57600080fd5b506105d86112dc565b6040516105e59190614725565b60405180910390f35b3480156105fa57600080fd5b506106036112ef565b60405161061091906147f6565b60405180910390f35b34801561062557600080fd5b5061062e6112f5565b60405161063b91906147f6565b60405180910390f35b34801561065057600080fd5b506106596112fb565b60405161066691906147f6565b60405180910390f35b34801561067b57600080fd5b50610684611301565b60405161069191906147f6565b60405180910390f35b3480156106a657600080fd5b506106af611307565b6040516106bc91906147f6565b60405180910390f35b3480156106d157600080fd5b506106da61130d565b6040516106e79190614725565b60405180910390f35b3480156106fc57600080fd5b5061071760048036038101906107129190614740565b611320565b60405161072491906147f6565b60405180910390f35b34801561073957600080fd5b50610742611368565b005b34801561075057600080fd5b506107596114c0565b005b34801561076757600080fd5b50610782600480360381019061077d919061491e565b6115bb565b005b34801561079057600080fd5b506107ab60048036038101906107a6919061495e565b611742565b005b3480156107b957600080fd5b506107d460048036038101906107cf91906149b1565b61185c565b6040516107e19190614725565b60405180910390f35b3480156107f657600080fd5b506107ff611b12565b60405161080c91906147f6565b60405180910390f35b34801561082157600080fd5b5061082a611b18565b005b34801561083857600080fd5b50610841611c6a565b60405161084e91906148d7565b60405180910390f35b34801561086357600080fd5b5061086c611c94565b60405161087991906147f6565b60405180910390f35b34801561088e57600080fd5b50610897611c9a565b6040516108a4919061460f565b60405180910390f35b3480156108b957600080fd5b506108d460048036038101906108cf919061491e565b611d2c565b005b3480156108e257600080fd5b506108fd60048036038101906108f89190614740565b611e60565b005b34801561090b57600080fd5b50610926600480360381019061092191906146ca565b611fee565b6040516109339190614725565b60405180910390f35b34801561094857600080fd5b50610963600480360381019061095e91906146ca565b6120d9565b6040516109709190614725565b60405180910390f35b34801561098557600080fd5b5061098e6120f7565b60405161099b91906147f6565b60405180910390f35b3480156109b057600080fd5b506109cb60048036038101906109c69190614740565b6120fd565b6040516109d89190614725565b60405180910390f35b3480156109ed57600080fd5b506109f661211d565b604051610a039190614725565b60405180910390f35b348015610a1857600080fd5b50610a336004803603810190610a2e919061491e565b612130565b005b348015610a4157600080fd5b50610a5c6004803603810190610a57919061495e565b612270565b005b348015610a6a57600080fd5b50610a856004803603810190610a809190614864565b61238a565b005b348015610a9357600080fd5b50610a9c6124ea565b604051610aa99190614725565b60405180910390f35b348015610abe57600080fd5b50610ad96004803603810190610ad49190614864565b6124fd565b005b348015610ae757600080fd5b50610af0612665565b604051610afd91906147f6565b60405180910390f35b348015610b1257600080fd5b50610b2d6004803603810190610b289190614864565b61266b565b005b348015610b3b57600080fd5b50610b566004803603810190610b5191906149b1565b6127c7565b604051610b6391906147f6565b60405180910390f35b348015610b7857600080fd5b50610b8161284e565b604051610b8e91906147f6565b60405180910390f35b348015610ba357600080fd5b50610bac612854565b005b348015610bba57600080fd5b50610bc3612908565b604051610bd091906148d7565b60405180910390f35b348015610be557600080fd5b50610bee61292e565b604051610bfb91906148d7565b60405180910390f35b348015610c1057600080fd5b50610c19612954565b604051610c2691906147f6565b60405180910390f35b348015610c3b57600080fd5b50610c4461295a565b604051610c5191906147f6565b60405180910390f35b348015610c6657600080fd5b50610c816004803603810190610c7c9190614740565b612960565b005b348015610c8f57600080fd5b50610c98612b27565b005b348015610ca657600080fd5b50610caf612c2f565b604051610cbc91906147f6565b60405180910390f35b348015610cd157600080fd5b50610cda612c35565b604051610ce791906147f6565b60405180910390f35b348015610cfc57600080fd5b50610d05612c3b565b604051610d1291906147f6565b60405180910390f35b606060038054610d2a90614a20565b80601f0160208091040260200160405190810160405280929190818152602001828054610d5690614a20565b8015610da35780601f10610d7857610100808354040283529160200191610da3565b820191906000526020600020905b815481529060010190602001808311610d8657829003601f168201915b5050505050905090565b6000610dc1610dba612c41565b8484612c49565b6001905092915050565b601d6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b601a5481565b6000610e2c848484612e14565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e77612c41565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee90614ac4565b60405180910390fd5b610f0b85610f03612c41565b858403612c49565b60019150509392505050565b610f1f612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa590614b30565b60405180910390fd5b670de0b6b3a76400006103e86001610fc4610e0f565b610fce9190614b7f565b610fd89190614c08565b610fe29190614c08565b811015611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b90614cab565b60405180910390fd5b62040000816110339190614b7f565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de4100960065460405161106a91906147f6565b60405180910390a150565b60006012905090565b600061112061108b612c41565b848460016000611099612c41565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461111b9190614ccb565b612c49565b6001905092915050565b611132612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b890614b30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611231576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122890614d93565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f4efa56652237561d0f1fd31311aeaaa41f3b754a461545ed3cf6ced5876d298260405160405180910390a250565b7f000000000000000000000000000000000000000000000000000000000000000081565b600e60009054906101000a900460ff1681565b60165481565b60125481565b60075481565b60155481565b601b5481565b600e60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611370612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f690614b30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6114c8612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154e90614b30565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506000601060006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b6115c3612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611652576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164990614b30565b60405180910390fd5b806116e7577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116dd90614e25565b60405180910390fd5b5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61174a612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d090614b30565b60405180910390fd5b8260128190555081601381905550806014819055506014546013546012546118019190614ccb565b61180b9190614ccb565b601181905550600f6011541115611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e90614e91565b60405180910390fd5b505050565b6000611866612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ec90614b30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195c90614efd565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156119d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cb90614f69565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611a0f91906148d7565b602060405180830381865afa158015611a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a509190614f9e565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611a8d929190614fcb565b6020604051808303816000875af1158015611aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad09190615009565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611b03929190614fcb565b60405180910390a15092915050565b60065481565b611b20612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba690614b30565b60405180910390fd5b600e60019054906101000a900460ff1615611bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf690615082565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff02191690831515021790555043600d819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145481565b606060048054611ca990614a20565b80601f0160208091040260200160405190810160405280929190818152602001828054611cd590614a20565b8015611d225780601f10611cf757610100808354040283529160200191611d22565b820191906000526020600020905b815481529060010190602001808311611d0557829003601f168201915b5050505050905090565b611d34612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dba90614b30565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4990615114565b60405180910390fd5b611e5c8282613c18565b5050565b611e68612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eee90614b30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5e90615180565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167ff95a3f3be1ad3ec3d252a63182a8332b013f2251a59a30a03ecd260cbe263cc260405160405180910390a250565b60008060016000611ffd612c41565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156120ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b190615212565b60405180910390fd5b6120ce6120c5612c41565b85858403612c49565b600191505092915050565b60006120ed6120e6612c41565b8484612e14565b6001905092915050565b60085481565b601e6020528060005260406000206000915054906101000a900460ff1681565b600e60019054906101000a900460ff1681565b612138612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121be90614b30565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516122649190614725565b60405180910390a25050565b612278612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612307576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fe90614b30565b60405180910390fd5b82601681905550816017819055508060188190555060185460175460165461232f9190614ccb565b6123399190614ccb565b60158190555060146015541115612385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237c9061527e565b60405180910390fd5b505050565b612392612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241890614b30565b60405180910390fd5b670de0b6b3a76400006103e86003612437610e0f565b6124419190614b7f565b61244b9190614c08565b6124559190614c08565b811015612497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248e90615310565b60405180910390fd5b641000000000816124a89190614b7f565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc6008546040516124df91906147f6565b60405180910390a150565b601060009054906101000a900460ff1681565b612505612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258b90614b30565b60405180910390fd5b620186a060016125a2610e0f565b6125ac9190614b7f565b6125b69190614c08565b8110156125f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ef906153a2565b60405180910390fd5b6103e86001612605610e0f565b61260f9190614b7f565b6126199190614c08565b81111561265b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265290615434565b60405180910390fd5b80600a8190555050565b60115481565b612673612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612702576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f990614b30565b60405180910390fd5b670de0b6b3a76400006103e86001612718610e0f565b6127229190614b7f565b61272c9190614c08565b6127369190614c08565b811015612778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276f906154c6565b60405180910390fd5b6001816127859190614b7f565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516127bc91906147f6565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b61285c612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e290614b30565b60405180910390fd5b6000601060006101000a81548160ff021916908315150217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60135481565b612968612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ee90614b30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5e90615558565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612b2f612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb590614b30565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612be4906155a9565b60006040518083038185875af1925050503d8060008114612c21576040519150601f19603f3d011682016040523d82523d6000602084013e612c26565b606091505b50508091505050565b60175481565b60185481565b60195481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb090615630565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d20906156c2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e0791906147f6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7b90615754565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eeb906157e6565b60405180910390fd5b60008111612f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f2e90615852565b60405180910390fd5b600e60009054906101000a900460ff16156136a057612f54611c6a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612fc25750612f92611c6a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ffb5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613035575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561369f57600e60019054906101000a900460ff1661312f57601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130ef5750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61312e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613125906158be565b60405180910390fd5b5b601060009054906101000a900460ff161561335e577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156131ec57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561335d576004436131fe91906158de565b600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054108015613295575060044361325391906158de565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b6132d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132cb90615984565b60405180910390fd5b43600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555043600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134015750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156134a85760065481111561344b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161344290615a16565b60405180910390fd5b60085461345783611320565b826134629190614ccb565b11156134a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161349a90615a82565b60405180910390fd5b61369e565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561354b5750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561359a57600754811115613595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358c90615b14565b60405180910390fd5b61369d565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561363e5750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561369c5760085461364f83611320565b8261365a9190614ccb565b111561369b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161369290615a82565b60405180910390fd5b5b5b5b5b5b60006136ab30611320565b90506000600a5482101590508080156136d05750600e60029054906101000a900460ff165b80156136e95750600960009054906101000a900460ff16155b801561373f5750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137955750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137eb5750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561382f576001600960006101000a81548160ff021916908315150217905550613813613cc3565b6000600960006101000a81548160ff0219169083151502179055505b600060019050601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138d65750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156138e057600090505b6000808215613c03576001436138f69190614ccb565b600d54101580156139505750601e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156139a25760646063876139649190614b7f565b61396e9190614c08565b905061399d88600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613f5e565b613bd4565b601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156139fd57506000601554115b15613abc57606460155487613a129190614b7f565b613a1c9190614c08565b915060155460175483613a2f9190614b7f565b613a399190614c08565b601a6000828254613a4a9190614ccb565b9250508190555060155460165483613a629190614b7f565b613a6c9190614c08565b60196000828254613a7d9190614ccb565b9250508190555060155460185483613a959190614b7f565b613a9f9190614c08565b601b6000828254613ab09190614ccb565b92505081905550613bd3565b601e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613b1757506000601154115b15613bd257606460115487613b2c9190614b7f565b613b369190614c08565b915060115460135483613b499190614b7f565b613b539190614c08565b601a6000828254613b649190614ccb565b9250508190555060115460125483613b7c9190614b7f565b613b869190614c08565b60196000828254613b979190614ccb565b9250508190555060115460145483613baf9190614b7f565b613bb99190614c08565b601b6000828254613bca9190614ccb565b925050819055505b5b5b6000821115613be957613be8883084613f5e565b5b8082613bf59190614ccb565b86613c0091906158de565b95505b613c0e888888613f5e565b5050505050505050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613c7982826141c9565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613cce30611320565b90506000601b54601954601a54613ce59190614ccb565b613cef9190614ccb565b90506000821480613d005750600081145b15613d0c575050613f5c565b600a8054613d1a9190614b7f565b821115613d3257600a8054613d2f9190614b7f565b91505b600080600283601a5486613d469190614b7f565b613d509190614c08565b613d5a9190614c08565b9050613d708185613d6b91906158de565b61425d565b6000479050600081905060006002601a54613d8b9190614c08565b86613d9691906158de565b60195484613da49190614b7f565b613dae9190614c08565b905060006002601a54613dc19190614c08565b87613dcc91906158de565b601b5485613dda9190614b7f565b613de49190614c08565b90508082613df29190614ccb565b83613dfd91906158de565b92506000601a8190555060006019819055506000601b81905550600085118015613e275750600083115b15613e3757613e36858461449a565b5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613e7d906155a9565b60006040518083038185875af1925050503d8060008114613eba576040519150601f19603f3d011682016040523d82523d6000602084013e613ebf565b606091505b505080965050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613f0b906155a9565b60006040518083038185875af1925050503d8060008114613f48576040519150601f19603f3d011682016040523d82523d6000602084013e613f4d565b606091505b50508096505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fc590615754565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561403e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614035906157e6565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156140c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140bb90615ba6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546141579190614ccb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516141bb91906147f6565b60405180910390a350505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051614251929190615bc6565b60405180910390a15050565b6000600267ffffffffffffffff81111561427a57614279615bef565b5b6040519080825280602002602001820160405280156142a85781602001602082028036833780820191505090505b50905030816000815181106142c0576142bf615c1e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143899190615c62565b8160018151811061439d5761439c615c1e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614402307f000000000000000000000000000000000000000000000000000000000000000084612c49565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614464959493929190615d88565b600060405180830381600087803b15801561447e57600080fd5b505af1158015614492573d6000803e3d6000fd5b505050505050565b6144c5307f000000000000000000000000000000000000000000000000000000000000000084612c49565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161452c96959493929190615de2565b60606040518083038185885af115801561454a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061456f9190615e43565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156145b0578082015181840152602081019050614595565b838111156145bf576000848401525b50505050565b6000601f19601f8301169050919050565b60006145e182614576565b6145eb8185614581565b93506145fb818560208601614592565b614604816145c5565b840191505092915050565b6000602082019050818103600083015261462981846145d6565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061466182614636565b9050919050565b61467181614656565b811461467c57600080fd5b50565b60008135905061468e81614668565b92915050565b6000819050919050565b6146a781614694565b81146146b257600080fd5b50565b6000813590506146c48161469e565b92915050565b600080604083850312156146e1576146e0614631565b5b60006146ef8582860161467f565b9250506020614700858286016146b5565b9150509250929050565b60008115159050919050565b61471f8161470a565b82525050565b600060208201905061473a6000830184614716565b92915050565b60006020828403121561475657614755614631565b5b60006147648482850161467f565b91505092915050565b6000819050919050565b600061479261478d61478884614636565b61476d565b614636565b9050919050565b60006147a482614777565b9050919050565b60006147b682614799565b9050919050565b6147c6816147ab565b82525050565b60006020820190506147e160008301846147bd565b92915050565b6147f081614694565b82525050565b600060208201905061480b60008301846147e7565b92915050565b60008060006060848603121561482a57614829614631565b5b60006148388682870161467f565b93505060206148498682870161467f565b925050604061485a868287016146b5565b9150509250925092565b60006020828403121561487a57614879614631565b5b6000614888848285016146b5565b91505092915050565b600060ff82169050919050565b6148a781614891565b82525050565b60006020820190506148c2600083018461489e565b92915050565b6148d181614656565b82525050565b60006020820190506148ec60008301846148c8565b92915050565b6148fb8161470a565b811461490657600080fd5b50565b600081359050614918816148f2565b92915050565b6000806040838503121561493557614934614631565b5b60006149438582860161467f565b925050602061495485828601614909565b9150509250929050565b60008060006060848603121561497757614976614631565b5b6000614985868287016146b5565b9350506020614996868287016146b5565b92505060406149a7868287016146b5565b9150509250925092565b600080604083850312156149c8576149c7614631565b5b60006149d68582860161467f565b92505060206149e78582860161467f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614a3857607f821691505b60208210811415614a4c57614a4b6149f1565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614aae602883614581565b9150614ab982614a52565b604082019050919050565b60006020820190508181036000830152614add81614aa1565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b1a602083614581565b9150614b2582614ae4565b602082019050919050565b60006020820190508181036000830152614b4981614b0d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614b8a82614694565b9150614b9583614694565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bce57614bcd614b50565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c1382614694565b9150614c1e83614694565b925082614c2e57614c2d614bd9565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614c95602983614581565b9150614ca082614c39565b604082019050919050565b60006020820190508181036000830152614cc481614c88565b9050919050565b6000614cd682614694565b9150614ce183614694565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d1657614d15614b50565b5b828201905092915050565b7f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60008201527f7420626520300000000000000000000000000000000000000000000000000000602082015250565b6000614d7d602683614581565b9150614d8882614d21565b604082019050919050565b60006020820190508181036000830152614dac81614d70565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614e0f602783614581565b9150614e1a82614db3565b604082019050919050565b60006020820190508181036000830152614e3e81614e02565b9050919050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b6000614e7b601d83614581565b9150614e8682614e45565b602082019050919050565b60006020820190508181036000830152614eaa81614e6e565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614ee7601a83614581565b9150614ef282614eb1565b602082019050919050565b60006020820190508181036000830152614f1681614eda565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b6000614f53601c83614581565b9150614f5e82614f1d565b602082019050919050565b60006020820190508181036000830152614f8281614f46565b9050919050565b600081519050614f988161469e565b92915050565b600060208284031215614fb457614fb3614631565b5b6000614fc284828501614f89565b91505092915050565b6000604082019050614fe060008301856148c8565b614fed60208301846147e7565b9392505050565b600081519050615003816148f2565b92915050565b60006020828403121561501f5761501e614631565b5b600061502d84828501614ff4565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b600061506c601783614581565b915061507782615036565b602082019050919050565b6000602082019050818103600083015261509b8161505f565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006150fe603983614581565b9150615109826150a2565b604082019050919050565b6000602082019050818103600083015261512d816150f1565b9050919050565b7f5f5461784164647265737320616464726573732063616e6e6f74206265203000600082015250565b600061516a601f83614581565b915061517582615134565b602082019050919050565b600060208201905081810360008301526151998161515d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006151fc602583614581565b9150615207826151a0565b604082019050919050565b6000602082019050818103600083015261522b816151ef565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b6000615268601d83614581565b915061527382615232565b602082019050919050565b600060208201905081810360008301526152978161525b565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b60006152fa602c83614581565b91506153058261529e565b604082019050919050565b60006020820190508181036000830152615329816152ed565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061538c603583614581565b915061539782615330565b604082019050919050565b600060208201905081810360008301526153bb8161537f565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b600061541e603483614581565b9150615429826153c2565b604082019050919050565b6000602082019050818103600083015261544d81615411565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b60006154b0602a83614581565b91506154bb82615454565b604082019050919050565b600060208201905081810360008301526154df816154a3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615542602683614581565b915061554d826154e6565b604082019050919050565b6000602082019050818103600083015261557181615535565b9050919050565b600081905092915050565b50565b6000615593600083615578565b915061559e82615583565b600082019050919050565b60006155b482615586565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061561a602483614581565b9150615625826155be565b604082019050919050565b600060208201905081810360008301526156498161560d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006156ac602283614581565b91506156b782615650565b604082019050919050565b600060208201905081810360008301526156db8161569f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061573e602583614581565b9150615749826156e2565b604082019050919050565b6000602082019050818103600083015261576d81615731565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006157d0602383614581565b91506157db82615774565b604082019050919050565b600060208201905081810360008301526157ff816157c3565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b600061583c601d83614581565b915061584782615806565b602082019050919050565b6000602082019050818103600083015261586b8161582f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006158a8601683614581565b91506158b382615872565b602082019050919050565b600060208201905081810360008301526158d78161589b565b9050919050565b60006158e982614694565b91506158f483614694565b92508282101561590757615906614b50565b5b828203905092915050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e202054727920616761696e206c617465722e0000000000000000000000602082015250565b600061596e603583614581565b915061597982615912565b604082019050919050565b6000602082019050818103600083015261599d81615961565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000615a00602883614581565b9150615a0b826159a4565b604082019050919050565b60006020820190508181036000830152615a2f816159f3565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b6000615a6c601883614581565b9150615a7782615a36565b602082019050919050565b60006020820190508181036000830152615a9b81615a5f565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615afe602a83614581565b9150615b0982615aa2565b604082019050919050565b60006020820190508181036000830152615b2d81615af1565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615b90602683614581565b9150615b9b82615b34565b604082019050919050565b60006020820190508181036000830152615bbf81615b83565b9050919050565b6000604082019050615bdb60008301856148c8565b615be86020830184614716565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615c5c81614668565b92915050565b600060208284031215615c7857615c77614631565b5b6000615c8684828501615c4d565b91505092915050565b6000819050919050565b6000615cb4615caf615caa84615c8f565b61476d565b614694565b9050919050565b615cc481615c99565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615cff81614656565b82525050565b6000615d118383615cf6565b60208301905092915050565b6000602082019050919050565b6000615d3582615cca565b615d3f8185615cd5565b9350615d4a83615ce6565b8060005b83811015615d7b578151615d628882615d05565b9750615d6d83615d1d565b925050600181019050615d4e565b5085935050505092915050565b600060a082019050615d9d60008301886147e7565b615daa6020830187615cbb565b8181036040830152615dbc8186615d2a565b9050615dcb60608301856148c8565b615dd860808301846147e7565b9695505050505050565b600060c082019050615df760008301896148c8565b615e0460208301886147e7565b615e116040830187615cbb565b615e1e6060830186615cbb565b615e2b60808301856148c8565b615e3860a08301846147e7565b979650505050505050565b600080600060608486031215615e5c57615e5b614631565b5b6000615e6a86828701614f89565b9350506020615e7b86828701614f89565b9250506040615e8c86828701614f89565b915050925092509256fea264697066735822122023bfe3db147e21b9a09aed9082363d0a8048910f3910681a533d2f75b4914d4464736f6c634300080b0033
Deployed Bytecode
0x60806040526004361061036f5760003560e01c8063941fa5cd116101c6578063d85ba063116100f7578063ee40166e11610095578063f5648a4f1161006f578063f5648a4f14610c83578063f637434214610c9a578063f8a25a9414610cc5578063fb002c9714610cf057610376565b8063ee40166e14610c04578063f11a24d314610c2f578063f2fde38b14610c5a57610376565b8063e2f45605116100d1578063e2f4560514610b6c578063e884f26014610b97578063e98d8d1514610bae578063ea4cfe1214610bd957610376565b8063d85ba06314610adb578063dc3f0d0f14610b06578063dd62ed3e14610b2f57610376565b8063b62496f511610164578063c17b5b8c1161013e578063c17b5b8c14610a35578063c18bc19514610a5e578063c876d0b914610a87578063d257b34f14610ab257610376565b8063b62496f5146109a4578063bbc0c742146109e1578063c024666814610a0c57610376565b8063a1883d26116101a0578063a1883d26146108d6578063a457c2d7146108ff578063a9059cbb1461093c578063aa4bde281461097957610376565b8063941fa5cd1461085757806395d89b41146108825780639a7a23d6146108ad57610376565b80635a139dd4116102a0578063751039fc1161023e5780638366e79a116102185780638366e79a146107ad57806388e765ff146107ea5780638a8c523c146108155780638da5cb5b1461082c57610376565b8063751039fc146107445780637571336a1461075b5780638095d5641461078457610376565b80636d7adcad1161027a5780636d7adcad1461069a5780636ddd1713146106c557806370a08231146106f0578063715018a61461072d57610376565b80635a139dd41461061957806366d602ae146106445780636a486a8e1461066f57610376565b80632be32b611161030d578063499b8394116102e7578063499b83941461056f57806349bd5a5e146105985780634a62bb65146105c35780634f77f6c0146105ee57610376565b80632be32b61146104de578063313ce56714610507578063395093511461053257610376565b80631694505e116103495780631694505e1461042057806318160ddd1461044b5780631a8145bb1461047657806323b872dd146104a157610376565b806306fdde031461037b578063095ea7b3146103a657806310d5de53146103e357610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d1b565b60405161039d919061460f565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c891906146ca565b610dad565b6040516103da9190614725565b60405180910390f35b3480156103ef57600080fd5b5061040a60048036038101906104059190614740565b610dcb565b6040516104179190614725565b60405180910390f35b34801561042c57600080fd5b50610435610deb565b60405161044291906147cc565b60405180910390f35b34801561045757600080fd5b50610460610e0f565b60405161046d91906147f6565b60405180910390f35b34801561048257600080fd5b5061048b610e19565b60405161049891906147f6565b60405180910390f35b3480156104ad57600080fd5b506104c860048036038101906104c39190614811565b610e1f565b6040516104d59190614725565b60405180910390f35b3480156104ea57600080fd5b5061050560048036038101906105009190614864565b610f17565b005b34801561051357600080fd5b5061051c611075565b60405161052991906148ad565b60405180910390f35b34801561053e57600080fd5b50610559600480360381019061055491906146ca565b61107e565b6040516105669190614725565b60405180910390f35b34801561057b57600080fd5b5061059660048036038101906105919190614740565b61112a565b005b3480156105a457600080fd5b506105ad6112b8565b6040516105ba91906148d7565b60405180910390f35b3480156105cf57600080fd5b506105d86112dc565b6040516105e59190614725565b60405180910390f35b3480156105fa57600080fd5b506106036112ef565b60405161061091906147f6565b60405180910390f35b34801561062557600080fd5b5061062e6112f5565b60405161063b91906147f6565b60405180910390f35b34801561065057600080fd5b506106596112fb565b60405161066691906147f6565b60405180910390f35b34801561067b57600080fd5b50610684611301565b60405161069191906147f6565b60405180910390f35b3480156106a657600080fd5b506106af611307565b6040516106bc91906147f6565b60405180910390f35b3480156106d157600080fd5b506106da61130d565b6040516106e79190614725565b60405180910390f35b3480156106fc57600080fd5b5061071760048036038101906107129190614740565b611320565b60405161072491906147f6565b60405180910390f35b34801561073957600080fd5b50610742611368565b005b34801561075057600080fd5b506107596114c0565b005b34801561076757600080fd5b50610782600480360381019061077d919061491e565b6115bb565b005b34801561079057600080fd5b506107ab60048036038101906107a6919061495e565b611742565b005b3480156107b957600080fd5b506107d460048036038101906107cf91906149b1565b61185c565b6040516107e19190614725565b60405180910390f35b3480156107f657600080fd5b506107ff611b12565b60405161080c91906147f6565b60405180910390f35b34801561082157600080fd5b5061082a611b18565b005b34801561083857600080fd5b50610841611c6a565b60405161084e91906148d7565b60405180910390f35b34801561086357600080fd5b5061086c611c94565b60405161087991906147f6565b60405180910390f35b34801561088e57600080fd5b50610897611c9a565b6040516108a4919061460f565b60405180910390f35b3480156108b957600080fd5b506108d460048036038101906108cf919061491e565b611d2c565b005b3480156108e257600080fd5b506108fd60048036038101906108f89190614740565b611e60565b005b34801561090b57600080fd5b50610926600480360381019061092191906146ca565b611fee565b6040516109339190614725565b60405180910390f35b34801561094857600080fd5b50610963600480360381019061095e91906146ca565b6120d9565b6040516109709190614725565b60405180910390f35b34801561098557600080fd5b5061098e6120f7565b60405161099b91906147f6565b60405180910390f35b3480156109b057600080fd5b506109cb60048036038101906109c69190614740565b6120fd565b6040516109d89190614725565b60405180910390f35b3480156109ed57600080fd5b506109f661211d565b604051610a039190614725565b60405180910390f35b348015610a1857600080fd5b50610a336004803603810190610a2e919061491e565b612130565b005b348015610a4157600080fd5b50610a5c6004803603810190610a57919061495e565b612270565b005b348015610a6a57600080fd5b50610a856004803603810190610a809190614864565b61238a565b005b348015610a9357600080fd5b50610a9c6124ea565b604051610aa99190614725565b60405180910390f35b348015610abe57600080fd5b50610ad96004803603810190610ad49190614864565b6124fd565b005b348015610ae757600080fd5b50610af0612665565b604051610afd91906147f6565b60405180910390f35b348015610b1257600080fd5b50610b2d6004803603810190610b289190614864565b61266b565b005b348015610b3b57600080fd5b50610b566004803603810190610b5191906149b1565b6127c7565b604051610b6391906147f6565b60405180910390f35b348015610b7857600080fd5b50610b8161284e565b604051610b8e91906147f6565b60405180910390f35b348015610ba357600080fd5b50610bac612854565b005b348015610bba57600080fd5b50610bc3612908565b604051610bd091906148d7565b60405180910390f35b348015610be557600080fd5b50610bee61292e565b604051610bfb91906148d7565b60405180910390f35b348015610c1057600080fd5b50610c19612954565b604051610c2691906147f6565b60405180910390f35b348015610c3b57600080fd5b50610c4461295a565b604051610c5191906147f6565b60405180910390f35b348015610c6657600080fd5b50610c816004803603810190610c7c9190614740565b612960565b005b348015610c8f57600080fd5b50610c98612b27565b005b348015610ca657600080fd5b50610caf612c2f565b604051610cbc91906147f6565b60405180910390f35b348015610cd157600080fd5b50610cda612c35565b604051610ce791906147f6565b60405180910390f35b348015610cfc57600080fd5b50610d05612c3b565b604051610d1291906147f6565b60405180910390f35b606060038054610d2a90614a20565b80601f0160208091040260200160405190810160405280929190818152602001828054610d5690614a20565b8015610da35780601f10610d7857610100808354040283529160200191610da3565b820191906000526020600020905b815481529060010190602001808311610d8657829003601f168201915b5050505050905090565b6000610dc1610dba612c41565b8484612c49565b6001905092915050565b601d6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b601a5481565b6000610e2c848484612e14565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e77612c41565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee90614ac4565b60405180910390fd5b610f0b85610f03612c41565b858403612c49565b60019150509392505050565b610f1f612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa590614b30565b60405180910390fd5b670de0b6b3a76400006103e86001610fc4610e0f565b610fce9190614b7f565b610fd89190614c08565b610fe29190614c08565b811015611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101b90614cab565b60405180910390fd5b62040000816110339190614b7f565b6006819055507ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de4100960065460405161106a91906147f6565b60405180910390a150565b60006012905090565b600061112061108b612c41565b848460016000611099612c41565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461111b9190614ccb565b612c49565b6001905092915050565b611132612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b890614b30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611231576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122890614d93565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f4efa56652237561d0f1fd31311aeaaa41f3b754a461545ed3cf6ced5876d298260405160405180910390a250565b7f0000000000000000000000008f2d3aaf5ce96cb250ce32b9eab1232b366d76bd81565b600e60009054906101000a900460ff1681565b60165481565b60125481565b60075481565b60155481565b601b5481565b600e60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611370612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f690614b30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6114c8612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611557576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154e90614b30565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506000601060006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b6115c3612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611652576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164990614b30565b60405180910390fd5b806116e7577f0000000000000000000000008f2d3aaf5ce96cb250ce32b9eab1232b366d76bd73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116dd90614e25565b60405180910390fd5b5b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61174a612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d090614b30565b60405180910390fd5b8260128190555081601381905550806014819055506014546013546012546118019190614ccb565b61180b9190614ccb565b601181905550600f6011541115611857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184e90614e91565b60405180910390fd5b505050565b6000611866612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ec90614b30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195c90614efd565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156119d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cb90614f69565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611a0f91906148d7565b602060405180830381865afa158015611a2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a509190614f9e565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611a8d929190614fcb565b6020604051808303816000875af1158015611aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad09190615009565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611b03929190614fcb565b60405180910390a15092915050565b60065481565b611b20612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611baf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba690614b30565b60405180910390fd5b600e60019054906101000a900460ff1615611bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf690615082565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff02191690831515021790555043600d819055507fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb760405160405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145481565b606060048054611ca990614a20565b80601f0160208091040260200160405190810160405280929190818152602001828054611cd590614a20565b8015611d225780601f10611cf757610100808354040283529160200191611d22565b820191906000526020600020905b815481529060010190602001808311611d0557829003601f168201915b5050505050905090565b611d34612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dba90614b30565b60405180910390fd5b7f0000000000000000000000008f2d3aaf5ce96cb250ce32b9eab1232b366d76bd73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4990615114565b60405180910390fd5b611e5c8282613c18565b5050565b611e68612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eee90614b30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5e90615180565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167ff95a3f3be1ad3ec3d252a63182a8332b013f2251a59a30a03ecd260cbe263cc260405160405180910390a250565b60008060016000611ffd612c41565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156120ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b190615212565b60405180910390fd5b6120ce6120c5612c41565b85858403612c49565b600191505092915050565b60006120ed6120e6612c41565b8484612e14565b6001905092915050565b60085481565b601e6020528060005260406000206000915054906101000a900460ff1681565b600e60019054906101000a900460ff1681565b612138612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121be90614b30565b60405180910390fd5b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516122649190614725565b60405180910390a25050565b612278612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612307576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fe90614b30565b60405180910390fd5b82601681905550816017819055508060188190555060185460175460165461232f9190614ccb565b6123399190614ccb565b60158190555060146015541115612385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237c9061527e565b60405180910390fd5b505050565b612392612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241890614b30565b60405180910390fd5b670de0b6b3a76400006103e86003612437610e0f565b6124419190614b7f565b61244b9190614c08565b6124559190614c08565b811015612497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248e90615310565b60405180910390fd5b641000000000816124a89190614b7f565b6008819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc6008546040516124df91906147f6565b60405180910390a150565b601060009054906101000a900460ff1681565b612505612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258b90614b30565b60405180910390fd5b620186a060016125a2610e0f565b6125ac9190614b7f565b6125b69190614c08565b8110156125f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ef906153a2565b60405180910390fd5b6103e86001612605610e0f565b61260f9190614b7f565b6126199190614c08565b81111561265b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265290615434565b60405180910390fd5b80600a8190555050565b60115481565b612673612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612702576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f990614b30565b60405180910390fd5b670de0b6b3a76400006103e86001612718610e0f565b6127229190614b7f565b61272c9190614c08565b6127369190614c08565b811015612778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276f906154c6565b60405180910390fd5b6001816127859190614b7f565b6007819055507f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e6007546040516127bc91906147f6565b60405180910390a150565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b61285c612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e290614b30565b60405180910390fd5b6000601060006101000a81548160ff021916908315150217905550565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60135481565b612968612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ee90614b30565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5e90615558565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612b2f612c41565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb590614b30565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1647604051612be4906155a9565b60006040518083038185875af1925050503d8060008114612c21576040519150601f19603f3d011682016040523d82523d6000602084013e612c26565b606091505b50508091505050565b60175481565b60185481565b60195481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb090615630565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d20906156c2565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e0791906147f6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612e84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7b90615754565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eeb906157e6565b60405180910390fd5b60008111612f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f2e90615852565b60405180910390fd5b600e60009054906101000a900460ff16156136a057612f54611c6a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612fc25750612f92611c6a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612ffb5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015613035575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561369f57600e60019054906101000a900460ff1661312f57601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130ef5750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61312e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613125906158be565b60405180910390fd5b5b601060009054906101000a900460ff161561335e577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156131ec57507f0000000000000000000000008f2d3aaf5ce96cb250ce32b9eab1232b366d76bd73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561335d576004436131fe91906158de565b600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054108015613295575060044361325391906158de565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b6132d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132cb90615984565b60405180910390fd5b43600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555043600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134015750601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156134a85760065481111561344b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161344290615a16565b60405180910390fd5b60085461345783611320565b826134629190614ccb565b11156134a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161349a90615a82565b60405180910390fd5b61369e565b601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561354b5750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561359a57600754811115613595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358c90615b14565b60405180910390fd5b61369d565b601d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561363e5750601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561369c5760085461364f83611320565b8261365a9190614ccb565b111561369b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161369290615a82565b60405180910390fd5b5b5b5b5b5b60006136ab30611320565b90506000600a5482101590508080156136d05750600e60029054906101000a900460ff165b80156136e95750600960009054906101000a900460ff16155b801561373f5750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137955750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137eb5750601c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561382f576001600960006101000a81548160ff021916908315150217905550613813613cc3565b6000600960006101000a81548160ff0219169083151502179055505b600060019050601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806138d65750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156138e057600090505b6000808215613c03576001436138f69190614ccb565b600d54101580156139505750601e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156139a25760646063876139649190614b7f565b61396e9190614c08565b905061399d88600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613f5e565b613bd4565b601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156139fd57506000601554115b15613abc57606460155487613a129190614b7f565b613a1c9190614c08565b915060155460175483613a2f9190614b7f565b613a399190614c08565b601a6000828254613a4a9190614ccb565b9250508190555060155460165483613a629190614b7f565b613a6c9190614c08565b60196000828254613a7d9190614ccb565b9250508190555060155460185483613a959190614b7f565b613a9f9190614c08565b601b6000828254613ab09190614ccb565b92505081905550613bd3565b601e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613b1757506000601154115b15613bd257606460115487613b2c9190614b7f565b613b369190614c08565b915060115460135483613b499190614b7f565b613b539190614c08565b601a6000828254613b649190614ccb565b9250508190555060115460125483613b7c9190614b7f565b613b869190614c08565b60196000828254613b979190614ccb565b9250508190555060115460145483613baf9190614b7f565b613bb99190614c08565b601b6000828254613bca9190614ccb565b925050819055505b5b5b6000821115613be957613be8883084613f5e565b5b8082613bf59190614ccb565b86613c0091906158de565b95505b613c0e888888613f5e565b5050505050505050565b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613c7982826141c9565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613cce30611320565b90506000601b54601954601a54613ce59190614ccb565b613cef9190614ccb565b90506000821480613d005750600081145b15613d0c575050613f5c565b600a8054613d1a9190614b7f565b821115613d3257600a8054613d2f9190614b7f565b91505b600080600283601a5486613d469190614b7f565b613d509190614c08565b613d5a9190614c08565b9050613d708185613d6b91906158de565b61425d565b6000479050600081905060006002601a54613d8b9190614c08565b86613d9691906158de565b60195484613da49190614b7f565b613dae9190614c08565b905060006002601a54613dc19190614c08565b87613dcc91906158de565b601b5485613dda9190614b7f565b613de49190614c08565b90508082613df29190614ccb565b83613dfd91906158de565b92506000601a8190555060006019819055506000601b81905550600085118015613e275750600083115b15613e3757613e36858461449a565b5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613e7d906155a9565b60006040518083038185875af1925050503d8060008114613eba576040519150601f19603f3d011682016040523d82523d6000602084013e613ebf565b606091505b505080965050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613f0b906155a9565b60006040518083038185875af1925050503d8060008114613f48576040519150601f19603f3d011682016040523d82523d6000602084013e613f4d565b606091505b50508096505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613fce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fc590615754565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561403e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614035906157e6565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156140c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140bb90615ba6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546141579190614ccb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516141bb91906147f6565b60405180910390a350505050565b80601d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051614251929190615bc6565b60405180910390a15050565b6000600267ffffffffffffffff81111561427a57614279615bef565b5b6040519080825280602002602001820160405280156142a85781602001602082028036833780820191505090505b50905030816000815181106142c0576142bf615c1e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614365573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143899190615c62565b8160018151811061439d5761439c615c1e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614402307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612c49565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614464959493929190615d88565b600060405180830381600087803b15801561447e57600080fd5b505af1158015614492573d6000803e3d6000fd5b505050505050565b6144c5307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612c49565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161452c96959493929190615de2565b60606040518083038185885af115801561454a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061456f9190615e43565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156145b0578082015181840152602081019050614595565b838111156145bf576000848401525b50505050565b6000601f19601f8301169050919050565b60006145e182614576565b6145eb8185614581565b93506145fb818560208601614592565b614604816145c5565b840191505092915050565b6000602082019050818103600083015261462981846145d6565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061466182614636565b9050919050565b61467181614656565b811461467c57600080fd5b50565b60008135905061468e81614668565b92915050565b6000819050919050565b6146a781614694565b81146146b257600080fd5b50565b6000813590506146c48161469e565b92915050565b600080604083850312156146e1576146e0614631565b5b60006146ef8582860161467f565b9250506020614700858286016146b5565b9150509250929050565b60008115159050919050565b61471f8161470a565b82525050565b600060208201905061473a6000830184614716565b92915050565b60006020828403121561475657614755614631565b5b60006147648482850161467f565b91505092915050565b6000819050919050565b600061479261478d61478884614636565b61476d565b614636565b9050919050565b60006147a482614777565b9050919050565b60006147b682614799565b9050919050565b6147c6816147ab565b82525050565b60006020820190506147e160008301846147bd565b92915050565b6147f081614694565b82525050565b600060208201905061480b60008301846147e7565b92915050565b60008060006060848603121561482a57614829614631565b5b60006148388682870161467f565b93505060206148498682870161467f565b925050604061485a868287016146b5565b9150509250925092565b60006020828403121561487a57614879614631565b5b6000614888848285016146b5565b91505092915050565b600060ff82169050919050565b6148a781614891565b82525050565b60006020820190506148c2600083018461489e565b92915050565b6148d181614656565b82525050565b60006020820190506148ec60008301846148c8565b92915050565b6148fb8161470a565b811461490657600080fd5b50565b600081359050614918816148f2565b92915050565b6000806040838503121561493557614934614631565b5b60006149438582860161467f565b925050602061495485828601614909565b9150509250929050565b60008060006060848603121561497757614976614631565b5b6000614985868287016146b5565b9350506020614996868287016146b5565b92505060406149a7868287016146b5565b9150509250925092565b600080604083850312156149c8576149c7614631565b5b60006149d68582860161467f565b92505060206149e78582860161467f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614a3857607f821691505b60208210811415614a4c57614a4b6149f1565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000614aae602883614581565b9150614ab982614a52565b604082019050919050565b60006020820190508181036000830152614add81614aa1565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b1a602083614581565b9150614b2582614ae4565b602082019050919050565b60006020820190508181036000830152614b4981614b0d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614b8a82614694565b9150614b9583614694565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bce57614bcd614b50565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614c1382614694565b9150614c1e83614694565b925082614c2e57614c2d614bd9565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b6000614c95602983614581565b9150614ca082614c39565b604082019050919050565b60006020820190508181036000830152614cc481614c88565b9050919050565b6000614cd682614694565b9150614ce183614694565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d1657614d15614b50565b5b828201905092915050565b7f5f6f7065726174696f6e734164647265737320616464726573732063616e6e6f60008201527f7420626520300000000000000000000000000000000000000000000000000000602082015250565b6000614d7d602683614581565b9150614d8882614d21565b604082019050919050565b60006020820190508181036000830152614dac81614d70565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614e0f602783614581565b9150614e1a82614db3565b604082019050919050565b60006020820190508181036000830152614e3e81614e02565b9050919050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b6000614e7b601d83614581565b9150614e8682614e45565b602082019050919050565b60006020820190508181036000830152614eaa81614e6e565b9050919050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614ee7601a83614581565b9150614ef282614eb1565b602082019050919050565b60006020820190508181036000830152614f1681614eda565b9050919050565b7f43616e2774207769746864726177206e617469766520746f6b656e7300000000600082015250565b6000614f53601c83614581565b9150614f5e82614f1d565b602082019050919050565b60006020820190508181036000830152614f8281614f46565b9050919050565b600081519050614f988161469e565b92915050565b600060208284031215614fb457614fb3614631565b5b6000614fc284828501614f89565b91505092915050565b6000604082019050614fe060008301856148c8565b614fed60208301846147e7565b9392505050565b600081519050615003816148f2565b92915050565b60006020828403121561501f5761501e614631565b5b600061502d84828501614ff4565b91505092915050565b7f43616e6e6f74207265656e61626c652074726164696e67000000000000000000600082015250565b600061506c601783614581565b915061507782615036565b602082019050919050565b6000602082019050818103600083015261509b8161505f565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006150fe603983614581565b9150615109826150a2565b604082019050919050565b6000602082019050818103600083015261512d816150f1565b9050919050565b7f5f5461784164647265737320616464726573732063616e6e6f74206265203000600082015250565b600061516a601f83614581565b915061517582615134565b602082019050919050565b600060208201905081810360008301526151998161515d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006151fc602583614581565b9150615207826151a0565b604082019050919050565b6000602082019050818103600083015261522b816151ef565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b6000615268601d83614581565b915061527382615232565b602082019050919050565b600060208201905081810360008301526152978161525b565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b60006152fa602c83614581565b91506153058261529e565b604082019050919050565b60006020820190508181036000830152615329816152ed565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061538c603583614581565b915061539782615330565b604082019050919050565b600060208201905081810360008301526153bb8161537f565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e312520746f74616c20737570706c792e000000000000000000000000602082015250565b600061541e603483614581565b9150615429826153c2565b604082019050919050565b6000602082019050818103600083015261544d81615411565b9050919050565b7f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f77657260008201527f207468616e20302e312500000000000000000000000000000000000000000000602082015250565b60006154b0602a83614581565b91506154bb82615454565b604082019050919050565b600060208201905081810360008301526154df816154a3565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615542602683614581565b915061554d826154e6565b604082019050919050565b6000602082019050818103600083015261557181615535565b9050919050565b600081905092915050565b50565b6000615593600083615578565b915061559e82615583565b600082019050919050565b60006155b482615586565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061561a602483614581565b9150615625826155be565b604082019050919050565b600060208201905081810360008301526156498161560d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006156ac602283614581565b91506156b782615650565b604082019050919050565b600060208201905081810360008301526156db8161569f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061573e602583614581565b9150615749826156e2565b604082019050919050565b6000602082019050818103600083015261576d81615731565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006157d0602383614581565b91506157db82615774565b604082019050919050565b600060208201905081810360008301526157ff816157c3565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b600061583c601d83614581565b915061584782615806565b602082019050919050565b6000602082019050818103600083015261586b8161582f565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006158a8601683614581565b91506158b382615872565b602082019050919050565b600060208201905081810360008301526158d78161589b565b9050919050565b60006158e982614694565b91506158f483614694565b92508282101561590757615906614b50565b5b828203905092915050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e202054727920616761696e206c617465722e0000000000000000000000602082015250565b600061596e603583614581565b915061597982615912565b604082019050919050565b6000602082019050818103600083015261599d81615961565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178206275792e000000000000000000000000000000000000000000000000602082015250565b6000615a00602883614581565b9150615a0b826159a4565b604082019050919050565b60006020820190508181036000830152615a2f816159f3565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b6000615a6c601883614581565b9150615a7782615a36565b602082019050919050565b60006020820190508181036000830152615a9b81615a5f565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61782073656c6c2e00000000000000000000000000000000000000000000602082015250565b6000615afe602a83614581565b9150615b0982615aa2565b604082019050919050565b60006020820190508181036000830152615b2d81615af1565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615b90602683614581565b9150615b9b82615b34565b604082019050919050565b60006020820190508181036000830152615bbf81615b83565b9050919050565b6000604082019050615bdb60008301856148c8565b615be86020830184614716565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050615c5c81614668565b92915050565b600060208284031215615c7857615c77614631565b5b6000615c8684828501615c4d565b91505092915050565b6000819050919050565b6000615cb4615caf615caa84615c8f565b61476d565b614694565b9050919050565b615cc481615c99565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615cff81614656565b82525050565b6000615d118383615cf6565b60208301905092915050565b6000602082019050919050565b6000615d3582615cca565b615d3f8185615cd5565b9350615d4a83615ce6565b8060005b83811015615d7b578151615d628882615d05565b9750615d6d83615d1d565b925050600181019050615d4e565b5085935050505092915050565b600060a082019050615d9d60008301886147e7565b615daa6020830187615cbb565b8181036040830152615dbc8186615d2a565b9050615dcb60608301856148c8565b615dd860808301846147e7565b9695505050505050565b600060c082019050615df760008301896148c8565b615e0460208301886147e7565b615e116040830187615cbb565b615e1e6060830186615cbb565b615e2b60808301856148c8565b615e3860a08301846147e7565b979650505050505050565b600080600060608486031215615e5c57615e5b614631565b5b6000615e6a86828701614f89565b9350506020615e7b86828701614f89565b9250506040615e8c86828701614f89565b915050925092509256fea264697066735822122023bfe3db147e21b9a09aed9082363d0a8048910f3910681a533d2f75b4914d4464736f6c634300080b0033
Deployed Bytecode Sourcemap
9517:16408:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4155:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5069:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10889:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9669:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4476:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10668:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5246:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14476:268;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4375:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5746:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25376:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9719:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9988:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10516:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10373:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9595:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10481;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10708:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10068:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4592:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8236:150;;;;;;;;;;;;;:::i;:::-;;14142:154;;;;;;;;;;;;;:::i;:::-;;15973:267;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16758:373;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24682:456;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9561:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13837:249;;;;;;;;;;;;;:::i;:::-;;8022:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10448:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4263:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16248:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25681:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5969:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4727:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9630:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11111:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10028:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17529:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17139:382;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15037:283;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10291:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15390:350;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10339:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14756:273;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4910:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9794:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14366:98;;;;;;;;;;;;;:::i;:::-;;9875:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9836:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9909:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10411:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8394:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25208:160;;;;;;;;;;;;;:::i;:::-;;10555:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10593:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10627:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4155:100;4209:13;4242:5;4235:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4155:100;:::o;5069:169::-;5152:4;5169:39;5178:12;:10;:12::i;:::-;5192:7;5201:6;5169:8;:39::i;:::-;5226:4;5219:11;;5069:169;;;;:::o;10889:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;9669:43::-;;;:::o;4476:108::-;4537:7;4564:12;;4557:19;;4476:108;:::o;10668:33::-;;;;:::o;5246:492::-;5386:4;5403:36;5413:6;5421:9;5432:6;5403:9;:36::i;:::-;5452:24;5479:11;:19;5491:6;5479:19;;;;;;;;;;;;;;;:33;5499:12;:10;:12::i;:::-;5479:33;;;;;;;;;;;;;;;;5452:60;;5551:6;5531:16;:26;;5523:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5638:57;5647:6;5655:12;:10;:12::i;:::-;5688:6;5669:16;:25;5638:8;:57::i;:::-;5726:4;5719:11;;;5246:492;;;;;:::o;14476:268::-;8159:12;:10;:12::i;:::-;8149:22;;:6;;;;;;;;;;;:22;;;8141:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14595:4:::1;14589;14585:1;14569:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;14568:31;;;;:::i;:::-;14558:6;:41;;14550:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;14681:5;14671:6;:16;;;;:::i;:::-;14656:12;:31;;;;14703:33;14723:12;;14703:33;;;;;;:::i;:::-;;;;;;;;14476:268:::0;:::o;4375:93::-;4433:5;4458:2;4451:9;;4375:93;:::o;5746:215::-;5834:4;5851:80;5860:12;:10;:12::i;:::-;5874:7;5920:10;5883:11;:25;5895:12;:10;:12::i;:::-;5883:25;;;;;;;;;;;;;;;:34;5909:7;5883:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;5851:8;:80::i;:::-;5949:4;5942:11;;5746:215;;;;:::o;25376:297::-;8159:12;:10;:12::i;:::-;8149:22;;:6;;;;;;;;;;;:22;;;8141:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25502:1:::1;25472:32;;:18;:32;;;;25464:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;25586:18;25558:17;;:47;;;;;;;;;;;;;;;;;;25646:18;25621:44;;;;;;;;;;;;25376:297:::0;:::o;9719:38::-;;;:::o;9988:33::-;;;;;;;;;;;;;:::o;10516:32::-;;;;:::o;10373:31::-;;;;:::o;9595:28::-;;;;:::o;10481:::-;;;;:::o;10708:27::-;;;;:::o;10068:31::-;;;;;;;;;;;;;:::o;4592:127::-;4666:7;4693:9;:18;4703:7;4693:18;;;;;;;;;;;;;;;;4686:25;;4592:127;;;:::o;8236:150::-;8159:12;:10;:12::i;:::-;8149:22;;:6;;;;;;;;;;;:22;;;8141:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8345:1:::1;8308:40;;8329:6;;;;;;;;;;;8308:40;;;;;;;;;;;;8376:1;8359:6;;:19;;;;;;;;;;;;;;;;;;8236:150::o:0;14142:154::-;8159:12;:10;:12::i;:::-;8149:22;;:6;;;;;;;;;;;:22;;;8141:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14213:5:::1;14196:14;;:22;;;;;;;;;;;;;;;;;;14252:5;14229:20;;:28;;;;;;;;;;;;;;;;;;14273:15;;;;;;;;;;14142:154::o:0;15973:267::-;8159:12;:10;:12::i;:::-;8149:22;;:6;;;;;;;;;;;:22;;;8141:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16069:4:::1;16065:111;;16107:13;16097:23;;:6;:23;;;;16089:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;16065:111;16228:4;16186:31;:39;16218:6;16186:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;15973:267:::0;;:::o;16758:373::-;8159:12;:10;:12::i;:::-;8149:22;;:6;;;;;;;;;;;:22;;;8141:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16894:14:::1;16875:16;:33;;;;16937:13;16919:15;:31;;;;16973:7;16961:9;:19;;;;17043:9;;17025:15;;17006:16;;:34;;;;:::i;:::-;:46;;;;:::i;:::-;16991:12;:61;;;;17087:2;17071:12;;:18;;17063:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;16758:373:::0;;;:::o;24682:456::-;24769:10;8159:12;:10;:12::i;:::-;8149:22;;:6;;;;;;;;;;;:22;;;8141:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24818:1:::1;24800:20;;:6;:20;;;;24792:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;24888:4;24870:23;;:6;:23;;;;24862:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24937:24;24971:6;24964:24;;;24997:4;24964:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24937:66;;25029:6;25022:23;;;25046:3;25051:16;25022:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25014:54;;25084:46;25105:6;25113:16;25084:46;;;;;;;:::i;:::-;;;;;;;;24781:357;24682:456:::0;;;;:::o;9561:27::-;;;;:::o;13837:249::-;8159:12;:10;:12::i;:::-;8149:22;;:6;;;;;;;;;;;:22;;;8141:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13901:13:::1;;;;;;;;;;;13900:14;13892:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;13969:4;13953:13;;:20;;;;;;;;;;;;;;;;;;13998:4;13984:11;;:18;;;;;;;;;;;;;;;;;;14034:12;14013:18;:33;;;;14062:16;;;;;;;;;;13837:249::o:0;8022:79::-;8060:7;8087:6;;;;;;;;;;;8080:13;;8022:79;:::o;10448:24::-;;;;:::o;4263:104::-;4319:13;4352:7;4345:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4263:104;:::o;16248:246::-;8159:12;:10;:12::i;:::-;8149:22;;:6;;;;;;;;;;;:22;;;8141:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16357:13:::1;16349:21;;:4;:21;;;;16341:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;16445:41;16474:4;16480:5;16445:28;:41::i;:::-;16248:246:::0;;:::o;25681:241::-;8159:12;:10;:12::i;:::-;8149:22;;:6;;;;;;;;;;;:22;;;8141:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25786:1:::1;25763:25;;:11;:25;;;;25755:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;25856:11;25835:10;;:33;;;;;;;;;;;;;;;;;;25902:11;25884:30;;;;;;;;;;;;25681:241:::0;:::o;5969:413::-;6062:4;6079:24;6106:11;:25;6118:12;:10;:12::i;:::-;6106:25;;;;;;;;;;;;;;;:34;6132:7;6106:34;;;;;;;;;;;;;;;;6079:61;;6179:15;6159:16;:35;;6151:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6272:67;6281:12;:10;:12::i;:::-;6295:7;6323:15;6304:16;:34;6272:8;:67::i;:::-;6370:4;6363:11;;;5969:413;;;;:::o;4727:175::-;4813:4;4830:42;4840:12;:10;:12::i;:::-;4854:9;4865:6;4830:9;:42::i;:::-;4890:4;4883:11;;4727:175;;;;:::o;9630:30::-;;;;:::o;11111:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;10028:33::-;;;;;;;;;;;;;:::o;17529:182::-;8159:12;:10;:12::i;:::-;8149:22;;:6;;;;;;;;;;;:22;;;8141:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17645:8:::1;17614:19;:28;17634:7;17614:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17685:7;17669:34;;;17694:8;17669:34;;;;;;:::i;:::-;;;;;;;;17529:182:::0;;:::o;17139:382::-;8159:12;:10;:12::i;:::-;8149:22;;:6;;;;;;;;;;;:22;;;8141:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17277:14:::1;17257:17;:34;;;;17321:13;17302:16;:32;;;;17358:7;17345:10;:20;;;;17431:10;;17412:16;;17392:17;;:36;;;;:::i;:::-;:49;;;;:::i;:::-;17376:13;:65;;;;17477:2;17460:13;;:19;;17452:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;17139:382:::0;;;:::o;15037:283::-;8159:12;:10;:12::i;:::-;8149:22;;:6;;;;;;;;;;;:22;;;8141:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15159:4:::1;15153;15149:1;15133:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;15132:31;;;;:::i;:::-;15122:6;:41;;15114:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;15251:5;15241:6;:16;;;;:::i;:::-;15223:15;:34;;;;15273:39;15296:15;;15273:39;;;;;;:::i;:::-;;;;;;;;15037:283:::0;:::o;10291:39::-;;;;;;;;;;;;;:::o;15390:350::-;8159:12;:10;:12::i;:::-;8149:22;;:6;;;;;;;;;;;:22;;;8141:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15514:6:::1;15510:1;15494:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;15481:9;:39;;15473:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;15630:4;15626:1;15610:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;15597:9;:37;;15589:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;15723:9;15702:18;:30;;;;15390:350:::0;:::o;10339:27::-;;;;:::o;14756:273::-;8159:12;:10;:12::i;:::-;8149:22;;:6;;;;;;;;;;;:22;;;8141:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14876:4:::1;14870;14866:1;14850:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;14849:31;;;;:::i;:::-;14839:6;:41;;14831:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;14964:5;14954:6;:16;;;;:::i;:::-;14938:13;:32;;;;14986:35;15007:13;;14986:35;;;;;;:::i;:::-;;;;;;;;14756:273:::0;:::o;4910:151::-;4999:7;5026:11;:18;5038:5;5026:18;;;;;;;;;;;;;;;:27;5045:7;5026:27;;;;;;;;;;;;;;;;5019:34;;4910:151;;;;:::o;9794:33::-;;;;:::o;14366:98::-;8159:12;:10;:12::i;:::-;8149:22;;:6;;;;;;;;;;;:22;;;8141:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14451:5:::1;14428:20;;:28;;;;;;;;;;;;;;;;;;14366:98::o:0;9875:25::-;;;;;;;;;;;;;:::o;9836:32::-;;;;;;;;;;;;;:::o;9909:37::-;;;;:::o;10411:30::-;;;;:::o;8394:244::-;8159:12;:10;:12::i;:::-;8149:22;;:6;;;;;;;;;;;:22;;;8141:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8503:1:::1;8483:22;;:8;:22;;;;8475:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8593:8;8564:38;;8585:6;;;;;;;;;;;8564:38;;;;;;;;;;;;8622:8;8613:6;;:17;;;;;;;;;;;;;;;;;;8394:244:::0;:::o;25208:160::-;8159:12;:10;:12::i;:::-;8149:22;;:6;;;;;;;;;;;:22;;;8141:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25266:12:::1;25310:10;25302:24;;25334:21;25302:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25289:71;;;;;25255:113;25208:160::o:0;10555:31::-;;;;:::o;10593:25::-;;;;:::o;10627:34::-;;;;:::o;304:98::-;357:7;384:10;377:17;;304:98;:::o;7311:380::-;7464:1;7447:19;;:5;:19;;;;7439:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7545:1;7526:21;;:7;:21;;;;7518:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7629:6;7599:11;:18;7611:5;7599:18;;;;;;;;;;;;;;;:27;7618:7;7599:27;;;;;;;;;;;;;;;:36;;;;7667:7;7651:32;;7660:5;7651:32;;;7676:6;7651:32;;;;;;:::i;:::-;;;;;;;;7311:380;;;:::o;17719:4363::-;17835:1;17819:18;;:4;:18;;;;17811:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17912:1;17898:16;;:2;:16;;;;17890:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17982:1;17973:6;:10;17965:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;18051:14;;;;;;;;;;;18048:1873;;;18093:7;:5;:7::i;:::-;18085:15;;:4;:15;;;;:32;;;;;18110:7;:5;:7::i;:::-;18104:13;;:2;:13;;;;18085:32;:52;;;;;18135:1;18121:16;;:2;:16;;;;18085:52;:77;;;;;18155:6;18141:21;;:2;:21;;;;18085:77;18081:1829;;;18186:13;;;;;;;;;;;18182:172;;18231:31;:37;18263:4;18231:37;;;;;;;;;;;;;;;;;;;;;;;;;:76;;;;18272:31;:35;18304:2;18272:35;;;;;;;;;;;;;;;;;;;;;;;;;18231:76;18223:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;18182:172;18528:20;;;;;;;;;;;18524:519;;;18590:15;18576:30;;:2;:30;;;;:62;;;;;18624:13;18610:28;;:2;:28;;;;18576:62;18572:452;;;18731:1;18716:12;:16;;;;:::i;:::-;18674:28;:39;18703:9;18674:39;;;;;;;;;;;;;;;;:58;:113;;;;;18786:1;18771:12;:16;;;;:::i;:::-;18736:28;:32;18765:2;18736:32;;;;;;;;;;;;;;;;:51;18674:113;18666:179;;;;;;;;;;;;:::i;:::-;;;;;;;;;18914:12;18872:28;:39;18901:9;18872:39;;;;;;;;;;;;;;;:54;;;;18988:12;18953:28;:32;18982:2;18953:32;;;;;;;;;;;;;;;:47;;;;18572:452;18524:519;19112:25;:31;19138:4;19112:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;19148:31;:35;19180:2;19148:35;;;;;;;;;;;;;;;;;;;;;;;;;19147:36;19112:71;19108:787;;;19230:12;;19220:6;:22;;19212:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;19348:15;;19331:13;19341:2;19331:9;:13::i;:::-;19322:6;:22;;;;:::i;:::-;:41;;19314:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;19108:787;;;19469:25;:29;19495:2;19469:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;19503:31;:37;19535:4;19503:37;;;;;;;;;;;;;;;;;;;;;;;;;19502:38;19469:71;19465:430;;;19587:13;;19577:6;:23;;19569:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;19465:430;;;19696:31;:35;19728:2;19696:35;;;;;;;;;;;;;;;;;;;;;;;;;19695:36;:78;;;;;19736:31;:37;19768:4;19736:37;;;;;;;;;;;;;;;;;;;;;;;;;19735:38;19695:78;19691:204;;;19831:15;;19814:13;19824:2;19814:9;:13::i;:::-;19805:6;:22;;;;:::i;:::-;:41;;19797:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;19691:204;19465:430;19108:787;18081:1829;18048:1873;19933:28;19964:24;19982:4;19964:9;:24::i;:::-;19933:55;;20009:12;20048:18;;20024:20;:42;;20009:57;;20082:7;:22;;;;;20093:11;;;;;;;;;;;20082:22;:35;;;;;20109:8;;;;;;;;;;;20108:9;20082:35;:71;;;;;20122:25;:31;20148:4;20122:31;;;;;;;;;;;;;;;;;;;;;;;;;20121:32;20082:71;:101;;;;;20158:19;:25;20178:4;20158:25;;;;;;;;;;;;;;;;;;;;;;;;;20157:26;20082:101;:129;;;;;20188:19;:23;20208:2;20188:23;;;;;;;;;;;;;;;;;;;;;;;;;20187:24;20082:129;20079:236;;;20239:4;20228:8;;:15;;;;;;;;;;;;;;;;;;20260:10;:8;:10::i;:::-;20298:5;20287:8;;:16;;;;;;;;;;;;;;;;;;20079:236;20327:12;20342:4;20327:19;;20445;:25;20465:4;20445:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;20474:19;:23;20494:2;20474:23;;;;;;;;;;;;;;;;;;;;;;;;;20445:52;20442:99;;;20524:5;20514:15;;20442:99;20561:12;20588:21;20701:7;20698:1331;;;20871:1;20856:12;:16;;;;:::i;:::-;20834:18;;:38;;:73;;;;;20876:25;:31;20902:4;20876:31;;;;;;;;;;;;;;;;;;;;;;;;;20834:73;20831:1007;;;20957:3;20952:2;20943:6;:11;;;;:::i;:::-;:17;;;;:::i;:::-;20927:33;;20979:55;20995:4;21001:17;;;;;;;;;;;21020:13;20979:15;:55::i;:::-;20831:1007;;;21097:25;:29;21123:2;21097:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;21146:1;21130:13;;:17;21097:50;21093:745;;;21198:3;21183:13;;21174:6;:22;;;;:::i;:::-;:27;;;;:::i;:::-;21167:34;;21268:13;;21249:16;;21242:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;21220:18;;:61;;;;;;;:::i;:::-;;;;;;;;21350:13;;21330:17;;21323:4;:24;;;;:::i;:::-;:40;;;;:::i;:::-;21300:19;;:63;;;;;;;:::i;:::-;;;;;;;;21418:13;;21405:10;;21398:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;21382:12;;:49;;;;;;;:::i;:::-;;;;;;;;21093:745;;;21492:25;:31;21518:4;21492:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;21542:1;21527:12;;:16;21492:51;21489:349;;;21595:3;21580:12;;21571:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;21564:34;;21664:12;;21646:15;;21639:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;21617:18;;:59;;;;;;;:::i;:::-;;;;;;;;21744:12;;21725:16;;21718:4;:23;;;;:::i;:::-;:38;;;;:::i;:::-;21695:19;;:61;;;;;;;:::i;:::-;;;;;;;;21810:12;;21798:9;;21791:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;21775:12;;:47;;;;;;;:::i;:::-;;;;;;;;21489:349;21093:745;20831:1007;21876:1;21869:4;:8;21866:93;;;21901:42;21917:4;21931;21938;21901:15;:42::i;:::-;21866:93;22004:13;21997:4;:20;;;;:::i;:::-;21987:30;;;;;:::i;:::-;;;20698:1331;22041:33;22057:4;22063:2;22067:6;22041:15;:33::i;:::-;17798:4284;;;;;17719:4363;;;:::o;16502:248::-;16619:5;16585:25;:31;16611:4;16585:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16645;16672:4;16678:5;16645:26;:39::i;:::-;16736:5;16702:40;;16730:4;16702:40;;;;;;;;;;;;16502:248;;:::o;23222:1452::-;23261:23;23287:24;23305:4;23287:9;:24::i;:::-;23261:50;;23322:25;23393:12;;23371:19;;23350:18;;:40;;;;:::i;:::-;:55;;;;:::i;:::-;23322:83;;23448:1;23429:15;:20;:46;;;;23474:1;23453:17;:22;23429:46;23426:60;;;23478:7;;;;23426:60;23540:2;23519:18;;:23;;;;:::i;:::-;23501:15;:41;23498:113;;;23597:2;23576:18;;:23;;;;:::i;:::-;23558:41;;23498:113;23623:12;23705:23;23790:1;23770:17;23749:18;;23731:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;23705:86;;23812:51;23847:15;23829;:33;;;;:::i;:::-;23812:16;:51::i;:::-;23885:18;23906:21;23885:42;;23938:23;23964:10;23938:36;;23987:24;24090:1;24071:18;;:20;;;;:::i;:::-;24050:17;:42;;;;:::i;:::-;24027:19;;24014:10;:32;;;;:::i;:::-;:79;;;;:::i;:::-;23987:106;;24104:17;24193:1;24174:18;;:20;;;;:::i;:::-;24153:17;:42;;;;:::i;:::-;24137:12;;24124:10;:25;;;;:::i;:::-;:72;;;;:::i;:::-;24104:92;;24247:9;24228:16;:28;;;;:::i;:::-;24209:47;;;;;:::i;:::-;;;24302:1;24281:18;:22;;;;24336:1;24314:19;:23;;;;24363:1;24348:12;:16;;;;24406:1;24388:15;:19;:42;;;;;24429:1;24411:15;:19;24388:42;24385:119;;;24446:46;24459:15;24476;24446:12;:46::i;:::-;24385:119;24537:10;;;;;;;;;;;24529:24;;24561:9;24529:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24516:59;;;;;24609:17;;;;;;;;;;;24601:31;;24640:21;24601:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24588:78;;;;;23250:1424;;;;;;;;23222:1452;:::o;6390:614::-;6548:1;6530:20;;:6;:20;;;;6522:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;6632:1;6611:23;;:9;:23;;;;6603:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6687:21;6711:9;:17;6721:6;6711:17;;;;;;;;;;;;;;;;6687:41;;6764:6;6747:13;:23;;6739:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6885:6;6869:13;:22;6849:9;:17;6859:6;6849:17;;;;;;;;;;;;;;;:42;;;;6937:6;6913:9;:20;6923:9;6913:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;6978:9;6961:35;;6970:6;6961:35;;;6989:6;6961:35;;;;;;:::i;:::-;;;;;;;;6511:493;6390:614;;;:::o;15752:207::-;15882:10;15840:31;:39;15872:6;15840:39;;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;15908:43;15932:6;15940:10;15908:43;;;;;;;:::i;:::-;;;;;;;;15752:207;;:::o;22090:591::-;22218:21;22256:1;22242:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22218:40;;22287:4;22269;22274:1;22269:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;22313:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22303:4;22308:1;22303:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;22348:62;22365:4;22380:15;22398:11;22348:8;:62::i;:::-;22449:15;:66;;;22530:11;22556:1;22600:4;22627;22647:15;22449:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22145:536;22090:591;:::o;22693:521::-;22841:62;22858:4;22873:15;22891:11;22841:8;:62::i;:::-;22946:15;:31;;;22985:9;23018:4;23038:11;23064:1;23107;23158:6;23180:15;22946:260;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22693:521;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;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:144::-;4243:9;4276:37;4307:5;4276:37;:::i;:::-;4263:50;;4175:144;;;:::o;4325:167::-;4430:55;4479:5;4430:55;:::i;:::-;4425:3;4418:68;4325:167;;:::o;4498:258::-;4609:4;4647:2;4636:9;4632:18;4624:26;;4660:89;4746:1;4735:9;4731:17;4722:6;4660:89;:::i;:::-;4498:258;;;;:::o;4762:118::-;4849:24;4867:5;4849:24;:::i;:::-;4844:3;4837:37;4762:118;;:::o;4886:222::-;4979:4;5017:2;5006:9;5002:18;4994:26;;5030:71;5098:1;5087:9;5083:17;5074:6;5030:71;:::i;:::-;4886:222;;;;:::o;5114:619::-;5191:6;5199;5207;5256:2;5244:9;5235:7;5231:23;5227:32;5224:119;;;5262:79;;:::i;:::-;5224:119;5382:1;5407:53;5452:7;5443:6;5432:9;5428:22;5407:53;:::i;:::-;5397:63;;5353:117;5509:2;5535:53;5580:7;5571:6;5560:9;5556:22;5535:53;:::i;:::-;5525:63;;5480:118;5637:2;5663:53;5708:7;5699:6;5688:9;5684:22;5663:53;:::i;:::-;5653:63;;5608:118;5114:619;;;;;:::o;5739:329::-;5798:6;5847:2;5835:9;5826:7;5822:23;5818:32;5815:119;;;5853:79;;:::i;:::-;5815:119;5973:1;5998:53;6043:7;6034:6;6023:9;6019:22;5998:53;:::i;:::-;5988:63;;5944:117;5739:329;;;;:::o;6074:86::-;6109:7;6149:4;6142:5;6138:16;6127:27;;6074:86;;;:::o;6166:112::-;6249:22;6265:5;6249:22;:::i;:::-;6244:3;6237:35;6166:112;;:::o;6284:214::-;6373:4;6411:2;6400:9;6396:18;6388:26;;6424:67;6488:1;6477:9;6473:17;6464:6;6424:67;:::i;:::-;6284:214;;;;:::o;6504:118::-;6591:24;6609:5;6591:24;:::i;:::-;6586:3;6579:37;6504:118;;:::o;6628:222::-;6721:4;6759:2;6748:9;6744:18;6736:26;;6772:71;6840:1;6829:9;6825:17;6816:6;6772:71;:::i;:::-;6628:222;;;;:::o;6856:116::-;6926:21;6941:5;6926:21;:::i;:::-;6919:5;6916:32;6906:60;;6962:1;6959;6952:12;6906:60;6856:116;:::o;6978:133::-;7021:5;7059:6;7046:20;7037:29;;7075:30;7099:5;7075:30;:::i;:::-;6978:133;;;;:::o;7117:468::-;7182:6;7190;7239:2;7227:9;7218:7;7214:23;7210:32;7207:119;;;7245:79;;:::i;:::-;7207:119;7365:1;7390:53;7435:7;7426:6;7415:9;7411:22;7390:53;:::i;:::-;7380:63;;7336:117;7492:2;7518:50;7560:7;7551:6;7540:9;7536:22;7518:50;:::i;:::-;7508:60;;7463:115;7117:468;;;;;:::o;7591:619::-;7668:6;7676;7684;7733:2;7721:9;7712:7;7708:23;7704:32;7701:119;;;7739:79;;:::i;:::-;7701:119;7859:1;7884:53;7929:7;7920:6;7909:9;7905:22;7884:53;:::i;:::-;7874:63;;7830:117;7986:2;8012:53;8057:7;8048:6;8037:9;8033:22;8012:53;:::i;:::-;8002:63;;7957:118;8114:2;8140:53;8185:7;8176:6;8165:9;8161:22;8140:53;:::i;:::-;8130:63;;8085:118;7591:619;;;;;:::o;8216:474::-;8284:6;8292;8341:2;8329:9;8320:7;8316:23;8312:32;8309:119;;;8347:79;;:::i;:::-;8309:119;8467:1;8492:53;8537:7;8528:6;8517:9;8513:22;8492:53;:::i;:::-;8482:63;;8438:117;8594:2;8620:53;8665:7;8656:6;8645:9;8641:22;8620:53;:::i;:::-;8610:63;;8565:118;8216:474;;;;;:::o;8696:180::-;8744:77;8741:1;8734:88;8841:4;8838:1;8831:15;8865:4;8862:1;8855:15;8882:320;8926:6;8963:1;8957:4;8953:12;8943:22;;9010:1;9004:4;9000:12;9031:18;9021:81;;9087:4;9079:6;9075:17;9065:27;;9021:81;9149:2;9141:6;9138:14;9118:18;9115:38;9112:84;;;9168:18;;:::i;:::-;9112:84;8933:269;8882:320;;;:::o;9208:227::-;9348:34;9344:1;9336:6;9332:14;9325:58;9417:10;9412:2;9404:6;9400:15;9393:35;9208:227;:::o;9441:366::-;9583:3;9604:67;9668:2;9663:3;9604:67;:::i;:::-;9597:74;;9680:93;9769:3;9680:93;:::i;:::-;9798:2;9793:3;9789:12;9782:19;;9441:366;;;:::o;9813:419::-;9979:4;10017:2;10006:9;10002:18;9994:26;;10066:9;10060:4;10056:20;10052:1;10041:9;10037:17;10030:47;10094:131;10220:4;10094:131;:::i;:::-;10086:139;;9813:419;;;:::o;10238:182::-;10378:34;10374:1;10366:6;10362:14;10355:58;10238:182;:::o;10426:366::-;10568:3;10589:67;10653:2;10648:3;10589:67;:::i;:::-;10582:74;;10665:93;10754:3;10665:93;:::i;:::-;10783:2;10778:3;10774:12;10767:19;;10426:366;;;:::o;10798:419::-;10964:4;11002:2;10991:9;10987:18;10979:26;;11051:9;11045:4;11041:20;11037:1;11026:9;11022:17;11015:47;11079:131;11205:4;11079:131;:::i;:::-;11071:139;;10798:419;;;:::o;11223:180::-;11271:77;11268:1;11261:88;11368:4;11365:1;11358:15;11392:4;11389:1;11382:15;11409:348;11449:7;11472:20;11490:1;11472:20;:::i;:::-;11467:25;;11506:20;11524:1;11506:20;:::i;:::-;11501:25;;11694:1;11626:66;11622:74;11619:1;11616:81;11611:1;11604:9;11597:17;11593:105;11590:131;;;11701:18;;:::i;:::-;11590:131;11749:1;11746;11742:9;11731:20;;11409:348;;;;:::o;11763:180::-;11811:77;11808:1;11801:88;11908:4;11905:1;11898:15;11932:4;11929:1;11922:15;11949:185;11989:1;12006:20;12024:1;12006:20;:::i;:::-;12001:25;;12040:20;12058:1;12040:20;:::i;:::-;12035:25;;12079:1;12069:35;;12084:18;;:::i;:::-;12069:35;12126:1;12123;12119:9;12114:14;;11949:185;;;;:::o;12140:228::-;12280:34;12276:1;12268:6;12264:14;12257:58;12349:11;12344:2;12336:6;12332:15;12325:36;12140:228;:::o;12374:366::-;12516:3;12537:67;12601:2;12596:3;12537:67;:::i;:::-;12530:74;;12613:93;12702:3;12613:93;:::i;:::-;12731:2;12726:3;12722:12;12715:19;;12374:366;;;:::o;12746:419::-;12912:4;12950:2;12939:9;12935:18;12927:26;;12999:9;12993:4;12989:20;12985:1;12974:9;12970:17;12963:47;13027:131;13153:4;13027:131;:::i;:::-;13019:139;;12746:419;;;:::o;13171:305::-;13211:3;13230:20;13248:1;13230:20;:::i;:::-;13225:25;;13264:20;13282:1;13264:20;:::i;:::-;13259:25;;13418:1;13350:66;13346:74;13343:1;13340:81;13337:107;;;13424:18;;:::i;:::-;13337:107;13468:1;13465;13461:9;13454:16;;13171:305;;;;:::o;13482:225::-;13622:34;13618:1;13610:6;13606:14;13599:58;13691:8;13686:2;13678:6;13674:15;13667:33;13482:225;:::o;13713:366::-;13855:3;13876:67;13940:2;13935:3;13876:67;:::i;:::-;13869:74;;13952:93;14041:3;13952:93;:::i;:::-;14070:2;14065:3;14061:12;14054:19;;13713:366;;;:::o;14085:419::-;14251:4;14289:2;14278:9;14274:18;14266:26;;14338:9;14332:4;14328:20;14324:1;14313:9;14309:17;14302:47;14366:131;14492:4;14366:131;:::i;:::-;14358:139;;14085:419;;;:::o;14510:226::-;14650:34;14646:1;14638:6;14634:14;14627:58;14719:9;14714:2;14706:6;14702:15;14695:34;14510:226;:::o;14742:366::-;14884:3;14905:67;14969:2;14964:3;14905:67;:::i;:::-;14898:74;;14981:93;15070:3;14981:93;:::i;:::-;15099:2;15094:3;15090:12;15083:19;;14742:366;;;:::o;15114:419::-;15280:4;15318:2;15307:9;15303:18;15295:26;;15367:9;15361:4;15357:20;15353:1;15342:9;15338:17;15331:47;15395:131;15521:4;15395:131;:::i;:::-;15387:139;;15114:419;;;:::o;15539:179::-;15679:31;15675:1;15667:6;15663:14;15656:55;15539:179;:::o;15724:366::-;15866:3;15887:67;15951:2;15946:3;15887:67;:::i;:::-;15880:74;;15963:93;16052:3;15963:93;:::i;:::-;16081:2;16076:3;16072:12;16065:19;;15724:366;;;:::o;16096:419::-;16262:4;16300:2;16289:9;16285:18;16277:26;;16349:9;16343:4;16339:20;16335:1;16324:9;16320:17;16313:47;16377:131;16503:4;16377:131;:::i;:::-;16369:139;;16096:419;;;:::o;16521:176::-;16661:28;16657:1;16649:6;16645:14;16638:52;16521:176;:::o;16703:366::-;16845:3;16866:67;16930:2;16925:3;16866:67;:::i;:::-;16859:74;;16942:93;17031:3;16942:93;:::i;:::-;17060:2;17055:3;17051:12;17044:19;;16703:366;;;:::o;17075:419::-;17241:4;17279:2;17268:9;17264:18;17256:26;;17328:9;17322:4;17318:20;17314:1;17303:9;17299:17;17292:47;17356:131;17482:4;17356:131;:::i;:::-;17348:139;;17075:419;;;:::o;17500:178::-;17640:30;17636:1;17628:6;17624:14;17617:54;17500:178;:::o;17684:366::-;17826:3;17847:67;17911:2;17906:3;17847:67;:::i;:::-;17840:74;;17923:93;18012:3;17923:93;:::i;:::-;18041:2;18036:3;18032:12;18025:19;;17684:366;;;:::o;18056:419::-;18222:4;18260:2;18249:9;18245:18;18237:26;;18309:9;18303:4;18299:20;18295:1;18284:9;18280:17;18273:47;18337:131;18463:4;18337:131;:::i;:::-;18329:139;;18056:419;;;:::o;18481:143::-;18538:5;18569:6;18563:13;18554:22;;18585:33;18612:5;18585:33;:::i;:::-;18481:143;;;;:::o;18630:351::-;18700:6;18749:2;18737:9;18728:7;18724:23;18720:32;18717:119;;;18755:79;;:::i;:::-;18717:119;18875:1;18900:64;18956:7;18947:6;18936:9;18932:22;18900:64;:::i;:::-;18890:74;;18846:128;18630:351;;;;:::o;18987:332::-;19108:4;19146:2;19135:9;19131:18;19123:26;;19159:71;19227:1;19216:9;19212:17;19203:6;19159:71;:::i;:::-;19240:72;19308:2;19297:9;19293:18;19284:6;19240:72;:::i;:::-;18987:332;;;;;:::o;19325:137::-;19379:5;19410:6;19404:13;19395:22;;19426:30;19450:5;19426:30;:::i;:::-;19325:137;;;;:::o;19468:345::-;19535:6;19584:2;19572:9;19563:7;19559:23;19555:32;19552:119;;;19590:79;;:::i;:::-;19552:119;19710:1;19735:61;19788:7;19779:6;19768:9;19764:22;19735:61;:::i;:::-;19725:71;;19681:125;19468:345;;;;:::o;19819:173::-;19959:25;19955:1;19947:6;19943:14;19936:49;19819:173;:::o;19998:366::-;20140:3;20161:67;20225:2;20220:3;20161:67;:::i;:::-;20154:74;;20237:93;20326:3;20237:93;:::i;:::-;20355:2;20350:3;20346:12;20339:19;;19998:366;;;:::o;20370:419::-;20536:4;20574:2;20563:9;20559:18;20551:26;;20623:9;20617:4;20613:20;20609:1;20598:9;20594:17;20587:47;20651:131;20777:4;20651:131;:::i;:::-;20643:139;;20370:419;;;:::o;20795:244::-;20935:34;20931:1;20923:6;20919:14;20912:58;21004:27;20999:2;20991:6;20987:15;20980:52;20795:244;:::o;21045:366::-;21187:3;21208:67;21272:2;21267:3;21208:67;:::i;:::-;21201:74;;21284:93;21373:3;21284:93;:::i;:::-;21402:2;21397:3;21393:12;21386:19;;21045:366;;;:::o;21417:419::-;21583:4;21621:2;21610:9;21606:18;21598:26;;21670:9;21664:4;21660:20;21656:1;21645:9;21641:17;21634:47;21698:131;21824:4;21698:131;:::i;:::-;21690:139;;21417:419;;;:::o;21842:181::-;21982:33;21978:1;21970:6;21966:14;21959:57;21842:181;:::o;22029:366::-;22171:3;22192:67;22256:2;22251:3;22192:67;:::i;:::-;22185:74;;22268:93;22357:3;22268:93;:::i;:::-;22386:2;22381:3;22377:12;22370:19;;22029:366;;;:::o;22401:419::-;22567:4;22605:2;22594:9;22590:18;22582:26;;22654:9;22648:4;22644:20;22640:1;22629:9;22625:17;22618:47;22682:131;22808:4;22682:131;:::i;:::-;22674:139;;22401:419;;;:::o;22826:224::-;22966:34;22962:1;22954:6;22950:14;22943:58;23035:7;23030:2;23022:6;23018:15;23011:32;22826:224;:::o;23056:366::-;23198:3;23219:67;23283:2;23278:3;23219:67;:::i;:::-;23212:74;;23295:93;23384:3;23295:93;:::i;:::-;23413:2;23408:3;23404:12;23397:19;;23056:366;;;:::o;23428:419::-;23594:4;23632:2;23621:9;23617:18;23609:26;;23681:9;23675:4;23671:20;23667:1;23656:9;23652:17;23645:47;23709:131;23835:4;23709:131;:::i;:::-;23701:139;;23428:419;;;:::o;23853:179::-;23993:31;23989:1;23981:6;23977:14;23970:55;23853:179;:::o;24038:366::-;24180:3;24201:67;24265:2;24260:3;24201:67;:::i;:::-;24194:74;;24277:93;24366:3;24277:93;:::i;:::-;24395:2;24390:3;24386:12;24379:19;;24038:366;;;:::o;24410:419::-;24576:4;24614:2;24603:9;24599:18;24591:26;;24663:9;24657:4;24653:20;24649:1;24638:9;24634:17;24627:47;24691:131;24817:4;24691:131;:::i;:::-;24683:139;;24410:419;;;:::o;24835:231::-;24975:34;24971:1;24963:6;24959:14;24952:58;25044:14;25039:2;25031:6;25027:15;25020:39;24835:231;:::o;25072:366::-;25214:3;25235:67;25299:2;25294:3;25235:67;:::i;:::-;25228:74;;25311:93;25400:3;25311:93;:::i;:::-;25429:2;25424:3;25420:12;25413:19;;25072:366;;;:::o;25444:419::-;25610:4;25648:2;25637:9;25633:18;25625:26;;25697:9;25691:4;25687:20;25683:1;25672:9;25668:17;25661:47;25725:131;25851:4;25725:131;:::i;:::-;25717:139;;25444:419;;;:::o;25869:240::-;26009:34;26005:1;25997:6;25993:14;25986:58;26078:23;26073:2;26065:6;26061:15;26054:48;25869:240;:::o;26115:366::-;26257:3;26278:67;26342:2;26337:3;26278:67;:::i;:::-;26271:74;;26354:93;26443:3;26354:93;:::i;:::-;26472:2;26467:3;26463:12;26456:19;;26115:366;;;:::o;26487:419::-;26653:4;26691:2;26680:9;26676:18;26668:26;;26740:9;26734:4;26730:20;26726:1;26715:9;26711:17;26704:47;26768:131;26894:4;26768:131;:::i;:::-;26760:139;;26487:419;;;:::o;26912:239::-;27052:34;27048:1;27040:6;27036:14;27029:58;27121:22;27116:2;27108:6;27104:15;27097:47;26912:239;:::o;27157:366::-;27299:3;27320:67;27384:2;27379:3;27320:67;:::i;:::-;27313:74;;27396:93;27485:3;27396:93;:::i;:::-;27514:2;27509:3;27505:12;27498:19;;27157:366;;;:::o;27529:419::-;27695:4;27733:2;27722:9;27718:18;27710:26;;27782:9;27776:4;27772:20;27768:1;27757:9;27753:17;27746:47;27810:131;27936:4;27810:131;:::i;:::-;27802:139;;27529:419;;;:::o;27954:229::-;28094:34;28090:1;28082:6;28078:14;28071:58;28163:12;28158:2;28150:6;28146:15;28139:37;27954:229;:::o;28189:366::-;28331:3;28352:67;28416:2;28411:3;28352:67;:::i;:::-;28345:74;;28428:93;28517:3;28428:93;:::i;:::-;28546:2;28541:3;28537:12;28530:19;;28189:366;;;:::o;28561:419::-;28727:4;28765:2;28754:9;28750:18;28742:26;;28814:9;28808:4;28804:20;28800:1;28789:9;28785:17;28778:47;28842:131;28968:4;28842:131;:::i;:::-;28834:139;;28561:419;;;:::o;28986:225::-;29126:34;29122:1;29114:6;29110:14;29103:58;29195:8;29190:2;29182:6;29178:15;29171:33;28986:225;:::o;29217:366::-;29359:3;29380:67;29444:2;29439:3;29380:67;:::i;:::-;29373:74;;29456:93;29545:3;29456:93;:::i;:::-;29574:2;29569:3;29565:12;29558:19;;29217:366;;;:::o;29589:419::-;29755:4;29793:2;29782:9;29778:18;29770:26;;29842:9;29836:4;29832:20;29828:1;29817:9;29813:17;29806:47;29870:131;29996:4;29870:131;:::i;:::-;29862:139;;29589:419;;;:::o;30014:147::-;30115:11;30152:3;30137:18;;30014:147;;;;:::o;30167:114::-;;:::o;30287:398::-;30446:3;30467:83;30548:1;30543:3;30467:83;:::i;:::-;30460:90;;30559:93;30648:3;30559:93;:::i;:::-;30677:1;30672:3;30668:11;30661:18;;30287:398;;;:::o;30691:379::-;30875:3;30897:147;31040:3;30897:147;:::i;:::-;30890:154;;31061:3;31054:10;;30691:379;;;:::o;31076:223::-;31216:34;31212:1;31204:6;31200:14;31193:58;31285:6;31280:2;31272:6;31268:15;31261:31;31076:223;:::o;31305:366::-;31447:3;31468:67;31532:2;31527:3;31468:67;:::i;:::-;31461:74;;31544:93;31633:3;31544:93;:::i;:::-;31662:2;31657:3;31653:12;31646:19;;31305:366;;;:::o;31677:419::-;31843:4;31881:2;31870:9;31866:18;31858:26;;31930:9;31924:4;31920:20;31916:1;31905:9;31901:17;31894:47;31958:131;32084:4;31958:131;:::i;:::-;31950:139;;31677:419;;;:::o;32102:221::-;32242:34;32238:1;32230:6;32226:14;32219:58;32311:4;32306:2;32298:6;32294:15;32287:29;32102:221;:::o;32329:366::-;32471:3;32492:67;32556:2;32551:3;32492:67;:::i;:::-;32485:74;;32568:93;32657:3;32568:93;:::i;:::-;32686:2;32681:3;32677:12;32670:19;;32329:366;;;:::o;32701:419::-;32867:4;32905:2;32894:9;32890:18;32882:26;;32954:9;32948:4;32944:20;32940:1;32929:9;32925:17;32918:47;32982:131;33108:4;32982:131;:::i;:::-;32974:139;;32701:419;;;:::o;33126:224::-;33266:34;33262:1;33254:6;33250:14;33243:58;33335:7;33330:2;33322:6;33318:15;33311:32;33126:224;:::o;33356:366::-;33498:3;33519:67;33583:2;33578:3;33519:67;:::i;:::-;33512:74;;33595:93;33684:3;33595:93;:::i;:::-;33713:2;33708:3;33704:12;33697:19;;33356:366;;;:::o;33728:419::-;33894:4;33932:2;33921:9;33917:18;33909:26;;33981:9;33975:4;33971:20;33967:1;33956:9;33952:17;33945:47;34009:131;34135:4;34009:131;:::i;:::-;34001:139;;33728:419;;;:::o;34153:222::-;34293:34;34289:1;34281:6;34277:14;34270:58;34362:5;34357:2;34349:6;34345:15;34338:30;34153:222;:::o;34381:366::-;34523:3;34544:67;34608:2;34603:3;34544:67;:::i;:::-;34537:74;;34620:93;34709:3;34620:93;:::i;:::-;34738:2;34733:3;34729:12;34722:19;;34381:366;;;:::o;34753:419::-;34919:4;34957:2;34946:9;34942:18;34934:26;;35006:9;35000:4;34996:20;34992:1;34981:9;34977:17;34970:47;35034:131;35160:4;35034:131;:::i;:::-;35026:139;;34753:419;;;:::o;35178:179::-;35318:31;35314:1;35306:6;35302:14;35295:55;35178:179;:::o;35363:366::-;35505:3;35526:67;35590:2;35585:3;35526:67;:::i;:::-;35519:74;;35602:93;35691:3;35602:93;:::i;:::-;35720:2;35715:3;35711:12;35704:19;;35363:366;;;:::o;35735:419::-;35901:4;35939:2;35928:9;35924:18;35916:26;;35988:9;35982:4;35978:20;35974:1;35963:9;35959:17;35952:47;36016:131;36142:4;36016:131;:::i;:::-;36008:139;;35735:419;;;:::o;36160:172::-;36300:24;36296:1;36288:6;36284:14;36277:48;36160:172;:::o;36338:366::-;36480:3;36501:67;36565:2;36560:3;36501:67;:::i;:::-;36494:74;;36577:93;36666:3;36577:93;:::i;:::-;36695:2;36690:3;36686:12;36679:19;;36338:366;;;:::o;36710:419::-;36876:4;36914:2;36903:9;36899:18;36891:26;;36963:9;36957:4;36953:20;36949:1;36938:9;36934:17;36927:47;36991:131;37117:4;36991:131;:::i;:::-;36983:139;;36710:419;;;:::o;37135:191::-;37175:4;37195:20;37213:1;37195:20;:::i;:::-;37190:25;;37229:20;37247:1;37229:20;:::i;:::-;37224:25;;37268:1;37265;37262:8;37259:34;;;37273:18;;:::i;:::-;37259:34;37318:1;37315;37311:9;37303:17;;37135:191;;;;:::o;37332:240::-;37472:34;37468:1;37460:6;37456:14;37449:58;37541:23;37536:2;37528:6;37524:15;37517:48;37332:240;:::o;37578:366::-;37720:3;37741:67;37805:2;37800:3;37741:67;:::i;:::-;37734:74;;37817:93;37906:3;37817:93;:::i;:::-;37935:2;37930:3;37926:12;37919:19;;37578:366;;;:::o;37950:419::-;38116:4;38154:2;38143:9;38139:18;38131:26;;38203:9;38197:4;38193:20;38189:1;38178:9;38174:17;38167:47;38231:131;38357:4;38231:131;:::i;:::-;38223:139;;37950:419;;;:::o;38375:227::-;38515:34;38511:1;38503:6;38499:14;38492:58;38584:10;38579:2;38571:6;38567:15;38560:35;38375:227;:::o;38608:366::-;38750:3;38771:67;38835:2;38830:3;38771:67;:::i;:::-;38764:74;;38847:93;38936:3;38847:93;:::i;:::-;38965:2;38960:3;38956:12;38949:19;;38608:366;;;:::o;38980:419::-;39146:4;39184:2;39173:9;39169:18;39161:26;;39233:9;39227:4;39223:20;39219:1;39208:9;39204:17;39197:47;39261:131;39387:4;39261:131;:::i;:::-;39253:139;;38980:419;;;:::o;39405:174::-;39545:26;39541:1;39533:6;39529:14;39522:50;39405:174;:::o;39585:366::-;39727:3;39748:67;39812:2;39807:3;39748:67;:::i;:::-;39741:74;;39824:93;39913:3;39824:93;:::i;:::-;39942:2;39937:3;39933:12;39926:19;;39585:366;;;:::o;39957:419::-;40123:4;40161:2;40150:9;40146:18;40138:26;;40210:9;40204:4;40200:20;40196:1;40185:9;40181:17;40174:47;40238:131;40364:4;40238:131;:::i;:::-;40230:139;;39957:419;;;:::o;40382:229::-;40522:34;40518:1;40510:6;40506:14;40499:58;40591:12;40586:2;40578:6;40574:15;40567:37;40382:229;:::o;40617:366::-;40759:3;40780:67;40844:2;40839:3;40780:67;:::i;:::-;40773:74;;40856:93;40945:3;40856:93;:::i;:::-;40974:2;40969:3;40965:12;40958:19;;40617:366;;;:::o;40989:419::-;41155:4;41193:2;41182:9;41178:18;41170:26;;41242:9;41236:4;41232:20;41228:1;41217:9;41213:17;41206:47;41270:131;41396:4;41270:131;:::i;:::-;41262:139;;40989:419;;;:::o;41414:225::-;41554:34;41550:1;41542:6;41538:14;41531:58;41623:8;41618:2;41610:6;41606:15;41599:33;41414:225;:::o;41645:366::-;41787:3;41808:67;41872:2;41867:3;41808:67;:::i;:::-;41801:74;;41884:93;41973:3;41884:93;:::i;:::-;42002:2;41997:3;41993:12;41986:19;;41645:366;;;:::o;42017:419::-;42183:4;42221:2;42210:9;42206:18;42198:26;;42270:9;42264:4;42260:20;42256:1;42245:9;42241:17;42234:47;42298:131;42424:4;42298:131;:::i;:::-;42290:139;;42017:419;;;:::o;42442:320::-;42557:4;42595:2;42584:9;42580:18;42572:26;;42608:71;42676:1;42665:9;42661:17;42652:6;42608:71;:::i;:::-;42689:66;42751:2;42740:9;42736:18;42727:6;42689:66;:::i;:::-;42442:320;;;;;:::o;42768:180::-;42816:77;42813:1;42806:88;42913:4;42910:1;42903:15;42937:4;42934:1;42927:15;42954:180;43002:77;42999:1;42992:88;43099:4;43096:1;43089:15;43123:4;43120:1;43113:15;43140:143;43197:5;43228:6;43222:13;43213:22;;43244:33;43271:5;43244:33;:::i;:::-;43140:143;;;;:::o;43289:351::-;43359:6;43408:2;43396:9;43387:7;43383:23;43379:32;43376:119;;;43414:79;;:::i;:::-;43376:119;43534:1;43559:64;43615:7;43606:6;43595:9;43591:22;43559:64;:::i;:::-;43549:74;;43505:128;43289:351;;;;:::o;43646:85::-;43691:7;43720:5;43709:16;;43646:85;;;:::o;43737:158::-;43795:9;43828:61;43846:42;43855:32;43881:5;43855:32;:::i;:::-;43846:42;:::i;:::-;43828:61;:::i;:::-;43815:74;;43737:158;;;:::o;43901:147::-;43996:45;44035:5;43996:45;:::i;:::-;43991:3;43984:58;43901:147;;:::o;44054:114::-;44121:6;44155:5;44149:12;44139:22;;44054:114;;;:::o;44174:184::-;44273:11;44307:6;44302:3;44295:19;44347:4;44342:3;44338:14;44323:29;;44174:184;;;;:::o;44364:132::-;44431:4;44454:3;44446:11;;44484:4;44479:3;44475:14;44467:22;;44364:132;;;:::o;44502:108::-;44579:24;44597:5;44579:24;:::i;:::-;44574:3;44567:37;44502:108;;:::o;44616:179::-;44685:10;44706:46;44748:3;44740:6;44706:46;:::i;:::-;44784:4;44779:3;44775:14;44761:28;;44616:179;;;;:::o;44801:113::-;44871:4;44903;44898:3;44894:14;44886:22;;44801:113;;;:::o;44950:732::-;45069:3;45098:54;45146:5;45098:54;:::i;:::-;45168:86;45247:6;45242:3;45168:86;:::i;:::-;45161:93;;45278:56;45328:5;45278:56;:::i;:::-;45357:7;45388:1;45373:284;45398:6;45395:1;45392:13;45373:284;;;45474:6;45468:13;45501:63;45560:3;45545:13;45501:63;:::i;:::-;45494:70;;45587:60;45640:6;45587:60;:::i;:::-;45577:70;;45433:224;45420:1;45417;45413:9;45408:14;;45373:284;;;45377:14;45673:3;45666:10;;45074:608;;;44950:732;;;;:::o;45688:831::-;45951:4;45989:3;45978:9;45974:19;45966:27;;46003:71;46071:1;46060:9;46056:17;46047:6;46003:71;:::i;:::-;46084:80;46160:2;46149:9;46145:18;46136:6;46084:80;:::i;:::-;46211:9;46205:4;46201:20;46196:2;46185:9;46181:18;46174:48;46239:108;46342:4;46333:6;46239:108;:::i;:::-;46231:116;;46357:72;46425:2;46414:9;46410:18;46401:6;46357:72;:::i;:::-;46439:73;46507:3;46496:9;46492:19;46483:6;46439:73;:::i;:::-;45688:831;;;;;;;;:::o;46525:807::-;46774:4;46812:3;46801:9;46797:19;46789:27;;46826:71;46894:1;46883:9;46879:17;46870:6;46826:71;:::i;:::-;46907:72;46975:2;46964:9;46960:18;46951:6;46907:72;:::i;:::-;46989:80;47065:2;47054:9;47050:18;47041:6;46989:80;:::i;:::-;47079;47155:2;47144:9;47140:18;47131:6;47079:80;:::i;:::-;47169:73;47237:3;47226:9;47222:19;47213:6;47169:73;:::i;:::-;47252;47320:3;47309:9;47305:19;47296:6;47252:73;:::i;:::-;46525:807;;;;;;;;;:::o;47338:663::-;47426:6;47434;47442;47491:2;47479:9;47470:7;47466:23;47462:32;47459:119;;;47497:79;;:::i;:::-;47459:119;47617:1;47642:64;47698:7;47689:6;47678:9;47674:22;47642:64;:::i;:::-;47632:74;;47588:128;47755:2;47781:64;47837:7;47828:6;47817:9;47813:22;47781:64;:::i;:::-;47771:74;;47726:129;47894:2;47920:64;47976:7;47967:6;47956:9;47952:22;47920:64;:::i;:::-;47910:74;;47865:129;47338:663;;;;;:::o
Swarm Source
ipfs://23bfe3db147e21b9a09aed9082363d0a8048910f3910681a533d2f75b4914d44
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.