Token SHARBI
Overview ERC20
Price
$0.00 @ 0.000000 ETH (+4.63%)
Fully Diluted Market Cap
Total Supply:
1,000,000,000,000 $SHARBI
Holders:
2,988 addresses
Transfers:
-
Contract:
Decimals:
9
Official Site:
[ Download CSV Export ]
[ Download CSV Export ]
OVERVIEW
Sharbi is a community-owned, Arbitrum and Ethereum token. Sharbi is known for being the mistress of Shiba.Market
Volume (24H) | : | $267,994.00 |
Market Capitalization | : | $1,001,484.00 |
Circulating Supply | : | 1,000,000,000,000.00 $SHARBI |
Market Data Source: Coinmarketcap |
Update? Click here to update the token ICO / general information
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|---|---|---|---|---|
1 | ![]() | SHARBI-USDT | $0.00 0.0000000 Btc | $210,972.00 208,139,701,119.000 SHARBI | 53.0118% |
2 | ![]() | SHARBI-USDT | $0.00 0.0000000 Btc | $116,871.00 124,938,821,035.000 SHARBI | 31.8211% |
3 | ![]() | SHARBI-USDT | $0.00 0.0000000 Btc | $56,009.00 57,774,364,196.412 SHARBI | 14.7147% |
4 | ![]() | 0XF3A3023E6DEDE84AD88A656A3269F2A36E83C9A9-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 | $0.00 0.0000000 Btc | $1,687.53 1,612,056,013.435 0XF3A3023E6DEDE84AD88A656A3269F2A36E83C9A9 | 0.4106% |
5 | ![]() | 0XAA54E84A3E6E5A80288D2C2F8E36EA5CA3A3CA30-0X82AF49447D8A07E3BD95BD0D56F35241523FBAB1 | $0.00 0.0000000 Btc | $159.09 164,017,120.684 0XAA54E84A3E6E5A80288D2C2F8E36EA5CA3A3CA30 | 0.0418% |
Contract Name:
SHARBI_Token
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Arbiscan.io on 2023-01-25 */ /** _______. __ __ ___ .______ .______ __ / || | | | / \ | _ \ | _ \ | | | (----`| |__| | / ^ \ | |_) | | |_) | | | \ \ | __ | / /_\ \ | / | _ < | | .----) | | | | | / _____ \ | |\ \----.| |_) | | | |_______/ |__| |__| /__/ \__\ | _| `._____||______/ |__| */ // 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 setShare(address shareholder, uint256 amount) external; function deposit() external payable; 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 DividendDistributor is IDividendDistributor { using SafeMath for uint256; address public _token; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } IERC20Extended public USDC = IERC20Extended(0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8); 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; bool initialized; modifier initializer() { require(!initialized); _; initialized = true; } modifier onlyToken() { require(msg.sender == _token); _; } constructor(address router_) { _token = msg.sender; router = IDexRouter(router_); } 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 = USDC.balanceOf(address(this)); address[] memory path = new address[](2); path[0] = router.WETH(); path[1] = address(USDC); router.swapExactETHForTokensSupportingFeeOnTransferTokens{ value: msg.value }(0, path, address(this), block.timestamp); uint256 amount = USDC.balanceOf(address(this)).sub(balanceBefore); totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add( dividendsPerShareAccuracyFactor.mul(amount).div(totalShares) ); } function distributeDividend(address shareholder) internal { if (shares[shareholder].amount == 0) { return; } uint256 amount = getUnpaidEarnings(shareholder); if (amount > 0) { totalDistributed = totalDistributed.add(amount); USDC.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 SHARBI_Token is IERC20Extended, Ownable { using SafeMath for uint256; string private constant _name = "SHARBI"; string private constant _symbol = "$SHARBI"; uint8 private constant _decimals = 9; uint256 private constant _totalSupply = 1_000_000_000_000 * 10**_decimals; address public USDC = 0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8; address private constant DEAD = address(0xdead); address private constant ZERO = address(0); IDexRouter public router; address public pair; address public autoLiquidityReceiver; uint256 _liquidityBuyFee = 10; uint256 _reflectionBuyFee = 40; uint256 _liquiditySellFee = 10; uint256 _reflectionSellFee = 40; uint256 _liquidityFeeCount; uint256 _reflectionFeeCount; uint256 public totalBuyFee = 50; uint256 public totalSellFee = 50; uint256 public feeDenominator = 1000; DividendDistributor public distributor; uint256 public maxTxnAmount = _totalSupply / 100; uint256 public maxWalletAmount = (_totalSupply * 15) / 1000; uint256 public targetLiquidity = 90; uint256 public targetLiquidityDenominator = 100; uint256 public launchedAt; 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; bool public swapEnabled; uint256 public swapThreshold = _totalSupply / 2000; bool public trading; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } event AutoLiquify(uint256 amountBNB, uint256 amountBOG); constructor() Ownable() { address router_ = 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506; autoLiquidityReceiver = msg.sender; router = IDexRouter(router_); pair = IDexFactory(router.factory()).createPair( address(this), router.WETH() ); distributor = new DividendDistributor(router_); isFeeExempt[autoLiquidityReceiver] = true; isFeeExempt[address(this)] = true; isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; isDividendExempt[DEAD] = true; isDividendExempt[ZERO] = true; isLimitExmpt[autoLiquidityReceiver] = true; isLimitExmpt[address(this)] = 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[autoLiquidityReceiver] = _totalSupply; emit Transfer(address(0), autoLiquidityReceiver, _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" ); } } 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(getDynamicSellFee()).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 {} } 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 getDynamicSellFee() internal view returns(uint256) { if(block.timestamp <= launchedAt.add(5 minutes)){ return 300; } else if(block.timestamp > launchedAt.add(5 minutes) && block.timestamp <= launchedAt.add(10 minutes)){ return 250; } else if(block.timestamp > launchedAt.add(10 minutes) && block.timestamp <= launchedAt.add(15 minutes)){ return 200; } else if(block.timestamp > launchedAt.add(15 minutes) && block.timestamp <= launchedAt.add(20 minutes)){ return 100; } else { return totalSellFee; } } 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 dynamic_LiquidityFee = isOverLiquified( targetLiquidity, targetLiquidityDenominator ) ? 0 : _liquidityFeeCount; uint256 amountToLiquify = swapThreshold .mul(dynamic_LiquidityFee) .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(dynamic_LiquidityFee.div(2)); uint256 amountBNBLiquidity = amountBNB .mul(dynamic_LiquidityFee) .div(totalBNBFee) .div(2); uint256 amountBNBReflection = amountBNB.mul(_reflectionFeeCount).div( totalBNBFee ); try distributor.deposit{value: amountBNBReflection}() {} catch {} if (amountToLiquify > 0) { router.addLiquidityETH{value: amountBNBLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountBNBLiquidity, amountToLiquify); } _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 { maxTxnAmount = amount; } function setMaxWalletAmount(uint256 amount) external onlyOwner { maxWalletAmount = amount; } function setIsFeeExempt(address holder, bool exempt) external onlyOwner { isFeeExempt[holder] = exempt; } function setIsLimitExempt(address holder, bool exempt) external onlyOwner { isLimitExmpt[holder] = exempt; } function setIsWalletExempt(address holder, bool exempt) external onlyOwner { isWalletExmpt[holder] = exempt; } function setIsBot(address holder, bool exempt) external onlyOwner { isBot[holder] = exempt; } function setBuyFees( uint256 _liquidityFee, uint256 _reflectionFee, uint256 _feeDenominator ) public onlyOwner { _liquidityBuyFee = _liquidityFee; _reflectionBuyFee = _reflectionFee; 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 { swapEnabled = _enabled; swapThreshold = _amount; } function setTargetLiquidity(uint256 _target, uint256 _denominator) external onlyOwner { targetLiquidity = _target; targetLiquidityDenominator = _denominator; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } function getLiquidityBacking(uint256 accuracy) public view returns (uint256) { return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply()); } function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) { return getLiquidityBacking(accuracy) > target; } }
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":"USDC","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 DividendDistributor","name":"","type":"address"}],"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":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","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":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","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":[],"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":"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":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setBuyFees","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":"setIsBot","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":"holder","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":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","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":"targetLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"targetLiquidityDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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
608060405273ff970a61a04b1ca14834a43f5de4533ebddb5cc8600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a6005556028600655600a60075560286008556032600b556032600c556103e8600d5560646009600a6200008f919062000e64565b64e8d4a51000620000a1919062000eb5565b620000ad919062000f45565b600f556103e8600f6009600a620000c5919062000e64565b64e8d4a51000620000d7919062000eb5565b620000e3919062000eb5565b620000ef919062000f45565b601055605a60115560646012556107d06009600a6200010f919062000e64565b64e8d4a5100062000121919062000eb5565b6200012d919062000f45565b601c553480156200013d57600080fd5b506200014e62000cb460201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000731b02da8cb0d097eb8d57a175b88c7d8b47997506905033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000311573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000337919062000fe7565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e7919062000fe7565b6040518363ffffffff1660e01b8152600401620004069291906200102a565b6020604051808303816000875af115801562000426573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200044c919062000fe7565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806040516200049b9062000cbc565b620004a7919062001057565b604051809103906000f080158015620004c4573d6000803e3d6000fd5b50600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160166000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160196000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016019600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601960008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160186000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160186000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160186000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009600a62000a03919062000e64565b64e8d4a5100062000a15919062000eb5565b601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506009600a62000ac7919062000e64565b64e8d4a5100062000ad9919062000eb5565b601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506009600a62000b8b919062000e64565b64e8d4a5100062000b9d919062000eb5565b60146000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a62000c84919062000e64565b64e8d4a5100062000c96919062000eb5565b60405162000ca5919062001085565b60405180910390a350620010a2565b600033905090565b611c6b8062005f1b83390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000d585780860481111562000d305762000d2f62000cca565b5b600185161562000d405780820291505b808102905062000d508562000cf9565b945062000d10565b94509492505050565b60008262000d73576001905062000e46565b8162000d83576000905062000e46565b816001811462000d9c576002811462000da75762000ddd565b600191505062000e46565b60ff84111562000dbc5762000dbb62000cca565b5b8360020a91508482111562000dd65762000dd562000cca565b5b5062000e46565b5060208310610133831016604e8410600b841016171562000e175782820a90508381111562000e115762000e1062000cca565b5b62000e46565b62000e26848484600162000d06565b9250905081840481111562000e405762000e3f62000cca565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000e718262000e4d565b915062000e7e8362000e57565b925062000ead7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000d61565b905092915050565b600062000ec28262000e4d565b915062000ecf8362000e4d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f0b5762000f0a62000cca565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f528262000e4d565b915062000f5f8362000e4d565b92508262000f725762000f7162000f16565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000faf8262000f82565b9050919050565b62000fc18162000fa2565b811462000fcd57600080fd5b50565b60008151905062000fe18162000fb6565b92915050565b600060208284031215620010005762000fff62000f7d565b5b6000620010108482850162000fd0565b91505092915050565b620010248162000fa2565b82525050565b600060408201905062001041600083018562001019565b62001050602083018462001019565b9392505050565b60006020820190506200106e600083018462001019565b92915050565b6200107f8162000e4d565b82525050565b60006020820190506200109c600083018462001074565b92915050565b614e6980620010b26000396000f3fe6080604052600436106103545760003560e01c806386cb8fb1116101c6578063bfe10928116100f7578063e01bb68811610095578063f2fde38b1161006f578063f2fde38b14610cad578063f708a64f14610cd6578063f887ea4014610cff578063fc899bdc14610d2a5761035b565b8063e01bb68814610c42578063ec44acf214610c6b578063f0fc6bca14610c965761035b565b8063d51ed1c8116100d1578063d51ed1c814610b76578063d962cf5814610bb3578063dd62ed3e14610bdc578063df20fd4914610c195761035b565b8063bfe1092814610af5578063ca33e64c14610b20578063cf46f24c14610b4b5761035b565b806392258ec811610164578063a8aa1b311161013e578063a8aa1b3114610a37578063a9059cbb14610a62578063aa4bde2814610a9f578063bf56b37114610aca5761035b565b806392258ec8146109b657806395d89b41146109e15780639d9241ec14610a0c5761035b565b806389a30271116101a057806389a302711461091e5780638a8c523c146109495780638ab6ffc7146109605780638da5cb5b1461098b5761035b565b806386cb8fb11461087b57806386db0c05146108b8578063893c9f2b146108f55761035b565b80632b112e49116102a0578063571ac8b01161023e5780636ddd1713116102185780636ddd1713146107d357806370a08231146107fe578063715018a61461083b57806374010ece146108525761035b565b8063571ac8b01461074257806359b107b91461077f578063658d4b7f146107aa5761035b565b80633f4218e01161027a5780633f4218e01461064e5780634355855a1461068b57806349bc3feb146106c8578063540b8a27146107055761035b565b80632b112e49146105bb578063313ce567146105e65780633bbac579146106115761035b565b80631161ae391161030d5780631961cee2116102e75780631961cee214610501578063201e79911461052c57806323b872dd1461055557806327a14fc2146105925761035b565b80631161ae391461046e578063180b0d7e146104ab57806318160ddd146104d65761035b565b806303c0f5d4146103605780630445b6671461038957806306fdde03146103b4578063095ea7b3146103df5780630d075d9c1461041c5780630f683e90146104455761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b5061038760048036038101906103829190613fbc565b610d53565b005b34801561039557600080fd5b5061039e610e43565b6040516103ab9190614015565b60405180910390f35b3480156103c057600080fd5b506103c9610e49565b6040516103d691906140c9565b60405180910390f35b3480156103eb57600080fd5b5061040660048036038101906104019190614117565b610e86565b6040516104139190614166565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e9190614181565b610f78565b005b34801561045157600080fd5b5061046c60048036038101906104679190614181565b61109a565b005b34801561047a57600080fd5b50610495600480360381019061049091906141d4565b6111bc565b6040516104a29190614166565b60405180910390f35b3480156104b757600080fd5b506104c06111d1565b6040516104cd9190614015565b60405180910390f35b3480156104e257600080fd5b506104eb6111d7565b6040516104f89190614015565b60405180910390f35b34801561050d57600080fd5b506105166111fc565b6040516105239190614015565b60405180910390f35b34801561053857600080fd5b50610553600480360381019061054e91906141d4565b611294565b005b34801561056157600080fd5b5061057c60048036038101906105779190614214565b61133b565b6040516105899190614166565b60405180910390f35b34801561059e57600080fd5b506105b960048036038101906105b49190614267565b611538565b005b3480156105c757600080fd5b506105d06115d7565b6040516105dd9190614015565b60405180910390f35b3480156105f257600080fd5b506105fb611633565b60405161060891906142b0565b60405180910390f35b34801561061d57600080fd5b50610638600480360381019061063391906142cb565b61163c565b6040516106459190614166565b60405180910390f35b34801561065a57600080fd5b50610675600480360381019061067091906142cb565b61165c565b6040516106829190614166565b60405180910390f35b34801561069757600080fd5b506106b260048036038101906106ad91906142cb565b61167c565b6040516106bf9190614166565b60405180910390f35b3480156106d457600080fd5b506106ef60048036038101906106ea91906142cb565b61169c565b6040516106fc9190614015565b60405180910390f35b34801561071157600080fd5b5061072c600480360381019061072791906142cb565b611741565b6040516107399190614166565b60405180910390f35b34801561074e57600080fd5b50610769600480360381019061076491906142cb565b611761565b6040516107769190614166565b60405180910390f35b34801561078b57600080fd5b50610794611791565b6040516107a19190614015565b60405180910390f35b3480156107b657600080fd5b506107d160048036038101906107cc9190613fbc565b611797565b005b3480156107df57600080fd5b506107e8611887565b6040516107f59190614166565b60405180910390f35b34801561080a57600080fd5b50610825600480360381019061082091906142cb565b61189a565b6040516108329190614015565b60405180910390f35b34801561084757600080fd5b506108506118e3565b005b34801561085e57600080fd5b5061087960048036038101906108749190614267565b611a36565b005b34801561088757600080fd5b506108a2600480360381019061089d91906142cb565b611ad5565b6040516108af9190614166565b60405180910390f35b3480156108c457600080fd5b506108df60048036038101906108da91906142cb565b611af5565b6040516108ec9190614015565b60405180910390f35b34801561090157600080fd5b5061091c60048036038101906109179190614267565b611b9a565b005b34801561092a57600080fd5b50610933611c80565b6040516109409190614307565b60405180910390f35b34801561095557600080fd5b5061095e611ca6565b005b34801561096c57600080fd5b50610975611dca565b6040516109829190614015565b60405180910390f35b34801561099757600080fd5b506109a0611dd0565b6040516109ad9190614307565b60405180910390f35b3480156109c257600080fd5b506109cb611df9565b6040516109d89190614015565b60405180910390f35b3480156109ed57600080fd5b506109f6611dff565b604051610a0391906140c9565b60405180910390f35b348015610a1857600080fd5b50610a21611e3c565b604051610a2e9190614015565b60405180910390f35b348015610a4357600080fd5b50610a4c611e42565b604051610a599190614307565b60405180910390f35b348015610a6e57600080fd5b50610a896004803603810190610a849190614117565b611e68565b604051610a969190614166565b60405180910390f35b348015610aab57600080fd5b50610ab4611e7d565b604051610ac19190614015565b60405180910390f35b348015610ad657600080fd5b50610adf611e83565b604051610aec9190614015565b60405180910390f35b348015610b0157600080fd5b50610b0a611e89565b604051610b179190614381565b60405180910390f35b348015610b2c57600080fd5b50610b35611eaf565b604051610b429190614307565b60405180910390f35b348015610b5757600080fd5b50610b60611ed5565b604051610b6d9190614015565b60405180910390f35b348015610b8257600080fd5b50610b9d6004803603810190610b989190614267565b611edb565b604051610baa9190614015565b60405180910390f35b348015610bbf57600080fd5b50610bda6004803603810190610bd59190613fbc565b611f4d565b005b348015610be857600080fd5b50610c036004803603810190610bfe919061439c565b61203d565b604051610c109190614015565b60405180910390f35b348015610c2557600080fd5b50610c406004803603810190610c3b91906143dc565b6120c4565b005b348015610c4e57600080fd5b50610c696004803603810190610c6491906142cb565b61217e565b005b348015610c7757600080fd5b50610c80612257565b604051610c8d9190614166565b60405180910390f35b348015610ca257600080fd5b50610cab61226a565b005b348015610cb957600080fd5b50610cd46004803603810190610ccf91906142cb565b6122f9565b005b348015610ce257600080fd5b50610cfd6004803603810190610cf89190613fbc565b6124bb565b005b348015610d0b57600080fd5b50610d146127a8565b604051610d21919061443d565b60405180910390f35b348015610d3657600080fd5b50610d516004803603810190610d4c9190613fbc565b6127ce565b005b610d5b6128be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddf906144a4565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601c5481565b60606040518060400160405280600681526020017f5348415242490000000000000000000000000000000000000000000000000000815250905090565b600081601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610f669190614015565b60405180910390a36001905092915050565b610f806128be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461100d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611004906144a4565b60405180910390fd5b826005819055508160068190555061102e82846128c690919063ffffffff16565b600b8190555080600d81905550611051600a600d546128dc90919063ffffffff16565b600b541115611095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108c90614510565b60405180910390fd5b505050565b6110a26128be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461112f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611126906144a4565b60405180910390fd5b826007819055508160088190555061115082846128c690919063ffffffff16565b600c8190555080600d81905550611173600a600d546128dc90919063ffffffff16565b600c5411156111b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ae90614510565b60405180910390fd5b505050565b6000826111c883611edb565b11905092915050565b600d5481565b60006009600a6111e79190614692565b64e8d4a510006111f791906146dd565b905090565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663efca2eed6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561126b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128f919061474c565b905090565b61129c6128be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611329576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611320906144a4565b60405180910390fd5b81601181905550806012819055505050565b60006009600a61134b9190614692565b64e8d4a5100061135b91906146dd565b601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611524576114a3826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f29092919063ffffffff16565b601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61152f848484612947565b90509392505050565b6115406128be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c4906144a4565b60405180910390fd5b8060108190555050565b600061162e6115e6600061189a565b6116206115f461dead61189a565b6009600a6116029190614692565b64e8d4a5100061161291906146dd565b61333a90919063ffffffff16565b61333a90919063ffffffff16565b905090565b60006009905090565b601a6020528060005260406000206000915054906101000a900460ff1681565b60166020528060005260406000206000915054906101000a900460ff1681565b60196020528060005260406000206000915054906101000a900460ff1681565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166352f48158836040518263ffffffff1660e01b81526004016116f99190614307565b602060405180830381865afa158015611716573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173a919061474c565b9050919050565b60176020528060005260406000206000915054906101000a900460ff1681565b600061178a826009600a6117759190614692565b64e8d4a5100061178591906146dd565b610e86565b9050919050565b600b5481565b61179f6128be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461182c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611823906144a4565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b60009054906101000a900460ff1681565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118eb6128be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196f906144a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611a3e6128be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611acb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac2906144a4565b60405180910390fd5b80600f8190555050565b60186020528060005260406000206000915054906101000a900460ff1681565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166328fd3198836040518263ffffffff1660e01b8152600401611b529190614307565b602060405180830381865afa158015611b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b93919061474c565b9050919050565b611ba26128be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c26906144a4565b60405180910390fd5b611c37611dd0565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c7c573d6000803e3d6000fd5b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611cae6128be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d32906144a4565b60405180910390fd5b601d60009054906101000a900460ff1615611d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d82906147c5565b60405180910390fd5b6001601d60006101000a81548160ff0219169083151502179055506001601b60006101000a81548160ff02191690831515021790555042601381905550565b60125481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600781526020017f2453484152424900000000000000000000000000000000000000000000000000815250905090565b600c5481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611e75338484612947565b905092915050565b60105481565b60135481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b6000611f46611ee86115d7565b611f38611f296002611f1b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661189a565b61335090919063ffffffff16565b8561335090919063ffffffff16565b6128dc90919063ffffffff16565b9050919050565b611f556128be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fe2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd9906144a4565b60405180910390fd5b80601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6120cc6128be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612159576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612150906144a4565b60405180910390fd5b81601b60006101000a81548160ff02191690831515021790555080601c819055505050565b6121866128be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220a906144a4565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d60009054906101000a900460ff1681565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b81526004016122c59190614307565b600060405180830381600087803b1580156122df57600080fd5b505af11580156122f3573d6000803e3d6000fd5b50505050565b6123016128be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461238e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612385906144a4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156123fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f590614857565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6124c36128be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612550576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612547906144a4565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156125da5750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6125e357600080fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156126d557600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b815260040161269e9291906148b2565b600060405180830381600087803b1580156126b857600080fd5b505af11580156126cc573d6000803e3d6000fd5b505050506127a4565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016127719291906148db565b600060405180830381600087803b15801561278b57600080fd5b505af115801561279f573d6000803e3d6000fd5b505050505b5050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6127d66128be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285a906144a4565b60405180910390fd5b80601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600033905090565b600081836128d49190614904565b905092915050565b600081836128ea9190614989565b905092915050565b600083831115829061293a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293191906140c9565b60405180910390fd5b5082840390509392505050565b6000601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156129d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cd90614a06565b60405180910390fd5b601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612a7a5750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bc557600f54821115612ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612abb90614a72565b60405180910390fd5b601d60009054906101000a900460ff16612bc4578373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612b8457508273ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b612bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bba90614ade565b60405180910390fd5b5b5b601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c7657601054612c3483612c268661189a565b6128c690919063ffffffff16565b1115612c75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6c90614b4a565b60405180910390fd5b5b601d60019054906101000a900460ff1615612c9d57612c96848484613366565b9050613333565b612ca5613539565b15612cb357612cb2613610565b5b612d3c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f29092919063ffffffff16565b601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e225750601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612ed55750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015612ed45750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b5b15612ee257829050612fed565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415612f9257612f63600d54612f55600b548761335090919063ffffffff16565b6128dc90919063ffffffff16565b9050612f78818561333a90919063ffffffff16565b9150612f848682613c0c565b612f8d84613d0a565b612feb565b612fc0600d54612fb2612fa3613d8f565b8761335090919063ffffffff16565b6128dc90919063ffffffff16565b9050612fd5818561333a90919063ffffffff16565b9150612fe18682613c0c565b612fea84613e9c565b5b505b61303f81601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c690919063ffffffff16565b601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131a557600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161316f9291906148db565b600060405180830381600087803b15801561318957600080fd5b505af192505050801561319a575060015b6131a3576131a4565b5b5b601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166132c857600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016132929291906148db565b600060405180830381600087803b1580156132ac57600080fd5b505af19250505080156132bd575060015b6132c6576132c7565b5b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133259190614015565b60405180910390a360019150505b9392505050565b600081836133489190614b6a565b905092915050565b6000818361335e91906146dd565b905092915050565b60006133f1826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128f29092919063ffffffff16565b601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061348682601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c690919063ffffffff16565b601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516135269190614015565b60405180910390a3600190509392505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156135a65750601d60019054906101000a900460ff16155b80156135be5750601b60009054906101000a900460ff165b801561360b5750601c54601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601d60016101000a81548160ff0219169083151502179055506000613644600a546009546128c690919063ffffffff16565b905060006136566011546012546111bc565b61366257600954613665565b60005b905060006136a360026136958561368786601c5461335090919063ffffffff16565b6128dc90919063ffffffff16565b6128dc90919063ffffffff16565b905060006136bc82601c5461333a90919063ffffffff16565b90506009600a6136cc9190614692565b64e8d4a510006136dc91906146dd565b601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600267ffffffffffffffff81111561379b5761379a614b9e565b5b6040519080825280602002602001820160405280156137c95781602001602082028036833780820191505090505b50905030816000815181106137e1576137e0614bcd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613888573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138ac9190614c11565b816001815181106138c0576138bf614bcd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401613963959493929190614cfc565b600060405180830381600087803b15801561397d57600080fd5b505af1158015613991573d6000803e3d6000fd5b5050505060006139aa824761333a90919063ffffffff16565b905060006139d46139c56002896128dc90919063ffffffff16565b8961333a90919063ffffffff16565b90506000613a106002613a02846139f48c8861335090919063ffffffff16565b6128dc90919063ffffffff16565b6128dc90919063ffffffff16565b90506000613a3b83613a2d600a548761335090919063ffffffff16565b6128dc90919063ffffffff16565b9050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613aa757600080fd5b505af193505050508015613ab9575060015b613ac257613ac3565b5b6000881115613bd557600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308b600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613b5596959493929190614d56565b60606040518083038185885af1158015613b73573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613b989190614db7565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45068289604051613bcc929190614e0a565b60405180910390a15b60006009819055506000600a81905550505050505050505050506000601d60016101000a81548160ff021916908315150217905550565b613c5e81601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128c690919063ffffffff16565b601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613cfe9190614015565b60405180910390a35050565b613d33600d54613d256005548461335090919063ffffffff16565b6128dc90919063ffffffff16565b60096000828254613d449190614904565b92505081905550613d74600d54613d666006548461335090919063ffffffff16565b6128dc90919063ffffffff16565b600a6000828254613d859190614904565b9250508190555050565b6000613da861012c6013546128c690919063ffffffff16565b4211613db85761012c9050613e99565b613dcf61012c6013546128c690919063ffffffff16565b42118015613df35750613def6102586013546128c690919063ffffffff16565b4211155b15613e015760fa9050613e99565b613e186102586013546128c690919063ffffffff16565b42118015613e3c5750613e386103846013546128c690919063ffffffff16565b4211155b15613e4a5760c89050613e99565b613e616103846013546128c690919063ffffffff16565b42118015613e855750613e816104b06013546128c690919063ffffffff16565b4211155b15613e935760649050613e99565b600c5490505b90565b613ec5600d54613eb76007548461335090919063ffffffff16565b6128dc90919063ffffffff16565b60096000828254613ed69190614904565b92505081905550613f06600d54613ef86008548461335090919063ffffffff16565b6128dc90919063ffffffff16565b600a6000828254613f179190614904565b9250508190555050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613f5182613f26565b9050919050565b613f6181613f46565b8114613f6c57600080fd5b50565b600081359050613f7e81613f58565b92915050565b60008115159050919050565b613f9981613f84565b8114613fa457600080fd5b50565b600081359050613fb681613f90565b92915050565b60008060408385031215613fd357613fd2613f21565b5b6000613fe185828601613f6f565b9250506020613ff285828601613fa7565b9150509250929050565b6000819050919050565b61400f81613ffc565b82525050565b600060208201905061402a6000830184614006565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561406a57808201518184015260208101905061404f565b83811115614079576000848401525b50505050565b6000601f19601f8301169050919050565b600061409b82614030565b6140a5818561403b565b93506140b581856020860161404c565b6140be8161407f565b840191505092915050565b600060208201905081810360008301526140e38184614090565b905092915050565b6140f481613ffc565b81146140ff57600080fd5b50565b600081359050614111816140eb565b92915050565b6000806040838503121561412e5761412d613f21565b5b600061413c85828601613f6f565b925050602061414d85828601614102565b9150509250929050565b61416081613f84565b82525050565b600060208201905061417b6000830184614157565b92915050565b60008060006060848603121561419a57614199613f21565b5b60006141a886828701614102565b93505060206141b986828701614102565b92505060406141ca86828701614102565b9150509250925092565b600080604083850312156141eb576141ea613f21565b5b60006141f985828601614102565b925050602061420a85828601614102565b9150509250929050565b60008060006060848603121561422d5761422c613f21565b5b600061423b86828701613f6f565b935050602061424c86828701613f6f565b925050604061425d86828701614102565b9150509250925092565b60006020828403121561427d5761427c613f21565b5b600061428b84828501614102565b91505092915050565b600060ff82169050919050565b6142aa81614294565b82525050565b60006020820190506142c560008301846142a1565b92915050565b6000602082840312156142e1576142e0613f21565b5b60006142ef84828501613f6f565b91505092915050565b61430181613f46565b82525050565b600060208201905061431c60008301846142f8565b92915050565b6000819050919050565b600061434761434261433d84613f26565b614322565b613f26565b9050919050565b60006143598261432c565b9050919050565b600061436b8261434e565b9050919050565b61437b81614360565b82525050565b60006020820190506143966000830184614372565b92915050565b600080604083850312156143b3576143b2613f21565b5b60006143c185828601613f6f565b92505060206143d285828601613f6f565b9150509250929050565b600080604083850312156143f3576143f2613f21565b5b600061440185828601613fa7565b925050602061441285828601614102565b9150509250929050565b60006144278261434e565b9050919050565b6144378161441c565b82525050565b6000602082019050614452600083018461442e565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061448e60208361403b565b915061449982614458565b602082019050919050565b600060208201905081810360008301526144bd81614481565b9050919050565b7f43616e27742062652067726561746572207468616e2031302500000000000000600082015250565b60006144fa60198361403b565b9150614505826144c4565b602082019050919050565b60006020820190508181036000830152614529816144ed565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156145b65780860481111561459257614591614530565b5b60018516156145a15780820291505b80810290506145af8561455f565b9450614576565b94509492505050565b6000826145cf576001905061468b565b816145dd576000905061468b565b81600181146145f357600281146145fd5761462c565b600191505061468b565b60ff84111561460f5761460e614530565b5b8360020a91508482111561462657614625614530565b5b5061468b565b5060208310610133831016604e8410600b84101617156146615782820a90508381111561465c5761465b614530565b5b61468b565b61466e848484600161456c565b9250905081840481111561468557614684614530565b5b81810290505b9392505050565b600061469d82613ffc565b91506146a883614294565b92506146d57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846145bf565b905092915050565b60006146e882613ffc565b91506146f383613ffc565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561472c5761472b614530565b5b828202905092915050565b600081519050614746816140eb565b92915050565b60006020828403121561476257614761613f21565b5b600061477084828501614737565b91505092915050565b7f416c726561647920656e61626c65640000000000000000000000000000000000600082015250565b60006147af600f8361403b565b91506147ba82614779565b602082019050919050565b600060208201905081810360008301526147de816147a2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061484160268361403b565b915061484c826147e5565b604082019050919050565b6000602082019050818103600083015261487081614834565b9050919050565b6000819050919050565b600061489c61489761489284614877565b614322565b613ffc565b9050919050565b6148ac81614881565b82525050565b60006040820190506148c760008301856142f8565b6148d460208301846148a3565b9392505050565b60006040820190506148f060008301856142f8565b6148fd6020830184614006565b9392505050565b600061490f82613ffc565b915061491a83613ffc565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561494f5761494e614530565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061499482613ffc565b915061499f83613ffc565b9250826149af576149ae61495a565b5b828204905092915050565b7f426f742064657465637465640000000000000000000000000000000000000000600082015250565b60006149f0600c8361403b565b91506149fb826149ba565b602082019050919050565b60006020820190508181036000830152614a1f816149e3565b9050919050565b7f4d61782074786e206c696d697420657863656564730000000000000000000000600082015250565b6000614a5c60158361403b565b9150614a6782614a26565b602082019050919050565b60006020820190508181036000830152614a8b81614a4f565b9050919050565b7f54726164696e672069732064697361626c650000000000000000000000000000600082015250565b6000614ac860128361403b565b9150614ad382614a92565b602082019050919050565b60006020820190508181036000830152614af781614abb565b9050919050565b7f4d61782057616c6c6574206c696d697420657863656564730000000000000000600082015250565b6000614b3460188361403b565b9150614b3f82614afe565b602082019050919050565b60006020820190508181036000830152614b6381614b27565b9050919050565b6000614b7582613ffc565b9150614b8083613ffc565b925082821015614b9357614b92614530565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614c0b81613f58565b92915050565b600060208284031215614c2757614c26613f21565b5b6000614c3584828501614bfc565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614c7381613f46565b82525050565b6000614c858383614c6a565b60208301905092915050565b6000602082019050919050565b6000614ca982614c3e565b614cb38185614c49565b9350614cbe83614c5a565b8060005b83811015614cef578151614cd68882614c79565b9750614ce183614c91565b925050600181019050614cc2565b5085935050505092915050565b600060a082019050614d116000830188614006565b614d1e60208301876148a3565b8181036040830152614d308186614c9e565b9050614d3f60608301856142f8565b614d4c6080830184614006565b9695505050505050565b600060c082019050614d6b60008301896142f8565b614d786020830188614006565b614d8560408301876148a3565b614d9260608301866148a3565b614d9f60808301856142f8565b614dac60a0830184614006565b979650505050505050565b600080600060608486031215614dd057614dcf613f21565b5b6000614dde86828701614737565b9350506020614def86828701614737565b9250506040614e0086828701614737565b9150509250925092565b6000604082019050614e1f6000830185614006565b614e2c6020830184614006565b939250505056fea2646970667358221220b4464818e351b3fa028d4d52b3b29e0976df7d2c30d13ae6c27a8adfdadc268864736f6c634300080a0033608060405273ff970a61a04b1ca14834a43f5de4533ebddb5cc8600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600b553480156200007957600080fd5b5060405162001c6b38038062001c6b83398181016040528101906200009f919062000191565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620001c3565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000159826200012c565b9050919050565b6200016b816200014c565b81146200017757600080fd5b50565b6000815190506200018b8162000160565b92915050565b600060208284031215620001aa57620001a962000127565b5b6000620001ba848285016200017a565b91505092915050565b611a9880620001d36000396000f3fe6080604052600436106100fe5760003560e01c8063997664d711610095578063d4fda1f211610064578063d4fda1f21461033e578063e2d2e2191461037b578063ecd0c0c3146103a6578063efca2eed146103d1578063f887ea40146103fc576100fe565b8063997664d71461028d578063ab377daa146102b8578063ce7c2ac2146102f5578063d0e30db014610334576100fe565b80633a98ef39116100d15780633a98ef39146101bd57806352f48158146101e857806366817df51461022557806389a3027114610262576100fe565b806311ce023d1461010357806314b6ca961461012e57806315f7e05e1461015757806328fd319814610180575b600080fd5b34801561010f57600080fd5b50610118610427565b60405161012591906113b0565b60405180910390f35b34801561013a57600080fd5b506101556004803603810190610150919061145a565b61042d565b005b34801561016357600080fd5b5061017e6004803603810190610179919061149a565b6106ec565b005b34801561018c57600080fd5b506101a760048036038101906101a2919061149a565b6106f8565b6040516101b491906113b0565b60405180910390f35b3480156101c957600080fd5b506101d2610812565b6040516101df91906113b0565b60405180910390f35b3480156101f457600080fd5b5061020f600480360381019061020a919061149a565b610818565b60405161021c91906113b0565b60405180910390f35b34801561023157600080fd5b5061024c6004803603810190610247919061149a565b610864565b60405161025991906113b0565b60405180910390f35b34801561026e57600080fd5b5061027761087c565b6040516102849190611526565b60405180910390f35b34801561029957600080fd5b506102a26108a2565b6040516102af91906113b0565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190611541565b6108a8565b6040516102ec919061157d565b60405180910390f35b34801561030157600080fd5b5061031c6004803603810190610317919061149a565b6108e7565b60405161032b93929190611598565b60405180910390f35b61033c610911565b005b34801561034a57600080fd5b506103656004803603810190610360919061149a565b610d51565b60405161037291906113b0565b60405180910390f35b34801561038757600080fd5b50610390610d69565b60405161039d91906113b0565b60405180910390f35b3480156103b257600080fd5b506103bb610d6f565b6040516103c8919061157d565b60405180910390f35b3480156103dd57600080fd5b506103e6610d93565b6040516103f391906113b0565b60405180910390f35b34801561040857600080fd5b50610411610d99565b60405161041e91906115f0565b60405180910390f35b600b5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461048557600080fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156104da576104d982610dbf565b5b60008111801561052c57506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b1561053f5761053a82611057565b6105a1565b60008114801561059157506000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156105a05761059f82611106565b5b5b61060a816105fc600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015460075461130d90919063ffffffff16565b61132390919063ffffffff16565b60078190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506106a2600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611339565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b6106f581610dbf565b50565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141561074d576000905061080d565b600061079a600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611339565b90506000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116107f55760009250505061080d565b610808818361130d90919063ffffffff16565b925050505b919050565b60075481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549050919050565b60056020528060005260406000206000915090505481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b600381815481106108b857600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461096957600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109c6919061157d565b602060405180830381865afa1580156109e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a079190611620565b90506000600267ffffffffffffffff811115610a2657610a2561164d565b5b604051908082528060200260200182016040528015610a545781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ac4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae89190611691565b81600081518110610afc57610afb6116be565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610b6d57610b6c6116be565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b8152600401610c0a94939291906117e6565b6000604051808303818588803b158015610c2357600080fd5b505af1158015610c37573d6000803e3d6000fd5b50505050506000610cec83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c9d919061157d565b602060405180830381865afa158015610cba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cde9190611620565b61130d90919063ffffffff16565b9050610d038160085461132390919063ffffffff16565b600881905550610d46610d35600754610d2784600b5461136b90919063ffffffff16565b61138190919063ffffffff16565b600a5461132390919063ffffffff16565b600a81905550505050565b60046020528060005260406000206000915090505481565b600a5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610e0f57611054565b6000610e1a826106f8565b9050600081111561105257610e3a8160095461132390919063ffffffff16565b600981905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610e9d929190611832565b6020604051808303816000875af1158015610ebc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee09190611893565b5042600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f7a81600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461132390919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555061100b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611339565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600380549050600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506003819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6003600160038054905061111a91906118ef565b8154811061112b5761112a6116be565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054815481106111a9576111a86116be565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600460006003600160038054905061124991906118ef565b8154811061125a576112596116be565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060038054806112d5576112d4611923565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b6000818361131b91906118ef565b905092915050565b600081836113319190611952565b905092915050565b6000611364600b54611356600a548561136b90919063ffffffff16565b61138190919063ffffffff16565b9050919050565b6000818361137991906119a8565b905092915050565b6000818361138f9190611a31565b905092915050565b6000819050919050565b6113aa81611397565b82525050565b60006020820190506113c560008301846113a1565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006113fb826113d0565b9050919050565b61140b816113f0565b811461141657600080fd5b50565b60008135905061142881611402565b92915050565b61143781611397565b811461144257600080fd5b50565b6000813590506114548161142e565b92915050565b60008060408385031215611471576114706113cb565b5b600061147f85828601611419565b925050602061149085828601611445565b9150509250929050565b6000602082840312156114b0576114af6113cb565b5b60006114be84828501611419565b91505092915050565b6000819050919050565b60006114ec6114e76114e2846113d0565b6114c7565b6113d0565b9050919050565b60006114fe826114d1565b9050919050565b6000611510826114f3565b9050919050565b61152081611505565b82525050565b600060208201905061153b6000830184611517565b92915050565b600060208284031215611557576115566113cb565b5b600061156584828501611445565b91505092915050565b611577816113f0565b82525050565b6000602082019050611592600083018461156e565b92915050565b60006060820190506115ad60008301866113a1565b6115ba60208301856113a1565b6115c760408301846113a1565b949350505050565b60006115da826114f3565b9050919050565b6115ea816115cf565b82525050565b600060208201905061160560008301846115e1565b92915050565b60008151905061161a8161142e565b92915050565b600060208284031215611636576116356113cb565b5b60006116448482850161160b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061168b81611402565b92915050565b6000602082840312156116a7576116a66113cb565b5b60006116b58482850161167c565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061171261170d611708846116ed565b6114c7565b611397565b9050919050565b611722816116f7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61175d816113f0565b82525050565b600061176f8383611754565b60208301905092915050565b6000602082019050919050565b600061179382611728565b61179d8185611733565b93506117a883611744565b8060005b838110156117d95781516117c08882611763565b97506117cb8361177b565b9250506001810190506117ac565b5085935050505092915050565b60006080820190506117fb6000830187611719565b818103602083015261180d8186611788565b905061181c604083018561156e565b61182960608301846113a1565b95945050505050565b6000604082019050611847600083018561156e565b61185460208301846113a1565b9392505050565b60008115159050919050565b6118708161185b565b811461187b57600080fd5b50565b60008151905061188d81611867565b92915050565b6000602082840312156118a9576118a86113cb565b5b60006118b78482850161187e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006118fa82611397565b915061190583611397565b925082821015611918576119176118c0565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600061195d82611397565b915061196883611397565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561199d5761199c6118c0565b5b828201905092915050565b60006119b382611397565b91506119be83611397565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156119f7576119f66118c0565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611a3c82611397565b9150611a4783611397565b925082611a5757611a56611a02565b5b82820490509291505056fea264697066735822122008c6d66e0a933cea0548de1078cf9c300a420e7788ef36bf0f7807e83efb27ab64736f6c634300080a0033
Deployed ByteCode Sourcemap
12148:15300:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25250:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13786:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15609:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16034:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25388:463;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25859:468;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27263:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13035:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15291:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23781:127;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26693:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16611:419;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24724:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26906:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15401:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13710:37;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13502:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13655:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23411:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13552:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16290:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12958:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24838:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13756:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15711:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6342:157;;;;;;;;;;;;;:::i;:::-;;24616:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13603:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23593:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24497:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12461:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24297:192;;;;;;;;;;;;;:::i;:::-;;13288:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6128:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13246:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15503:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12996:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12666:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16415:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13180:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13342:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13080:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12692:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13125:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27056:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24965:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15838:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26507:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26335:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13843:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23313:90;;;;;;;;;;;;;:::i;:::-;;6507:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23916:373;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12635:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25095:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25250:130;6265:12;:10;:12::i;:::-;6255:22;;:6;;;;;;;;;;:22;;;6247:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25366:6:::1;25350:5;:13;25356:6;25350:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;25250:130:::0;;:::o;13786:50::-;;;;:::o;15609:94::-;15657:13;15690:5;;;;;;;;;;;;;;;;;15683:12;;15609:94;:::o;16034:248::-;16136:4;16193:6;16158:11;:23;16170:10;16158:23;;;;;;;;;;;;;;;:32;16182:7;16158:32;;;;;;;;;;;;;;;:41;;;;16236:7;16215:37;;16224:10;16215:37;;;16245:6;16215:37;;;;;;:::i;:::-;;;;;;;;16270:4;16263:11;;16034:248;;;;:::o;25388:463::-;6265:12;:10;:12::i;:::-;6255:22;;:6;;;;;;;;;;:22;;;6247:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25561:13:::1;25542:16;:32;;;;25605:14;25585:17;:34;;;;25644:33;25662:14;25644:13;:17;;:33;;;;:::i;:::-;25630:11;:47;;;;25705:15;25688:14;:32;;;;25768:22;25787:2;25768:14;;:18;;:22;;;;:::i;:::-;25753:11;;:37;;25731:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;25388:463:::0;;;:::o;25859:468::-;6265:12;:10;:12::i;:::-;6255:22;;:6;;;;;;;;;;:22;;;6247:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26034:13:::1;26014:17;:33;;;;26079:14;26058:18;:35;;;;26119:33;26137:14;26119:13;:17;;:33;;;;:::i;:::-;26104:12;:48;;;;26180:15;26163:14;:32;;;;26244:22;26263:2;26244:14;;:18;;:22;;;;:::i;:::-;26228:12;;:38;;26206:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;25859:468:::0;;;:::o;27263:182::-;27370:4;27431:6;27399:29;27419:8;27399:19;:29::i;:::-;:38;27392:45;;27263:182;;;;:::o;13035:36::-;;;;:::o;15291:102::-;15346:7;12371:1;12439:2;:13;;;;:::i;:::-;12419:17;:33;;;;:::i;:::-;15366:19;;15291:102;:::o;23781:127::-;23843:7;23870:11;;;;;;;;;;;:28;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23863:37;;23781:127;:::o;26693:205::-;6265:12;:10;:12::i;:::-;6255:22;;:6;;;;;;;;;;:22;;;6247:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26831:7:::1;26813:15;:25;;;;26878:12;26849:26;:41;;;;26693:205:::0;;:::o;16611:419::-;16745:4;12371:1;12439:2;:13;;;;:::i;:::-;12419:17;:33;;;;:::i;:::-;16766:11;:19;16778:6;16766:19;;;;;;;;;;;;;;;:31;16786:10;16766:31;;;;;;;;;;;;;;;;:47;16762:201;;16864:87;16918:6;16864:87;;;;;;;;;;;;;;;;;:11;:19;16876:6;16864:19;;;;;;;;;;;;;;;:31;16884:10;16864:31;;;;;;;;;;;;;;;;:53;;:87;;;;;:::i;:::-;16830:11;:19;16842:6;16830:19;;;;;;;;;;;;;;;:31;16850:10;16830:31;;;;;;;;;;;;;;;:121;;;;16762:201;16982:40;16996:6;17004:9;17015:6;16982:13;:40::i;:::-;16975:47;;16611:419;;;;;:::o;24724:106::-;6265:12;:10;:12::i;:::-;6255:22;;:6;;;;;;;;;;:22;;;6247:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24816:6:::1;24798:15;:24;;;;24724:106:::0;:::o;26906:142::-;26959:7;26986:54;27024:15;12626:1;27024:9;:15::i;:::-;26986:33;27003:15;12572:6;27003:9;:15::i;:::-;12371:1;12439:2;:13;;;;:::i;:::-;12419:17;:33;;;;:::i;:::-;26986:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;26979:61;;26906:142;:::o;15401:94::-;15453:5;12371:1;15471:16;;15401:94;:::o;13710:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;13502:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;13655:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;23411:174::-;23505:7;23537:11;;;;;;;;;;;:27;;;23565:11;23537:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23530:47;;23411:174;;;:::o;13552:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;16290:117::-;16345:4;16369:30;16377:7;12371:1;12439:2;:13;;;;:::i;:::-;12419:17;:33;;;;:::i;:::-;16369:7;:30::i;:::-;16362:37;;16290:117;;;:::o;12958:31::-;;;;:::o;24838:119::-;6265:12;:10;:12::i;:::-;6255:22;;:6;;;;;;;;;;:22;;;6247:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24943:6:::1;24921:11;:19;24933:6;24921:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;24838:119:::0;;:::o;13756:23::-;;;;;;;;;;;;;:::o;15711:119::-;15777:7;15804:9;:18;15814:7;15804:18;;;;;;;;;;;;;;;;15797:25;;15711:119;;;:::o;6342:157::-;6265:12;:10;:12::i;:::-;6255:22;;:6;;;;;;;;;;:22;;;6247:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6449:1:::1;6412:40;;6433:6;::::0;::::1;;;;;;;;6412:40;;;;;;;;;;;;6488:1;6463:6:::0;::::1;:28;;;;;;;;;;;;;;;;;;6342:157::o:0;24616:100::-;6265:12;:10;:12::i;:::-;6255:22;;:6;;;;;;;;;;:22;;;6247:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24702:6:::1;24687:12;:21;;;;24616:100:::0;:::o;13603:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;23593:180::-;23691:7;23723:11;;;;;;;;;;;:29;;;23753:11;23723:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23716:49;;23593:180;;;:::o;24497:111::-;6265:12;:10;:12::i;:::-;6255:22;;:6;;;;;;;;;;:22;;;6247:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24575:7:::1;:5;:7::i;:::-;24567:25;;:33;24593:6;24567:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;24497:111:::0;:::o;12461:64::-;;;;;;;;;;;;;:::o;24297:192::-;6265:12;:10;:12::i;:::-;6255:22;;:6;;;;;;;;;;:22;;;6247:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24361:7:::1;;;;;;;;;;;24360:8;24352:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;24409:4;24399:7;;:14;;;;;;;;;;;;;;;;;;24438:4;24424:11;;:18;;;;;;;;;;;;;;;;;;24466:15;24453:10;:28;;;;24297:192::o:0;13288:47::-;;;;:::o;6128:79::-;6166:7;6193:6;;;;;;;;;;;6186:13;;6128:79;:::o;13246:35::-;;;;:::o;15503:98::-;15553:13;15586:7;;;;;;;;;;;;;;;;;15579:14;;15503:98;:::o;12996:32::-;;;;:::o;12666:19::-;;;;;;;;;;;;;:::o;16415:188::-;16522:4;16551:44;16565:10;16577:9;16588:6;16551:13;:44::i;:::-;16544:51;;16415:188;;;;:::o;13180:59::-;;;;:::o;13342:25::-;;;;:::o;13080:38::-;;;;;;;;;;;;;:::o;12692:36::-;;;;;;;;;;;;;:::o;13125:48::-;;;;:::o;27056:199::-;27151:7;27183:64;27224:22;:20;:22::i;:::-;27183:36;27196:22;27216:1;27196:15;27206:4;;;;;;;;;;;27196:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;27183:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;27176:71;;27056:199;;;:::o;24965:122::-;6265:12;:10;:12::i;:::-;6255:22;;:6;;;;;;;;;;:22;;;6247:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25073:6:::1;25050:12;:20;25063:6;25050:20;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;24965:122:::0;;:::o;15838:188::-;15958:7;15990:11;:19;16002:6;15990:19;;;;;;;;;;;;;;;:28;16010:7;15990:28;;;;;;;;;;;;;;;;15983:35;;15838:188;;;;:::o;26507:178::-;6265:12;:10;:12::i;:::-;6255:22;;:6;;;;;;;;;;:22;;;6247:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26635:8:::1;26621:11;;:22;;;;;;;;;;;;;;;;;;26670:7;26654:13;:23;;;;26507:178:::0;;:::o;26335:164::-;6265:12;:10;:12::i;:::-;6255:22;;:6;;;;;;;;;;:22;;;6247:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26469:22:::1;26445:21;;:46;;;;;;;;;;;;;;;;;;26335:164:::0;:::o;13843:19::-;;;;;;;;;;;;;:::o;23313:90::-;23358:11;;;;;;;;;;;:25;;;23384:10;23358:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23313:90::o;6507:281::-;6265:12;:10;:12::i;:::-;6255:22;;:6;;;;;;;;;;:22;;;6247:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6630:1:::1;6610:22;;:8;:22;;;;6588:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;6743:8;6714:38;;6735:6;::::0;::::1;;;;;;;;6714:38;;;;;;;;;;;;6772:8;6763:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6507:281:::0;:::o;23916:373::-;6265:12;:10;:12::i;:::-;6255:22;;:6;;;;;;;;;;:22;;;6247:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24053:4:::1;24035:23;;:6;:23;;;;:41;;;;;24072:4;;;;;;;;;;;24062:14;;:6;:14;;;;24035:41;24027:50;;;::::0;::::1;;24115:6;24088:16;:24;24105:6;24088:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;24136:6;24132:150;;;24159:11;;;;;;;;;;;:20;;;24180:6;24188:1;24159:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24132:150;;;24223:11;;;;;;;;;;;:20;;;24244:6;24252:9;:17;24262:6;24252:17;;;;;;;;;;;;;;;;24223:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24132:150;23916:373:::0;;:::o;12635:24::-;;;;;;;;;;;;;:::o;25095:147::-;6265:12;:10;:12::i;:::-;6255:22;;:6;;;;;;;;;;:22;;;6247:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25228:6:::1;25204:13;:21;25218:6;25204:21;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;25095:147:::0;;:::o;5464:115::-;5517:15;5560:10;5545:26;;5464:115;:::o;2081:98::-;2139:7;2170:1;2166;:5;;;;:::i;:::-;2159:12;;2081:98;;;;:::o;2399:::-;2457:7;2488:1;2484;:5;;;;:::i;:::-;2477:12;;2399:98;;;;:::o;2611:240::-;2731:7;2789:1;2784;:6;;2792:12;2776:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2831:1;2827;:5;2820:12;;2611:240;;;;;:::o;17038:2331::-;17164:4;17190:5;:13;17196:6;17190:13;;;;;;;;;;;;;;;;;;;;;;;;;17189:14;17181:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;17235:12;:20;17248:6;17235:20;;;;;;;;;;;;;;;;;;;;;;;;;17234:21;:49;;;;;17260:12;:23;17273:9;17260:23;;;;;;;;;;;;;;;;;;;;;;;;;17259:24;17234:49;17230:374;;;17318:12;;17308:6;:22;;17300:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;17422:7;;;;;;;;;;;17417:176;;17488:6;17480:14;;:4;;;;;;;;;;;:14;;;;:35;;;;;17506:9;17498:17;;:4;;;;;;;;;;;:17;;;;17480:35;17450:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;17417:176;17230:374;17621:13;:24;17635:9;17621:24;;;;;;;;;;;;;;;;;;;;;;;;;17616:195;;17724:15;;17688:32;17713:6;17688:20;17698:9;17688;:20::i;:::-;:24;;:32;;;;:::i;:::-;:51;;17662:137;;;;;;;;;;;;:::i;:::-;;;;;;;;;17616:195;17827:6;;;;;;;;;;;17823:87;;;17857:41;17872:6;17880:9;17891:6;17857:14;:41::i;:::-;17850:48;;;;17823:87;17926:16;:14;:16::i;:::-;17922:59;;;17959:10;:8;:10::i;:::-;17922:59;18013:90;18049:6;18013:90;;;;;;;;;;;;;;;;;:9;:17;18023:6;18013:17;;;;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;17993:9;:17;18003:6;17993:17;;;;;;;;;;;;;;;:110;;;;18116:22;18167:11;:19;18179:6;18167:19;;;;;;;;;;;;;;;;;;;;;;;;;:58;;;;18203:11;:22;18215:9;18203:22;;;;;;;;;;;;;;;;;;;;;;;;;18167:58;:112;;;;18253:4;;;;;;;;;;;18243:14;;:6;:14;;;;:35;;;;;18274:4;;;;;;;;;;;18261:17;;:9;:17;;;;18243:35;18167:112;18149:753;;;18323:6;18306:23;;18149:753;;;18362:17;18408:4;;;;;;;;;;;18398:14;;:6;:14;;;18394:497;;;18445:43;18473:14;;18445:23;18456:11;;18445:6;:10;;:23;;;;:::i;:::-;:27;;:43;;;;:::i;:::-;18433:55;;18524:21;18535:9;18524:6;:10;;:21;;;;:::i;:::-;18507:38;;18564:26;18572:6;18580:9;18564:7;:26::i;:::-;18609:20;18622:6;18609:12;:20::i;:::-;18394:497;;;18682:51;18718:14;;18682:31;18693:19;:17;:19::i;:::-;18682:6;:10;;:31;;;;:::i;:::-;:35;;:51;;;;:::i;:::-;18670:63;;18769:21;18780:9;18769:6;:10;;:21;;;;:::i;:::-;18752:38;;18809:26;18817:6;18825:9;18809:7;:26::i;:::-;18854:21;18868:6;18854:13;:21::i;:::-;18394:497;18347:555;18149:753;18937:40;18962:14;18937:9;:20;18947:9;18937:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;18914:9;:20;18924:9;18914:20;;;;;;;;;;;;;;;:63;;;;18995:16;:24;19012:6;18995:24;;;;;;;;;;;;;;;;;;;;;;;;;18990:120;;19040:11;;;;;;;;;;;:20;;;19061:6;19069:9;:17;19079:6;19069:17;;;;;;;;;;;;;;;;19040:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19036:63;;;;;;18990:120;19125:16;:27;19142:9;19125:27;;;;;;;;;;;;;;;;;;;;;;;;;19120:159;;19190:11;;;;;;;;;;;:20;;;19211:9;19222;:20;19232:9;19222:20;;;;;;;;;;;;;;;;19190:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19169:99;;;;;;19120:159;19313:9;19296:43;;19305:6;19296:43;;;19324:14;19296:43;;;;;;:::i;:::-;;;;;;;;19357:4;19350:11;;;17038:2331;;;;;;:::o;2187:98::-;2245:7;2276:1;2272;:5;;;;:::i;:::-;2265:12;;2187:98;;;;:::o;2293:::-;2351:7;2382:1;2378;:5;;;;:::i;:::-;2371:12;;2293:98;;;;:::o;19377:401::-;19504:4;19541:90;19577:6;19541:90;;;;;;;;;;;;;;;;;:9;:17;19551:6;19541:17;;;;;;;;;;;;;;;;:21;;:90;;;;;:::i;:::-;19521:9;:17;19531:6;19521:17;;;;;;;;;;;;;;;:110;;;;19665:32;19690:6;19665:9;:20;19675:9;19665:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;19642:9;:20;19652:9;19642:20;;;;;;;;;;;;;;;:55;;;;19730:9;19713:35;;19722:6;19713:35;;;19741:6;19713:35;;;;;;:::i;:::-;;;;;;;;19766:4;19759:11;;19377:401;;;;;:::o;21176:222::-;21225:4;21276;;;;;;;;;;;21262:18;;:10;:18;;;;:42;;;;;21298:6;;;;;;;;;;;21297:7;21262:42;:70;;;;;21321:11;;;;;;;;;;;21262:70;:128;;;;;21377:13;;21349:9;:24;21367:4;21349:24;;;;;;;;;;;;;;;;:41;;21262:128;21242:148;;21176:222;:::o;21406:1899::-;13927:4;13918:6;;:13;;;;;;;;;;;;;;;;;;21455:16:::1;21474:43;21497:19;;21474:18;;:22;;:43;;;;:::i;:::-;21455:62;;21530:28;21561:97;21591:15;;21621:26;;21561:15;:97::i;:::-;:148;;21691:18;;21561:148;;;21674:1;21561:148;21530:179;;21722:23;21748:102;21848:1;21748:81;21820:8;21748:53;21780:20;21748:13;;:31;;:53;;;;:::i;:::-;:71;;:81;;;;:::i;:::-;:99;;:102;;;;:::i;:::-;21722:128;;21863:20;21886:34;21904:15;21886:13;;:17;;:34;;;;:::i;:::-;21863:57;;12371:1;12439:2;:13;;;;:::i;:::-;12419:17;:33;;;;:::i;:::-;21931:11;:26;21951:4;21931:26;;;;;;;;;;;;;;;:43;21966:6;;;;;;;;;;;21931:43;;;;;;;;;;;;;;;:58;;;;22002:21;22040:1;22026:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22002:40;;22071:4;22053;22058:1;22053:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;22097:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22087:4;22092:1;22087:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;22121:21;22145;22121:45;;22179:6;;;;;;;;;;;:57;;;22251:12;22278:1;22294:4;22321;22341:15;22179:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22380:17;22400:40;22426:13;22400:21;:25;;:40;;;;:::i;:::-;22380:60;;22453:19;22475:41;22488:27;22513:1;22488:20;:24;;:27;;;;:::i;:::-;22475:8;:12;;:41;;;;:::i;:::-;22453:63;;22529:26;22558:101;22657:1;22558:80;22626:11;22558:49;22586:20;22558:9;:27;;:49;;;;:::i;:::-;:67;;:80;;;;:::i;:::-;:98;;:101;;;;:::i;:::-;22529:130;;22670:27;22700:75;22753:11;22700:34;22714:19;;22700:9;:13;;:34;;;;:::i;:::-;:38;;:75;;;;:::i;:::-;22670:105;;22792:11;;;;;;;;;;;:19;;;22819;22792:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;22788:65;;;;;;22887:1;22869:15;:19;22865:364;;;22905:6;;;;;;;;;;;:22;;;22935:18;22981:4;23005:15;23039:1;23059::::0;23079:21:::1;;;;;;;;;;;23119:15;22905:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23169:48;23181:18;23201:15;23169:48;;;;;;;:::i;:::-;;;;;;;;22865:364;23262:1;23241:18;:22;;;;23296:1;23274:19;:23;;;;21444:1861;;;;;;;;;;13963:5:::0;13954:6;;:14;;;;;;;;;;;;;;;;;;21406:1899::o;19786:204::-;19885:39;19914:9;19885;:24;19903:4;19885:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;19858:9;:24;19876:4;19858:24;;;;;;;;;;;;;;;:66;;;;19965:4;19940:42;;19949:6;19940:42;;;19972:9;19940:42;;;;;;:::i;:::-;;;;;;;;19786:204;;:::o;19998:246::-;20079:49;20113:14;;20079:29;20091:16;;20079:7;:11;;:29;;;;:::i;:::-;:33;;:49;;;;:::i;:::-;20057:18;;:71;;;;;;;:::i;:::-;;;;;;;;20162:74;20211:14;;20162:30;20174:17;;20162:7;:11;;:30;;;;:::i;:::-;:34;;:74;;;;:::i;:::-;20139:19;;:97;;;;;;;:::i;:::-;;;;;;;;19998:246;:::o;20533:635::-;20584:7;20626:25;20641:9;20626:10;;:14;;:25;;;;:::i;:::-;20607:15;:44;20604:557;;20674:3;20667:10;;;;20604:557;20716:25;20731:9;20716:10;;:14;;:25;;;;:::i;:::-;20698:15;:43;:92;;;;;20764:26;20779:10;20764;;:14;;:26;;;;:::i;:::-;20745:15;:45;;20698:92;20695:466;;;20813:3;20806:10;;;;20695:466;20855:26;20870:10;20855;;:14;;:26;;;;:::i;:::-;20837:15;:44;:93;;;;;20904:26;20919:10;20904;;:14;;:26;;;;:::i;:::-;20885:15;:45;;20837:93;20834:327;;;20953:3;20946:10;;;;20834:327;20995:26;21010:10;20995;;:14;;:26;;;;:::i;:::-;20977:15;:44;:93;;;;;21044:26;21059:10;21044;;:14;;:26;;;;:::i;:::-;21025:15;:45;;20977:93;20974:187;;;21093:3;21086:10;;;;20974:187;21137:12;;21130:19;;20533:635;;:::o;20252:273::-;20334:74;20383:14;;20334:30;20346:17;;20334:7;:11;;:30;;;;:::i;:::-;:34;;:74;;;;:::i;:::-;20312:18;;:96;;;;;;;:::i;:::-;;;;;;;;20442:75;20492:14;;20442:31;20454:18;;20442:7;:11;;:31;;;;:::i;:::-;:35;;:75;;;;:::i;:::-;20419:19;;:98;;;;;;;:::i;:::-;;;;;;;;20252:273;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:90::-;875:7;918:5;911:13;904:21;893:32;;841:90;;;:::o;937:116::-;1007:21;1022:5;1007:21;:::i;:::-;1000:5;997:32;987:60;;1043:1;1040;1033:12;987:60;937:116;:::o;1059:133::-;1102:5;1140:6;1127:20;1118:29;;1156:30;1180:5;1156:30;:::i;:::-;1059:133;;;;:::o;1198:468::-;1263:6;1271;1320:2;1308:9;1299:7;1295:23;1291:32;1288:119;;;1326:79;;:::i;:::-;1288:119;1446:1;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1417:117;1573:2;1599:50;1641:7;1632:6;1621:9;1617:22;1599:50;:::i;:::-;1589:60;;1544:115;1198:468;;;;;:::o;1672:77::-;1709:7;1738:5;1727:16;;1672:77;;;:::o;1755:118::-;1842:24;1860:5;1842:24;:::i;:::-;1837:3;1830:37;1755:118;;:::o;1879:222::-;1972:4;2010:2;1999:9;1995:18;1987:26;;2023:71;2091:1;2080:9;2076:17;2067:6;2023:71;:::i;:::-;1879:222;;;;:::o;2107:99::-;2159:6;2193:5;2187:12;2177:22;;2107:99;;;:::o;2212:169::-;2296:11;2330:6;2325:3;2318:19;2370:4;2365:3;2361:14;2346:29;;2212:169;;;;:::o;2387:307::-;2455:1;2465:113;2479:6;2476:1;2473:13;2465:113;;;2564:1;2559:3;2555:11;2549:18;2545:1;2540:3;2536:11;2529:39;2501:2;2498:1;2494:10;2489:15;;2465:113;;;2596:6;2593:1;2590:13;2587:101;;;2676:1;2667:6;2662:3;2658:16;2651:27;2587:101;2436:258;2387:307;;;:::o;2700:102::-;2741:6;2792:2;2788:7;2783:2;2776:5;2772:14;2768:28;2758:38;;2700:102;;;:::o;2808:364::-;2896:3;2924:39;2957:5;2924:39;:::i;:::-;2979:71;3043:6;3038:3;2979:71;:::i;:::-;2972:78;;3059:52;3104:6;3099:3;3092:4;3085:5;3081:16;3059:52;:::i;:::-;3136:29;3158:6;3136:29;:::i;:::-;3131:3;3127:39;3120:46;;2900:272;2808:364;;;;:::o;3178:313::-;3291:4;3329:2;3318:9;3314:18;3306:26;;3378:9;3372:4;3368:20;3364:1;3353:9;3349:17;3342:47;3406:78;3479:4;3470:6;3406:78;:::i;:::-;3398:86;;3178:313;;;;:::o;3497:122::-;3570:24;3588:5;3570:24;:::i;:::-;3563:5;3560:35;3550:63;;3609:1;3606;3599:12;3550:63;3497:122;:::o;3625:139::-;3671:5;3709:6;3696:20;3687:29;;3725:33;3752:5;3725:33;:::i;:::-;3625:139;;;;:::o;3770:474::-;3838:6;3846;3895:2;3883:9;3874:7;3870:23;3866:32;3863:119;;;3901:79;;:::i;:::-;3863:119;4021:1;4046:53;4091:7;4082:6;4071:9;4067:22;4046:53;:::i;:::-;4036:63;;3992:117;4148:2;4174:53;4219:7;4210:6;4199:9;4195:22;4174:53;:::i;:::-;4164:63;;4119:118;3770:474;;;;;:::o;4250:109::-;4331:21;4346:5;4331:21;:::i;:::-;4326:3;4319:34;4250:109;;:::o;4365:210::-;4452:4;4490:2;4479:9;4475:18;4467:26;;4503:65;4565:1;4554:9;4550:17;4541:6;4503:65;:::i;:::-;4365:210;;;;:::o;4581:619::-;4658:6;4666;4674;4723:2;4711:9;4702:7;4698:23;4694:32;4691:119;;;4729:79;;:::i;:::-;4691:119;4849:1;4874:53;4919:7;4910:6;4899:9;4895:22;4874:53;:::i;:::-;4864:63;;4820:117;4976:2;5002:53;5047:7;5038:6;5027:9;5023:22;5002:53;:::i;:::-;4992:63;;4947:118;5104:2;5130:53;5175:7;5166:6;5155:9;5151:22;5130:53;:::i;:::-;5120:63;;5075:118;4581:619;;;;;:::o;5206:474::-;5274:6;5282;5331:2;5319:9;5310:7;5306:23;5302:32;5299:119;;;5337:79;;:::i;:::-;5299:119;5457:1;5482:53;5527:7;5518:6;5507:9;5503:22;5482:53;:::i;:::-;5472:63;;5428:117;5584:2;5610:53;5655:7;5646:6;5635:9;5631:22;5610:53;:::i;:::-;5600:63;;5555:118;5206:474;;;;;:::o;5686:619::-;5763:6;5771;5779;5828:2;5816:9;5807:7;5803:23;5799:32;5796:119;;;5834:79;;:::i;:::-;5796:119;5954:1;5979:53;6024:7;6015:6;6004:9;6000:22;5979:53;:::i;:::-;5969:63;;5925:117;6081:2;6107:53;6152:7;6143:6;6132:9;6128:22;6107:53;:::i;:::-;6097:63;;6052:118;6209:2;6235:53;6280:7;6271:6;6260:9;6256:22;6235:53;:::i;:::-;6225:63;;6180:118;5686:619;;;;;:::o;6311:329::-;6370:6;6419:2;6407:9;6398:7;6394:23;6390:32;6387:119;;;6425:79;;:::i;:::-;6387:119;6545:1;6570:53;6615:7;6606:6;6595:9;6591:22;6570:53;:::i;:::-;6560:63;;6516:117;6311:329;;;;:::o;6646:86::-;6681:7;6721:4;6714:5;6710:16;6699:27;;6646:86;;;:::o;6738:112::-;6821:22;6837:5;6821:22;:::i;:::-;6816:3;6809:35;6738:112;;:::o;6856:214::-;6945:4;6983:2;6972:9;6968:18;6960:26;;6996:67;7060:1;7049:9;7045:17;7036:6;6996:67;:::i;:::-;6856:214;;;;:::o;7076:329::-;7135:6;7184:2;7172:9;7163:7;7159:23;7155:32;7152:119;;;7190:79;;:::i;:::-;7152:119;7310:1;7335:53;7380:7;7371:6;7360:9;7356:22;7335:53;:::i;:::-;7325:63;;7281:117;7076:329;;;;:::o;7411:118::-;7498:24;7516:5;7498:24;:::i;:::-;7493:3;7486:37;7411:118;;:::o;7535:222::-;7628:4;7666:2;7655:9;7651:18;7643:26;;7679:71;7747:1;7736:9;7732:17;7723:6;7679:71;:::i;:::-;7535:222;;;;:::o;7763:60::-;7791:3;7812:5;7805:12;;7763:60;;;:::o;7829:142::-;7879:9;7912:53;7930:34;7939:24;7957:5;7939:24;:::i;:::-;7930:34;:::i;:::-;7912:53;:::i;:::-;7899:66;;7829:142;;;:::o;7977:126::-;8027:9;8060:37;8091:5;8060:37;:::i;:::-;8047:50;;7977:126;;;:::o;8109:154::-;8187:9;8220:37;8251:5;8220:37;:::i;:::-;8207:50;;8109:154;;;:::o;8269:187::-;8384:65;8443:5;8384:65;:::i;:::-;8379:3;8372:78;8269:187;;:::o;8462:278::-;8583:4;8621:2;8610:9;8606:18;8598:26;;8634:99;8730:1;8719:9;8715:17;8706:6;8634:99;:::i;:::-;8462:278;;;;:::o;8746:474::-;8814:6;8822;8871:2;8859:9;8850:7;8846:23;8842:32;8839:119;;;8877:79;;:::i;:::-;8839:119;8997:1;9022:53;9067:7;9058:6;9047:9;9043:22;9022:53;:::i;:::-;9012:63;;8968:117;9124:2;9150:53;9195:7;9186:6;9175:9;9171:22;9150:53;:::i;:::-;9140:63;;9095:118;8746:474;;;;;:::o;9226:468::-;9291:6;9299;9348:2;9336:9;9327:7;9323:23;9319:32;9316:119;;;9354:79;;:::i;:::-;9316:119;9474:1;9499:50;9541:7;9532:6;9521:9;9517:22;9499:50;:::i;:::-;9489:60;;9445:114;9598:2;9624:53;9669:7;9660:6;9649:9;9645:22;9624:53;:::i;:::-;9614:63;;9569:118;9226:468;;;;;:::o;9700:144::-;9768:9;9801:37;9832:5;9801:37;:::i;:::-;9788:50;;9700:144;;;:::o;9850:167::-;9955:55;10004:5;9955:55;:::i;:::-;9950:3;9943:68;9850:167;;:::o;10023:258::-;10134:4;10172:2;10161:9;10157:18;10149:26;;10185:89;10271:1;10260:9;10256:17;10247:6;10185:89;:::i;:::-;10023:258;;;;:::o;10287:182::-;10427:34;10423:1;10415:6;10411:14;10404:58;10287:182;:::o;10475:366::-;10617:3;10638:67;10702:2;10697:3;10638:67;:::i;:::-;10631:74;;10714:93;10803:3;10714:93;:::i;:::-;10832:2;10827:3;10823:12;10816:19;;10475:366;;;:::o;10847:419::-;11013:4;11051:2;11040:9;11036:18;11028:26;;11100:9;11094:4;11090:20;11086:1;11075:9;11071:17;11064:47;11128:131;11254:4;11128:131;:::i;:::-;11120:139;;10847:419;;;:::o;11272:175::-;11412:27;11408:1;11400:6;11396:14;11389:51;11272:175;:::o;11453:366::-;11595:3;11616:67;11680:2;11675:3;11616:67;:::i;:::-;11609:74;;11692:93;11781:3;11692:93;:::i;:::-;11810:2;11805:3;11801:12;11794:19;;11453:366;;;:::o;11825:419::-;11991:4;12029:2;12018:9;12014:18;12006:26;;12078:9;12072:4;12068:20;12064:1;12053:9;12049:17;12042:47;12106:131;12232:4;12106:131;:::i;:::-;12098:139;;11825:419;;;:::o;12250:180::-;12298:77;12295:1;12288:88;12395:4;12392:1;12385:15;12419:4;12416:1;12409:15;12436:102;12478:8;12525:5;12522:1;12518:13;12497:34;;12436:102;;;:::o;12544:848::-;12605:5;12612:4;12636:6;12627:15;;12660:5;12651:14;;12674:712;12695:1;12685:8;12682:15;12674:712;;;12790:4;12785:3;12781:14;12775:4;12772:24;12769:50;;;12799:18;;:::i;:::-;12769:50;12849:1;12839:8;12835:16;12832:451;;;13264:4;13257:5;13253:16;13244:25;;12832:451;13314:4;13308;13304:15;13296:23;;13344:32;13367:8;13344:32;:::i;:::-;13332:44;;12674:712;;;12544:848;;;;;;;:::o;13398:1073::-;13452:5;13643:8;13633:40;;13664:1;13655:10;;13666:5;;13633:40;13692:4;13682:36;;13709:1;13700:10;;13711:5;;13682:36;13778:4;13826:1;13821:27;;;;13862:1;13857:191;;;;13771:277;;13821:27;13839:1;13830:10;;13841:5;;;13857:191;13902:3;13892:8;13889:17;13886:43;;;13909:18;;:::i;:::-;13886:43;13958:8;13955:1;13951:16;13942:25;;13993:3;13986:5;13983:14;13980:40;;;14000:18;;:::i;:::-;13980:40;14033:5;;;13771:277;;14157:2;14147:8;14144:16;14138:3;14132:4;14129:13;14125:36;14107:2;14097:8;14094:16;14089:2;14083:4;14080:12;14076:35;14060:111;14057:246;;;14213:8;14207:4;14203:19;14194:28;;14248:3;14241:5;14238:14;14235:40;;;14255:18;;:::i;:::-;14235:40;14288:5;;14057:246;14328:42;14366:3;14356:8;14350:4;14347:1;14328:42;:::i;:::-;14313:57;;;;14402:4;14397:3;14393:14;14386:5;14383:25;14380:51;;;14411:18;;:::i;:::-;14380:51;14460:4;14453:5;14449:16;14440:25;;13398:1073;;;;;;:::o;14477:281::-;14535:5;14559:23;14577:4;14559:23;:::i;:::-;14551:31;;14603:25;14619:8;14603:25;:::i;:::-;14591:37;;14647:104;14684:66;14674:8;14668:4;14647:104;:::i;:::-;14638:113;;14477:281;;;;:::o;14764:348::-;14804:7;14827:20;14845:1;14827:20;:::i;:::-;14822:25;;14861:20;14879:1;14861:20;:::i;:::-;14856:25;;15049:1;14981:66;14977:74;14974:1;14971:81;14966:1;14959:9;14952:17;14948:105;14945:131;;;15056:18;;:::i;:::-;14945:131;15104:1;15101;15097:9;15086:20;;14764:348;;;;:::o;15118:143::-;15175:5;15206:6;15200:13;15191:22;;15222:33;15249:5;15222:33;:::i;:::-;15118:143;;;;:::o;15267:351::-;15337:6;15386:2;15374:9;15365:7;15361:23;15357:32;15354:119;;;15392:79;;:::i;:::-;15354:119;15512:1;15537:64;15593:7;15584:6;15573:9;15569:22;15537:64;:::i;:::-;15527:74;;15483:128;15267:351;;;;:::o;15624:165::-;15764:17;15760:1;15752:6;15748:14;15741:41;15624:165;:::o;15795:366::-;15937:3;15958:67;16022:2;16017:3;15958:67;:::i;:::-;15951:74;;16034:93;16123:3;16034:93;:::i;:::-;16152:2;16147:3;16143:12;16136:19;;15795:366;;;:::o;16167:419::-;16333:4;16371:2;16360:9;16356:18;16348:26;;16420:9;16414:4;16410:20;16406:1;16395:9;16391:17;16384:47;16448:131;16574:4;16448:131;:::i;:::-;16440:139;;16167:419;;;:::o;16592:225::-;16732:34;16728:1;16720:6;16716:14;16709:58;16801:8;16796:2;16788:6;16784:15;16777:33;16592:225;:::o;16823:366::-;16965:3;16986:67;17050:2;17045:3;16986:67;:::i;:::-;16979:74;;17062:93;17151:3;17062:93;:::i;:::-;17180:2;17175:3;17171:12;17164:19;;16823:366;;;:::o;17195:419::-;17361:4;17399:2;17388:9;17384:18;17376:26;;17448:9;17442:4;17438:20;17434:1;17423:9;17419:17;17412:47;17476:131;17602:4;17476:131;:::i;:::-;17468:139;;17195:419;;;:::o;17620:85::-;17665:7;17694:5;17683:16;;17620:85;;;:::o;17711:158::-;17769:9;17802:61;17820:42;17829:32;17855:5;17829:32;:::i;:::-;17820:42;:::i;:::-;17802:61;:::i;:::-;17789:74;;17711:158;;;:::o;17875:147::-;17970:45;18009:5;17970:45;:::i;:::-;17965:3;17958:58;17875:147;;:::o;18028:348::-;18157:4;18195:2;18184:9;18180:18;18172:26;;18208:71;18276:1;18265:9;18261:17;18252:6;18208:71;:::i;:::-;18289:80;18365:2;18354:9;18350:18;18341:6;18289:80;:::i;:::-;18028:348;;;;;:::o;18382:332::-;18503:4;18541:2;18530:9;18526:18;18518:26;;18554:71;18622:1;18611:9;18607:17;18598:6;18554:71;:::i;:::-;18635:72;18703:2;18692:9;18688:18;18679:6;18635:72;:::i;:::-;18382:332;;;;;:::o;18720:305::-;18760:3;18779:20;18797:1;18779:20;:::i;:::-;18774:25;;18813:20;18831:1;18813:20;:::i;:::-;18808:25;;18967:1;18899:66;18895:74;18892:1;18889:81;18886:107;;;18973:18;;:::i;:::-;18886:107;19017:1;19014;19010:9;19003:16;;18720:305;;;;:::o;19031:180::-;19079:77;19076:1;19069:88;19176:4;19173:1;19166:15;19200:4;19197:1;19190:15;19217:185;19257:1;19274:20;19292:1;19274:20;:::i;:::-;19269:25;;19308:20;19326:1;19308:20;:::i;:::-;19303:25;;19347:1;19337:35;;19352:18;;:::i;:::-;19337:35;19394:1;19391;19387:9;19382:14;;19217:185;;;;:::o;19408:162::-;19548:14;19544:1;19536:6;19532:14;19525:38;19408:162;:::o;19576:366::-;19718:3;19739:67;19803:2;19798:3;19739:67;:::i;:::-;19732:74;;19815:93;19904:3;19815:93;:::i;:::-;19933:2;19928:3;19924:12;19917:19;;19576:366;;;:::o;19948:419::-;20114:4;20152:2;20141:9;20137:18;20129:26;;20201:9;20195:4;20191:20;20187:1;20176:9;20172:17;20165:47;20229:131;20355:4;20229:131;:::i;:::-;20221:139;;19948:419;;;:::o;20373:171::-;20513:23;20509:1;20501:6;20497:14;20490:47;20373:171;:::o;20550:366::-;20692:3;20713:67;20777:2;20772:3;20713:67;:::i;:::-;20706:74;;20789:93;20878:3;20789:93;:::i;:::-;20907:2;20902:3;20898:12;20891:19;;20550:366;;;:::o;20922:419::-;21088:4;21126:2;21115:9;21111:18;21103:26;;21175:9;21169:4;21165:20;21161:1;21150:9;21146:17;21139:47;21203:131;21329:4;21203:131;:::i;:::-;21195:139;;20922:419;;;:::o;21347:168::-;21487:20;21483:1;21475:6;21471:14;21464:44;21347:168;:::o;21521:366::-;21663:3;21684:67;21748:2;21743:3;21684:67;:::i;:::-;21677:74;;21760:93;21849:3;21760:93;:::i;:::-;21878:2;21873:3;21869:12;21862:19;;21521:366;;;:::o;21893:419::-;22059:4;22097:2;22086:9;22082:18;22074:26;;22146:9;22140:4;22136:20;22132:1;22121:9;22117:17;22110:47;22174:131;22300:4;22174:131;:::i;:::-;22166:139;;21893:419;;;:::o;22318:174::-;22458:26;22454:1;22446:6;22442:14;22435:50;22318:174;:::o;22498:366::-;22640:3;22661:67;22725:2;22720:3;22661:67;:::i;:::-;22654:74;;22737:93;22826:3;22737:93;:::i;:::-;22855:2;22850:3;22846:12;22839:19;;22498:366;;;:::o;22870:419::-;23036:4;23074:2;23063:9;23059:18;23051:26;;23123:9;23117:4;23113:20;23109:1;23098:9;23094:17;23087:47;23151:131;23277:4;23151:131;:::i;:::-;23143:139;;22870:419;;;:::o;23295:191::-;23335:4;23355:20;23373:1;23355:20;:::i;:::-;23350:25;;23389:20;23407:1;23389:20;:::i;:::-;23384:25;;23428:1;23425;23422:8;23419:34;;;23433:18;;:::i;:::-;23419:34;23478:1;23475;23471:9;23463:17;;23295:191;;;;:::o;23492:180::-;23540:77;23537:1;23530:88;23637:4;23634:1;23627:15;23661:4;23658:1;23651:15;23678:180;23726:77;23723:1;23716:88;23823:4;23820:1;23813:15;23847:4;23844:1;23837:15;23864:143;23921:5;23952:6;23946:13;23937:22;;23968:33;23995:5;23968:33;:::i;:::-;23864:143;;;;:::o;24013:351::-;24083:6;24132:2;24120:9;24111:7;24107:23;24103:32;24100:119;;;24138:79;;:::i;:::-;24100:119;24258:1;24283:64;24339:7;24330:6;24319:9;24315:22;24283:64;:::i;:::-;24273:74;;24229:128;24013:351;;;;:::o;24370:114::-;24437:6;24471:5;24465:12;24455:22;;24370:114;;;:::o;24490:184::-;24589:11;24623:6;24618:3;24611:19;24663:4;24658:3;24654:14;24639:29;;24490:184;;;;:::o;24680:132::-;24747:4;24770:3;24762:11;;24800:4;24795:3;24791:14;24783:22;;24680:132;;;:::o;24818:108::-;24895:24;24913:5;24895:24;:::i;:::-;24890:3;24883:37;24818:108;;:::o;24932:179::-;25001:10;25022:46;25064:3;25056:6;25022:46;:::i;:::-;25100:4;25095:3;25091:14;25077:28;;24932:179;;;;:::o;25117:113::-;25187:4;25219;25214:3;25210:14;25202:22;;25117:113;;;:::o;25266:732::-;25385:3;25414:54;25462:5;25414:54;:::i;:::-;25484:86;25563:6;25558:3;25484:86;:::i;:::-;25477:93;;25594:56;25644:5;25594:56;:::i;:::-;25673:7;25704:1;25689:284;25714:6;25711:1;25708:13;25689:284;;;25790:6;25784:13;25817:63;25876:3;25861:13;25817:63;:::i;:::-;25810:70;;25903:60;25956:6;25903:60;:::i;:::-;25893:70;;25749:224;25736:1;25733;25729:9;25724:14;;25689:284;;;25693:14;25989:3;25982:10;;25390:608;;;25266:732;;;;:::o;26004:831::-;26267:4;26305:3;26294:9;26290:19;26282:27;;26319:71;26387:1;26376:9;26372:17;26363:6;26319:71;:::i;:::-;26400:80;26476:2;26465:9;26461:18;26452:6;26400:80;:::i;:::-;26527:9;26521:4;26517:20;26512:2;26501:9;26497:18;26490:48;26555:108;26658:4;26649:6;26555:108;:::i;:::-;26547:116;;26673:72;26741:2;26730:9;26726:18;26717:6;26673:72;:::i;:::-;26755:73;26823:3;26812:9;26808:19;26799:6;26755:73;:::i;:::-;26004:831;;;;;;;;:::o;26841:807::-;27090:4;27128:3;27117:9;27113:19;27105:27;;27142:71;27210:1;27199:9;27195:17;27186:6;27142:71;:::i;:::-;27223:72;27291:2;27280:9;27276:18;27267:6;27223:72;:::i;:::-;27305:80;27381:2;27370:9;27366:18;27357:6;27305:80;:::i;:::-;27395;27471:2;27460:9;27456:18;27447:6;27395:80;:::i;:::-;27485:73;27553:3;27542:9;27538:19;27529:6;27485:73;:::i;:::-;27568;27636:3;27625:9;27621:19;27612:6;27568:73;:::i;:::-;26841:807;;;;;;;;;:::o;27654:663::-;27742:6;27750;27758;27807:2;27795:9;27786:7;27782:23;27778:32;27775:119;;;27813:79;;:::i;:::-;27775:119;27933:1;27958:64;28014:7;28005:6;27994:9;27990:22;27958:64;:::i;:::-;27948:74;;27904:128;28071:2;28097:64;28153:7;28144:6;28133:9;28129:22;28097:64;:::i;:::-;28087:74;;28042:129;28210:2;28236:64;28292:7;28283:6;28272:9;28268:22;28236:64;:::i;:::-;28226:74;;28181:129;27654:663;;;;;:::o;28323:332::-;28444:4;28482:2;28471:9;28467:18;28459:26;;28495:71;28563:1;28552:9;28548:17;28539:6;28495:71;:::i;:::-;28576:72;28644:2;28633:9;28629:18;28620:6;28576:72;:::i;:::-;28323:332;;;;;:::o
Metadata Hash
ipfs://08c6d66e0a933cea0548de1078cf9c300a420e7788ef36bf0f7807e83efb27ab