ERC-20
Overview
Max Total Supply
369,369,369,373 $TIME
Holders
34
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
36.89397223 $TIMEValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
DREAMSMACHINE
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-02-16 */ /** * Childhood Never Ends * $O rewards. I don't matter. Own it, Claim it. It's a movement. Teh greatest among you is like a child. * Be like a child. */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.10; library SafeMath { function tryAdd( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IDexFactory { function createPair( address tokenA, address tokenB ) external returns (address pair); } interface IDexRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } interface IERC20Extended { 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 ); } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _owner = _msgSender(); emit OwnershipTransferred(address(0), _owner); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = payable(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IDividendDistributor { function setDistributionCriteria( uint256 _minPeriod, uint256 _minDistribution ) external; function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function process(uint256 gas) external; function claimDividend(address _user) external; function getPaidEarnings( address shareholder ) external view returns (uint256); function getUnpaidEarnings( address shareholder ) external view returns (uint256); function totalDistributed() external view returns (uint256); } contract DREAMACHINE is IDividendDistributor { using SafeMath for uint256; address public token; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } IERC20Extended public O = IERC20Extended(0xb53ecF1345caBeE6eA1a65100Ebb153cEbcac40f); IDexRouter public router; address[] public shareholders; mapping(address => uint256) public shareholderIndexes; mapping(address => uint256) public shareholderClaims; mapping(address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed; uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10 ** 36; uint256 public minPeriod = 1 hours; uint256 public minDistribution = 1 * (10 ** O.decimals()); uint256 currentIndex; bool initialized; modifier initializer() { require(!initialized); _; initialized = true; } modifier onlyToken() { require(msg.sender == token); _; } constructor(address router_) { token = msg.sender; router = IDexRouter(router_); } function setDistributionCriteria( uint256 _minPeriod, uint256 _minDistribution ) external override onlyToken { minPeriod = _minPeriod; minDistribution = _minDistribution; } function setShare( address shareholder, uint256 amount ) external override onlyToken { if (shares[shareholder].amount > 0) { distributeDividend(shareholder); } if (amount > 0 && shares[shareholder].amount == 0) { addShareholder(shareholder); } else if (amount == 0 && shares[shareholder].amount > 0) { removeShareholder(shareholder); } totalShares = totalShares.sub(shares[shareholder].amount).add(amount); shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends( shares[shareholder].amount ); } function deposit() external payable override onlyToken { uint256 balanceBefore = O.balanceOf(address(this)); address[] memory path = new address[](2); path[0] = router.WETH(); path[1] = address(O); router.swapExactETHForTokensSupportingFeeOnTransferTokens{ value: msg.value }(0, path, address(this), block.timestamp); uint256 amount = O.balanceOf(address(this)).sub(balanceBefore); totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add( dividendsPerShareAccuracyFactor.mul(amount).div(totalShares) ); } function process(uint256 gas) external override onlyToken { uint256 shareholderCount = shareholders.length; if (shareholderCount == 0) { return; } uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; while (gasUsed < gas && iterations < shareholderCount) { if (currentIndex >= shareholderCount) { currentIndex = 0; } if (shouldDistribute(shareholders[currentIndex])) { distributeDividend(shareholders[currentIndex]); } gasUsed = gasUsed.add(gasLeft.sub(gasleft())); gasLeft = gasleft(); currentIndex++; iterations++; } } function shouldDistribute( address shareholder ) internal view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution; } function distributeDividend(address shareholder) internal { if (shares[shareholder].amount == 0) { return; } uint256 amount = getUnpaidEarnings(shareholder); if (amount > 0) { totalDistributed = totalDistributed.add(amount); O.transfer(shareholder, amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder] .totalRealised .add(amount); shares[shareholder].totalExcluded = getCumulativeDividends( shares[shareholder].amount ); } } function claimDividend(address _user) external { distributeDividend(_user); } function getPaidEarnings( address shareholder ) public view returns (uint256) { return shares[shareholder].totalRealised; } function getUnpaidEarnings( address shareholder ) public view returns (uint256) { if (shares[shareholder].amount == 0) { return 0; } uint256 shareholderTotalDividends = getCumulativeDividends( shares[shareholder].amount ); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if (shareholderTotalDividends <= shareholderTotalExcluded) { return 0; } return shareholderTotalDividends.sub(shareholderTotalExcluded); } function getCumulativeDividends( uint256 share ) internal view returns (uint256) { return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor); } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[ shareholders.length - 1 ]; shareholderIndexes[ shareholders[shareholders.length - 1] ] = shareholderIndexes[shareholder]; shareholders.pop(); } } // main contract contract DREAMSMACHINE is IERC20Extended, Ownable { using SafeMath for uint256; string private constant _name = "Childhoods Never End"; string private constant _symbol = "$TIME"; uint8 private constant _decimals = 9; uint256 private constant _totalSupply = 369_369_369_373 * 10 ** _decimals; address public O = 0xb53ecF1345caBeE6eA1a65100Ebb153cEbcac40f; address private constant DEAD = address(0xdead); address private constant ZERO = address(0); IDexRouter public router; address public pair; address public autoLiquidityReceiver; uint256 _reflectionBuyFee = 4_00; uint256 _liquidityBuyFee = 1_00; uint256 _reflectionSellFee = 4_00; uint256 _liquiditySellFee = 1_00; uint256 _reflectionFeeCount; uint256 _liquidityFeeCount; uint256 public totalBuyFee = 5_00; uint256 public totalSellFee = 5_00; uint256 public feeDenominator = 100_00; DREAMACHINE public distributor; uint256 public distributorGas = 500000; uint256 public maxTxnAmount = _totalSupply / 100; uint256 public maxWalletAmount = _totalSupply / 1000; uint256 public launchedAt; uint256 public snipingTime = 30 seconds; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) public isFeeExempt; mapping(address => bool) public isLimitExmpt; mapping(address => bool) public isWalletExmpt; mapping(address => bool) public isDividendExempt; mapping(address => bool) public isBot; uint256 public swapThreshold = _totalSupply / 1000; bool public swapEnabled; bool public trading; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } event AutoLiquify(uint256 amountBNB, uint256 amountBOG); constructor() Ownable() { address router_ = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; autoLiquidityReceiver = msg.sender; router = IDexRouter(router_); pair = IDexFactory(router.factory()).createPair( address(this), router.WETH() ); distributor = new DREAMACHINE(router_); isFeeExempt[autoLiquidityReceiver] = true; isFeeExempt[address(this)] = true; isDividendExempt[pair] = true; isDividendExempt[address(router)] = true; isDividendExempt[address(this)] = true; isDividendExempt[DEAD] = true; isDividendExempt[ZERO] = true; isLimitExmpt[autoLiquidityReceiver] = true; isLimitExmpt[address(this)] = true; isLimitExmpt[address(router)] = true; isWalletExmpt[autoLiquidityReceiver] = true; isWalletExmpt[pair] = true; isWalletExmpt[address(router)] = true; isWalletExmpt[address(this)] = true; _allowances[address(this)][address(router)] = _totalSupply; _allowances[address(this)][address(pair)] = _totalSupply; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } 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 approveMax(address spender) external returns (bool) { return approve(spender, _totalSupply); } function transfer( address recipient, uint256 amount ) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom( address sender, address recipient, uint256 amount ) external override returns (bool) { if (_allowances[sender][msg.sender] != _totalSupply) { _allowances[sender][msg.sender] = _allowances[sender][msg.sender] .sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function _transferFrom( address sender, address recipient, uint256 amount ) internal returns (bool) { require(!isBot[sender], "Bot detected"); if (!isLimitExmpt[sender] && !isLimitExmpt[recipient]) { require(amount <= maxTxnAmount, "Max txn limit exceeds"); // trading disable till launch if (!trading) { require( pair != sender && pair != recipient, "Trading is disable" ); } // anti snipper bot if ( block.timestamp < launchedAt + snipingTime && sender != address(router) ) { if (pair == sender) { isBot[recipient] = true; } else if (pair == recipient) { isBot[sender] = true; } } } if (!isWalletExmpt[recipient]) { require( balanceOf(recipient).add(amount) <= maxWalletAmount, "Max Wallet limit exceeds" ); } if (inSwap) { return _basicTransfer(sender, recipient, amount); } if (shouldSwapBack()) { swapBack(); } _balances[sender] = _balances[sender].sub( amount, "Insufficient Balance" ); uint256 amountReceived; if ( isFeeExempt[sender] || isFeeExempt[recipient] || (sender != pair && recipient != pair) ) { amountReceived = amount; } else { uint256 feeAmount; if (sender == pair) { feeAmount = amount.mul(totalBuyFee).div(feeDenominator); amountReceived = amount.sub(feeAmount); takeFee(sender, feeAmount); setBuyAccFee(amount); } else { feeAmount = amount.mul(totalSellFee).div(feeDenominator); amountReceived = amount.sub(feeAmount); takeFee(sender, feeAmount); setSellAccFee(amount); } } _balances[recipient] = _balances[recipient].add(amountReceived); if (!isDividendExempt[sender]) { try distributor.setShare(sender, _balances[sender]) {} catch {} } if (!isDividendExempt[recipient]) { try distributor.setShare(recipient, _balances[recipient]) {} catch {} } try distributor.process(distributorGas) {} catch {} emit Transfer(sender, recipient, amountReceived); return true; } function _basicTransfer( address sender, address recipient, uint256 amount ) internal returns (bool) { _balances[sender] = _balances[sender].sub( amount, "Insufficient Balance" ); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function takeFee(address sender, uint256 feeAmount) internal { _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); } function setBuyAccFee(uint256 _amount) internal { _liquidityFeeCount += _amount.mul(_liquidityBuyFee).div(feeDenominator); _reflectionFeeCount += _amount.mul(_reflectionBuyFee).div( feeDenominator ); } function setSellAccFee(uint256 _amount) internal { _liquidityFeeCount += _amount.mul(_liquiditySellFee).div( feeDenominator ); _reflectionFeeCount += _amount.mul(_reflectionSellFee).div( feeDenominator ); } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function swapBack() internal swapping { uint256 totalFee = _liquidityFeeCount.add(_reflectionFeeCount); uint256 amountToLiquify = swapThreshold .mul(_liquidityFeeCount) .div(totalFee) .div(2); uint256 amountToSwap = swapThreshold.sub(amountToLiquify); _allowances[address(this)][address(router)] = _totalSupply; address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountBNB = address(this).balance.sub(balanceBefore); uint256 totalBNBFee = totalFee.sub(_liquidityFeeCount.div(2)); uint256 amountBNBLiquidity = amountBNB .mul(_liquidityFeeCount) .div(totalBNBFee) .div(2); if (amountToLiquify > 0) { router.addLiquidityETH{value: amountBNBLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountBNBLiquidity, amountToLiquify); } uint256 amountBNBReflection = amountBNB.mul(_reflectionFeeCount).div( totalBNBFee ); if (amountBNBReflection > 0) { try distributor.deposit{value: amountBNBReflection}() {} catch {} } _liquidityFeeCount = 0; _reflectionFeeCount = 0; } function claimDividend() external { distributor.claimDividend(msg.sender); } function getPaidDividend( address shareholder ) public view returns (uint256) { return distributor.getPaidEarnings(shareholder); } function getUnpaidDividend( address shareholder ) external view returns (uint256) { return distributor.getUnpaidEarnings(shareholder); } function getTotalDistributedDividend() external view returns (uint256) { return distributor.totalDistributed(); } function setIsDividendExempt( address holder, bool exempt ) external onlyOwner { require(holder != address(this) && holder != pair); isDividendExempt[holder] = exempt; if (exempt) { distributor.setShare(holder, 0); } else { distributor.setShare(holder, _balances[holder]); } } function enableTrading() external onlyOwner { require(!trading, "Already enabled"); trading = true; swapEnabled = true; launchedAt = block.timestamp; } function removeStuckEth(uint256 amount) external onlyOwner { payable(owner()).transfer(amount); } function setMaxTxnAmount(uint256 amount) external onlyOwner { require(amount >= _totalSupply / 1000); maxTxnAmount = amount; } function setMaxWalletAmount(uint256 amount) external onlyOwner { require(amount >= _totalSupply / 1000); maxWalletAmount = amount; } function setIsFeeExempt(address holder, bool exempt) external onlyOwner { isFeeExempt[holder] = exempt; } function setIsLimitExempt( address[] memory holders, bool exempt ) external onlyOwner { for (uint256 i; i < holders.length; i++) { isLimitExmpt[holders[i]] = exempt; } } function setIsWalletExempt(address holder, bool exempt) external onlyOwner { isWalletExmpt[holder] = exempt; } function removeBots(address[] memory accounts) external onlyOwner { for (uint256 i; i < accounts.length; i++) { isBot[accounts[i]] = false; } } function setBuyFees( uint256 _reflectionFee, uint256 _liquidityFee, uint256 _feeDenominator ) public onlyOwner { _reflectionBuyFee = _reflectionFee; _liquidityBuyFee = _liquidityFee; totalBuyFee = _liquidityFee.add(_reflectionFee); feeDenominator = _feeDenominator; require( totalBuyFee <= feeDenominator.div(10), "Can't be greater than 10%" ); } function setSellFees( uint256 _liquidityFee, uint256 _reflectionFee, uint256 _feeDenominator ) public onlyOwner { _liquiditySellFee = _liquidityFee; _reflectionSellFee = _reflectionFee; totalSellFee = _liquidityFee.add(_reflectionFee); feeDenominator = _feeDenominator; require( totalSellFee <= feeDenominator.div(10), "Can't be greater than 10%" ); } function setFeeReceivers( address _autoLiquidityReceiver ) external onlyOwner { autoLiquidityReceiver = _autoLiquidityReceiver; } function setSwapBackSettings( bool _enabled, uint256 _amount ) external onlyOwner { require(swapThreshold > 0); swapEnabled = _enabled; swapThreshold = _amount; } function setDistributionCriteria( uint256 _minPeriod, uint256 _minDistribution ) external onlyOwner { distributor.setDistributionCriteria(_minPeriod, _minDistribution); } function setDistributorSettings(uint256 gas) external onlyOwner { require(gas < 750000, "Gas must be lower than 750000"); distributorGas = gas; } function multiTransfer( address[] memory accounts, uint256[] memory amounts ) external onlyOwner { require(accounts.length == amounts.length, "Invalid"); for (uint256 i; i < accounts.length; i++) { _transferFrom(msg.sender, accounts[i], amounts[i]); } } }
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":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"O","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DREAMACHINE","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributorGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getPaidDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDistributedDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLimitExmpt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletExmpt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"removeBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"removeStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"holders","type":"address[]"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"snipingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","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":"totalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"trading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405273b53ecf1345cabee6ea1a65100ebb153cebcac40f600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610190600555606460065561019060075560646008556101f4600b556101f4600c55612710600d556207a120600f5560646009600a6200009a919062000f0c565b645600214b1d620000ac919062000f5d565b620000b8919062000fd7565b6010556103e86009600a620000ce919062000f0c565b645600214b1d620000e0919062000f5d565b620000ec919062000fd7565b601155601e6013556103e86009600a62000107919062000f0c565b645600214b1d62000119919062000f5d565b62000125919062000fd7565b601b553480156200013557600080fd5b506200014662000d5c60201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000737a250d5630b4cf539739df2c5dacb4c659f2488d905033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000309573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032f919062001079565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003df919062001079565b6040518363ffffffff1660e01b8152600401620003fe929190620010bc565b6020604051808303816000875af11580156200041e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000444919062001079565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080604051620004939062000d64565b6200049f9190620010e9565b604051809103906000f080158015620004bc573d6000803e3d6000fd5b50600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160166000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160196000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160196000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016019600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601960008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160186000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160186000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160186000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009600a62000aef919062000f0c565b645600214b1d62000b01919062000f5d565b601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506009600a62000bb3919062000f0c565b645600214b1d62000bc5919062000f5d565b601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506009600a62000c77919062000f0c565b645600214b1d62000c89919062000f5d565b601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a62000d2c919062000f0c565b645600214b1d62000d3e919062000f5d565b60405162000d4d919062001117565b60405180910390a35062001134565b600033905090565b61234f80620066ef83390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000e005780860481111562000dd85762000dd762000d72565b5b600185161562000de85780820291505b808102905062000df88562000da1565b945062000db8565b94509492505050565b60008262000e1b576001905062000eee565b8162000e2b576000905062000eee565b816001811462000e44576002811462000e4f5762000e85565b600191505062000eee565b60ff84111562000e645762000e6362000d72565b5b8360020a91508482111562000e7e5762000e7d62000d72565b5b5062000eee565b5060208310610133831016604e8410600b841016171562000ebf5782820a90508381111562000eb95762000eb862000d72565b5b62000eee565b62000ece848484600162000dae565b9250905081840481111562000ee85762000ee762000d72565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000f198262000ef5565b915062000f268362000eff565b925062000f557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000e09565b905092915050565b600062000f6a8262000ef5565b915062000f778362000ef5565b925082820262000f878162000ef5565b9150828204841483151762000fa15762000fa062000d72565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000fe48262000ef5565b915062000ff18362000ef5565b92508262001004576200100362000fa8565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620010418262001014565b9050919050565b620010538162001034565b81146200105f57600080fd5b50565b600081519050620010738162001048565b92915050565b6000602082840312156200109257620010916200100f565b5b6000620010a28482850162001062565b91505092915050565b620010b68162001034565b82525050565b6000604082019050620010d36000830185620010ab565b620010e26020830184620010ab565b9392505050565b6000602082019050620011006000830184620010ab565b92915050565b620011118162000ef5565b82525050565b60006020820190506200112e600083018462001106565b92915050565b6155ab80620011446000396000f3fe6080604052600436106103395760003560e01c80637d99c66d116101ab578063bf56b371116100f7578063ec44acf211610095578063f6cfa08a1161006f578063f6cfa08a14610c3f578063f708a64f14610c68578063f887ea4014610c91578063fc899bdc14610cbc57610340565b8063ec44acf214610bd4578063f0fc6bca14610bff578063f2fde38b14610c1657610340565b8063cf46f24c116100d1578063cf46f24c14610b1a578063dd62ed3e14610b45578063df20fd4914610b82578063e01bb68814610bab57610340565b8063bf56b37114610a99578063bfe1092814610ac4578063ca33e64c14610aef57610340565b806395d89b4111610164578063a0ea32de1161013e578063a0ea32de146109db578063a8aa1b3114610a06578063a9059cbb14610a31578063aa4bde2814610a6e57610340565b806395d89b411461095c5780639d1944f5146109875780639d9241ec146109b057610340565b80637d99c66d1461084c57806386cb8fb11461087757806386db0c05146108b4578063893c9f2b146108f15780638a8c523c1461091a5780638da5cb5b1461093157610340565b80633bbac5791161028557806360e71962116102235780636ddd1713116101fd5780636ddd1713146107a457806370a08231146107cf578063715018a61461080c57806374010ece1461082357610340565b806360e7196214610727578063658d4b7f146107525780636c3bbfd71461077b57610340565b806349bc3feb1161025f57806349bc3feb14610645578063540b8a2714610682578063571ac8b0146106bf57806359b107b9146106fc57610340565b80633bbac5791461058e5780633f4218e0146105cb5780634355855a1461060857610340565b806318160ddd116102f257806323b872dd116102cc57806323b872dd146104d457806327a14fc2146105115780632d48e8961461053a578063313ce5671461056357610340565b806318160ddd146104555780631961cee2146104805780631e89d545146104ab57610340565b80630445b6671461034557806306fdde0314610370578063095ea7b31461039b5780630d075d9c146103d85780630f683e9014610401578063180b0d7e1461042a57610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610ce5565b6040516103679190614297565b60405180910390f35b34801561037c57600080fd5b50610385610ceb565b6040516103929190614342565b60405180910390f35b3480156103a757600080fd5b506103c260048036038101906103bd9190614402565b610d28565b6040516103cf919061445d565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa9190614478565b610e1a565b005b34801561040d57600080fd5b5061042860048036038101906104239190614478565b610f3c565b005b34801561043657600080fd5b5061043f61105e565b60405161044c9190614297565b60405180910390f35b34801561046157600080fd5b5061046a611064565b6040516104779190614297565b60405180910390f35b34801561048c57600080fd5b50610495611089565b6040516104a29190614297565b60405180910390f35b3480156104b757600080fd5b506104d260048036038101906104cd91906146d6565b611121565b005b3480156104e057600080fd5b506104fb60048036038101906104f6919061474e565b61125e565b604051610508919061445d565b60405180910390f35b34801561051d57600080fd5b50610538600480360381019061053391906147a1565b61145b565b005b34801561054657600080fd5b50610561600480360381019061055c91906147ce565b611531565b005b34801561056f57600080fd5b50610578611659565b604051610585919061482a565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b09190614845565b611662565b6040516105c2919061445d565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed9190614845565b611682565b6040516105ff919061445d565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a9190614845565b6116a2565b60405161063c919061445d565b60405180910390f35b34801561065157600080fd5b5061066c60048036038101906106679190614845565b6116c2565b6040516106799190614297565b60405180910390f35b34801561068e57600080fd5b506106a960048036038101906106a49190614845565b611767565b6040516106b6919061445d565b60405180910390f35b3480156106cb57600080fd5b506106e660048036038101906106e19190614845565b611787565b6040516106f3919061445d565b60405180910390f35b34801561070857600080fd5b506107116117b7565b60405161071e9190614297565b60405180910390f35b34801561073357600080fd5b5061073c6117bd565b6040516107499190614297565b60405180910390f35b34801561075e57600080fd5b506107796004803603810190610774919061489e565b6117c3565b005b34801561078757600080fd5b506107a2600480360381019061079d91906148de565b6118b3565b005b3480156107b057600080fd5b506107b96119dd565b6040516107c6919061445d565b60405180910390f35b3480156107db57600080fd5b506107f660048036038101906107f19190614845565b6119f0565b6040516108039190614297565b60405180910390f35b34801561081857600080fd5b50610821611a39565b005b34801561082f57600080fd5b5061084a600480360381019061084591906147a1565b611b8c565b005b34801561085857600080fd5b50610861611c62565b60405161086e9190614297565b60405180910390f35b34801561088357600080fd5b5061089e60048036038101906108999190614845565b611c68565b6040516108ab919061445d565b60405180910390f35b3480156108c057600080fd5b506108db60048036038101906108d69190614845565b611c88565b6040516108e89190614297565b60405180910390f35b3480156108fd57600080fd5b50610918600480360381019061091391906147a1565b611d2d565b005b34801561092657600080fd5b5061092f611e13565b005b34801561093d57600080fd5b50610946611f37565b6040516109539190614936565b60405180910390f35b34801561096857600080fd5b50610971611f60565b60405161097e9190614342565b60405180910390f35b34801561099357600080fd5b506109ae60048036038101906109a991906147a1565b611f9d565b005b3480156109bc57600080fd5b506109c5612081565b6040516109d29190614297565b60405180910390f35b3480156109e757600080fd5b506109f0612087565b6040516109fd9190614936565b60405180910390f35b348015610a1257600080fd5b50610a1b6120ad565b604051610a289190614936565b60405180910390f35b348015610a3d57600080fd5b50610a586004803603810190610a539190614402565b6120d3565b604051610a65919061445d565b60405180910390f35b348015610a7a57600080fd5b50610a836120e8565b604051610a909190614297565b60405180910390f35b348015610aa557600080fd5b50610aae6120ee565b604051610abb9190614297565b60405180910390f35b348015610ad057600080fd5b50610ad96120f4565b604051610ae691906149b0565b60405180910390f35b348015610afb57600080fd5b50610b0461211a565b604051610b119190614936565b60405180910390f35b348015610b2657600080fd5b50610b2f612140565b604051610b3c9190614297565b60405180910390f35b348015610b5157600080fd5b50610b6c6004803603810190610b6791906149cb565b612146565b604051610b799190614297565b60405180910390f35b348015610b8e57600080fd5b50610ba96004803603810190610ba49190614a0b565b6121cd565b005b348015610bb757600080fd5b50610bd26004803603810190610bcd9190614845565b612296565b005b348015610be057600080fd5b50610be961236f565b604051610bf6919061445d565b60405180910390f35b348015610c0b57600080fd5b50610c14612382565b005b348015610c2257600080fd5b50610c3d6004803603810190610c389190614845565b612411565b005b348015610c4b57600080fd5b50610c666004803603810190610c619190614a4b565b6125d2565b005b348015610c7457600080fd5b50610c8f6004803603810190610c8a919061489e565b6126fc565b005b348015610c9d57600080fd5b50610ca66129e9565b604051610cb39190614ac8565b60405180910390f35b348015610cc857600080fd5b50610ce36004803603810190610cde919061489e565b612a0f565b005b601b5481565b60606040518060400160405280601481526020017f4368696c64686f6f6473204e6576657220456e64000000000000000000000000815250905090565b600081601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610e089190614297565b60405180910390a36001905092915050565b610e22612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea690614b2f565b60405180910390fd5b8260058190555081600681905550610ed08383612b0790919063ffffffff16565b600b8190555080600d81905550610ef3600a600d54612b1d90919063ffffffff16565b600b541115610f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2e90614b9b565b60405180910390fd5b505050565b610f44612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc890614b2f565b60405180910390fd5b8260088190555081600781905550610ff28284612b0790919063ffffffff16565b600c8190555080600d81905550611015600a600d54612b1d90919063ffffffff16565b600c541115611059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105090614b9b565b60405180910390fd5b505050565b600d5481565b60006009600a6110749190614d1d565b645600214b1d6110849190614d68565b905090565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663efca2eed6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111c9190614dbf565b905090565b611129612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ad90614b2f565b60405180910390fd5b80518251146111fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f190614e38565b60405180910390fd5b60005b8251811015611259576112453384838151811061121d5761121c614e58565b5b602002602001015184848151811061123857611237614e58565b5b6020026020010151612b33565b50808061125190614e87565b9150506111fd565b505050565b60006009600a61126e9190614d1d565b645600214b1d61127e9190614d68565b601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611447576113c6826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461376a9092919063ffffffff16565b601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611452848484612b33565b90509392505050565b611463612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e790614b2f565b60405180910390fd5b6103e86009600a6115019190614d1d565b645600214b1d6115119190614d68565b61151b9190614efe565b81101561152757600080fd5b8060118190555050565b611539612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bd90614b2f565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b8152600401611623929190614f2f565b600060405180830381600087803b15801561163d57600080fd5b505af1158015611651573d6000803e3d6000fd5b505050505050565b60006009905090565b601a6020528060005260406000206000915054906101000a900460ff1681565b60166020528060005260406000206000915054906101000a900460ff1681565b60196020528060005260406000206000915054906101000a900460ff1681565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166352f48158836040518263ffffffff1660e01b815260040161171f9190614936565b602060405180830381865afa15801561173c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117609190614dbf565b9050919050565b60176020528060005260406000206000915054906101000a900460ff1681565b60006117b0826009600a61179b9190614d1d565b645600214b1d6117ab9190614d68565b610d28565b9050919050565b600b5481565b600f5481565b6117cb612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184f90614b2f565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6118bb612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193f90614b2f565b60405180910390fd5b60005b81518110156119d9576000601a600084848151811061196d5761196c614e58565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806119d190614e87565b91505061194b565b5050565b601c60009054906101000a900460ff1681565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611a41612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac590614b2f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611b94612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1890614b2f565b60405180910390fd5b6103e86009600a611c329190614d1d565b645600214b1d611c429190614d68565b611c4c9190614efe565b811015611c5857600080fd5b8060108190555050565b60135481565b60186020528060005260406000206000915054906101000a900460ff1681565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b8152600401611ce59190614936565b602060405180830381865afa158015611d02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d269190614dbf565b9050919050565b611d35612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db990614b2f565b60405180910390fd5b611dca611f37565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e0f573d6000803e3d6000fd5b5050565b611e1b612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9f90614b2f565b60405180910390fd5b601c60019054906101000a900460ff1615611ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eef90614fa4565b60405180910390fd5b6001601c60016101000a81548160ff0219169083151502179055506001601c60006101000a81548160ff02191690831515021790555042601281905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f2454494d45000000000000000000000000000000000000000000000000000000815250905090565b611fa5612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202990614b2f565b60405180910390fd5b620b71b08110612077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206e90615010565b60405180910390fd5b80600f8190555050565b600c5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006120e0338484612b33565b905092915050565b60115481565b60125481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b6000601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6121d5612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612262576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225990614b2f565b60405180910390fd5b6000601b541161227157600080fd5b81601c60006101000a81548160ff02191690831515021790555080601b819055505050565b61229e612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461232b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232290614b2f565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c60019054906101000a900460ff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b81526004016123dd9190614936565b600060405180830381600087803b1580156123f757600080fd5b505af115801561240b573d6000803e3d6000fd5b50505050565b612419612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249d90614b2f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250c906150a2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6125da612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265e90614b2f565b60405180910390fd5b60005b82518110156126f757816017600085848151811061268b5761268a614e58565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806126ef90614e87565b91505061266a565b505050565b612704612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278890614b2f565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561281b5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61282457600080fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561291657600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b81526004016128df9291906150fd565b600060405180830381600087803b1580156128f957600080fd5b505af115801561290d573d6000803e3d6000fd5b505050506129e5565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016129b2929190615126565b600060405180830381600087803b1580156129cc57600080fd5b505af11580156129e0573d6000803e3d6000fd5b505050505b5050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612a17612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9b90614b2f565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600033905090565b60008183612b15919061514f565b905092915050565b60008183612b2b9190614efe565b905092915050565b6000601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb9906151cf565b60405180910390fd5b601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c665750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f8457601054821115612cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca79061523b565b60405180910390fd5b601c60019054906101000a900460ff16612db0578373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612d7057508273ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b612daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da6906152a7565b60405180910390fd5b5b601354601254612dc0919061514f565b42108015612e1c5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612f83578373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612ed3576001601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612f82565b8273ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612f81576001601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661303557601154612ff383612fe5866119f0565b612b0790919063ffffffff16565b1115613034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302b90615313565b60405180910390fd5b5b601c60029054906101000a900460ff161561305c576130558484846137bf565b9050613763565b613064613992565b1561307257613071613a69565b5b6130fb826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461376a9092919063ffffffff16565b601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806131e15750601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806132945750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156132935750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b5b156132a1578290506133a6565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361335057613321600d54613313600b548761404a90919063ffffffff16565b612b1d90919063ffffffff16565b9050613336818561406090919063ffffffff16565b91506133428682614076565b61334b84614174565b6133a4565b613379600d5461336b600c548761404a90919063ffffffff16565b612b1d90919063ffffffff16565b905061338e818561406090919063ffffffff16565b915061339a8682614076565b6133a3846141f9565b5b505b6133f881601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b0790919063ffffffff16565b601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661355557600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401613528929190615126565b600060405180830381600087803b15801561354257600080fd5b505af1925050508015613553575060015b505b601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661366f57600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401613642929190615126565b600060405180830381600087803b15801561365c57600080fd5b505af192505050801561366d575060015b505b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479600f546040518263ffffffff1660e01b81526004016136cc9190614297565b600060405180830381600087803b1580156136e657600080fd5b505af19250505080156136f7575060015b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137559190614297565b60405180910390a360019150505b9392505050565b60008383111582906137b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137a99190614342565b60405180910390fd5b5082840390509392505050565b600061384a826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461376a9092919063ffffffff16565b601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138df82601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b0790919063ffffffff16565b601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161397f9190614297565b60405180910390a3600190509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156139ff5750601c60029054906101000a900460ff16155b8015613a175750601c60009054906101000a900460ff165b8015613a645750601b54601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601c60026101000a81548160ff0219169083151502179055506000613a9d600954600a54612b0790919063ffffffff16565b90506000613add6002613acf84613ac1600a54601b5461404a90919063ffffffff16565b612b1d90919063ffffffff16565b612b1d90919063ffffffff16565b90506000613af682601b5461406090919063ffffffff16565b90506009600a613b069190614d1d565b645600214b1d613b169190614d68565b601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600267ffffffffffffffff811115613bd557613bd46144d0565b5b604051908082528060200260200182016040528015613c035781602001602082028036833780820191505090505b5090503081600081518110613c1b57613c1a614e58565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ce69190615348565b81600181518110613cfa57613cf9614e58565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401613d9d959493929190615433565b600060405180830381600087803b158015613db757600080fd5b505af1158015613dcb573d6000803e3d6000fd5b505050506000613de4824761406090919063ffffffff16565b90506000613e10613e016002600a54612b1d90919063ffffffff16565b8861406090919063ffffffff16565b90506000613e4e6002613e4084613e32600a548861404a90919063ffffffff16565b612b1d90919063ffffffff16565b612b1d90919063ffffffff16565b90506000871115613f6257600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308a600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613ee29695949392919061548d565b60606040518083038185885af1158015613f00573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613f2591906154ee565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45068188604051613f59929190614f2f565b60405180910390a15b6000613f8b83613f7d6009548761404a90919063ffffffff16565b612b1d90919063ffffffff16565b9050600081111561401457600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561400057600080fd5b505af193505050508015614012575060015b505b6000600a8190555060006009819055505050505050505050506000601c60026101000a81548160ff021916908315150217905550565b600081836140589190614d68565b905092915050565b6000818361406e9190615541565b905092915050565b6140c881601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b0790919063ffffffff16565b601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516141689190614297565b60405180910390a35050565b61419d600d5461418f6006548461404a90919063ffffffff16565b612b1d90919063ffffffff16565b600a60008282546141ae919061514f565b925050819055506141de600d546141d06005548461404a90919063ffffffff16565b612b1d90919063ffffffff16565b600960008282546141ef919061514f565b9250508190555050565b614222600d546142146008548461404a90919063ffffffff16565b612b1d90919063ffffffff16565b600a6000828254614233919061514f565b92505081905550614263600d546142556007548461404a90919063ffffffff16565b612b1d90919063ffffffff16565b60096000828254614274919061514f565b9250508190555050565b6000819050919050565b6142918161427e565b82525050565b60006020820190506142ac6000830184614288565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156142ec5780820151818401526020810190506142d1565b60008484015250505050565b6000601f19601f8301169050919050565b6000614314826142b2565b61431e81856142bd565b935061432e8185602086016142ce565b614337816142f8565b840191505092915050565b6000602082019050818103600083015261435c8184614309565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006143a382614378565b9050919050565b6143b381614398565b81146143be57600080fd5b50565b6000813590506143d0816143aa565b92915050565b6143df8161427e565b81146143ea57600080fd5b50565b6000813590506143fc816143d6565b92915050565b600080604083850312156144195761441861436e565b5b6000614427858286016143c1565b9250506020614438858286016143ed565b9150509250929050565b60008115159050919050565b61445781614442565b82525050565b6000602082019050614472600083018461444e565b92915050565b6000806000606084860312156144915761449061436e565b5b600061449f868287016143ed565b93505060206144b0868287016143ed565b92505060406144c1868287016143ed565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b614508826142f8565b810181811067ffffffffffffffff82111715614527576145266144d0565b5b80604052505050565b600061453a614364565b905061454682826144ff565b919050565b600067ffffffffffffffff821115614566576145656144d0565b5b602082029050602081019050919050565b600080fd5b600061458f61458a8461454b565b614530565b905080838252602082019050602084028301858111156145b2576145b1614577565b5b835b818110156145db57806145c788826143c1565b8452602084019350506020810190506145b4565b5050509392505050565b600082601f8301126145fa576145f96144cb565b5b813561460a84826020860161457c565b91505092915050565b600067ffffffffffffffff82111561462e5761462d6144d0565b5b602082029050602081019050919050565b600061465261464d84614613565b614530565b9050808382526020820190506020840283018581111561467557614674614577565b5b835b8181101561469e578061468a88826143ed565b845260208401935050602081019050614677565b5050509392505050565b600082601f8301126146bd576146bc6144cb565b5b81356146cd84826020860161463f565b91505092915050565b600080604083850312156146ed576146ec61436e565b5b600083013567ffffffffffffffff81111561470b5761470a614373565b5b614717858286016145e5565b925050602083013567ffffffffffffffff81111561473857614737614373565b5b614744858286016146a8565b9150509250929050565b6000806000606084860312156147675761476661436e565b5b6000614775868287016143c1565b9350506020614786868287016143c1565b9250506040614797868287016143ed565b9150509250925092565b6000602082840312156147b7576147b661436e565b5b60006147c5848285016143ed565b91505092915050565b600080604083850312156147e5576147e461436e565b5b60006147f3858286016143ed565b9250506020614804858286016143ed565b9150509250929050565b600060ff82169050919050565b6148248161480e565b82525050565b600060208201905061483f600083018461481b565b92915050565b60006020828403121561485b5761485a61436e565b5b6000614869848285016143c1565b91505092915050565b61487b81614442565b811461488657600080fd5b50565b60008135905061489881614872565b92915050565b600080604083850312156148b5576148b461436e565b5b60006148c3858286016143c1565b92505060206148d485828601614889565b9150509250929050565b6000602082840312156148f4576148f361436e565b5b600082013567ffffffffffffffff81111561491257614911614373565b5b61491e848285016145e5565b91505092915050565b61493081614398565b82525050565b600060208201905061494b6000830184614927565b92915050565b6000819050919050565b600061497661497161496c84614378565b614951565b614378565b9050919050565b60006149888261495b565b9050919050565b600061499a8261497d565b9050919050565b6149aa8161498f565b82525050565b60006020820190506149c560008301846149a1565b92915050565b600080604083850312156149e2576149e161436e565b5b60006149f0858286016143c1565b9250506020614a01858286016143c1565b9150509250929050565b60008060408385031215614a2257614a2161436e565b5b6000614a3085828601614889565b9250506020614a41858286016143ed565b9150509250929050565b60008060408385031215614a6257614a6161436e565b5b600083013567ffffffffffffffff811115614a8057614a7f614373565b5b614a8c858286016145e5565b9250506020614a9d85828601614889565b9150509250929050565b6000614ab28261497d565b9050919050565b614ac281614aa7565b82525050565b6000602082019050614add6000830184614ab9565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b196020836142bd565b9150614b2482614ae3565b602082019050919050565b60006020820190508181036000830152614b4881614b0c565b9050919050565b7f43616e27742062652067726561746572207468616e2031302500000000000000600082015250565b6000614b856019836142bd565b9150614b9082614b4f565b602082019050919050565b60006020820190508181036000830152614bb481614b78565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115614c4157808604811115614c1d57614c1c614bbb565b5b6001851615614c2c5780820291505b8081029050614c3a85614bea565b9450614c01565b94509492505050565b600082614c5a5760019050614d16565b81614c685760009050614d16565b8160018114614c7e5760028114614c8857614cb7565b6001915050614d16565b60ff841115614c9a57614c99614bbb565b5b8360020a915084821115614cb157614cb0614bbb565b5b50614d16565b5060208310610133831016604e8410600b8410161715614cec5782820a905083811115614ce757614ce6614bbb565b5b614d16565b614cf98484846001614bf7565b92509050818404811115614d1057614d0f614bbb565b5b81810290505b9392505050565b6000614d288261427e565b9150614d338361480e565b9250614d607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614c4a565b905092915050565b6000614d738261427e565b9150614d7e8361427e565b9250828202614d8c8161427e565b91508282048414831517614da357614da2614bbb565b5b5092915050565b600081519050614db9816143d6565b92915050565b600060208284031215614dd557614dd461436e565b5b6000614de384828501614daa565b91505092915050565b7f496e76616c696400000000000000000000000000000000000000000000000000600082015250565b6000614e226007836142bd565b9150614e2d82614dec565b602082019050919050565b60006020820190508181036000830152614e5181614e15565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614e928261427e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614ec457614ec3614bbb565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614f098261427e565b9150614f148361427e565b925082614f2457614f23614ecf565b5b828204905092915050565b6000604082019050614f446000830185614288565b614f516020830184614288565b9392505050565b7f416c726561647920656e61626c65640000000000000000000000000000000000600082015250565b6000614f8e600f836142bd565b9150614f9982614f58565b602082019050919050565b60006020820190508181036000830152614fbd81614f81565b9050919050565b7f476173206d757374206265206c6f776572207468616e20373530303030000000600082015250565b6000614ffa601d836142bd565b915061500582614fc4565b602082019050919050565b6000602082019050818103600083015261502981614fed565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061508c6026836142bd565b915061509782615030565b604082019050919050565b600060208201905081810360008301526150bb8161507f565b9050919050565b6000819050919050565b60006150e76150e26150dd846150c2565b614951565b61427e565b9050919050565b6150f7816150cc565b82525050565b60006040820190506151126000830185614927565b61511f60208301846150ee565b9392505050565b600060408201905061513b6000830185614927565b6151486020830184614288565b9392505050565b600061515a8261427e565b91506151658361427e565b925082820190508082111561517d5761517c614bbb565b5b92915050565b7f426f742064657465637465640000000000000000000000000000000000000000600082015250565b60006151b9600c836142bd565b91506151c482615183565b602082019050919050565b600060208201905081810360008301526151e8816151ac565b9050919050565b7f4d61782074786e206c696d697420657863656564730000000000000000000000600082015250565b60006152256015836142bd565b9150615230826151ef565b602082019050919050565b6000602082019050818103600083015261525481615218565b9050919050565b7f54726164696e672069732064697361626c650000000000000000000000000000600082015250565b60006152916012836142bd565b915061529c8261525b565b602082019050919050565b600060208201905081810360008301526152c081615284565b9050919050565b7f4d61782057616c6c6574206c696d697420657863656564730000000000000000600082015250565b60006152fd6018836142bd565b9150615308826152c7565b602082019050919050565b6000602082019050818103600083015261532c816152f0565b9050919050565b600081519050615342816143aa565b92915050565b60006020828403121561535e5761535d61436e565b5b600061536c84828501615333565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6153aa81614398565b82525050565b60006153bc83836153a1565b60208301905092915050565b6000602082019050919050565b60006153e082615375565b6153ea8185615380565b93506153f583615391565b8060005b8381101561542657815161540d88826153b0565b9750615418836153c8565b9250506001810190506153f9565b5085935050505092915050565b600060a0820190506154486000830188614288565b61545560208301876150ee565b818103604083015261546781866153d5565b90506154766060830185614927565b6154836080830184614288565b9695505050505050565b600060c0820190506154a26000830189614927565b6154af6020830188614288565b6154bc60408301876150ee565b6154c960608301866150ee565b6154d66080830185614927565b6154e360a0830184614288565b979650505050505050565b6000806000606084860312156155075761550661436e565b5b600061551586828701614daa565b935050602061552686828701614daa565b925050604061553786828701614daa565b9150509250925092565b600061554c8261427e565b91506155578361427e565b925082820390508181111561556f5761556e614bbb565b5b9291505056fea2646970667358221220355107b76899b030f5bd1b66e202680336efb14a56ce9f0620057d551269eb3064736f6c63430008120033608060405273b53ecf1345cabee6ea1a65100ebb153cebcac40f600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600b55610e10600c55600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000106919062000223565b600a620001149190620003e2565b600162000122919062000433565b600d553480156200013257600080fd5b506040516200234f3803806200234f8339818101604052810190620001589190620004e3565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000515565b600080fd5b600060ff82169050919050565b620001fd81620001e5565b81146200020957600080fd5b50565b6000815190506200021d81620001f2565b92915050565b6000602082840312156200023c576200023b620001e0565b5b60006200024c848285016200020c565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620002e357808604811115620002bb57620002ba62000255565b5b6001851615620002cb5780820291505b8081029050620002db8562000284565b94506200029b565b94509492505050565b600082620002fe5760019050620003d1565b816200030e5760009050620003d1565b8160018114620003275760028114620003325762000368565b6001915050620003d1565b60ff84111562000347576200034662000255565b5b8360020a91508482111562000361576200036062000255565b5b50620003d1565b5060208310610133831016604e8410600b8410161715620003a25782820a9050838111156200039c576200039b62000255565b5b620003d1565b620003b1848484600162000291565b92509050818404811115620003cb57620003ca62000255565b5b81810290505b9392505050565b6000819050919050565b6000620003ef82620003d8565b9150620003fc83620001e5565b92506200042b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620002ec565b905092915050565b60006200044082620003d8565b91506200044d83620003d8565b92508282026200045d81620003d8565b9150828204841483151762000477576200047662000255565b5b5092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004ab826200047e565b9050919050565b620004bd816200049e565b8114620004c957600080fd5b50565b600081519050620004dd81620004b2565b92915050565b600060208284031215620004fc57620004fb620001e0565b5b60006200050c84828501620004cc565b91505092915050565b611e2a80620005256000396000f3fe60806040526004361061012a5760003560e01c8063a0ea32de116100ab578063e2d2e2191161006f578063e2d2e219146103fb578063efca2eed14610426578063f887ea4014610451578063fc0c546a1461047c578063ffb2c479146104a7578063ffd49c84146104d05761012a565b8063a0ea32de1461030d578063ab377daa14610338578063ce7c2ac214610375578063d0e30db0146103b4578063d4fda1f2146103be5761012a565b80633a98ef39116100f25780633a98ef39146102125780634fab0ae81461023d57806352f481581461026857806366817df5146102a5578063997664d7146102e25761012a565b806311ce023d1461012f57806314b6ca961461015a57806315f7e05e1461018357806328fd3198146101ac5780632d48e896146101e9575b600080fd5b34801561013b57600080fd5b506101446104fb565b60405161015191906116f4565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c919061179e565b610501565b005b34801561018f57600080fd5b506101aa60048036038101906101a591906117de565b6107c0565b005b3480156101b857600080fd5b506101d360048036038101906101ce91906117de565b6107cc565b6040516101e091906116f4565b60405180910390f35b3480156101f557600080fd5b50610210600480360381019061020b919061180b565b6108e5565b005b34801561021e57600080fd5b5061022761094f565b60405161023491906116f4565b60405180910390f35b34801561024957600080fd5b50610252610955565b60405161025f91906116f4565b60405180910390f35b34801561027457600080fd5b5061028f600480360381019061028a91906117de565b61095b565b60405161029c91906116f4565b60405180910390f35b3480156102b157600080fd5b506102cc60048036038101906102c791906117de565b6109a7565b6040516102d991906116f4565b60405180910390f35b3480156102ee57600080fd5b506102f76109bf565b60405161030491906116f4565b60405180910390f35b34801561031957600080fd5b506103226109c5565b60405161032f91906118aa565b60405180910390f35b34801561034457600080fd5b5061035f600480360381019061035a91906118c5565b6109eb565b60405161036c9190611901565b60405180910390f35b34801561038157600080fd5b5061039c600480360381019061039791906117de565b610a2a565b6040516103ab9392919061191c565b60405180910390f35b6103bc610a54565b005b3480156103ca57600080fd5b506103e560048036038101906103e091906117de565b610e94565b6040516103f291906116f4565b60405180910390f35b34801561040757600080fd5b50610410610eac565b60405161041d91906116f4565b60405180910390f35b34801561043257600080fd5b5061043b610eb2565b60405161044891906116f4565b60405180910390f35b34801561045d57600080fd5b50610466610eb8565b6040516104739190611974565b60405180910390f35b34801561048857600080fd5b50610491610ede565b60405161049e9190611901565b60405180910390f35b3480156104b357600080fd5b506104ce60048036038101906104c991906118c5565b610f02565b005b3480156104dc57600080fd5b506104e5611095565b6040516104f291906116f4565b60405180910390f35b600b5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461055957600080fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156105ae576105ad8261109b565b5b60008111801561060057506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156106135761060e8261132e565b610675565b60008114801561066557506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b1561067457610673826113dd565b5b5b6106de816106d0600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546007546115e490919063ffffffff16565b6115fa90919063ffffffff16565b60078190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550610776600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611610565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b6107c98161109b565b50565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001540361082057600090506108e0565b600061086d600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611610565b90506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116108c8576000925050506108e0565b6108db81836115e490919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461093d57600080fd5b81600c8190555080600d819055505050565b60075481565b600d5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549050919050565b60056020528060005260406000206000915090505481565b60085481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600381815481106109fb57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aac57600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b099190611901565b602060405180830381865afa158015610b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4a91906119a4565b90506000600267ffffffffffffffff811115610b6957610b686119d1565b5b604051908082528060200260200182016040528015610b975781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2b9190611a15565b81600081518110610c3f57610c3e611a42565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610cb057610caf611a42565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b8152600401610d4d9493929190611b6a565b6000604051808303818588803b158015610d6657600080fd5b505af1158015610d7a573d6000803e3d6000fd5b50505050506000610e2f83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610de09190611901565b602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2191906119a4565b6115e490919063ffffffff16565b9050610e46816008546115fa90919063ffffffff16565b600881905550610e89610e78600754610e6a84600b5461164290919063ffffffff16565b61165890919063ffffffff16565b600a546115fa90919063ffffffff16565b600a81905550505050565b60046020528060005260406000206000915090505481565b600a5481565b60095481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f5a57600080fd5b6000600380549050905060008103610f725750611092565b6000805a905060005b8483108015610f8957508381105b1561108d5783600e5410610fa0576000600e819055505b610fe96003600e5481548110610fb957610fb8611a42565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661166e565b15611038576110376003600e548154811061100757611006611a42565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661109b565b5b61105d61104e5a846115e490919063ffffffff16565b846115fa90919063ffffffff16565b92505a9150600e600081548092919061107590611be5565b9190505550808061108590611be5565b915050610f7b565b505050505b50565b600c5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154031561132b5760006110f1826107cc565b9050600081111561132957611111816009546115fa90919063ffffffff16565b600981905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611174929190611c2d565b6020604051808303816000875af1158015611193573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b79190611c8e565b5042600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061125181600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546115fa90919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506112e2600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611610565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600380549050600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360016003805490506113f19190611cbb565b8154811061140257611401611a42565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481106114805761147f611a42565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460046000600360016003805490506115209190611cbb565b8154811061153157611530611a42565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060038054806115ac576115ab611cef565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600081836115f29190611cbb565b905092915050565b600081836116089190611d1e565b905092915050565b600061163b600b5461162d600a548561164290919063ffffffff16565b61165890919063ffffffff16565b9050919050565b600081836116509190611d52565b905092915050565b600081836116669190611dc3565b905092915050565b600042600c54600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116be9190611d1e565b1080156116d45750600d546116d2836107cc565b115b9050919050565b6000819050919050565b6116ee816116db565b82525050565b600060208201905061170960008301846116e5565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061173f82611714565b9050919050565b61174f81611734565b811461175a57600080fd5b50565b60008135905061176c81611746565b92915050565b61177b816116db565b811461178657600080fd5b50565b60008135905061179881611772565b92915050565b600080604083850312156117b5576117b461170f565b5b60006117c38582860161175d565b92505060206117d485828601611789565b9150509250929050565b6000602082840312156117f4576117f361170f565b5b60006118028482850161175d565b91505092915050565b600080604083850312156118225761182161170f565b5b600061183085828601611789565b925050602061184185828601611789565b9150509250929050565b6000819050919050565b600061187061186b61186684611714565b61184b565b611714565b9050919050565b600061188282611855565b9050919050565b600061189482611877565b9050919050565b6118a481611889565b82525050565b60006020820190506118bf600083018461189b565b92915050565b6000602082840312156118db576118da61170f565b5b60006118e984828501611789565b91505092915050565b6118fb81611734565b82525050565b600060208201905061191660008301846118f2565b92915050565b600060608201905061193160008301866116e5565b61193e60208301856116e5565b61194b60408301846116e5565b949350505050565b600061195e82611877565b9050919050565b61196e81611953565b82525050565b60006020820190506119896000830184611965565b92915050565b60008151905061199e81611772565b92915050565b6000602082840312156119ba576119b961170f565b5b60006119c88482850161198f565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050611a0f81611746565b92915050565b600060208284031215611a2b57611a2a61170f565b5b6000611a3984828501611a00565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000611a96611a91611a8c84611a71565b61184b565b6116db565b9050919050565b611aa681611a7b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611ae181611734565b82525050565b6000611af38383611ad8565b60208301905092915050565b6000602082019050919050565b6000611b1782611aac565b611b218185611ab7565b9350611b2c83611ac8565b8060005b83811015611b5d578151611b448882611ae7565b9750611b4f83611aff565b925050600181019050611b30565b5085935050505092915050565b6000608082019050611b7f6000830187611a9d565b8181036020830152611b918186611b0c565b9050611ba060408301856118f2565b611bad60608301846116e5565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611bf0826116db565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611c2257611c21611bb6565b5b600182019050919050565b6000604082019050611c4260008301856118f2565b611c4f60208301846116e5565b9392505050565b60008115159050919050565b611c6b81611c56565b8114611c7657600080fd5b50565b600081519050611c8881611c62565b92915050565b600060208284031215611ca457611ca361170f565b5b6000611cb284828501611c79565b91505092915050565b6000611cc6826116db565b9150611cd1836116db565b9250828203905081811115611ce957611ce8611bb6565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000611d29826116db565b9150611d34836116db565b9250828201905080821115611d4c57611d4b611bb6565b5b92915050565b6000611d5d826116db565b9150611d68836116db565b9250828202611d76816116db565b91508282048414831517611d8d57611d8c611bb6565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611dce826116db565b9150611dd9836116db565b925082611de957611de8611d94565b5b82820490509291505056fea2646970667358221220d211fd54287c80761e82c8c045ca696ee793e3f9ffe17248eed998e945294d6464736f6c63430008120033
Deployed Bytecode
0x6080604052600436106103395760003560e01c80637d99c66d116101ab578063bf56b371116100f7578063ec44acf211610095578063f6cfa08a1161006f578063f6cfa08a14610c3f578063f708a64f14610c68578063f887ea4014610c91578063fc899bdc14610cbc57610340565b8063ec44acf214610bd4578063f0fc6bca14610bff578063f2fde38b14610c1657610340565b8063cf46f24c116100d1578063cf46f24c14610b1a578063dd62ed3e14610b45578063df20fd4914610b82578063e01bb68814610bab57610340565b8063bf56b37114610a99578063bfe1092814610ac4578063ca33e64c14610aef57610340565b806395d89b4111610164578063a0ea32de1161013e578063a0ea32de146109db578063a8aa1b3114610a06578063a9059cbb14610a31578063aa4bde2814610a6e57610340565b806395d89b411461095c5780639d1944f5146109875780639d9241ec146109b057610340565b80637d99c66d1461084c57806386cb8fb11461087757806386db0c05146108b4578063893c9f2b146108f15780638a8c523c1461091a5780638da5cb5b1461093157610340565b80633bbac5791161028557806360e71962116102235780636ddd1713116101fd5780636ddd1713146107a457806370a08231146107cf578063715018a61461080c57806374010ece1461082357610340565b806360e7196214610727578063658d4b7f146107525780636c3bbfd71461077b57610340565b806349bc3feb1161025f57806349bc3feb14610645578063540b8a2714610682578063571ac8b0146106bf57806359b107b9146106fc57610340565b80633bbac5791461058e5780633f4218e0146105cb5780634355855a1461060857610340565b806318160ddd116102f257806323b872dd116102cc57806323b872dd146104d457806327a14fc2146105115780632d48e8961461053a578063313ce5671461056357610340565b806318160ddd146104555780631961cee2146104805780631e89d545146104ab57610340565b80630445b6671461034557806306fdde0314610370578063095ea7b31461039b5780630d075d9c146103d85780630f683e9014610401578063180b0d7e1461042a57610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610ce5565b6040516103679190614297565b60405180910390f35b34801561037c57600080fd5b50610385610ceb565b6040516103929190614342565b60405180910390f35b3480156103a757600080fd5b506103c260048036038101906103bd9190614402565b610d28565b6040516103cf919061445d565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa9190614478565b610e1a565b005b34801561040d57600080fd5b5061042860048036038101906104239190614478565b610f3c565b005b34801561043657600080fd5b5061043f61105e565b60405161044c9190614297565b60405180910390f35b34801561046157600080fd5b5061046a611064565b6040516104779190614297565b60405180910390f35b34801561048c57600080fd5b50610495611089565b6040516104a29190614297565b60405180910390f35b3480156104b757600080fd5b506104d260048036038101906104cd91906146d6565b611121565b005b3480156104e057600080fd5b506104fb60048036038101906104f6919061474e565b61125e565b604051610508919061445d565b60405180910390f35b34801561051d57600080fd5b50610538600480360381019061053391906147a1565b61145b565b005b34801561054657600080fd5b50610561600480360381019061055c91906147ce565b611531565b005b34801561056f57600080fd5b50610578611659565b604051610585919061482a565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b09190614845565b611662565b6040516105c2919061445d565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed9190614845565b611682565b6040516105ff919061445d565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a9190614845565b6116a2565b60405161063c919061445d565b60405180910390f35b34801561065157600080fd5b5061066c60048036038101906106679190614845565b6116c2565b6040516106799190614297565b60405180910390f35b34801561068e57600080fd5b506106a960048036038101906106a49190614845565b611767565b6040516106b6919061445d565b60405180910390f35b3480156106cb57600080fd5b506106e660048036038101906106e19190614845565b611787565b6040516106f3919061445d565b60405180910390f35b34801561070857600080fd5b506107116117b7565b60405161071e9190614297565b60405180910390f35b34801561073357600080fd5b5061073c6117bd565b6040516107499190614297565b60405180910390f35b34801561075e57600080fd5b506107796004803603810190610774919061489e565b6117c3565b005b34801561078757600080fd5b506107a2600480360381019061079d91906148de565b6118b3565b005b3480156107b057600080fd5b506107b96119dd565b6040516107c6919061445d565b60405180910390f35b3480156107db57600080fd5b506107f660048036038101906107f19190614845565b6119f0565b6040516108039190614297565b60405180910390f35b34801561081857600080fd5b50610821611a39565b005b34801561082f57600080fd5b5061084a600480360381019061084591906147a1565b611b8c565b005b34801561085857600080fd5b50610861611c62565b60405161086e9190614297565b60405180910390f35b34801561088357600080fd5b5061089e60048036038101906108999190614845565b611c68565b6040516108ab919061445d565b60405180910390f35b3480156108c057600080fd5b506108db60048036038101906108d69190614845565b611c88565b6040516108e89190614297565b60405180910390f35b3480156108fd57600080fd5b50610918600480360381019061091391906147a1565b611d2d565b005b34801561092657600080fd5b5061092f611e13565b005b34801561093d57600080fd5b50610946611f37565b6040516109539190614936565b60405180910390f35b34801561096857600080fd5b50610971611f60565b60405161097e9190614342565b60405180910390f35b34801561099357600080fd5b506109ae60048036038101906109a991906147a1565b611f9d565b005b3480156109bc57600080fd5b506109c5612081565b6040516109d29190614297565b60405180910390f35b3480156109e757600080fd5b506109f0612087565b6040516109fd9190614936565b60405180910390f35b348015610a1257600080fd5b50610a1b6120ad565b604051610a289190614936565b60405180910390f35b348015610a3d57600080fd5b50610a586004803603810190610a539190614402565b6120d3565b604051610a65919061445d565b60405180910390f35b348015610a7a57600080fd5b50610a836120e8565b604051610a909190614297565b60405180910390f35b348015610aa557600080fd5b50610aae6120ee565b604051610abb9190614297565b60405180910390f35b348015610ad057600080fd5b50610ad96120f4565b604051610ae691906149b0565b60405180910390f35b348015610afb57600080fd5b50610b0461211a565b604051610b119190614936565b60405180910390f35b348015610b2657600080fd5b50610b2f612140565b604051610b3c9190614297565b60405180910390f35b348015610b5157600080fd5b50610b6c6004803603810190610b6791906149cb565b612146565b604051610b799190614297565b60405180910390f35b348015610b8e57600080fd5b50610ba96004803603810190610ba49190614a0b565b6121cd565b005b348015610bb757600080fd5b50610bd26004803603810190610bcd9190614845565b612296565b005b348015610be057600080fd5b50610be961236f565b604051610bf6919061445d565b60405180910390f35b348015610c0b57600080fd5b50610c14612382565b005b348015610c2257600080fd5b50610c3d6004803603810190610c389190614845565b612411565b005b348015610c4b57600080fd5b50610c666004803603810190610c619190614a4b565b6125d2565b005b348015610c7457600080fd5b50610c8f6004803603810190610c8a919061489e565b6126fc565b005b348015610c9d57600080fd5b50610ca66129e9565b604051610cb39190614ac8565b60405180910390f35b348015610cc857600080fd5b50610ce36004803603810190610cde919061489e565b612a0f565b005b601b5481565b60606040518060400160405280601481526020017f4368696c64686f6f6473204e6576657220456e64000000000000000000000000815250905090565b600081601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610e089190614297565b60405180910390a36001905092915050565b610e22612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea690614b2f565b60405180910390fd5b8260058190555081600681905550610ed08383612b0790919063ffffffff16565b600b8190555080600d81905550610ef3600a600d54612b1d90919063ffffffff16565b600b541115610f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2e90614b9b565b60405180910390fd5b505050565b610f44612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc890614b2f565b60405180910390fd5b8260088190555081600781905550610ff28284612b0790919063ffffffff16565b600c8190555080600d81905550611015600a600d54612b1d90919063ffffffff16565b600c541115611059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105090614b9b565b60405180910390fd5b505050565b600d5481565b60006009600a6110749190614d1d565b645600214b1d6110849190614d68565b905090565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663efca2eed6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111c9190614dbf565b905090565b611129612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ad90614b2f565b60405180910390fd5b80518251146111fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f190614e38565b60405180910390fd5b60005b8251811015611259576112453384838151811061121d5761121c614e58565b5b602002602001015184848151811061123857611237614e58565b5b6020026020010151612b33565b50808061125190614e87565b9150506111fd565b505050565b60006009600a61126e9190614d1d565b645600214b1d61127e9190614d68565b601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611447576113c6826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461376a9092919063ffffffff16565b601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611452848484612b33565b90509392505050565b611463612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e790614b2f565b60405180910390fd5b6103e86009600a6115019190614d1d565b645600214b1d6115119190614d68565b61151b9190614efe565b81101561152757600080fd5b8060118190555050565b611539612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bd90614b2f565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b8152600401611623929190614f2f565b600060405180830381600087803b15801561163d57600080fd5b505af1158015611651573d6000803e3d6000fd5b505050505050565b60006009905090565b601a6020528060005260406000206000915054906101000a900460ff1681565b60166020528060005260406000206000915054906101000a900460ff1681565b60196020528060005260406000206000915054906101000a900460ff1681565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166352f48158836040518263ffffffff1660e01b815260040161171f9190614936565b602060405180830381865afa15801561173c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117609190614dbf565b9050919050565b60176020528060005260406000206000915054906101000a900460ff1681565b60006117b0826009600a61179b9190614d1d565b645600214b1d6117ab9190614d68565b610d28565b9050919050565b600b5481565b600f5481565b6117cb612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184f90614b2f565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6118bb612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193f90614b2f565b60405180910390fd5b60005b81518110156119d9576000601a600084848151811061196d5761196c614e58565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806119d190614e87565b91505061194b565b5050565b601c60009054906101000a900460ff1681565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611a41612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac590614b2f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611b94612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1890614b2f565b60405180910390fd5b6103e86009600a611c329190614d1d565b645600214b1d611c429190614d68565b611c4c9190614efe565b811015611c5857600080fd5b8060108190555050565b60135481565b60186020528060005260406000206000915054906101000a900460ff1681565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b8152600401611ce59190614936565b602060405180830381865afa158015611d02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d269190614dbf565b9050919050565b611d35612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db990614b2f565b60405180910390fd5b611dca611f37565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611e0f573d6000803e3d6000fd5b5050565b611e1b612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ea8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9f90614b2f565b60405180910390fd5b601c60019054906101000a900460ff1615611ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eef90614fa4565b60405180910390fd5b6001601c60016101000a81548160ff0219169083151502179055506001601c60006101000a81548160ff02191690831515021790555042601281905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f2454494d45000000000000000000000000000000000000000000000000000000815250905090565b611fa5612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202990614b2f565b60405180910390fd5b620b71b08110612077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206e90615010565b60405180910390fd5b80600f8190555050565b600c5481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006120e0338484612b33565b905092915050565b60115481565b60125481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b6000601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6121d5612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612262576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225990614b2f565b60405180910390fd5b6000601b541161227157600080fd5b81601c60006101000a81548160ff02191690831515021790555080601b819055505050565b61229e612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461232b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232290614b2f565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c60019054906101000a900460ff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b81526004016123dd9190614936565b600060405180830381600087803b1580156123f757600080fd5b505af115801561240b573d6000803e3d6000fd5b50505050565b612419612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249d90614b2f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612515576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161250c906150a2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6125da612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265e90614b2f565b60405180910390fd5b60005b82518110156126f757816017600085848151811061268b5761268a614e58565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806126ef90614e87565b91505061266a565b505050565b612704612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278890614b2f565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561281b5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61282457600080fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561291657600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b81526004016128df9291906150fd565b600060405180830381600087803b1580156128f957600080fd5b505af115801561290d573d6000803e3d6000fd5b505050506129e5565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016129b2929190615126565b600060405180830381600087803b1580156129cc57600080fd5b505af11580156129e0573d6000803e3d6000fd5b505050505b5050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612a17612aff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9b90614b2f565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600033905090565b60008183612b15919061514f565b905092915050565b60008183612b2b9190614efe565b905092915050565b6000601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612bc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb9906151cf565b60405180910390fd5b601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c665750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612f8457601054821115612cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca79061523b565b60405180910390fd5b601c60019054906101000a900460ff16612db0578373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612d7057508273ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b612daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da6906152a7565b60405180910390fd5b5b601354601254612dc0919061514f565b42108015612e1c5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612f83578373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612ed3576001601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612f82565b8273ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612f81576001601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5b5b5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661303557601154612ff383612fe5866119f0565b612b0790919063ffffffff16565b1115613034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302b90615313565b60405180910390fd5b5b601c60029054906101000a900460ff161561305c576130558484846137bf565b9050613763565b613064613992565b1561307257613071613a69565b5b6130fb826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461376a9092919063ffffffff16565b601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806131e15750601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806132945750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156132935750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b5b156132a1578290506133a6565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361335057613321600d54613313600b548761404a90919063ffffffff16565b612b1d90919063ffffffff16565b9050613336818561406090919063ffffffff16565b91506133428682614076565b61334b84614174565b6133a4565b613379600d5461336b600c548761404a90919063ffffffff16565b612b1d90919063ffffffff16565b905061338e818561406090919063ffffffff16565b915061339a8682614076565b6133a3846141f9565b5b505b6133f881601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b0790919063ffffffff16565b601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661355557600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401613528929190615126565b600060405180830381600087803b15801561354257600080fd5b505af1925050508015613553575060015b505b601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661366f57600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401613642929190615126565b600060405180830381600087803b15801561365c57600080fd5b505af192505050801561366d575060015b505b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c479600f546040518263ffffffff1660e01b81526004016136cc9190614297565b600060405180830381600087803b1580156136e657600080fd5b505af19250505080156136f7575060015b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137559190614297565b60405180910390a360019150505b9392505050565b60008383111582906137b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137a99190614342565b60405180910390fd5b5082840390509392505050565b600061384a826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461376a9092919063ffffffff16565b601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138df82601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b0790919063ffffffff16565b601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161397f9190614297565b60405180910390a3600190509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156139ff5750601c60029054906101000a900460ff16155b8015613a175750601c60009054906101000a900460ff165b8015613a645750601b54601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601c60026101000a81548160ff0219169083151502179055506000613a9d600954600a54612b0790919063ffffffff16565b90506000613add6002613acf84613ac1600a54601b5461404a90919063ffffffff16565b612b1d90919063ffffffff16565b612b1d90919063ffffffff16565b90506000613af682601b5461406090919063ffffffff16565b90506009600a613b069190614d1d565b645600214b1d613b169190614d68565b601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600267ffffffffffffffff811115613bd557613bd46144d0565b5b604051908082528060200260200182016040528015613c035781602001602082028036833780820191505090505b5090503081600081518110613c1b57613c1a614e58565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ce69190615348565b81600181518110613cfa57613cf9614e58565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401613d9d959493929190615433565b600060405180830381600087803b158015613db757600080fd5b505af1158015613dcb573d6000803e3d6000fd5b505050506000613de4824761406090919063ffffffff16565b90506000613e10613e016002600a54612b1d90919063ffffffff16565b8861406090919063ffffffff16565b90506000613e4e6002613e4084613e32600a548861404a90919063ffffffff16565b612b1d90919063ffffffff16565b612b1d90919063ffffffff16565b90506000871115613f6257600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308a600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613ee29695949392919061548d565b60606040518083038185885af1158015613f00573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613f2591906154ee565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45068188604051613f59929190614f2f565b60405180910390a15b6000613f8b83613f7d6009548761404a90919063ffffffff16565b612b1d90919063ffffffff16565b9050600081111561401457600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561400057600080fd5b505af193505050508015614012575060015b505b6000600a8190555060006009819055505050505050505050506000601c60026101000a81548160ff021916908315150217905550565b600081836140589190614d68565b905092915050565b6000818361406e9190615541565b905092915050565b6140c881601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b0790919063ffffffff16565b601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516141689190614297565b60405180910390a35050565b61419d600d5461418f6006548461404a90919063ffffffff16565b612b1d90919063ffffffff16565b600a60008282546141ae919061514f565b925050819055506141de600d546141d06005548461404a90919063ffffffff16565b612b1d90919063ffffffff16565b600960008282546141ef919061514f565b9250508190555050565b614222600d546142146008548461404a90919063ffffffff16565b612b1d90919063ffffffff16565b600a6000828254614233919061514f565b92505081905550614263600d546142556007548461404a90919063ffffffff16565b612b1d90919063ffffffff16565b60096000828254614274919061514f565b9250508190555050565b6000819050919050565b6142918161427e565b82525050565b60006020820190506142ac6000830184614288565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156142ec5780820151818401526020810190506142d1565b60008484015250505050565b6000601f19601f8301169050919050565b6000614314826142b2565b61431e81856142bd565b935061432e8185602086016142ce565b614337816142f8565b840191505092915050565b6000602082019050818103600083015261435c8184614309565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006143a382614378565b9050919050565b6143b381614398565b81146143be57600080fd5b50565b6000813590506143d0816143aa565b92915050565b6143df8161427e565b81146143ea57600080fd5b50565b6000813590506143fc816143d6565b92915050565b600080604083850312156144195761441861436e565b5b6000614427858286016143c1565b9250506020614438858286016143ed565b9150509250929050565b60008115159050919050565b61445781614442565b82525050565b6000602082019050614472600083018461444e565b92915050565b6000806000606084860312156144915761449061436e565b5b600061449f868287016143ed565b93505060206144b0868287016143ed565b92505060406144c1868287016143ed565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b614508826142f8565b810181811067ffffffffffffffff82111715614527576145266144d0565b5b80604052505050565b600061453a614364565b905061454682826144ff565b919050565b600067ffffffffffffffff821115614566576145656144d0565b5b602082029050602081019050919050565b600080fd5b600061458f61458a8461454b565b614530565b905080838252602082019050602084028301858111156145b2576145b1614577565b5b835b818110156145db57806145c788826143c1565b8452602084019350506020810190506145b4565b5050509392505050565b600082601f8301126145fa576145f96144cb565b5b813561460a84826020860161457c565b91505092915050565b600067ffffffffffffffff82111561462e5761462d6144d0565b5b602082029050602081019050919050565b600061465261464d84614613565b614530565b9050808382526020820190506020840283018581111561467557614674614577565b5b835b8181101561469e578061468a88826143ed565b845260208401935050602081019050614677565b5050509392505050565b600082601f8301126146bd576146bc6144cb565b5b81356146cd84826020860161463f565b91505092915050565b600080604083850312156146ed576146ec61436e565b5b600083013567ffffffffffffffff81111561470b5761470a614373565b5b614717858286016145e5565b925050602083013567ffffffffffffffff81111561473857614737614373565b5b614744858286016146a8565b9150509250929050565b6000806000606084860312156147675761476661436e565b5b6000614775868287016143c1565b9350506020614786868287016143c1565b9250506040614797868287016143ed565b9150509250925092565b6000602082840312156147b7576147b661436e565b5b60006147c5848285016143ed565b91505092915050565b600080604083850312156147e5576147e461436e565b5b60006147f3858286016143ed565b9250506020614804858286016143ed565b9150509250929050565b600060ff82169050919050565b6148248161480e565b82525050565b600060208201905061483f600083018461481b565b92915050565b60006020828403121561485b5761485a61436e565b5b6000614869848285016143c1565b91505092915050565b61487b81614442565b811461488657600080fd5b50565b60008135905061489881614872565b92915050565b600080604083850312156148b5576148b461436e565b5b60006148c3858286016143c1565b92505060206148d485828601614889565b9150509250929050565b6000602082840312156148f4576148f361436e565b5b600082013567ffffffffffffffff81111561491257614911614373565b5b61491e848285016145e5565b91505092915050565b61493081614398565b82525050565b600060208201905061494b6000830184614927565b92915050565b6000819050919050565b600061497661497161496c84614378565b614951565b614378565b9050919050565b60006149888261495b565b9050919050565b600061499a8261497d565b9050919050565b6149aa8161498f565b82525050565b60006020820190506149c560008301846149a1565b92915050565b600080604083850312156149e2576149e161436e565b5b60006149f0858286016143c1565b9250506020614a01858286016143c1565b9150509250929050565b60008060408385031215614a2257614a2161436e565b5b6000614a3085828601614889565b9250506020614a41858286016143ed565b9150509250929050565b60008060408385031215614a6257614a6161436e565b5b600083013567ffffffffffffffff811115614a8057614a7f614373565b5b614a8c858286016145e5565b9250506020614a9d85828601614889565b9150509250929050565b6000614ab28261497d565b9050919050565b614ac281614aa7565b82525050565b6000602082019050614add6000830184614ab9565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b196020836142bd565b9150614b2482614ae3565b602082019050919050565b60006020820190508181036000830152614b4881614b0c565b9050919050565b7f43616e27742062652067726561746572207468616e2031302500000000000000600082015250565b6000614b856019836142bd565b9150614b9082614b4f565b602082019050919050565b60006020820190508181036000830152614bb481614b78565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115614c4157808604811115614c1d57614c1c614bbb565b5b6001851615614c2c5780820291505b8081029050614c3a85614bea565b9450614c01565b94509492505050565b600082614c5a5760019050614d16565b81614c685760009050614d16565b8160018114614c7e5760028114614c8857614cb7565b6001915050614d16565b60ff841115614c9a57614c99614bbb565b5b8360020a915084821115614cb157614cb0614bbb565b5b50614d16565b5060208310610133831016604e8410600b8410161715614cec5782820a905083811115614ce757614ce6614bbb565b5b614d16565b614cf98484846001614bf7565b92509050818404811115614d1057614d0f614bbb565b5b81810290505b9392505050565b6000614d288261427e565b9150614d338361480e565b9250614d607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614c4a565b905092915050565b6000614d738261427e565b9150614d7e8361427e565b9250828202614d8c8161427e565b91508282048414831517614da357614da2614bbb565b5b5092915050565b600081519050614db9816143d6565b92915050565b600060208284031215614dd557614dd461436e565b5b6000614de384828501614daa565b91505092915050565b7f496e76616c696400000000000000000000000000000000000000000000000000600082015250565b6000614e226007836142bd565b9150614e2d82614dec565b602082019050919050565b60006020820190508181036000830152614e5181614e15565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614e928261427e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614ec457614ec3614bbb565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614f098261427e565b9150614f148361427e565b925082614f2457614f23614ecf565b5b828204905092915050565b6000604082019050614f446000830185614288565b614f516020830184614288565b9392505050565b7f416c726561647920656e61626c65640000000000000000000000000000000000600082015250565b6000614f8e600f836142bd565b9150614f9982614f58565b602082019050919050565b60006020820190508181036000830152614fbd81614f81565b9050919050565b7f476173206d757374206265206c6f776572207468616e20373530303030000000600082015250565b6000614ffa601d836142bd565b915061500582614fc4565b602082019050919050565b6000602082019050818103600083015261502981614fed565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061508c6026836142bd565b915061509782615030565b604082019050919050565b600060208201905081810360008301526150bb8161507f565b9050919050565b6000819050919050565b60006150e76150e26150dd846150c2565b614951565b61427e565b9050919050565b6150f7816150cc565b82525050565b60006040820190506151126000830185614927565b61511f60208301846150ee565b9392505050565b600060408201905061513b6000830185614927565b6151486020830184614288565b9392505050565b600061515a8261427e565b91506151658361427e565b925082820190508082111561517d5761517c614bbb565b5b92915050565b7f426f742064657465637465640000000000000000000000000000000000000000600082015250565b60006151b9600c836142bd565b91506151c482615183565b602082019050919050565b600060208201905081810360008301526151e8816151ac565b9050919050565b7f4d61782074786e206c696d697420657863656564730000000000000000000000600082015250565b60006152256015836142bd565b9150615230826151ef565b602082019050919050565b6000602082019050818103600083015261525481615218565b9050919050565b7f54726164696e672069732064697361626c650000000000000000000000000000600082015250565b60006152916012836142bd565b915061529c8261525b565b602082019050919050565b600060208201905081810360008301526152c081615284565b9050919050565b7f4d61782057616c6c6574206c696d697420657863656564730000000000000000600082015250565b60006152fd6018836142bd565b9150615308826152c7565b602082019050919050565b6000602082019050818103600083015261532c816152f0565b9050919050565b600081519050615342816143aa565b92915050565b60006020828403121561535e5761535d61436e565b5b600061536c84828501615333565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6153aa81614398565b82525050565b60006153bc83836153a1565b60208301905092915050565b6000602082019050919050565b60006153e082615375565b6153ea8185615380565b93506153f583615391565b8060005b8381101561542657815161540d88826153b0565b9750615418836153c8565b9250506001810190506153f9565b5085935050505092915050565b600060a0820190506154486000830188614288565b61545560208301876150ee565b818103604083015261546781866153d5565b90506154766060830185614927565b6154836080830184614288565b9695505050505050565b600060c0820190506154a26000830189614927565b6154af6020830188614288565b6154bc60408301876150ee565b6154c960608301866150ee565b6154d66080830185614927565b6154e360a0830184614288565b979650505050505050565b6000806000606084860312156155075761550661436e565b5b600061551586828701614daa565b935050602061552686828701614daa565b925050604061553786828701614daa565b9150509250925092565b600061554c8261427e565b91506155578361427e565b925082820390508181111561556f5761556e614bbb565b5b9291505056fea2646970667358221220355107b76899b030f5bd1b66e202680336efb14a56ce9f0620057d551269eb3064736f6c63430008120033
Deployed Bytecode Sourcemap
13235:15190:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14849:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16770:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17179:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26373:463;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26844:468;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14144:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16452:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24534:127;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28101:321;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17742:419;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25528:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27710:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16562:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14803:37;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14595:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14748:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24196:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14645:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17428:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14063:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14228:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25691:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26186:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14906:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16872:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5949:157;;;;;;;;;;;;;:::i;:::-;;25371:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14421:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14696:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24362:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25252:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25052:192;;;;;;;;;;;;;:::i;:::-;;5735:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16664:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27925:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14103:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13561:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13763:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17553:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14330:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14389:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14191:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13789:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14275:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16999:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27485:217;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27320:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14936:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24098:90;;;;;;;;;;;;;:::i;:::-;;6114:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25818:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24669:375;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13732:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26054:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14849:50;;;;:::o;16770:94::-;16818:13;16851:5;;;;;;;;;;;;;;;;;16844:12;;16770:94;:::o;17179:241::-;17279:4;17331:6;17296:11;:23;17308:10;17296:23;;;;;;;;;;;;;;;:32;17320:7;17296:32;;;;;;;;;;;;;;;:41;;;;17374:7;17353:37;;17362:10;17353:37;;;17383:6;17353:37;;;;;;:::i;:::-;;;;;;;;17408:4;17401:11;;17179:241;;;;:::o;26373:463::-;5872:12;:10;:12::i;:::-;5862:22;;:6;;;;;;;;;;:22;;;5854:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26547:14:::1;26527:17;:34;;;;26591:13;26572:16;:32;;;;26629:33;26647:14;26629:13;:17;;:33;;;;:::i;:::-;26615:11;:47;;;;26690:15;26673:14;:32;;;;26753:22;26772:2;26753:14;;:18;;:22;;;;:::i;:::-;26738:11;;:37;;26716:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;26373:463:::0;;;:::o;26844:468::-;5872:12;:10;:12::i;:::-;5862:22;;:6;;;;;;;;;;:22;;;5854:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27019:13:::1;26999:17;:33;;;;27064:14;27043:18;:35;;;;27104:33;27122:14;27104:13;:17;;:33;;;;:::i;:::-;27089:12;:48;;;;27165:15;27148:14;:32;;;;27229:22;27248:2;27229:14;;:18;;:22;;;;:::i;:::-;27213:12;;:38;;27191:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;26844:468:::0;;;:::o;14144:38::-;;;;:::o;16452:102::-;16507:7;13471:1;13537:2;:15;;;;:::i;:::-;13519;:33;;;;:::i;:::-;16527:19;;16452:102;:::o;24534:127::-;24596:7;24623:11;;;;;;;;;;;:28;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24616:37;;24534:127;:::o;28101:321::-;5872:12;:10;:12::i;:::-;5862:22;;:6;;;;;;;;;;:22;;;5854:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28259:7:::1;:14;28240:8;:15;:33;28232:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;28301:9;28296:119;28316:8;:15;28312:1;:19;28296:119;;;28353:50;28367:10;28379:8;28388:1;28379:11;;;;;;;;:::i;:::-;;;;;;;;28392:7;28400:1;28392:10;;;;;;;;:::i;:::-;;;;;;;;28353:13;:50::i;:::-;;28333:3;;;;;:::i;:::-;;;;28296:119;;;;28101:321:::0;;:::o;17742:419::-;17876:4;13471:1;13537:2;:15;;;;:::i;:::-;13519;:33;;;;:::i;:::-;17897:11;:19;17909:6;17897:19;;;;;;;;;;;;;;;:31;17917:10;17897:31;;;;;;;;;;;;;;;;:47;17893:201;;17995:87;18049:6;17995:87;;;;;;;;;;;;;;;;;:11;:19;18007:6;17995:19;;;;;;;;;;;;;;;:31;18015:10;17995:31;;;;;;;;;;;;;;;;:53;;:87;;;;;:::i;:::-;17961:11;:19;17973:6;17961:19;;;;;;;;;;;;;;;:31;17981:10;17961:31;;;;;;;;;;;;;;;:121;;;;17893:201;18113:40;18127:6;18135:9;18146:6;18113:13;:40::i;:::-;18106:47;;17742:419;;;;;:::o;25528:155::-;5872:12;:10;:12::i;:::-;5862:22;;:6;;;;;;;;;;:22;;;5854:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25635:4:::1;13471:1;13537:2;:15;;;;:::i;:::-;13519;:33;;;;:::i;:::-;25620:19;;;;:::i;:::-;25610:6;:29;;25602:38;;;::::0;::::1;;25669:6;25651:15;:24;;;;25528:155:::0;:::o;27710:207::-;5872:12;:10;:12::i;:::-;5862:22;;:6;;;;;;;;;;:22;;;5854:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27844:11:::1;;;;;;;;;;;:35;;;27880:10;27892:16;27844:65;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;27710:207:::0;;:::o;16562:94::-;16614:5;13471:1;16632:16;;16562:94;:::o;14803:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;14595:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;14748:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;24196:158::-;24279:7;24306:11;;;;;;;;;;;:27;;;24334:11;24306:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24299:47;;24196:158;;;:::o;14645:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;17428:117::-;17483:4;17507:30;17515:7;13471:1;13537:2;:15;;;;:::i;:::-;13519;:33;;;;:::i;:::-;17507:7;:30::i;:::-;17500:37;;17428:117;;;:::o;14063:33::-;;;;:::o;14228:38::-;;;;:::o;25691:119::-;5872:12;:10;:12::i;:::-;5862:22;;:6;;;;;;;;;;:22;;;5854:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25796:6:::1;25774:11;:19;25786:6;25774:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;25691:119:::0;;:::o;26186:179::-;5872:12;:10;:12::i;:::-;5862:22;;:6;;;;;;;;;;:22;;;5854:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26268:9:::1;26263:95;26283:8;:15;26279:1;:19;26263:95;;;26341:5;26320;:18;26326:8;26335:1;26326:11;;;;;;;;:::i;:::-;;;;;;;;26320:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;26300:3;;;;;:::i;:::-;;;;26263:95;;;;26186:179:::0;:::o;14906:23::-;;;;;;;;;;;;;:::o;16872:119::-;16938:7;16965:9;:18;16975:7;16965:18;;;;;;;;;;;;;;;;16958:25;;16872:119;;;:::o;5949:157::-;5872:12;:10;:12::i;:::-;5862:22;;:6;;;;;;;;;;:22;;;5854:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6056:1:::1;6019:40;;6040:6;::::0;::::1;;;;;;;;6019:40;;;;;;;;;;;;6095:1;6070:6:::0;::::1;:28;;;;;;;;;;;;;;;;;;5949:157::o:0;25371:149::-;5872:12;:10;:12::i;:::-;5862:22;;:6;;;;;;;;;;:22;;;5854:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25475:4:::1;13471:1;13537:2;:15;;;;:::i;:::-;13519;:33;;;;:::i;:::-;25460:19;;;;:::i;:::-;25450:6;:29;;25442:38;;;::::0;::::1;;25506:6;25491:12;:21;;;;25371:149:::0;:::o;14421:39::-;;;;:::o;14696:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;24362:164::-;24449:7;24476:11;;;;;;;;;;;:29;;;24506:11;24476:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24469:49;;24362:164;;;:::o;25252:111::-;5872:12;:10;:12::i;:::-;5862:22;;:6;;;;;;;;;;:22;;;5854:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25330:7:::1;:5;:7::i;:::-;25322:25;;:33;25348:6;25322:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25252:111:::0;:::o;25052:192::-;5872:12;:10;:12::i;:::-;5862:22;;:6;;;;;;;;;;:22;;;5854:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25116:7:::1;;;;;;;;;;;25115:8;25107:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;25164:4;25154:7;;:14;;;;;;;;;;;;;;;;;;25193:4;25179:11;;:18;;;;;;;;;;;;;;;;;;25221:15;25208:10;:28;;;;25052:192::o:0;5735:79::-;5773:7;5800:6;;;;;;;;;;;5793:13;;5735:79;:::o;16664:98::-;16714:13;16747:7;;;;;;;;;;;;;;;;;16740:14;;16664:98;:::o;27925:168::-;5872:12;:10;:12::i;:::-;5862:22;;:6;;;;;;;;;;:22;;;5854:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28014:6:::1;28008:3;:12;28000:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;28082:3;28065:14;:20;;;;27925:168:::0;:::o;14103:34::-;;;;:::o;13561:61::-;;;;;;;;;;;;;:::o;13763:19::-;;;;;;;;;;;;;:::o;17553:181::-;17658:4;17682:44;17696:10;17708:9;17719:6;17682:13;:44::i;:::-;17675:51;;17553:181;;;;:::o;14330:52::-;;;;:::o;14389:25::-;;;;:::o;14191:30::-;;;;;;;;;;;;;:::o;13789:36::-;;;;;;;;;;;;;:::o;14275:48::-;;;;:::o;16999:172::-;17108:7;17135:11;:19;17147:6;17135:19;;;;;;;;;;;;;;;:28;17155:7;17135:28;;;;;;;;;;;;;;;;17128:35;;16999:172;;;;:::o;27485:217::-;5872:12;:10;:12::i;:::-;5862:22;;:6;;;;;;;;;;:22;;;5854:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27625:1:::1;27609:13;;:17;27601:26;;;::::0;::::1;;27652:8;27638:11;;:22;;;;;;;;;;;;;;;;;;27687:7;27671:13;:23;;;;27485:217:::0;;:::o;27320:157::-;5872:12;:10;:12::i;:::-;5862:22;;:6;;;;;;;;;;:22;;;5854:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27447:22:::1;27423:21;;:46;;;;;;;;;;;;;;;;;;27320:157:::0;:::o;14936:19::-;;;;;;;;;;;;;:::o;24098:90::-;24143:11;;;;;;;;;;;:25;;;24169:10;24143:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24098:90::o;6114:281::-;5872:12;:10;:12::i;:::-;5862:22;;:6;;;;;;;;;;:22;;;5854:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6237:1:::1;6217:22;;:8;:22;;::::0;6195:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6350:8;6321:38;;6342:6;::::0;::::1;;;;;;;;6321:38;;;;;;;;;;;;6379:8;6370:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6114:281:::0;:::o;25818:228::-;5872:12;:10;:12::i;:::-;5862:22;;:6;;;;;;;;;;:22;;;5854:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25943:9:::1;25938:101;25958:7;:14;25954:1;:18;25938:101;;;26021:6;25994:12;:24;26007:7;26015:1;26007:10;;;;;;;;:::i;:::-;;;;;;;;25994:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;25974:3;;;;;:::i;:::-;;;;25938:101;;;;25818:228:::0;;:::o;24669:375::-;5872:12;:10;:12::i;:::-;5862:22;;:6;;;;;;;;;;:22;;;5854:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24808:4:::1;24790:23;;:6;:23;;;;:41;;;;;24827:4;;;;;;;;;;;24817:14;;:6;:14;;;;24790:41;24782:50;;;::::0;::::1;;24870:6;24843:16;:24;24860:6;24843:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;24891:6;24887:150;;;24914:11;;;;;;;;;;;:20;;;24935:6;24943:1;24914:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24887:150;;;24978:11;;;;;;;;;;;:20;;;24999:6;25007:9;:17;25017:6;25007:17;;;;;;;;;;;;;;;;24978:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24887:150;24669:375:::0;;:::o;13732:24::-;;;;;;;;;;;;;:::o;26054:124::-;5872:12;:10;:12::i;:::-;5862:22;;:6;;;;;;;;;;:22;;;5854:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26164:6:::1;26140:13;:21;26154:6;26140:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;26054:124:::0;;:::o;5071:115::-;5124:15;5167:10;5152:26;;5071:115;:::o;1726:98::-;1784:7;1815:1;1811;:5;;;;:::i;:::-;1804:12;;1726:98;;;;:::o;2044:::-;2102:7;2133:1;2129;:5;;;;:::i;:::-;2122:12;;2044:98;;;;:::o;18169:2773::-;18295:4;18321:5;:13;18327:6;18321:13;;;;;;;;;;;;;;;;;;;;;;;;;18320:14;18312:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;18367:12;:20;18380:6;18367:20;;;;;;;;;;;;;;;;;;;;;;;;;18366:21;:49;;;;;18392:12;:23;18405:9;18392:23;;;;;;;;;;;;;;;;;;;;;;;;;18391:24;18366:49;18362:759;;;18450:12;;18440:6;:22;;18432:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18554:7;;;;;;;;;;;18549:176;;18620:6;18612:14;;:4;;;;;;;;;;;:14;;;;:35;;;;;18638:9;18630:17;;:4;;;;;;;;;;;:17;;;;18612:35;18582:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;18549:176;18825:11;;18812:10;;:24;;;;:::i;:::-;18794:15;:42;:88;;;;;18875:6;;;;;;;;;;;18857:25;;:6;:25;;;;18794:88;18772:338;;;18929:6;18921:14;;:4;;;;;;;;;;;:14;;;18917:178;;18979:4;18960:5;:16;18966:9;18960:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;18917:178;;;19021:9;19013:17;;:4;;;;;;;;;;;:17;;;19009:86;;19071:4;19055:5;:13;19061:6;19055:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;19009:86;18917:178;18772:338;18362:759;19138:13;:24;19152:9;19138:24;;;;;;;;;;;;;;;;;;;;;;;;;19133:195;;19241:15;;19205:32;19230:6;19205:20;19215:9;19205;:20::i;:::-;:24;;:32;;;;:::i;:::-;:51;;19179:137;;;;;;;;;;;;:::i;:::-;;;;;;;;;19133:195;19344:6;;;;;;;;;;;19340:87;;;19374:41;19389:6;19397:9;19408:6;19374:14;:41::i;:::-;19367:48;;;;19340:87;19443:16;:14;:16::i;:::-;19439:59;;;19476:10;:8;:10::i;:::-;19439:59;19530:90;19566:6;19530:90;;;;;;;;;;;;;;;;;:9;:17;19540:6;19530:17;;;;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;19510:9;:17;19520:6;19510:17;;;;;;;;;;;;;;;:110;;;;19633:22;19684:11;:19;19696:6;19684:19;;;;;;;;;;;;;;;;;;;;;;;;;:58;;;;19720:11;:22;19732:9;19720:22;;;;;;;;;;;;;;;;;;;;;;;;;19684:58;:112;;;;19770:4;;;;;;;;;;;19760:14;;:6;:14;;;;:35;;;;;19791:4;;;;;;;;;;;19778:17;;:9;:17;;;;19760:35;19684:112;19666:746;;;19840:6;19823:23;;19666:746;;;19879:17;19925:4;;;;;;;;;;;19915:14;;:6;:14;;;19911:490;;19962:43;19990:14;;19962:23;19973:11;;19962:6;:10;;:23;;;;:::i;:::-;:27;;:43;;;;:::i;:::-;19950:55;;20041:21;20052:9;20041:6;:10;;:21;;;;:::i;:::-;20024:38;;20081:26;20089:6;20097:9;20081:7;:26::i;:::-;20126:20;20139:6;20126:12;:20::i;:::-;19911:490;;;20199:44;20228:14;;20199:24;20210:12;;20199:6;:10;;:24;;;;:::i;:::-;:28;;:44;;;;:::i;:::-;20187:56;;20279:21;20290:9;20279:6;:10;;:21;;;;:::i;:::-;20262:38;;20319:26;20327:6;20335:9;20319:7;:26::i;:::-;20364:21;20378:6;20364:13;:21::i;:::-;19911:490;19864:548;19666:746;20447:40;20472:14;20447:9;:20;20457:9;20447:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;20424:9;:20;20434:9;20424:20;;;;;;;;;;;;;;;:63;;;;20505:16;:24;20522:6;20505:24;;;;;;;;;;;;;;;;;;;;;;;;;20500:120;;20550:11;;;;;;;;;;;:20;;;20571:6;20579:9;:17;20589:6;20579:17;;;;;;;;;;;;;;;;20550:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20546:63;20500:120;20635:16;:27;20652:9;20635:27;;;;;;;;;;;;;;;;;;;;;;;;;20630:159;;20700:11;;;;;;;;;;;:20;;;20721:9;20732;:20;20742:9;20732:20;;;;;;;;;;;;;;;;20700:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20679:99;20630:159;20805:11;;;;;;;;;;;:19;;;20825:14;;20805:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20801:51;20886:9;20869:43;;20878:6;20869:43;;;20897:14;20869:43;;;;;;:::i;:::-;;;;;;;;20930:4;20923:11;;;18169:2773;;;;;;:::o;2256:240::-;2376:7;2434:1;2429;:6;;2437:12;2421:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2476:1;2472;:5;2465:12;;2256:240;;;;;:::o;20950:401::-;21077:4;21114:90;21150:6;21114:90;;;;;;;;;;;;;;;;;:9;:17;21124:6;21114:17;;;;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;21094:9;:17;21104:6;21094:17;;;;;;;;;;;;;;;:110;;;;21238:32;21263:6;21238:9;:20;21248:9;21238:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;21215:9;:20;21225:9;21215:20;;;;;;;;;;;;;;;:55;;;;21303:9;21286:35;;21295:6;21286:35;;;21314:6;21286:35;;;;;;:::i;:::-;;;;;;;;21339:4;21332:11;;20950:401;;;;;:::o;22106:222::-;22155:4;22206;;;;;;;;;;;22192:18;;:10;:18;;;;:42;;;;;22228:6;;;;;;;;;;;22227:7;22192:42;:70;;;;;22251:11;;;;;;;;;;;22192:70;:128;;;;;22307:13;;22279:9;:24;22297:4;22279:24;;;;;;;;;;;;;;;;:41;;22192:128;22172:148;;22106:222;:::o;22336:1754::-;15020:4;15011:6;;:13;;;;;;;;;;;;;;;;;;22385:16:::1;22404:43;22427:19;;22404:18;;:22;;:43;;;;:::i;:::-;22385:62;;22460:23;22486:100;22584:1;22486:79;22556:8;22486:51;22518:18;;22486:13;;:31;;:51;;;;:::i;:::-;:69;;:79;;;;:::i;:::-;:97;;:100;;;;:::i;:::-;22460:126;;22599:20;22622:34;22640:15;22622:13;;:17;;:34;;;;:::i;:::-;22599:57;;13471:1;13537:2;:15;;;;:::i;:::-;13519;:33;;;;:::i;:::-;22667:11;:26;22687:4;22667:26;;;;;;;;;;;;;;;:43;22702:6;;;;;;;;;;;22667:43;;;;;;;;;;;;;;;:58;;;;22736:21;22774:1;22760:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22736:40;;22805:4;22787;22792:1;22787:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;22831:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22821:4;22826:1;22821:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;22855:21;22879;22855:45;;22913:6;;;;;;;;;;;:57;;;22985:12;23012:1;23028:4;23055;23075:15;22913:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23114:17;23134:40;23160:13;23134:21;:25;;:40;;;;:::i;:::-;23114:60;;23187:19;23209:39;23222:25;23245:1;23222:18;;:22;;:25;;;;:::i;:::-;23209:8;:12;;:39;;;;:::i;:::-;23187:61;;23261:26;23290:99;23387:1;23290:78;23356:11;23290:47;23318:18;;23290:9;:27;;:47;;;;:::i;:::-;:65;;:78;;;;:::i;:::-;:96;;:99;;;;:::i;:::-;23261:128;;23424:1;23406:15;:19;23402:364;;;23442:6;;;;;;;;;;;:22;;;23472:18;23518:4;23542:15;23576:1;23596::::0;23616:21:::1;;;;;;;;;;;23656:15;23442:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23706:48;23718:18;23738:15;23706:48;;;;;;;:::i;:::-;;;;;;;;23402:364;23778:27;23808:75;23861:11;23808:34;23822:19;;23808:9;:13;;:34;;;;:::i;:::-;:38;;:75;;;;:::i;:::-;23778:105;;23920:1;23898:19;:23;23894:120;;;23942:11;;;;;;;;;;;:19;;;23969;23942:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;23938:65:::0;23894:120:::1;24047:1;24026:18;:22;;;;24081:1;24059:19;:23;;;;22374:1716;;;;;;;;;15056:5:::0;15047:6;;:14;;;;;;;;;;;;;;;;;;22336:1754::o;1938:98::-;1996:7;2027:1;2023;:5;;;;:::i;:::-;2016:12;;1938:98;;;;:::o;1832:::-;1890:7;1921:1;1917;:5;;;;:::i;:::-;1910:12;;1832:98;;;;:::o;21359:204::-;21458:39;21487:9;21458;:24;21476:4;21458:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;21431:9;:24;21449:4;21431:24;;;;;;;;;;;;;;;:66;;;;21538:4;21513:42;;21522:6;21513:42;;;21545:9;21513:42;;;;;;:::i;:::-;;;;;;;;21359:204;;:::o;21571:246::-;21652:49;21686:14;;21652:29;21664:16;;21652:7;:11;;:29;;;;:::i;:::-;:33;;:49;;;;:::i;:::-;21630:18;;:71;;;;;;;:::i;:::-;;;;;;;;21735:74;21784:14;;21735:30;21747:17;;21735:7;:11;;:30;;;;:::i;:::-;:34;;:74;;;;:::i;:::-;21712:19;;:97;;;;;;;:::i;:::-;;;;;;;;21571:246;:::o;21825:273::-;21907:74;21956:14;;21907:30;21919:17;;21907:7;:11;;:30;;;;:::i;:::-;:34;;:74;;;;:::i;:::-;21885:18;;:96;;;;;;;:::i;:::-;;;;;;;;22015:75;22065:14;;22015:31;22027:18;;22015:7;:11;;:31;;;;:::i;:::-;:35;;:75;;;;:::i;:::-;21992:19;;:98;;;;;;;:::i;:::-;;;;;;;;21825:273;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:75::-;1817:6;1850:2;1844:9;1834:19;;1784:75;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::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:117::-;4532:1;4529;4522:12;4546:180;4594:77;4591:1;4584:88;4691:4;4688:1;4681:15;4715:4;4712:1;4705:15;4732:281;4815:27;4837:4;4815:27;:::i;:::-;4807:6;4803:40;4945:6;4933:10;4930:22;4909:18;4897:10;4894:34;4891:62;4888:88;;;4956:18;;:::i;:::-;4888:88;4996:10;4992:2;4985:22;4775:238;4732:281;;:::o;5019:129::-;5053:6;5080:20;;:::i;:::-;5070:30;;5109:33;5137:4;5129:6;5109:33;:::i;:::-;5019:129;;;:::o;5154:311::-;5231:4;5321:18;5313:6;5310:30;5307:56;;;5343:18;;:::i;:::-;5307:56;5393:4;5385:6;5381:17;5373:25;;5453:4;5447;5443:15;5435:23;;5154:311;;;:::o;5471:117::-;5580:1;5577;5570:12;5611:710;5707:5;5732:81;5748:64;5805:6;5748:64;:::i;:::-;5732:81;:::i;:::-;5723:90;;5833:5;5862:6;5855:5;5848:21;5896:4;5889:5;5885:16;5878:23;;5949:4;5941:6;5937:17;5929:6;5925:30;5978:3;5970:6;5967:15;5964:122;;;5997:79;;:::i;:::-;5964:122;6112:6;6095:220;6129:6;6124:3;6121:15;6095:220;;;6204:3;6233:37;6266:3;6254:10;6233:37;:::i;:::-;6228:3;6221:50;6300:4;6295:3;6291:14;6284:21;;6171:144;6155:4;6150:3;6146:14;6139:21;;6095:220;;;6099:21;5713:608;;5611:710;;;;;:::o;6344:370::-;6415:5;6464:3;6457:4;6449:6;6445:17;6441:27;6431:122;;6472:79;;:::i;:::-;6431:122;6589:6;6576:20;6614:94;6704:3;6696:6;6689:4;6681:6;6677:17;6614:94;:::i;:::-;6605:103;;6421:293;6344:370;;;;:::o;6720:311::-;6797:4;6887:18;6879:6;6876:30;6873:56;;;6909:18;;:::i;:::-;6873:56;6959:4;6951:6;6947:17;6939:25;;7019:4;7013;7009:15;7001:23;;6720:311;;;:::o;7054:710::-;7150:5;7175:81;7191:64;7248:6;7191:64;:::i;:::-;7175:81;:::i;:::-;7166:90;;7276:5;7305:6;7298:5;7291:21;7339:4;7332:5;7328:16;7321:23;;7392:4;7384:6;7380:17;7372:6;7368:30;7421:3;7413:6;7410:15;7407:122;;;7440:79;;:::i;:::-;7407:122;7555:6;7538:220;7572:6;7567:3;7564:15;7538:220;;;7647:3;7676:37;7709:3;7697:10;7676:37;:::i;:::-;7671:3;7664:50;7743:4;7738:3;7734:14;7727:21;;7614:144;7598:4;7593:3;7589:14;7582:21;;7538:220;;;7542:21;7156:608;;7054:710;;;;;:::o;7787:370::-;7858:5;7907:3;7900:4;7892:6;7888:17;7884:27;7874:122;;7915:79;;:::i;:::-;7874:122;8032:6;8019:20;8057:94;8147:3;8139:6;8132:4;8124:6;8120:17;8057:94;:::i;:::-;8048:103;;7864:293;7787:370;;;;:::o;8163:894::-;8281:6;8289;8338:2;8326:9;8317:7;8313:23;8309:32;8306:119;;;8344:79;;:::i;:::-;8306:119;8492:1;8481:9;8477:17;8464:31;8522:18;8514:6;8511:30;8508:117;;;8544:79;;:::i;:::-;8508:117;8649:78;8719:7;8710:6;8699:9;8695:22;8649:78;:::i;:::-;8639:88;;8435:302;8804:2;8793:9;8789:18;8776:32;8835:18;8827:6;8824:30;8821:117;;;8857:79;;:::i;:::-;8821:117;8962:78;9032:7;9023:6;9012:9;9008:22;8962:78;:::i;:::-;8952:88;;8747:303;8163:894;;;;;:::o;9063:619::-;9140:6;9148;9156;9205:2;9193:9;9184:7;9180:23;9176:32;9173:119;;;9211:79;;:::i;:::-;9173:119;9331:1;9356:53;9401:7;9392:6;9381:9;9377:22;9356:53;:::i;:::-;9346:63;;9302:117;9458:2;9484:53;9529:7;9520:6;9509:9;9505:22;9484:53;:::i;:::-;9474:63;;9429:118;9586:2;9612:53;9657:7;9648:6;9637:9;9633:22;9612:53;:::i;:::-;9602:63;;9557:118;9063:619;;;;;:::o;9688:329::-;9747:6;9796:2;9784:9;9775:7;9771:23;9767:32;9764:119;;;9802:79;;:::i;:::-;9764:119;9922:1;9947:53;9992:7;9983:6;9972:9;9968:22;9947:53;:::i;:::-;9937:63;;9893:117;9688:329;;;;:::o;10023:474::-;10091:6;10099;10148:2;10136:9;10127:7;10123:23;10119:32;10116:119;;;10154:79;;:::i;:::-;10116:119;10274:1;10299:53;10344:7;10335:6;10324:9;10320:22;10299:53;:::i;:::-;10289:63;;10245:117;10401:2;10427:53;10472:7;10463:6;10452:9;10448:22;10427:53;:::i;:::-;10417:63;;10372:118;10023:474;;;;;:::o;10503:86::-;10538:7;10578:4;10571:5;10567:16;10556:27;;10503:86;;;:::o;10595:112::-;10678:22;10694:5;10678:22;:::i;:::-;10673:3;10666:35;10595:112;;:::o;10713:214::-;10802:4;10840:2;10829:9;10825:18;10817:26;;10853:67;10917:1;10906:9;10902:17;10893:6;10853:67;:::i;:::-;10713:214;;;;:::o;10933:329::-;10992:6;11041:2;11029:9;11020:7;11016:23;11012:32;11009:119;;;11047:79;;:::i;:::-;11009:119;11167:1;11192:53;11237:7;11228:6;11217:9;11213:22;11192:53;:::i;:::-;11182:63;;11138:117;10933:329;;;;:::o;11268:116::-;11338:21;11353:5;11338:21;:::i;:::-;11331:5;11328:32;11318:60;;11374:1;11371;11364:12;11318:60;11268:116;:::o;11390:133::-;11433:5;11471:6;11458:20;11449:29;;11487:30;11511:5;11487:30;:::i;:::-;11390:133;;;;:::o;11529:468::-;11594:6;11602;11651:2;11639:9;11630:7;11626:23;11622:32;11619:119;;;11657:79;;:::i;:::-;11619:119;11777:1;11802:53;11847:7;11838:6;11827:9;11823:22;11802:53;:::i;:::-;11792:63;;11748:117;11904:2;11930:50;11972:7;11963:6;11952:9;11948:22;11930:50;:::i;:::-;11920:60;;11875:115;11529:468;;;;;:::o;12003:539::-;12087:6;12136:2;12124:9;12115:7;12111:23;12107:32;12104:119;;;12142:79;;:::i;:::-;12104:119;12290:1;12279:9;12275:17;12262:31;12320:18;12312:6;12309:30;12306:117;;;12342:79;;:::i;:::-;12306:117;12447:78;12517:7;12508:6;12497:9;12493:22;12447:78;:::i;:::-;12437:88;;12233:302;12003:539;;;;:::o;12548:118::-;12635:24;12653:5;12635:24;:::i;:::-;12630:3;12623:37;12548:118;;:::o;12672:222::-;12765:4;12803:2;12792:9;12788:18;12780:26;;12816:71;12884:1;12873:9;12869:17;12860:6;12816:71;:::i;:::-;12672:222;;;;:::o;12900:60::-;12928:3;12949:5;12942:12;;12900:60;;;:::o;12966:142::-;13016:9;13049:53;13067:34;13076:24;13094:5;13076:24;:::i;:::-;13067:34;:::i;:::-;13049:53;:::i;:::-;13036:66;;12966:142;;;:::o;13114:126::-;13164:9;13197:37;13228:5;13197:37;:::i;:::-;13184:50;;13114:126;;;:::o;13246:146::-;13316:9;13349:37;13380:5;13349:37;:::i;:::-;13336:50;;13246:146;;;:::o;13398:171::-;13505:57;13556:5;13505:57;:::i;:::-;13500:3;13493:70;13398:171;;:::o;13575:262::-;13688:4;13726:2;13715:9;13711:18;13703:26;;13739:91;13827:1;13816:9;13812:17;13803:6;13739:91;:::i;:::-;13575:262;;;;:::o;13843:474::-;13911:6;13919;13968:2;13956:9;13947:7;13943:23;13939:32;13936:119;;;13974:79;;:::i;:::-;13936:119;14094:1;14119:53;14164:7;14155:6;14144:9;14140:22;14119:53;:::i;:::-;14109:63;;14065:117;14221:2;14247:53;14292:7;14283:6;14272:9;14268:22;14247:53;:::i;:::-;14237:63;;14192:118;13843:474;;;;;:::o;14323:468::-;14388:6;14396;14445:2;14433:9;14424:7;14420:23;14416:32;14413:119;;;14451:79;;:::i;:::-;14413:119;14571:1;14596:50;14638:7;14629:6;14618:9;14614:22;14596:50;:::i;:::-;14586:60;;14542:114;14695:2;14721:53;14766:7;14757:6;14746:9;14742:22;14721:53;:::i;:::-;14711:63;;14666:118;14323:468;;;;;:::o;14797:678::-;14887:6;14895;14944:2;14932:9;14923:7;14919:23;14915:32;14912:119;;;14950:79;;:::i;:::-;14912:119;15098:1;15087:9;15083:17;15070:31;15128:18;15120:6;15117:30;15114:117;;;15150:79;;:::i;:::-;15114:117;15255:78;15325:7;15316:6;15305:9;15301:22;15255:78;:::i;:::-;15245:88;;15041:302;15382:2;15408:50;15450:7;15441:6;15430:9;15426:22;15408:50;:::i;:::-;15398:60;;15353:115;14797:678;;;;;:::o;15481:144::-;15549:9;15582:37;15613:5;15582:37;:::i;:::-;15569:50;;15481:144;;;:::o;15631:167::-;15736:55;15785:5;15736:55;:::i;:::-;15731:3;15724:68;15631:167;;:::o;15804:258::-;15915:4;15953:2;15942:9;15938:18;15930:26;;15966:89;16052:1;16041:9;16037:17;16028:6;15966:89;:::i;:::-;15804:258;;;;:::o;16068:182::-;16208:34;16204:1;16196:6;16192:14;16185:58;16068:182;:::o;16256:366::-;16398:3;16419:67;16483:2;16478:3;16419:67;:::i;:::-;16412:74;;16495:93;16584:3;16495:93;:::i;:::-;16613:2;16608:3;16604:12;16597:19;;16256:366;;;:::o;16628:419::-;16794:4;16832:2;16821:9;16817:18;16809:26;;16881:9;16875:4;16871:20;16867:1;16856:9;16852:17;16845:47;16909:131;17035:4;16909:131;:::i;:::-;16901:139;;16628:419;;;:::o;17053:175::-;17193:27;17189:1;17181:6;17177:14;17170:51;17053:175;:::o;17234:366::-;17376:3;17397:67;17461:2;17456:3;17397:67;:::i;:::-;17390:74;;17473:93;17562:3;17473:93;:::i;:::-;17591:2;17586:3;17582:12;17575:19;;17234:366;;;:::o;17606:419::-;17772:4;17810:2;17799:9;17795:18;17787:26;;17859:9;17853:4;17849:20;17845:1;17834:9;17830:17;17823:47;17887:131;18013:4;17887:131;:::i;:::-;17879:139;;17606:419;;;:::o;18031:180::-;18079:77;18076:1;18069:88;18176:4;18173:1;18166:15;18200:4;18197:1;18190:15;18217:102;18259:8;18306:5;18303:1;18299:13;18278:34;;18217:102;;;:::o;18325:848::-;18386:5;18393:4;18417:6;18408:15;;18441:5;18432:14;;18455:712;18476:1;18466:8;18463:15;18455:712;;;18571:4;18566:3;18562:14;18556:4;18553:24;18550:50;;;18580:18;;:::i;:::-;18550:50;18630:1;18620:8;18616:16;18613:451;;;19045:4;19038:5;19034:16;19025:25;;18613:451;19095:4;19089;19085:15;19077:23;;19125:32;19148:8;19125:32;:::i;:::-;19113:44;;18455:712;;;18325:848;;;;;;;:::o;19179:1073::-;19233:5;19424:8;19414:40;;19445:1;19436:10;;19447:5;;19414:40;19473:4;19463:36;;19490:1;19481:10;;19492:5;;19463:36;19559:4;19607:1;19602:27;;;;19643:1;19638:191;;;;19552:277;;19602:27;19620:1;19611:10;;19622:5;;;19638:191;19683:3;19673:8;19670:17;19667:43;;;19690:18;;:::i;:::-;19667:43;19739:8;19736:1;19732:16;19723:25;;19774:3;19767:5;19764:14;19761:40;;;19781:18;;:::i;:::-;19761:40;19814:5;;;19552:277;;19938:2;19928:8;19925:16;19919:3;19913:4;19910:13;19906:36;19888:2;19878:8;19875:16;19870:2;19864:4;19861:12;19857:35;19841:111;19838:246;;;19994:8;19988:4;19984:19;19975:28;;20029:3;20022:5;20019:14;20016:40;;;20036:18;;:::i;:::-;20016:40;20069:5;;19838:246;20109:42;20147:3;20137:8;20131:4;20128:1;20109:42;:::i;:::-;20094:57;;;;20183:4;20178:3;20174:14;20167:5;20164:25;20161:51;;;20192:18;;:::i;:::-;20161:51;20241:4;20234:5;20230:16;20221:25;;19179:1073;;;;;;:::o;20258:281::-;20316:5;20340:23;20358:4;20340:23;:::i;:::-;20332:31;;20384:25;20400:8;20384:25;:::i;:::-;20372:37;;20428:104;20465:66;20455:8;20449:4;20428:104;:::i;:::-;20419:113;;20258:281;;;;:::o;20545:410::-;20585:7;20608:20;20626:1;20608:20;:::i;:::-;20603:25;;20642:20;20660:1;20642:20;:::i;:::-;20637:25;;20697:1;20694;20690:9;20719:30;20737:11;20719:30;:::i;:::-;20708:41;;20898:1;20889:7;20885:15;20882:1;20879:22;20859:1;20852:9;20832:83;20809:139;;20928:18;;:::i;:::-;20809:139;20593:362;20545:410;;;;:::o;20961:143::-;21018:5;21049:6;21043:13;21034:22;;21065:33;21092:5;21065:33;:::i;:::-;20961:143;;;;:::o;21110:351::-;21180:6;21229:2;21217:9;21208:7;21204:23;21200:32;21197:119;;;21235:79;;:::i;:::-;21197:119;21355:1;21380:64;21436:7;21427:6;21416:9;21412:22;21380:64;:::i;:::-;21370:74;;21326:128;21110:351;;;;:::o;21467:157::-;21607:9;21603:1;21595:6;21591:14;21584:33;21467:157;:::o;21630:365::-;21772:3;21793:66;21857:1;21852:3;21793:66;:::i;:::-;21786:73;;21868:93;21957:3;21868:93;:::i;:::-;21986:2;21981:3;21977:12;21970:19;;21630:365;;;:::o;22001:419::-;22167:4;22205:2;22194:9;22190:18;22182:26;;22254:9;22248:4;22244:20;22240:1;22229:9;22225:17;22218:47;22282:131;22408:4;22282:131;:::i;:::-;22274:139;;22001:419;;;:::o;22426:180::-;22474:77;22471:1;22464:88;22571:4;22568:1;22561:15;22595:4;22592:1;22585:15;22612:233;22651:3;22674:24;22692:5;22674:24;:::i;:::-;22665:33;;22720:66;22713:5;22710:77;22707:103;;22790:18;;:::i;:::-;22707:103;22837:1;22830:5;22826:13;22819:20;;22612:233;;;:::o;22851:180::-;22899:77;22896:1;22889:88;22996:4;22993:1;22986:15;23020:4;23017:1;23010:15;23037:185;23077:1;23094:20;23112:1;23094:20;:::i;:::-;23089:25;;23128:20;23146:1;23128:20;:::i;:::-;23123:25;;23167:1;23157:35;;23172:18;;:::i;:::-;23157:35;23214:1;23211;23207:9;23202:14;;23037:185;;;;:::o;23228:332::-;23349:4;23387:2;23376:9;23372:18;23364:26;;23400:71;23468:1;23457:9;23453:17;23444:6;23400:71;:::i;:::-;23481:72;23549:2;23538:9;23534:18;23525:6;23481:72;:::i;:::-;23228:332;;;;;:::o;23566:165::-;23706:17;23702:1;23694:6;23690:14;23683:41;23566:165;:::o;23737:366::-;23879:3;23900:67;23964:2;23959:3;23900:67;:::i;:::-;23893:74;;23976:93;24065:3;23976:93;:::i;:::-;24094:2;24089:3;24085:12;24078:19;;23737:366;;;:::o;24109:419::-;24275:4;24313:2;24302:9;24298:18;24290:26;;24362:9;24356:4;24352:20;24348:1;24337:9;24333:17;24326:47;24390:131;24516:4;24390:131;:::i;:::-;24382:139;;24109:419;;;:::o;24534:179::-;24674:31;24670:1;24662:6;24658:14;24651:55;24534:179;:::o;24719:366::-;24861:3;24882:67;24946:2;24941:3;24882:67;:::i;:::-;24875:74;;24958:93;25047:3;24958:93;:::i;:::-;25076:2;25071:3;25067:12;25060:19;;24719:366;;;:::o;25091:419::-;25257:4;25295:2;25284:9;25280:18;25272:26;;25344:9;25338:4;25334:20;25330:1;25319:9;25315:17;25308:47;25372:131;25498:4;25372:131;:::i;:::-;25364:139;;25091:419;;;:::o;25516:225::-;25656:34;25652:1;25644:6;25640:14;25633:58;25725:8;25720:2;25712:6;25708:15;25701:33;25516:225;:::o;25747:366::-;25889:3;25910:67;25974:2;25969:3;25910:67;:::i;:::-;25903:74;;25986:93;26075:3;25986:93;:::i;:::-;26104:2;26099:3;26095:12;26088:19;;25747:366;;;:::o;26119:419::-;26285:4;26323:2;26312:9;26308:18;26300:26;;26372:9;26366:4;26362:20;26358:1;26347:9;26343:17;26336:47;26400:131;26526:4;26400:131;:::i;:::-;26392:139;;26119:419;;;:::o;26544:85::-;26589:7;26618:5;26607:16;;26544:85;;;:::o;26635:158::-;26693:9;26726:61;26744:42;26753:32;26779:5;26753:32;:::i;:::-;26744:42;:::i;:::-;26726:61;:::i;:::-;26713:74;;26635:158;;;:::o;26799:147::-;26894:45;26933:5;26894:45;:::i;:::-;26889:3;26882:58;26799:147;;:::o;26952:348::-;27081:4;27119:2;27108:9;27104:18;27096:26;;27132:71;27200:1;27189:9;27185:17;27176:6;27132:71;:::i;:::-;27213:80;27289:2;27278:9;27274:18;27265:6;27213:80;:::i;:::-;26952:348;;;;;:::o;27306:332::-;27427:4;27465:2;27454:9;27450:18;27442:26;;27478:71;27546:1;27535:9;27531:17;27522:6;27478:71;:::i;:::-;27559:72;27627:2;27616:9;27612:18;27603:6;27559:72;:::i;:::-;27306:332;;;;;:::o;27644:191::-;27684:3;27703:20;27721:1;27703:20;:::i;:::-;27698:25;;27737:20;27755:1;27737:20;:::i;:::-;27732:25;;27780:1;27777;27773:9;27766:16;;27801:3;27798:1;27795:10;27792:36;;;27808:18;;:::i;:::-;27792:36;27644:191;;;;:::o;27841:162::-;27981:14;27977:1;27969:6;27965:14;27958:38;27841:162;:::o;28009:366::-;28151:3;28172:67;28236:2;28231:3;28172:67;:::i;:::-;28165:74;;28248:93;28337:3;28248:93;:::i;:::-;28366:2;28361:3;28357:12;28350:19;;28009:366;;;:::o;28381:419::-;28547:4;28585:2;28574:9;28570:18;28562:26;;28634:9;28628:4;28624:20;28620:1;28609:9;28605:17;28598:47;28662:131;28788:4;28662:131;:::i;:::-;28654:139;;28381:419;;;:::o;28806:171::-;28946:23;28942:1;28934:6;28930:14;28923:47;28806:171;:::o;28983:366::-;29125:3;29146:67;29210:2;29205:3;29146:67;:::i;:::-;29139:74;;29222:93;29311:3;29222:93;:::i;:::-;29340:2;29335:3;29331:12;29324:19;;28983:366;;;:::o;29355:419::-;29521:4;29559:2;29548:9;29544:18;29536:26;;29608:9;29602:4;29598:20;29594:1;29583:9;29579:17;29572:47;29636:131;29762:4;29636:131;:::i;:::-;29628:139;;29355:419;;;:::o;29780:168::-;29920:20;29916:1;29908:6;29904:14;29897:44;29780:168;:::o;29954:366::-;30096:3;30117:67;30181:2;30176:3;30117:67;:::i;:::-;30110:74;;30193:93;30282:3;30193:93;:::i;:::-;30311:2;30306:3;30302:12;30295:19;;29954:366;;;:::o;30326:419::-;30492:4;30530:2;30519:9;30515:18;30507:26;;30579:9;30573:4;30569:20;30565:1;30554:9;30550:17;30543:47;30607:131;30733:4;30607:131;:::i;:::-;30599:139;;30326:419;;;:::o;30751:174::-;30891:26;30887:1;30879:6;30875:14;30868:50;30751:174;:::o;30931:366::-;31073:3;31094:67;31158:2;31153:3;31094:67;:::i;:::-;31087:74;;31170:93;31259:3;31170:93;:::i;:::-;31288:2;31283:3;31279:12;31272:19;;30931:366;;;:::o;31303:419::-;31469:4;31507:2;31496:9;31492:18;31484:26;;31556:9;31550:4;31546:20;31542:1;31531:9;31527:17;31520:47;31584:131;31710:4;31584:131;:::i;:::-;31576:139;;31303:419;;;:::o;31728:143::-;31785:5;31816:6;31810:13;31801:22;;31832:33;31859:5;31832:33;:::i;:::-;31728:143;;;;:::o;31877:351::-;31947:6;31996:2;31984:9;31975:7;31971:23;31967:32;31964:119;;;32002:79;;:::i;:::-;31964:119;32122:1;32147:64;32203:7;32194:6;32183:9;32179:22;32147:64;:::i;:::-;32137:74;;32093:128;31877:351;;;;:::o;32234:114::-;32301:6;32335:5;32329:12;32319:22;;32234:114;;;:::o;32354:184::-;32453:11;32487:6;32482:3;32475:19;32527:4;32522:3;32518:14;32503:29;;32354:184;;;;:::o;32544:132::-;32611:4;32634:3;32626:11;;32664:4;32659:3;32655:14;32647:22;;32544:132;;;:::o;32682:108::-;32759:24;32777:5;32759:24;:::i;:::-;32754:3;32747:37;32682:108;;:::o;32796:179::-;32865:10;32886:46;32928:3;32920:6;32886:46;:::i;:::-;32964:4;32959:3;32955:14;32941:28;;32796:179;;;;:::o;32981:113::-;33051:4;33083;33078:3;33074:14;33066:22;;32981:113;;;:::o;33130:732::-;33249:3;33278:54;33326:5;33278:54;:::i;:::-;33348:86;33427:6;33422:3;33348:86;:::i;:::-;33341:93;;33458:56;33508:5;33458:56;:::i;:::-;33537:7;33568:1;33553:284;33578:6;33575:1;33572:13;33553:284;;;33654:6;33648:13;33681:63;33740:3;33725:13;33681:63;:::i;:::-;33674:70;;33767:60;33820:6;33767:60;:::i;:::-;33757:70;;33613:224;33600:1;33597;33593:9;33588:14;;33553:284;;;33557:14;33853:3;33846:10;;33254:608;;;33130:732;;;;:::o;33868:831::-;34131:4;34169:3;34158:9;34154:19;34146:27;;34183:71;34251:1;34240:9;34236:17;34227:6;34183:71;:::i;:::-;34264:80;34340:2;34329:9;34325:18;34316:6;34264:80;:::i;:::-;34391:9;34385:4;34381:20;34376:2;34365:9;34361:18;34354:48;34419:108;34522:4;34513:6;34419:108;:::i;:::-;34411:116;;34537:72;34605:2;34594:9;34590:18;34581:6;34537:72;:::i;:::-;34619:73;34687:3;34676:9;34672:19;34663:6;34619:73;:::i;:::-;33868:831;;;;;;;;:::o;34705:807::-;34954:4;34992:3;34981:9;34977:19;34969:27;;35006:71;35074:1;35063:9;35059:17;35050:6;35006:71;:::i;:::-;35087:72;35155:2;35144:9;35140:18;35131:6;35087:72;:::i;:::-;35169:80;35245:2;35234:9;35230:18;35221:6;35169:80;:::i;:::-;35259;35335:2;35324:9;35320:18;35311:6;35259:80;:::i;:::-;35349:73;35417:3;35406:9;35402:19;35393:6;35349:73;:::i;:::-;35432;35500:3;35489:9;35485:19;35476:6;35432:73;:::i;:::-;34705:807;;;;;;;;;:::o;35518:663::-;35606:6;35614;35622;35671:2;35659:9;35650:7;35646:23;35642:32;35639:119;;;35677:79;;:::i;:::-;35639:119;35797:1;35822:64;35878:7;35869:6;35858:9;35854:22;35822:64;:::i;:::-;35812:74;;35768:128;35935:2;35961:64;36017:7;36008:6;35997:9;35993:22;35961:64;:::i;:::-;35951:74;;35906:129;36074:2;36100:64;36156:7;36147:6;36136:9;36132:22;36100:64;:::i;:::-;36090:74;;36045:129;35518:663;;;;;:::o;36187:194::-;36227:4;36247:20;36265:1;36247:20;:::i;:::-;36242:25;;36281:20;36299:1;36281:20;:::i;:::-;36276:25;;36325:1;36322;36318:9;36310:17;;36349:1;36343:4;36340:11;36337:37;;;36354:18;;:::i;:::-;36337:37;36187:194;;;;:::o
Swarm Source
ipfs://d211fd54287c80761e82c8c045ca696ee793e3f9ffe17248eed998e945294d64
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.