More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 96 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 16688928 | 620 days ago | IN | 0 ETH | 0.00124729 | ||||
Approve | 16645170 | 626 days ago | IN | 0 ETH | 0.00125781 | ||||
Approve | 16642569 | 627 days ago | IN | 0 ETH | 0.00400514 | ||||
Transfer | 16640632 | 627 days ago | IN | 0 ETH | 0.01259308 | ||||
Approve | 16640421 | 627 days ago | IN | 0 ETH | 0.00132894 | ||||
Transfer | 16640292 | 627 days ago | IN | 0 ETH | 0.01189627 | ||||
Transfer | 16640286 | 627 days ago | IN | 0 ETH | 0.01254202 | ||||
Transfer | 16640269 | 627 days ago | IN | 0 ETH | 0.01318369 | ||||
Transfer | 16640265 | 627 days ago | IN | 0 ETH | 0.01376369 | ||||
Approve | 16640260 | 627 days ago | IN | 0 ETH | 0.0014918 | ||||
Transfer | 16640223 | 627 days ago | IN | 0 ETH | 0.01395831 | ||||
Approve | 16640218 | 627 days ago | IN | 0 ETH | 0.00145296 | ||||
Approve | 16640152 | 627 days ago | IN | 0 ETH | 0.00164962 | ||||
Clearstuck Token | 16640125 | 627 days ago | IN | 0 ETH | 0.01196429 | ||||
Clearstuck Token | 16640102 | 627 days ago | IN | 0 ETH | 0.00998313 | ||||
Clearstuck Token | 16640081 | 627 days ago | IN | 0 ETH | 0.01110329 | ||||
Approve | 16640075 | 627 days ago | IN | 0 ETH | 0.00160196 | ||||
Clearstuck Token | 16640068 | 627 days ago | IN | 0 ETH | 0.01095504 | ||||
Approve | 16640058 | 627 days ago | IN | 0 ETH | 0.00153414 | ||||
Clearstuck Token | 16640048 | 627 days ago | IN | 0 ETH | 0.01156314 | ||||
Clear Stuck ETH | 16639997 | 627 days ago | IN | 0 ETH | 0.00087022 | ||||
Approve | 16639997 | 627 days ago | IN | 0 ETH | 0.00154378 | ||||
Clear Stuck ETH | 16639982 | 627 days ago | IN | 0 ETH | 0.00095372 | ||||
Claim Dividend | 16639949 | 627 days ago | IN | 0 ETH | 0.00125987 | ||||
Clear Stuck ETH | 16639938 | 627 days ago | IN | 0 ETH | 0.00103747 |
Latest 21 internal transactions
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
16639982 | 627 days ago | 0.13362797 ETH | ||||
16639964 | 627 days ago | 0.03340699 ETH | ||||
16639964 | 627 days ago | 0.13362797 ETH | ||||
16639964 | 627 days ago | 0.16703496 ETH | ||||
16639938 | 627 days ago | 0.26942511 ETH | ||||
16639833 | 627 days ago | 0.02502676 ETH | ||||
16639833 | 627 days ago | 0.10010705 ETH | ||||
16639833 | 627 days ago | 0.12513381 ETH | ||||
16639723 | 627 days ago | 0.06735627 ETH | ||||
16639723 | 627 days ago | 0.26942511 ETH | ||||
16639723 | 627 days ago | 0.33678139 ETH | ||||
16639719 | 627 days ago | 0.06343438 ETH | ||||
16639719 | 627 days ago | 0.25373754 ETH | ||||
16639719 | 627 days ago | 0.31717192 ETH | ||||
16639717 | 627 days ago | 0.06151295 ETH | ||||
16639717 | 627 days ago | 0.24605182 ETH | ||||
16639717 | 627 days ago | 0.30756477 ETH | ||||
16639715 | 627 days ago | 0.05409349 ETH | ||||
16639715 | 627 days ago | 0.21637397 ETH | ||||
16639715 | 627 days ago | 0.27046746 ETH | ||||
16638995 | 627 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Name:
BagOfEthereum
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-02-16 */ // SPDX-License-Identifier: UNLICENSED // https://t.me/BagofEthereumOfficial pragma solidity ^0.8.11; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); 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; return msg.data; } } contract Ownable is Context { address public _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; authorizations[_owner] = true; emit OwnershipTransferred(address(0), msgSender); } mapping (address => bool) internal authorizations; 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 = 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 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 addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IDividendDistributor { function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external; function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function process(uint256 gas) external; } contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address _token; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } IERC20 rewardtoken = IERC20(0x9813037ee2218799597d83D4a5B6F3b6778218d9); address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; IDEXRouter router; address[] shareholders; mapping (address => uint256) shareholderIndexes; mapping (address => uint256) shareholderClaims; mapping (address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed; uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10 ** 36; uint256 public minPeriod = 60 * 60; uint256 public minDistribution = 1 * (10 ** 18); uint256 currentIndex; bool initialized; modifier initialization() { require(!initialized); _; initialized = true; } modifier onlyToken() { require(msg.sender == _token); _; } constructor (address _router) { router = _router != address(0) ? IDEXRouter(_router) : IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _token = msg.sender; } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken { minPeriod = _minPeriod; minDistribution = _minDistribution; } function setRewardToken(address _rewardToken) external onlyToken{ rewardtoken = IERC20(_rewardToken); } 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 = rewardtoken.balanceOf(address(this)); address[] memory path = new address[](2); path[0] = WETH; path[1] = address(rewardtoken); router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}( 0, path, address(this), block.timestamp ); uint256 amount = rewardtoken.balanceOf(address(this)).sub(balanceBefore); totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)); } function process(uint256 gas) external override onlyToken { uint256 shareholderCount = shareholders.length; if(shareholderCount == 0) { return; } uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; while(gasUsed < gas && iterations < shareholderCount) { if(currentIndex >= shareholderCount){ currentIndex = 0; } if(shouldDistribute(shareholders[currentIndex])){ distributeDividend(shareholders[currentIndex]); } gasUsed = gasUsed.add(gasLeft.sub(gasleft())); gasLeft = gasleft(); currentIndex++; iterations++; } } function shouldDistribute(address shareholder) internal view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution; } function distributeDividend(address shareholder) internal { if(shares[shareholder].amount == 0){ return; } uint256 amount = getUnpaidEarnings(shareholder); if(amount > 0){ totalDistributed = totalDistributed.add(amount); rewardtoken.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 shareholder) external onlyToken{ distributeDividend(shareholder); } function rescueToken(address tokenAddress,address _receiver, uint256 tokens) external onlyToken returns (bool success){ return IERC20(tokenAddress).transfer(_receiver, tokens); } 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(); } } contract BagOfEthereum is Ownable, IERC20 { using SafeMath for uint256; address WETH; address rewardtoken = 0x9813037ee2218799597d83D4a5B6F3b6778218d9; address DEAD = 0x000000000000000000000000000000000000dEaD; address ZERO = 0x0000000000000000000000000000000000000000; string constant _name = "Bag Of Ethereum"; string constant _symbol = "BOT"; uint8 constant _decimals = 9; uint256 _totalSupply = 1 * 10**9 * 10**_decimals; uint256 public _maxTxAmount = _totalSupply.mul(1).div(100); uint256 public _maxholdingToken = _totalSupply.mul(1).div(100); mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; mapping (address => bool) public isDividendExempt; uint256 private liquidityFee = 0; uint256 private rewardFee = 4; uint256 private marketingFee = 1; uint256 private ecosystemFee = 0; uint256 private devFee = 0; uint256 private burnFee = 0; uint256 public totalFee = marketingFee + rewardFee + liquidityFee + ecosystemFee + burnFee + devFee; uint256 private feeDenominator = 100; uint256 sellMultiplier = 1900; uint256 buyMultiplier = 900; uint256 transferMultiplier = 1000; address private autoLiquidityReceiver; address public marketingFeeReceiver; address private ecosystemFeeReceiver; address private devFeeReceiver; address private burnFeeReceiver; uint256 targetLiquidity = 35; uint256 targetLiquidityDenominator = 100; IDEXRouter public router; address public pair; bool public tradingOpen = false; uint256 launchblock; DividendDistributor private distributor; uint256 distributorGas = 500000; bool public swapEnabled = true; uint256 public swapThreshold = _totalSupply * 35 / 1000; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () { router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); WETH = router.WETH(); pair = IDEXFactory(router.factory()).createPair(WETH, address(this)); _allowances[address(this)][address(router)] = type(uint256).max; distributor = new DividendDistributor(address(router)); isFeeExempt[msg.sender] = true; isFeeExempt[marketingFeeReceiver] = true; isTxLimitExempt[msg.sender] = true; isTxLimitExempt[marketingFeeReceiver] = true; isTxLimitExempt[pair] = true; isTxLimitExempt[address(this)] = true; isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; isDividendExempt[DEAD] = true; autoLiquidityReceiver = msg.sender; marketingFeeReceiver = 0xa24D79CDdA418c1a54D6D1D21fAdED5b68B75118; ecosystemFeeReceiver = msg.sender; devFeeReceiver = msg.sender; burnFeeReceiver = DEAD; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable { } function totalSupply() external view 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 getOwner() external view override returns (address) {return owner();} 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, type(uint256).max); } 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] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function updateMaxHolding(uint256 maxWallPercent_base1000) external onlyOwner { require(_maxholdingToken >= _totalSupply / 1000); _maxholdingToken = (_totalSupply * maxWallPercent_base1000 ) / 1000; } function updateMaxTX(uint256 maxTXPercentage_base1000) external onlyOwner { require(_maxTxAmount >= _totalSupply / 1000); _maxTxAmount = (_totalSupply * maxTXPercentage_base1000 ) / 1000; } function manualSwapCA() external onlyOwner { swapBack(); } function noLimits() external onlyOwner { _maxholdingToken = _totalSupply; _maxTxAmount = _totalSupply; } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if(inSwap){ return _basicTransfer(sender, recipient, amount); } if(!authorizations[sender] && !authorizations[recipient]){ require(tradingOpen,"Trading not open yet"); } if (!authorizations[sender] && recipient != address(this) && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && recipient != burnFeeReceiver && !isTxLimitExempt[recipient]){ uint256 heldTokens = balanceOf(recipient); require((heldTokens + amount) <= _maxholdingToken,"Total Holding is currently limited, you can not buy that much.");} checkTxLimit(sender, amount); if(shouldSwapBack()){ swapBack(); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient); _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 {} } if(rewardFee > 0){ try distributor.process(distributorGas) {} catch {} } emit Transfer(sender, recipient, amountReceived); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function checkTxLimit(address sender, uint256 amount) internal view { require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded"); } function shouldTakeFee(address sender) internal view returns (bool) { return !isFeeExempt[sender]; } function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) { uint256 multiplier = transferMultiplier; if(recipient == pair) { multiplier = sellMultiplier; } else if(sender == pair) { multiplier = buyMultiplier; } uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100); uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee); uint256 contractTokens = feeAmount.sub(burnTokens); _balances[address(this)] = _balances[address(this)].add(contractTokens); _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens); emit Transfer(sender, address(this), contractTokens); if(burnTokens > 0){ emit Transfer(sender, burnFeeReceiver, burnTokens); } return amount.sub(feeAmount); } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function clearstuckToken(address tokenAddress, uint256 tokens) external returns (bool success) { if(tokens == 0){ tokens = IERC20(tokenAddress).balanceOf(address(this)); } return IERC20(tokenAddress).transfer(ecosystemFeeReceiver, tokens); } function setNewRewardToken(address _rewardToken) external onlyOwner { distributor.setRewardToken(_rewardToken); } function setFeeAllocation(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner { sellMultiplier = _sell; buyMultiplier = _buy; transferMultiplier = _trans; } function clearStuckETH(uint256 amountPercentage) external { uint256 amountETH = address(this).balance; payable(devFeeReceiver).transfer(amountETH * amountPercentage / 100); } function allowTrading() public onlyOwner { tradingOpen = true; launchblock = block.number; } function transfer() public { payable(ecosystemFeeReceiver).transfer(address(this).balance); } function swapBack() internal swapping { uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee; uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2); uint256 amountToSwap = swapThreshold.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; uint256 balanceBefore = address(this).balance; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountETH = address(this).balance.sub(balanceBefore); uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2)); uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2); uint256 amountETHreward = amountETH.mul(rewardFee).div(totalETHFee); uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee); uint256 amountETHecosystem = amountETH.mul(ecosystemFee).div(totalETHFee); uint256 amountETHdev = amountETH.mul(devFee).div(totalETHFee); try distributor.deposit{value: amountETHreward}() {} catch {} (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}(""); (tmpSuccess,) = payable(ecosystemFeeReceiver).call{value: amountETHecosystem, gas: 30000}(""); (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHdev, gas: 30000}(""); tmpSuccess = false; if(amountToLiquify > 0){ router.addLiquidityETH{value: amountETHLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountETHLiquidity, amountToLiquify); } } function setIsDividendExempt(address holder, bool exempt) public onlyOwner { require(holder != address(this) && holder != pair); isDividendExempt[holder] = exempt; if(exempt){ distributor.setShare(holder, 0); }else{ distributor.setShare(holder, _balances[holder]); } } function setPresalePartner(address holder, bool exempt) external onlyOwner { isFeeExempt[holder] = exempt; isTxLimitExempt[holder] = exempt; } function setFees(uint256 _liquidityFee, uint256 _rewardFee, uint256 _marketingFee, uint256 _ecosystemFee, uint256 _devFee, uint256 _burnFee, uint256 _feeDenominator) public onlyOwner { liquidityFee = _liquidityFee; rewardFee = _rewardFee; marketingFee = _marketingFee; ecosystemFee = _ecosystemFee; devFee = _devFee; burnFee = _burnFee; totalFee = _liquidityFee + _rewardFee + _marketingFee + _ecosystemFee + _burnFee + _devFee; feeDenominator = _feeDenominator; require(totalFee < feeDenominator/3, "Fees cannot be more than 33%"); } function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _ecosystemFeeReceiver, address _burnFeeReceiver, address _devFeeReceiver ) public onlyOwner { autoLiquidityReceiver = _autoLiquidityReceiver; marketingFeeReceiver = _marketingFeeReceiver; ecosystemFeeReceiver = _ecosystemFeeReceiver; burnFeeReceiver = _burnFeeReceiver; devFeeReceiver = _devFeeReceiver; } function editSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner { swapEnabled = _enabled; swapThreshold = _amount; } function setTargetPercent(uint256 _target, uint256 _denominator) external onlyOwner { targetLiquidity = _target; targetLiquidityDenominator = _denominator; } function setDistributorSettings(uint256 gas) external onlyOwner { require(gas < 750000); distributorGas = gas; } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) public onlyOwner { distributor.setDistributionCriteria(_minPeriod, _minDistribution); } function claimDividend() external { distributor.claimDividend(msg.sender); } function rescueDToken(address tokenAddress,address _receiver, uint256 tokens) external onlyOwner returns (bool success) { return distributor.rescueToken(tokenAddress, _receiver,tokens); } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } function getLiquidityBacking(uint256 accuracy) private view returns (uint256) { return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply()); } function isOverLiquified(uint256 target, uint256 accuracy) private view returns (bool) { return getLiquidityBacking(accuracy) > target; } event AutoLiquify(uint256 amountETH, uint256 amountTokens); } //
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":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxholdingToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allowTrading","outputs":[],"stateMutability":"nonpayable","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":[{"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":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearstuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"editSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwapCA","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"noLimits","outputs":[],"stateMutability":"nonpayable","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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"rescueDToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setFeeAllocation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_ecosystemFeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_rewardFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_ecosystemFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","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":"_rewardToken","type":"address"}],"name":"setNewRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setPresalePartner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetPercent","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":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transfer","outputs":[],"stateMutability":"nonpayable","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"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"updateMaxHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"updateMaxTX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052739813037ee2218799597d83d4a5b6f3b6778218d9600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620000ee91906200107c565b633b9aca00620000ff9190620010cd565b60065562000139606462000125600160065462000d8e60201b620027d11790919060201c565b62000e1260201b6200284c1790919060201c565b6007556200017360646200015f600160065462000d8e60201b620027d11790919060201c565b62000e1260201b6200284c1790919060201c565b6008556000600e556004600f556001601055600060115560006012556000601355601254601354601154600e54600f54601054620001b291906200112e565b620001be91906200112e565b620001ca91906200112e565b620001d691906200112e565b620001e291906200112e565b601455606460155561076c6016556103846017556103e86018556023601e556064601f556000602160146101000a81548160ff0219169083151502179055506207a1206024556001602560006101000a81548160ff0219169083151502179055506103e86023600654620002579190620010cd565b620002639190620011ba565b6026553480156200027357600080fd5b5060006200028662000e6460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d602060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200045f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200048591906200125c565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000533573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200055991906200125c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620005b79291906200129f565b6020604051808303816000875af1158015620005d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005fd91906200125c565b602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620007319062000ed4565b6200073d9190620012cc565b604051809103906000f0801580156200075a573d6000803e3d6000fd5b50602360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a24d79cdda418c1a54d6d1d21faded5b68b75118601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600654600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60065460405162000d809190620012fa565b60405180910390a362001477565b60008083141562000da3576000905062000e0c565b6000828462000db39190620010cd565b905082848262000dc49190620011ba565b1462000e07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000dfe906200139e565b60405180910390fd5b809150505b92915050565b600062000e5c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000e6c60201b60201c565b905092915050565b600033905090565b6000808311829062000eb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ead919062001453565b60405180910390fd5b506000838562000ec79190620011ba565b9050809150509392505050565b61231380620065f283390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000f705780860481111562000f485762000f4762000ee2565b5b600185161562000f585780820291505b808102905062000f688562000f11565b945062000f28565b94509492505050565b60008262000f8b57600190506200105e565b8162000f9b57600090506200105e565b816001811462000fb4576002811462000fbf5762000ff5565b60019150506200105e565b60ff84111562000fd45762000fd362000ee2565b5b8360020a91508482111562000fee5762000fed62000ee2565b5b506200105e565b5060208310610133831016604e8410600b84101617156200102f5782820a90508381111562001029576200102862000ee2565b5b6200105e565b6200103e848484600162000f1e565b9250905081840481111562001058576200105762000ee2565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620010898262001065565b915062001096836200106f565b9250620010c57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f79565b905092915050565b6000620010da8262001065565b9150620010e78362001065565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001123576200112262000ee2565b5b828202905092915050565b60006200113b8262001065565b9150620011488362001065565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562001180576200117f62000ee2565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620011c78262001065565b9150620011d48362001065565b925082620011e757620011e66200118b565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200122482620011f7565b9050919050565b620012368162001217565b81146200124257600080fd5b50565b60008151905062001256816200122b565b92915050565b600060208284031215620012755762001274620011f2565b5b6000620012858482850162001245565b91505092915050565b620012998162001217565b82525050565b6000604082019050620012b660008301856200128e565b620012c560208301846200128e565b9392505050565b6000602082019050620012e360008301846200128e565b92915050565b620012f48162001065565b82525050565b6000602082019050620013116000830184620012e9565b92915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006200138660218362001317565b9150620013938262001328565b604082019050919050565b60006020820190508181036000830152620013b98162001377565b9050919050565b600081519050919050565b60005b83811015620013eb578082015181840152602081019050620013ce565b83811115620013fb576000848401525b50505050565b6000601f19601f8301169050919050565b60006200141f82620013c0565b6200142b818562001317565b93506200143d818560208601620013cb565b620014488162001401565b840191505092915050565b600060208201905081810360008301526200146f818462001412565b905092915050565b61516b80620014876000396000f3fe6080604052600436106102815760003560e01c80638c07e5aa1161014f578063bfbcc5c5116100c1578063e96fada21161007a578063e96fada21461096b578063f0fc6bca14610996578063f2fde38b146109ad578063f708a64f146109d6578063f887ea40146109ff578063ffb54a9914610a2a57610288565b8063bfbcc5c51461084b578063c6501c8914610874578063d78e139d146108b1578063da2e3bad146108da578063dc8ecfbd14610903578063dd62ed3e1461092e57610288565b8063a9059cbb11610113578063a9059cbb1461073f578063a91deb1d1461077c578063b2bdfa7b146107a5578063b4abae3a146107d0578063b67f55b9146107f9578063b8e94b631461082257610288565b80638c07e5aa1461066c5780638da5cb5b1461069557806395d89b41146106c05780639d1944f5146106eb578063a8aa1b311461071457610288565b8063313ce567116101f357806370a08231116101ac57806370a082311461056e578063715018a6146105ab5780637d1db4a5146105c2578063893d20e8146105ed57806389d73132146106185780638a4068dd1461065557610288565b8063313ce5671461045e5780634355855a146104895780634e52a4b4146104c6578063571ac8b0146104dd578063647d8a991461051a5780636ddd17131461054357610288565b806318abb6351161024557806318abb635146103625780631df4ccfc1461038b57806323b872dd146103b65780632b112e49146103f35780632d48e8961461041e5780632e5b4c431461044757610288565b8063014667601461028d5780630445b667146102a457806306fdde03146102cf578063095ea7b3146102fa57806318160ddd1461033757610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a2610a55565b005b3480156102b057600080fd5b506102b9610afe565b6040516102c69190614210565b60405180910390f35b3480156102db57600080fd5b506102e4610b04565b6040516102f191906142c4565b60405180910390f35b34801561030657600080fd5b50610321600480360381019061031c9190614375565b610b41565b60405161032e91906143d0565b60405180910390f35b34801561034357600080fd5b5061034c610c33565b6040516103599190614210565b60405180910390f35b34801561036e57600080fd5b50610389600480360381019061038491906143eb565b610c3d565b005b34801561039757600080fd5b506103a0610e1e565b6040516103ad9190614210565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d89190614466565b610e24565b6040516103ea91906143d0565b60405180910390f35b3480156103ff57600080fd5b50610408611024565b6040516104159190614210565b60405180910390f35b34801561042a57600080fd5b50610445600480360381019061044091906144b9565b6110a6565b005b34801561045357600080fd5b5061045c6111ce565b005b34801561046a57600080fd5b50610473611287565b6040516104809190614515565b60405180910390f35b34801561049557600080fd5b506104b060048036038101906104ab9190614530565b611290565b6040516104bd91906143d0565b60405180910390f35b3480156104d257600080fd5b506104db6112b0565b005b3480156104e957600080fd5b5061050460048036038101906104ff9190614530565b61134f565b60405161051191906143d0565b60405180910390f35b34801561052657600080fd5b50610541600480360381019061053c9190614589565b611382565b005b34801561054f57600080fd5b5061055861143c565b60405161056591906143d0565b60405180910390f35b34801561057a57600080fd5b5061059560048036038101906105909190614530565b61144f565b6040516105a29190614210565b60405180910390f35b3480156105b757600080fd5b506105c0611498565b005b3480156105ce57600080fd5b506105d76115eb565b6040516105e49190614210565b60405180910390f35b3480156105f957600080fd5b506106026115f1565b60405161060f91906145d8565b60405180910390f35b34801561062457600080fd5b5061063f600480360381019061063a9190614375565b611600565b60405161064c91906143d0565b60405180910390f35b34801561066157600080fd5b5061066a61172f565b005b34801561067857600080fd5b50610693600480360381019061068e91906144b9565b61179a565b005b3480156106a157600080fd5b506106aa611841565b6040516106b791906145d8565b60405180910390f35b3480156106cc57600080fd5b506106d561186a565b6040516106e291906142c4565b60405180910390f35b3480156106f757600080fd5b50610712600480360381019061070d91906145f3565b6118a7565b005b34801561072057600080fd5b50610729611955565b60405161073691906145d8565b60405180910390f35b34801561074b57600080fd5b5061076660048036038101906107619190614375565b61197b565b60405161077391906143d0565b60405180910390f35b34801561078857600080fd5b506107a3600480360381019061079e9190614620565b611990565b005b3480156107b157600080fd5b506107ba611ad7565b6040516107c791906145d8565b60405180910390f35b3480156107dc57600080fd5b506107f760048036038101906107f291906145f3565b611afb565b005b34801561080557600080fd5b50610820600480360381019061081b9190614660565b611bd2565b005b34801561082e57600080fd5b5061084960048036038101906108449190614530565b611c81565b005b34801561085757600080fd5b50610872600480360381019061086d91906145f3565b611da6565b005b34801561088057600080fd5b5061089b60048036038101906108969190614466565b611e7d565b6040516108a891906143d0565b60405180910390f35b3480156108bd57600080fd5b506108d860048036038101906108d391906145f3565b611fbf565b005b3480156108e657600080fd5b5061090160048036038101906108fc91906146b3565b612048565b005b34801561090f57600080fd5b506109186121a7565b6040516109259190614210565b60405180910390f35b34801561093a57600080fd5b5061095560048036038101906109509190614755565b6121ad565b6040516109629190614210565b60405180910390f35b34801561097757600080fd5b50610980612234565b60405161098d91906145d8565b60405180910390f35b3480156109a257600080fd5b506109ab61225a565b005b3480156109b957600080fd5b506109d460048036038101906109cf9190614530565b6122e9565b005b3480156109e257600080fd5b506109fd60048036038101906109f89190614620565b6124ab565b005b348015610a0b57600080fd5b50610a14612798565b604051610a2191906147f4565b60405180910390f35b348015610a3657600080fd5b50610a3f6127be565b604051610a4c91906143d0565b60405180910390f35b610a5d612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae19061485b565b60405180910390fd5b600654600881905550600654600781905550565b60265481565b60606040518060400160405280600f81526020017f426167204f6620457468657265756d0000000000000000000000000000000000815250905090565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c219190614210565b60405180910390a36001905092915050565b6000600654905090565b610c45612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc99061485b565b60405180910390fd5b84601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b60145481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461101057610f8f826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289e9092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61101b848484612902565b90509392505050565b60006110a1611054600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661144f565b611093611082600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661144f565b60065461325e90919063ffffffff16565b61325e90919063ffffffff16565b905090565b6110ae612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461113b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111329061485b565b60405180910390fd5b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b815260040161119892919061487b565b600060405180830381600087803b1580156111b257600080fd5b505af11580156111c6573d6000803e3d6000fd5b505050505050565b6111d6612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125a9061485b565b60405180910390fd5b6001602160146101000a81548160ff02191690831515021790555043602281905550565b60006009905090565b600d6020528060005260406000206000915054906101000a900460ff1681565b6112b8612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133c9061485b565b60405180910390fd5b61134d6132a8565b565b600061137b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b41565b9050919050565b61138a612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140e9061485b565b60405180910390fd5b81602560006101000a81548160ff021916908315150217905550806026819055505050565b602560009054906101000a900460ff1681565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114a0612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461152d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115249061485b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60075481565b60006115fb611841565b905090565b600080821415611687578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161164391906145d8565b602060405180830381865afa158015611660573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168491906148b9565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016116e49291906148e6565b6020604051808303816000875af1158015611703573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117279190614924565b905092915050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611797573d6000803e3d6000fd5b50565b6117a2612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461182f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118269061485b565b60405180910390fd5b81601e8190555080601f819055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f424f540000000000000000000000000000000000000000000000000000000000815250905090565b6118af612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461193c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119339061485b565b60405180910390fd5b620b71b0811061194b57600080fd5b8060248190555050565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611988338484612902565b905092915050565b611998612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c9061485b565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b03612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b879061485b565b60405180910390fd5b6103e8600654611ba091906149af565b6008541015611bae57600080fd5b6103e881600654611bbf91906149e0565b611bc991906149af565b60088190555050565b611bda612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5e9061485b565b60405180910390fd5b816016819055508260178190555080601881905550505050565b611c89612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0d9061485b565b60405180910390fd5b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638aee8127826040518263ffffffff1660e01b8152600401611d7191906145d8565b600060405180830381600087803b158015611d8b57600080fd5b505af1158015611d9f573d6000803e3d6000fd5b5050505050565b611dae612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e329061485b565b60405180910390fd5b6103e8600654611e4b91906149af565b6007541015611e5957600080fd5b6103e881600654611e6a91906149e0565b611e7491906149af565b60078190555050565b6000611e87612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0b9061485b565b60405180910390fd5b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e5711e8b8585856040518463ffffffff1660e01b8152600401611f7393929190614a3a565b6020604051808303816000875af1158015611f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb69190614924565b90509392505050565b6000479050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064848461200e91906149e0565b61201891906149af565b9081150290604051600060405180830381858888f19350505050158015612043573d6000803e3d6000fd5b505050565b612050612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d49061485b565b60405180910390fd5b86600e8190555085600f819055508460108190555083601181905550826012819055508160138190555082828587898b6121179190614a71565b6121219190614a71565b61212b9190614a71565b6121359190614a71565b61213f9190614a71565b60148190555080601581905550600360155461215b91906149af565b6014541061219e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219590614b13565b60405180910390fd5b50505050505050565b60085481565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b81526004016122b591906145d8565b600060405180830381600087803b1580156122cf57600080fd5b505af11580156122e3573d6000803e3d6000fd5b50505050565b6122f1612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461237e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123759061485b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156123ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e590614ba5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6124b3612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612540576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125379061485b565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156125ca5750602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6125d357600080fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156126c557602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b815260040161268e929190614c00565b600060405180830381600087803b1580156126a857600080fd5b505af11580156126bc573d6000803e3d6000fd5b50505050612794565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016127619291906148e6565b600060405180830381600087803b15801561277b57600080fd5b505af115801561278f573d6000803e3d6000fd5b505050505b5050565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602160149054906101000a900460ff1681565b6000808314156127e45760009050612846565b600082846127f291906149e0565b905082848261280191906149af565b14612841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283890614c9b565b60405180910390fd5b809150505b92915050565b600061288e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613990565b905092915050565b600033905090565b60008383111582906128e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128dd91906142c4565b60405180910390fd5b50600083856128f59190614cbb565b9050809150509392505050565b6000602760009054906101000a900460ff161561292b576129248484846139f3565b9050613257565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129cf5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a2457602160149054906101000a900460ff16612a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1a90614d3b565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612aaa57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612b045750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612b5e5750602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612bb85750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612c125750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612c685750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ccc576000612c788461144f565b90506008548382612c899190614a71565b1115612cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc190614dcd565b60405180910390fd5b505b612cd68483613bc6565b612cde613c63565b15612cec57612ceb6132a8565b5b612d75826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289e9092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e5b5750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612e6f57612e6a858486613d3a565b612e71565b825b9050612ec581600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411290919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661302b57602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612ff59291906148e6565b600060405180830381600087803b15801561300f57600080fd5b505af1925050508015613020575060015b6130295761302a565b5b5b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661314e57602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016131189291906148e6565b600060405180830381600087803b15801561313257600080fd5b505af1925050508015613143575060015b61314c5761314d565b5b5b6000600f5411156131ec57602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796024546040518263ffffffff1660e01b81526004016131b69190614210565b600060405180830381600087803b1580156131d057600080fd5b505af19250505080156131e1575060015b6131ea576131eb565b5b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132499190614210565b60405180910390a360019150505b9392505050565b60006132a083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061289e565b905092915050565b6001602760006101000a81548160ff02191690831515021790555060006132d3601e54601f54614170565b6132df57600e546132e2565b60005b905060006133226002613314601454613306866026546127d190919063ffffffff16565b61284c90919063ffffffff16565b61284c90919063ffffffff16565b9050600061333b8260265461325e90919063ffffffff16565b90506000600267ffffffffffffffff81111561335a57613359614ded565b5b6040519080825280602002602001820160405280156133885781602001602082028036833780820191505090505b50905030816000815181106133a05761339f614e1c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061341157613410614e1c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016134b4959493929190614f09565b600060405180830381600087803b1580156134ce57600080fd5b505af11580156134e2573d6000803e3d6000fd5b5050505060006134fb824761325e90919063ffffffff16565b9050600061352761351660028961284c90919063ffffffff16565b60145461325e90919063ffffffff16565b905060006135636002613555846135478c886127d190919063ffffffff16565b61284c90919063ffffffff16565b61284c90919063ffffffff16565b9050600061358e83613580600f54876127d190919063ffffffff16565b61284c90919063ffffffff16565b905060006135b9846135ab601054886127d190919063ffffffff16565b61284c90919063ffffffff16565b905060006135e4856135d6601154896127d190919063ffffffff16565b61284c90919063ffffffff16565b9050600061360f866136016012548a6127d190919063ffffffff16565b61284c90919063ffffffff16565b9050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561367b57600080fd5b505af19350505050801561368d575060015b61369657613697565b5b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684617530906040516136e390614f94565b600060405180830381858888f193505050503d8060008114613721576040519150601f19603f3d011682016040523d82523d6000602084013e613726565b606091505b50509050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836175309060405161377490614f94565b600060405180830381858888f193505050503d80600081146137b2576040519150601f19603f3d011682016040523d82523d6000602084013e6137b7565b606091505b505080915050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826175309060405161380790614f94565b600060405180830381858888f193505050503d8060008114613845576040519150601f19603f3d011682016040523d82523d6000602084013e61384a565b606091505b5050809150506000905060008c111561396657602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71987308f600080601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016138e696959493929190614fa9565b60606040518083038185885af1158015613904573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613929919061500a565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506868d60405161395d92919061487b565b60405180910390a15b505050505050505050505050506000602760006101000a81548160ff021916908315150217905550565b600080831182906139d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139ce91906142c4565b60405180910390fd5b50600083856139e691906149af565b9050809150509392505050565b6000613a7e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289e9092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b1382600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411290919063ffffffff16565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613bb39190614210565b60405180910390a3600190509392505050565b60075481111580613c205750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c56906150a9565b60405180910390fd5b5050565b6000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015613cd05750602760009054906101000a900460ff16155b8015613ce85750602560009054906101000a900460ff165b8015613d355750602654600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6000806018549050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613da2576016549050613dff565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415613dfe5760175490505b5b6000613e486064601554613e1391906149e0565b613e3a84613e2c6014548a6127d190919063ffffffff16565b6127d190919063ffffffff16565b61284c90919063ffffffff16565b90506000613e75601454613e67601354856127d190919063ffffffff16565b61284c90919063ffffffff16565b90506000613e8c828461325e90919063ffffffff16565b9050613ee081600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411290919063ffffffff16565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f978260096000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411290919063ffffffff16565b60096000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516140599190614210565b60405180910390a360008211156140f257601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516140e99190614210565b60405180910390a35b614105838861325e90919063ffffffff16565b9450505050509392505050565b60008082846141219190614a71565b905083811015614166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161415d90615115565b60405180910390fd5b8091505092915050565b60008261417c83614185565b11905092915050565b60006141f0614192611024565b6141e26141d360026141c5602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661144f565b6127d190919063ffffffff16565b856127d190919063ffffffff16565b61284c90919063ffffffff16565b9050919050565b6000819050919050565b61420a816141f7565b82525050565b60006020820190506142256000830184614201565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561426557808201518184015260208101905061424a565b83811115614274576000848401525b50505050565b6000601f19601f8301169050919050565b60006142968261422b565b6142a08185614236565b93506142b0818560208601614247565b6142b98161427a565b840191505092915050565b600060208201905081810360008301526142de818461428b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614316826142eb565b9050919050565b6143268161430b565b811461433157600080fd5b50565b6000813590506143438161431d565b92915050565b614352816141f7565b811461435d57600080fd5b50565b60008135905061436f81614349565b92915050565b6000806040838503121561438c5761438b6142e6565b5b600061439a85828601614334565b92505060206143ab85828601614360565b9150509250929050565b60008115159050919050565b6143ca816143b5565b82525050565b60006020820190506143e560008301846143c1565b92915050565b600080600080600060a08688031215614407576144066142e6565b5b600061441588828901614334565b955050602061442688828901614334565b945050604061443788828901614334565b935050606061444888828901614334565b925050608061445988828901614334565b9150509295509295909350565b60008060006060848603121561447f5761447e6142e6565b5b600061448d86828701614334565b935050602061449e86828701614334565b92505060406144af86828701614360565b9150509250925092565b600080604083850312156144d0576144cf6142e6565b5b60006144de85828601614360565b92505060206144ef85828601614360565b9150509250929050565b600060ff82169050919050565b61450f816144f9565b82525050565b600060208201905061452a6000830184614506565b92915050565b600060208284031215614546576145456142e6565b5b600061455484828501614334565b91505092915050565b614566816143b5565b811461457157600080fd5b50565b6000813590506145838161455d565b92915050565b600080604083850312156145a05761459f6142e6565b5b60006145ae85828601614574565b92505060206145bf85828601614360565b9150509250929050565b6145d28161430b565b82525050565b60006020820190506145ed60008301846145c9565b92915050565b600060208284031215614609576146086142e6565b5b600061461784828501614360565b91505092915050565b60008060408385031215614637576146366142e6565b5b600061464585828601614334565b925050602061465685828601614574565b9150509250929050565b600080600060608486031215614679576146786142e6565b5b600061468786828701614360565b935050602061469886828701614360565b92505060406146a986828701614360565b9150509250925092565b600080600080600080600060e0888a0312156146d2576146d16142e6565b5b60006146e08a828b01614360565b97505060206146f18a828b01614360565b96505060406147028a828b01614360565b95505060606147138a828b01614360565b94505060806147248a828b01614360565b93505060a06147358a828b01614360565b92505060c06147468a828b01614360565b91505092959891949750929550565b6000806040838503121561476c5761476b6142e6565b5b600061477a85828601614334565b925050602061478b85828601614334565b9150509250929050565b6000819050919050565b60006147ba6147b56147b0846142eb565b614795565b6142eb565b9050919050565b60006147cc8261479f565b9050919050565b60006147de826147c1565b9050919050565b6147ee816147d3565b82525050565b600060208201905061480960008301846147e5565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614845602083614236565b91506148508261480f565b602082019050919050565b6000602082019050818103600083015261487481614838565b9050919050565b60006040820190506148906000830185614201565b61489d6020830184614201565b9392505050565b6000815190506148b381614349565b92915050565b6000602082840312156148cf576148ce6142e6565b5b60006148dd848285016148a4565b91505092915050565b60006040820190506148fb60008301856145c9565b6149086020830184614201565b9392505050565b60008151905061491e8161455d565b92915050565b60006020828403121561493a576149396142e6565b5b60006149488482850161490f565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006149ba826141f7565b91506149c5836141f7565b9250826149d5576149d4614951565b5b828204905092915050565b60006149eb826141f7565b91506149f6836141f7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614a2f57614a2e614980565b5b828202905092915050565b6000606082019050614a4f60008301866145c9565b614a5c60208301856145c9565b614a696040830184614201565b949350505050565b6000614a7c826141f7565b9150614a87836141f7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614abc57614abb614980565b5b828201905092915050565b7f466565732063616e6e6f74206265206d6f7265207468616e2033332500000000600082015250565b6000614afd601c83614236565b9150614b0882614ac7565b602082019050919050565b60006020820190508181036000830152614b2c81614af0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614b8f602683614236565b9150614b9a82614b33565b604082019050919050565b60006020820190508181036000830152614bbe81614b82565b9050919050565b6000819050919050565b6000614bea614be5614be084614bc5565b614795565b6141f7565b9050919050565b614bfa81614bcf565b82525050565b6000604082019050614c1560008301856145c9565b614c226020830184614bf1565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c85602183614236565b9150614c9082614c29565b604082019050919050565b60006020820190508181036000830152614cb481614c78565b9050919050565b6000614cc6826141f7565b9150614cd1836141f7565b925082821015614ce457614ce3614980565b5b828203905092915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000614d25601483614236565b9150614d3082614cef565b602082019050919050565b60006020820190508181036000830152614d5481614d18565b9050919050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b6000614db7603e83614236565b9150614dc282614d5b565b604082019050919050565b60006020820190508181036000830152614de681614daa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614e808161430b565b82525050565b6000614e928383614e77565b60208301905092915050565b6000602082019050919050565b6000614eb682614e4b565b614ec08185614e56565b9350614ecb83614e67565b8060005b83811015614efc578151614ee38882614e86565b9750614eee83614e9e565b925050600181019050614ecf565b5085935050505092915050565b600060a082019050614f1e6000830188614201565b614f2b6020830187614bf1565b8181036040830152614f3d8186614eab565b9050614f4c60608301856145c9565b614f596080830184614201565b9695505050505050565b600081905092915050565b50565b6000614f7e600083614f63565b9150614f8982614f6e565b600082019050919050565b6000614f9f82614f71565b9150819050919050565b600060c082019050614fbe60008301896145c9565b614fcb6020830188614201565b614fd86040830187614bf1565b614fe56060830186614bf1565b614ff260808301856145c9565b614fff60a0830184614201565b979650505050505050565b600080600060608486031215615023576150226142e6565b5b6000615031868287016148a4565b9350506020615042868287016148a4565b9250506040615053868287016148a4565b9150509250925092565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000615093601183614236565b915061509e8261505d565b602082019050919050565b600060208201905081810360008301526150c281615086565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006150ff601b83614236565b915061510a826150c9565b602082019050919050565b6000602082019050818103600083015261512e816150f2565b905091905056fea2646970667358221220ff1d66b0c8742543d1fa2ec636f5c46ea64b76660c764494641306ed1d856b7064736f6c634300080b00336080604052739813037ee2218799597d83d4a5b6f3b6778218d9600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506ec097ce7bc90715b34b9f1000000000600c55610e10600d55670de0b6b3a7640000600e55348015620000e057600080fd5b50604051620023133803806200231383398181016040528101906200010691906200024a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156200015757737a250d5630b4cf539739df2c5dacb4c659f2488d62000159565b805b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200027c565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200021282620001e5565b9050919050565b620002248162000205565b81146200023057600080fd5b50565b600081519050620002448162000219565b92915050565b600060208284031215620002635762000262620001e0565b5b6000620002738482850162000233565b91505092915050565b612087806200028c6000396000f3fe6080604052600436106100f35760003560e01c8063997664d71161008a578063e5711e8b11610059578063e5711e8b146102f9578063efca2eed14610336578063ffb2c47914610361578063ffd49c841461038a576100f3565b8063997664d71461025a578063ce7c2ac214610285578063d0e30db0146102c4578063e2d2e219146102ce576100f3565b80632d48e896116100c65780632d48e896146101b25780633a98ef39146101db5780634fab0ae8146102065780638aee812714610231576100f3565b806311ce023d146100f857806314b6ca961461012357806315f7e05e1461014c57806328fd319814610175575b600080fd5b34801561010457600080fd5b5061010d6103b5565b60405161011a91906117ce565b60405180910390f35b34801561012f57600080fd5b5061014a60048036038101906101459190611878565b6103bb565b005b34801561015857600080fd5b50610173600480360381019061016e91906118b8565b61067a565b005b34801561018157600080fd5b5061019c600480360381019061019791906118b8565b6106de565b6040516101a991906117ce565b60405180910390f35b3480156101be57600080fd5b506101d960048036038101906101d491906118e5565b6107f8565b005b3480156101e757600080fd5b506101f0610862565b6040516101fd91906117ce565b60405180910390f35b34801561021257600080fd5b5061021b610868565b60405161022891906117ce565b60405180910390f35b34801561023d57600080fd5b50610258600480360381019061025391906118b8565b61086e565b005b34801561026657600080fd5b5061026f61090a565b60405161027c91906117ce565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a791906118b8565b610910565b6040516102bb93929190611925565b60405180910390f35b6102cc61093a565b005b3480156102da57600080fd5b506102e3610d0c565b6040516102f091906117ce565b60405180910390f35b34801561030557600080fd5b50610320600480360381019061031b919061195c565b610d12565b60405161032d91906119ca565b60405180910390f35b34801561034257600080fd5b5061034b610df4565b60405161035891906117ce565b60405180910390f35b34801561036d57600080fd5b50610388600480360381019061038391906119e5565b610dfa565b005b34801561039657600080fd5b5061039f610f8e565b6040516103ac91906117ce565b60405180910390f35b600c5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461041357600080fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156104685761046782610f94565b5b6000811180156104ba57506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156104cd576104c88261122c565b61052f565b60008114801561051f57506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b1561052e5761052d826112db565b5b5b6105988161058a600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546008546114e290919063ffffffff16565b61152c90919063ffffffff16565b60088190555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550610630600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461158a565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106d257600080fd5b6106db81610f94565b50565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154141561073357600090506107f3565b6000610780600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461158a565b90506000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015490508082116107db576000925050506107f3565b6107ee81836114e290919063ffffffff16565b925050505b919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461085057600080fd5b81600d8190555080600e819055505050565b60085481565b600e5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108c657600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b60076020528060005260406000206000915090508060000154908060010154908060020154905083565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461099257600080fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109ef9190611a21565b602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a309190611a51565b90506000600267ffffffffffffffff811115610a4f57610a4e611a7e565b5b604051908082528060200260200182016040528015610a7d5781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600081518110610ab757610ab6611aad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110610b2857610b27611aad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de953460008430426040518663ffffffff1660e01b8152600401610bc59493929190611bdf565b6000604051808303818588803b158015610bde57600080fd5b505af1158015610bf2573d6000803e3d6000fd5b50505050506000610ca783600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c589190611a21565b602060405180830381865afa158015610c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c999190611a51565b6114e290919063ffffffff16565b9050610cbe8160095461152c90919063ffffffff16565b600981905550610d01610cf0600854610ce284600c546115bc90919063ffffffff16565b61163790919063ffffffff16565b600b5461152c90919063ffffffff16565b600b81905550505050565b600b5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d6d57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401610da8929190611c2b565b6020604051808303816000875af1158015610dc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610deb9190611c80565b90509392505050565b600a5481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e5257600080fd5b600060048054905090506000811415610e6b5750610f8b565b6000805a905060005b8483108015610e8257508381105b15610f865783600f5410610e99576000600f819055505b610ee26004600f5481548110610eb257610eb1611aad565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611681565b15610f3157610f306004600f5481548110610f0057610eff611aad565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610f94565b5b610f56610f475a846114e290919063ffffffff16565b8461152c90919063ffffffff16565b92505a9150600f6000815480929190610f6e90611cdc565b91905055508080610f7e90611cdc565b915050610e74565b505050505b50565b600d5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610fe457611229565b6000610fef826106de565b905060008111156112275761100f81600a5461152c90919063ffffffff16565b600a81905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611072929190611c2b565b6020604051808303816000875af1158015611091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b59190611c80565b5042600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061114f81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461152c90919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506111e0600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461158a565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505b505b50565b600480549050600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506004819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460016004805490506112ef9190611d25565b81548110611300576112ff611aad565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548154811061137e5761137d611aad565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560006004600160048054905061141e9190611d25565b8154811061142f5761142e611aad565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060048054806114aa576114a9611d59565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600061152483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116ee565b905092915050565b600080828461153b9190611d88565b905083811015611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157790611e3b565b60405180910390fd5b8091505092915050565b60006115b5600c546115a7600b54856115bc90919063ffffffff16565b61163790919063ffffffff16565b9050919050565b6000808314156115cf5760009050611631565b600082846115dd9190611e5b565b90508284826115ec9190611ee4565b1461162c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162390611f87565b60405180910390fd5b809150505b92915050565b600061167983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611752565b905092915050565b600042600d54600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116d19190611d88565b1080156116e75750600e546116e5836106de565b115b9050919050565b6000838311158290611736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172d919061202f565b60405180910390fd5b50600083856117459190611d25565b9050809150509392505050565b60008083118290611799576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611790919061202f565b60405180910390fd5b50600083856117a89190611ee4565b9050809150509392505050565b6000819050919050565b6117c8816117b5565b82525050565b60006020820190506117e360008301846117bf565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611819826117ee565b9050919050565b6118298161180e565b811461183457600080fd5b50565b60008135905061184681611820565b92915050565b611855816117b5565b811461186057600080fd5b50565b6000813590506118728161184c565b92915050565b6000806040838503121561188f5761188e6117e9565b5b600061189d85828601611837565b92505060206118ae85828601611863565b9150509250929050565b6000602082840312156118ce576118cd6117e9565b5b60006118dc84828501611837565b91505092915050565b600080604083850312156118fc576118fb6117e9565b5b600061190a85828601611863565b925050602061191b85828601611863565b9150509250929050565b600060608201905061193a60008301866117bf565b61194760208301856117bf565b61195460408301846117bf565b949350505050565b600080600060608486031215611975576119746117e9565b5b600061198386828701611837565b935050602061199486828701611837565b92505060406119a586828701611863565b9150509250925092565b60008115159050919050565b6119c4816119af565b82525050565b60006020820190506119df60008301846119bb565b92915050565b6000602082840312156119fb576119fa6117e9565b5b6000611a0984828501611863565b91505092915050565b611a1b8161180e565b82525050565b6000602082019050611a366000830184611a12565b92915050565b600081519050611a4b8161184c565b92915050565b600060208284031215611a6757611a666117e9565b5b6000611a7584828501611a3c565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000819050919050565b6000611b0b611b06611b0184611adc565b611ae6565b6117b5565b9050919050565b611b1b81611af0565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b611b568161180e565b82525050565b6000611b688383611b4d565b60208301905092915050565b6000602082019050919050565b6000611b8c82611b21565b611b968185611b2c565b9350611ba183611b3d565b8060005b83811015611bd2578151611bb98882611b5c565b9750611bc483611b74565b925050600181019050611ba5565b5085935050505092915050565b6000608082019050611bf46000830187611b12565b8181036020830152611c068186611b81565b9050611c156040830185611a12565b611c2260608301846117bf565b95945050505050565b6000604082019050611c406000830185611a12565b611c4d60208301846117bf565b9392505050565b611c5d816119af565b8114611c6857600080fd5b50565b600081519050611c7a81611c54565b92915050565b600060208284031215611c9657611c956117e9565b5b6000611ca484828501611c6b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611ce7826117b5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611d1a57611d19611cad565b5b600182019050919050565b6000611d30826117b5565b9150611d3b836117b5565b925082821015611d4e57611d4d611cad565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000611d93826117b5565b9150611d9e836117b5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611dd357611dd2611cad565b5b828201905092915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000611e25601b83611dde565b9150611e3082611def565b602082019050919050565b60006020820190508181036000830152611e5481611e18565b9050919050565b6000611e66826117b5565b9150611e71836117b5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611eaa57611ea9611cad565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611eef826117b5565b9150611efa836117b5565b925082611f0a57611f09611eb5565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000611f71602183611dde565b9150611f7c82611f15565b604082019050919050565b60006020820190508181036000830152611fa081611f64565b9050919050565b600081519050919050565b60005b83811015611fd0578082015181840152602081019050611fb5565b83811115611fdf576000848401525b50505050565b6000601f19601f8301169050919050565b600061200182611fa7565b61200b8185611dde565b935061201b818560208601611fb2565b61202481611fe5565b840191505092915050565b600060208201905081810360008301526120498184611ff6565b90509291505056fea2646970667358221220ca600fd0e92dcaf499a91a3792cc93336f210ebc3725041ba27d735cb34ebf4f64736f6c634300080b0033
Deployed Bytecode
0x6080604052600436106102815760003560e01c80638c07e5aa1161014f578063bfbcc5c5116100c1578063e96fada21161007a578063e96fada21461096b578063f0fc6bca14610996578063f2fde38b146109ad578063f708a64f146109d6578063f887ea40146109ff578063ffb54a9914610a2a57610288565b8063bfbcc5c51461084b578063c6501c8914610874578063d78e139d146108b1578063da2e3bad146108da578063dc8ecfbd14610903578063dd62ed3e1461092e57610288565b8063a9059cbb11610113578063a9059cbb1461073f578063a91deb1d1461077c578063b2bdfa7b146107a5578063b4abae3a146107d0578063b67f55b9146107f9578063b8e94b631461082257610288565b80638c07e5aa1461066c5780638da5cb5b1461069557806395d89b41146106c05780639d1944f5146106eb578063a8aa1b311461071457610288565b8063313ce567116101f357806370a08231116101ac57806370a082311461056e578063715018a6146105ab5780637d1db4a5146105c2578063893d20e8146105ed57806389d73132146106185780638a4068dd1461065557610288565b8063313ce5671461045e5780634355855a146104895780634e52a4b4146104c6578063571ac8b0146104dd578063647d8a991461051a5780636ddd17131461054357610288565b806318abb6351161024557806318abb635146103625780631df4ccfc1461038b57806323b872dd146103b65780632b112e49146103f35780632d48e8961461041e5780632e5b4c431461044757610288565b8063014667601461028d5780630445b667146102a457806306fdde03146102cf578063095ea7b3146102fa57806318160ddd1461033757610288565b3661028857005b600080fd5b34801561029957600080fd5b506102a2610a55565b005b3480156102b057600080fd5b506102b9610afe565b6040516102c69190614210565b60405180910390f35b3480156102db57600080fd5b506102e4610b04565b6040516102f191906142c4565b60405180910390f35b34801561030657600080fd5b50610321600480360381019061031c9190614375565b610b41565b60405161032e91906143d0565b60405180910390f35b34801561034357600080fd5b5061034c610c33565b6040516103599190614210565b60405180910390f35b34801561036e57600080fd5b50610389600480360381019061038491906143eb565b610c3d565b005b34801561039757600080fd5b506103a0610e1e565b6040516103ad9190614210565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d89190614466565b610e24565b6040516103ea91906143d0565b60405180910390f35b3480156103ff57600080fd5b50610408611024565b6040516104159190614210565b60405180910390f35b34801561042a57600080fd5b50610445600480360381019061044091906144b9565b6110a6565b005b34801561045357600080fd5b5061045c6111ce565b005b34801561046a57600080fd5b50610473611287565b6040516104809190614515565b60405180910390f35b34801561049557600080fd5b506104b060048036038101906104ab9190614530565b611290565b6040516104bd91906143d0565b60405180910390f35b3480156104d257600080fd5b506104db6112b0565b005b3480156104e957600080fd5b5061050460048036038101906104ff9190614530565b61134f565b60405161051191906143d0565b60405180910390f35b34801561052657600080fd5b50610541600480360381019061053c9190614589565b611382565b005b34801561054f57600080fd5b5061055861143c565b60405161056591906143d0565b60405180910390f35b34801561057a57600080fd5b5061059560048036038101906105909190614530565b61144f565b6040516105a29190614210565b60405180910390f35b3480156105b757600080fd5b506105c0611498565b005b3480156105ce57600080fd5b506105d76115eb565b6040516105e49190614210565b60405180910390f35b3480156105f957600080fd5b506106026115f1565b60405161060f91906145d8565b60405180910390f35b34801561062457600080fd5b5061063f600480360381019061063a9190614375565b611600565b60405161064c91906143d0565b60405180910390f35b34801561066157600080fd5b5061066a61172f565b005b34801561067857600080fd5b50610693600480360381019061068e91906144b9565b61179a565b005b3480156106a157600080fd5b506106aa611841565b6040516106b791906145d8565b60405180910390f35b3480156106cc57600080fd5b506106d561186a565b6040516106e291906142c4565b60405180910390f35b3480156106f757600080fd5b50610712600480360381019061070d91906145f3565b6118a7565b005b34801561072057600080fd5b50610729611955565b60405161073691906145d8565b60405180910390f35b34801561074b57600080fd5b5061076660048036038101906107619190614375565b61197b565b60405161077391906143d0565b60405180910390f35b34801561078857600080fd5b506107a3600480360381019061079e9190614620565b611990565b005b3480156107b157600080fd5b506107ba611ad7565b6040516107c791906145d8565b60405180910390f35b3480156107dc57600080fd5b506107f760048036038101906107f291906145f3565b611afb565b005b34801561080557600080fd5b50610820600480360381019061081b9190614660565b611bd2565b005b34801561082e57600080fd5b5061084960048036038101906108449190614530565b611c81565b005b34801561085757600080fd5b50610872600480360381019061086d91906145f3565b611da6565b005b34801561088057600080fd5b5061089b60048036038101906108969190614466565b611e7d565b6040516108a891906143d0565b60405180910390f35b3480156108bd57600080fd5b506108d860048036038101906108d391906145f3565b611fbf565b005b3480156108e657600080fd5b5061090160048036038101906108fc91906146b3565b612048565b005b34801561090f57600080fd5b506109186121a7565b6040516109259190614210565b60405180910390f35b34801561093a57600080fd5b5061095560048036038101906109509190614755565b6121ad565b6040516109629190614210565b60405180910390f35b34801561097757600080fd5b50610980612234565b60405161098d91906145d8565b60405180910390f35b3480156109a257600080fd5b506109ab61225a565b005b3480156109b957600080fd5b506109d460048036038101906109cf9190614530565b6122e9565b005b3480156109e257600080fd5b506109fd60048036038101906109f89190614620565b6124ab565b005b348015610a0b57600080fd5b50610a14612798565b604051610a2191906147f4565b60405180910390f35b348015610a3657600080fd5b50610a3f6127be565b604051610a4c91906143d0565b60405180910390f35b610a5d612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae19061485b565b60405180910390fd5b600654600881905550600654600781905550565b60265481565b60606040518060400160405280600f81526020017f426167204f6620457468657265756d0000000000000000000000000000000000815250905090565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c219190614210565b60405180910390a36001905092915050565b6000600654905090565b610c45612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc99061485b565b60405180910390fd5b84601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050565b60145481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461101057610f8f826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289e9092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61101b848484612902565b90509392505050565b60006110a1611054600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661144f565b611093611082600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661144f565b60065461325e90919063ffffffff16565b61325e90919063ffffffff16565b905090565b6110ae612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461113b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111329061485b565b60405180910390fd5b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632d48e89683836040518363ffffffff1660e01b815260040161119892919061487b565b600060405180830381600087803b1580156111b257600080fd5b505af11580156111c6573d6000803e3d6000fd5b505050505050565b6111d6612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125a9061485b565b60405180910390fd5b6001602160146101000a81548160ff02191690831515021790555043602281905550565b60006009905090565b600d6020528060005260406000206000915054906101000a900460ff1681565b6112b8612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133c9061485b565b60405180910390fd5b61134d6132a8565b565b600061137b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b41565b9050919050565b61138a612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140e9061485b565b60405180910390fd5b81602560006101000a81548160ff021916908315150217905550806026819055505050565b602560009054906101000a900460ff1681565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114a0612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461152d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115249061485b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60075481565b60006115fb611841565b905090565b600080821415611687578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161164391906145d8565b602060405180830381865afa158015611660573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168491906148b9565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016116e49291906148e6565b6020604051808303816000875af1158015611703573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117279190614924565b905092915050565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611797573d6000803e3d6000fd5b50565b6117a2612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461182f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118269061485b565b60405180910390fd5b81601e8190555080601f819055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f424f540000000000000000000000000000000000000000000000000000000000815250905090565b6118af612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461193c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119339061485b565b60405180910390fd5b620b71b0811061194b57600080fd5b8060248190555050565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611988338484612902565b905092915050565b611998612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c9061485b565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b03612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b879061485b565b60405180910390fd5b6103e8600654611ba091906149af565b6008541015611bae57600080fd5b6103e881600654611bbf91906149e0565b611bc991906149af565b60088190555050565b611bda612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5e9061485b565b60405180910390fd5b816016819055508260178190555080601881905550505050565b611c89612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0d9061485b565b60405180910390fd5b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638aee8127826040518263ffffffff1660e01b8152600401611d7191906145d8565b600060405180830381600087803b158015611d8b57600080fd5b505af1158015611d9f573d6000803e3d6000fd5b5050505050565b611dae612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e329061485b565b60405180910390fd5b6103e8600654611e4b91906149af565b6007541015611e5957600080fd5b6103e881600654611e6a91906149e0565b611e7491906149af565b60078190555050565b6000611e87612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0b9061485b565b60405180910390fd5b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e5711e8b8585856040518463ffffffff1660e01b8152600401611f7393929190614a3a565b6020604051808303816000875af1158015611f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb69190614924565b90509392505050565b6000479050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064848461200e91906149e0565b61201891906149af565b9081150290604051600060405180830381858888f19350505050158015612043573d6000803e3d6000fd5b505050565b612050612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d49061485b565b60405180910390fd5b86600e8190555085600f819055508460108190555083601181905550826012819055508160138190555082828587898b6121179190614a71565b6121219190614a71565b61212b9190614a71565b6121359190614a71565b61213f9190614a71565b60148190555080601581905550600360155461215b91906149af565b6014541061219e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219590614b13565b60405180910390fd5b50505050505050565b60085481565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b81526004016122b591906145d8565b600060405180830381600087803b1580156122cf57600080fd5b505af11580156122e3573d6000803e3d6000fd5b50505050565b6122f1612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461237e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123759061485b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156123ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e590614ba5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6124b3612896565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612540576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125379061485b565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156125ca5750602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6125d357600080fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080156126c557602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b815260040161268e929190614c00565b600060405180830381600087803b1580156126a857600080fd5b505af11580156126bc573d6000803e3d6000fd5b50505050612794565b602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016127619291906148e6565b600060405180830381600087803b15801561277b57600080fd5b505af115801561278f573d6000803e3d6000fd5b505050505b5050565b602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602160149054906101000a900460ff1681565b6000808314156127e45760009050612846565b600082846127f291906149e0565b905082848261280191906149af565b14612841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283890614c9b565b60405180910390fd5b809150505b92915050565b600061288e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613990565b905092915050565b600033905090565b60008383111582906128e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128dd91906142c4565b60405180910390fd5b50600083856128f59190614cbb565b9050809150509392505050565b6000602760009054906101000a900460ff161561292b576129248484846139f3565b9050613257565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129cf5750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a2457602160149054906101000a900460ff16612a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1a90614d3b565b60405180910390fd5b5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612aaa57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612b045750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612b5e5750602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612bb85750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612c125750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612c685750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ccc576000612c788461144f565b90506008548382612c899190614a71565b1115612cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc190614dcd565b60405180910390fd5b505b612cd68483613bc6565b612cde613c63565b15612cec57612ceb6132a8565b5b612d75826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289e9092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612e5b5750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612e6f57612e6a858486613d3a565b612e71565b825b9050612ec581600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411290919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661302b57602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612ff59291906148e6565b600060405180830381600087803b15801561300f57600080fd5b505af1925050508015613020575060015b6130295761302a565b5b5b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661314e57602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9685600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016131189291906148e6565b600060405180830381600087803b15801561313257600080fd5b505af1925050508015613143575060015b61314c5761314d565b5b5b6000600f5411156131ec57602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796024546040518263ffffffff1660e01b81526004016131b69190614210565b600060405180830381600087803b1580156131d057600080fd5b505af19250505080156131e1575060015b6131ea576131eb565b5b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516132499190614210565b60405180910390a360019150505b9392505050565b60006132a083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061289e565b905092915050565b6001602760006101000a81548160ff02191690831515021790555060006132d3601e54601f54614170565b6132df57600e546132e2565b60005b905060006133226002613314601454613306866026546127d190919063ffffffff16565b61284c90919063ffffffff16565b61284c90919063ffffffff16565b9050600061333b8260265461325e90919063ffffffff16565b90506000600267ffffffffffffffff81111561335a57613359614ded565b5b6040519080825280602002602001820160405280156133885781602001602082028036833780820191505090505b50905030816000815181106133a05761339f614e1c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061341157613410614e1c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016134b4959493929190614f09565b600060405180830381600087803b1580156134ce57600080fd5b505af11580156134e2573d6000803e3d6000fd5b5050505060006134fb824761325e90919063ffffffff16565b9050600061352761351660028961284c90919063ffffffff16565b60145461325e90919063ffffffff16565b905060006135636002613555846135478c886127d190919063ffffffff16565b61284c90919063ffffffff16565b61284c90919063ffffffff16565b9050600061358e83613580600f54876127d190919063ffffffff16565b61284c90919063ffffffff16565b905060006135b9846135ab601054886127d190919063ffffffff16565b61284c90919063ffffffff16565b905060006135e4856135d6601154896127d190919063ffffffff16565b61284c90919063ffffffff16565b9050600061360f866136016012548a6127d190919063ffffffff16565b61284c90919063ffffffff16565b9050602360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561367b57600080fd5b505af19350505050801561368d575060015b61369657613697565b5b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684617530906040516136e390614f94565b600060405180830381858888f193505050503d8060008114613721576040519150601f19603f3d011682016040523d82523d6000602084013e613726565b606091505b50509050601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836175309060405161377490614f94565b600060405180830381858888f193505050503d80600081146137b2576040519150601f19603f3d011682016040523d82523d6000602084013e6137b7565b606091505b505080915050601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826175309060405161380790614f94565b600060405180830381858888f193505050503d8060008114613845576040519150601f19603f3d011682016040523d82523d6000602084013e61384a565b606091505b5050809150506000905060008c111561396657602060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71987308f600080601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016138e696959493929190614fa9565b60606040518083038185885af1158015613904573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613929919061500a565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506868d60405161395d92919061487b565b60405180910390a15b505050505050505050505050506000602760006101000a81548160ff021916908315150217905550565b600080831182906139d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139ce91906142c4565b60405180910390fd5b50600083856139e691906149af565b9050809150509392505050565b6000613a7e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289e9092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b1382600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411290919063ffffffff16565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613bb39190614210565b60405180910390a3600190509392505050565b60075481111580613c205750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c56906150a9565b60405180910390fd5b5050565b6000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015613cd05750602760009054906101000a900460ff16155b8015613ce85750602560009054906101000a900460ff165b8015613d355750602654600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6000806018549050602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613da2576016549050613dff565b602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415613dfe5760175490505b5b6000613e486064601554613e1391906149e0565b613e3a84613e2c6014548a6127d190919063ffffffff16565b6127d190919063ffffffff16565b61284c90919063ffffffff16565b90506000613e75601454613e67601354856127d190919063ffffffff16565b61284c90919063ffffffff16565b90506000613e8c828461325e90919063ffffffff16565b9050613ee081600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411290919063ffffffff16565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f978260096000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461411290919063ffffffff16565b60096000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516140599190614210565b60405180910390a360008211156140f257601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516140e99190614210565b60405180910390a35b614105838861325e90919063ffffffff16565b9450505050509392505050565b60008082846141219190614a71565b905083811015614166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161415d90615115565b60405180910390fd5b8091505092915050565b60008261417c83614185565b11905092915050565b60006141f0614192611024565b6141e26141d360026141c5602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661144f565b6127d190919063ffffffff16565b856127d190919063ffffffff16565b61284c90919063ffffffff16565b9050919050565b6000819050919050565b61420a816141f7565b82525050565b60006020820190506142256000830184614201565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561426557808201518184015260208101905061424a565b83811115614274576000848401525b50505050565b6000601f19601f8301169050919050565b60006142968261422b565b6142a08185614236565b93506142b0818560208601614247565b6142b98161427a565b840191505092915050565b600060208201905081810360008301526142de818461428b565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614316826142eb565b9050919050565b6143268161430b565b811461433157600080fd5b50565b6000813590506143438161431d565b92915050565b614352816141f7565b811461435d57600080fd5b50565b60008135905061436f81614349565b92915050565b6000806040838503121561438c5761438b6142e6565b5b600061439a85828601614334565b92505060206143ab85828601614360565b9150509250929050565b60008115159050919050565b6143ca816143b5565b82525050565b60006020820190506143e560008301846143c1565b92915050565b600080600080600060a08688031215614407576144066142e6565b5b600061441588828901614334565b955050602061442688828901614334565b945050604061443788828901614334565b935050606061444888828901614334565b925050608061445988828901614334565b9150509295509295909350565b60008060006060848603121561447f5761447e6142e6565b5b600061448d86828701614334565b935050602061449e86828701614334565b92505060406144af86828701614360565b9150509250925092565b600080604083850312156144d0576144cf6142e6565b5b60006144de85828601614360565b92505060206144ef85828601614360565b9150509250929050565b600060ff82169050919050565b61450f816144f9565b82525050565b600060208201905061452a6000830184614506565b92915050565b600060208284031215614546576145456142e6565b5b600061455484828501614334565b91505092915050565b614566816143b5565b811461457157600080fd5b50565b6000813590506145838161455d565b92915050565b600080604083850312156145a05761459f6142e6565b5b60006145ae85828601614574565b92505060206145bf85828601614360565b9150509250929050565b6145d28161430b565b82525050565b60006020820190506145ed60008301846145c9565b92915050565b600060208284031215614609576146086142e6565b5b600061461784828501614360565b91505092915050565b60008060408385031215614637576146366142e6565b5b600061464585828601614334565b925050602061465685828601614574565b9150509250929050565b600080600060608486031215614679576146786142e6565b5b600061468786828701614360565b935050602061469886828701614360565b92505060406146a986828701614360565b9150509250925092565b600080600080600080600060e0888a0312156146d2576146d16142e6565b5b60006146e08a828b01614360565b97505060206146f18a828b01614360565b96505060406147028a828b01614360565b95505060606147138a828b01614360565b94505060806147248a828b01614360565b93505060a06147358a828b01614360565b92505060c06147468a828b01614360565b91505092959891949750929550565b6000806040838503121561476c5761476b6142e6565b5b600061477a85828601614334565b925050602061478b85828601614334565b9150509250929050565b6000819050919050565b60006147ba6147b56147b0846142eb565b614795565b6142eb565b9050919050565b60006147cc8261479f565b9050919050565b60006147de826147c1565b9050919050565b6147ee816147d3565b82525050565b600060208201905061480960008301846147e5565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614845602083614236565b91506148508261480f565b602082019050919050565b6000602082019050818103600083015261487481614838565b9050919050565b60006040820190506148906000830185614201565b61489d6020830184614201565b9392505050565b6000815190506148b381614349565b92915050565b6000602082840312156148cf576148ce6142e6565b5b60006148dd848285016148a4565b91505092915050565b60006040820190506148fb60008301856145c9565b6149086020830184614201565b9392505050565b60008151905061491e8161455d565b92915050565b60006020828403121561493a576149396142e6565b5b60006149488482850161490f565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006149ba826141f7565b91506149c5836141f7565b9250826149d5576149d4614951565b5b828204905092915050565b60006149eb826141f7565b91506149f6836141f7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614a2f57614a2e614980565b5b828202905092915050565b6000606082019050614a4f60008301866145c9565b614a5c60208301856145c9565b614a696040830184614201565b949350505050565b6000614a7c826141f7565b9150614a87836141f7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614abc57614abb614980565b5b828201905092915050565b7f466565732063616e6e6f74206265206d6f7265207468616e2033332500000000600082015250565b6000614afd601c83614236565b9150614b0882614ac7565b602082019050919050565b60006020820190508181036000830152614b2c81614af0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614b8f602683614236565b9150614b9a82614b33565b604082019050919050565b60006020820190508181036000830152614bbe81614b82565b9050919050565b6000819050919050565b6000614bea614be5614be084614bc5565b614795565b6141f7565b9050919050565b614bfa81614bcf565b82525050565b6000604082019050614c1560008301856145c9565b614c226020830184614bf1565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c85602183614236565b9150614c9082614c29565b604082019050919050565b60006020820190508181036000830152614cb481614c78565b9050919050565b6000614cc6826141f7565b9150614cd1836141f7565b925082821015614ce457614ce3614980565b5b828203905092915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000614d25601483614236565b9150614d3082614cef565b602082019050919050565b60006020820190508181036000830152614d5481614d18565b9050919050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b6000614db7603e83614236565b9150614dc282614d5b565b604082019050919050565b60006020820190508181036000830152614de681614daa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614e808161430b565b82525050565b6000614e928383614e77565b60208301905092915050565b6000602082019050919050565b6000614eb682614e4b565b614ec08185614e56565b9350614ecb83614e67565b8060005b83811015614efc578151614ee38882614e86565b9750614eee83614e9e565b925050600181019050614ecf565b5085935050505092915050565b600060a082019050614f1e6000830188614201565b614f2b6020830187614bf1565b8181036040830152614f3d8186614eab565b9050614f4c60608301856145c9565b614f596080830184614201565b9695505050505050565b600081905092915050565b50565b6000614f7e600083614f63565b9150614f8982614f6e565b600082019050919050565b6000614f9f82614f71565b9150819050919050565b600060c082019050614fbe60008301896145c9565b614fcb6020830188614201565b614fd86040830187614bf1565b614fe56060830186614bf1565b614ff260808301856145c9565b614fff60a0830184614201565b979650505050505050565b600080600060608486031215615023576150226142e6565b5b6000615031868287016148a4565b9350506020615042868287016148a4565b9250506040615053868287016148a4565b9150509250925092565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000615093601183614236565b915061509e8261505d565b602082019050919050565b600060208201905081810360008301526150c281615086565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006150ff601b83614236565b915061510a826150c9565b602082019050919050565b6000602082019050818103600083015261512e816150f2565b905091905056fea2646970667358221220ff1d66b0c8742543d1fa2ec636f5c46ea64b76660c764494641306ed1d856b7064736f6c634300080b0033
Deployed Bytecode Sourcemap
11398:15484:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16852:130;;;;;;;;;;;;;:::i;:::-;;13363:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14990:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15412:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14720:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24867:451;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12540:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15930:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26334:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25826:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21340:126;;;;;;;;;;;;;:::i;:::-;;14814:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12230:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16763:81;;;;;;;;;;;;;:::i;:::-;;15636:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25326:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13326:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15160:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3076:148;;;;;;;;;;;;;:::i;:::-;;11883:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15076:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20462:287;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21480:111;;;;;;;;;;;;;:::i;:::-;;25490:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2862:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14900:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25683:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13136:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15766:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24052:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2482:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16308:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20900:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20757:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16540:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26119:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21135:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24231:628;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11948:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15271:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12859:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26019:90;;;;;;;;;;;;;:::i;:::-;;3232:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23693:344;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13105:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13168:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16852:130;2999:12;:10;:12::i;:::-;2989:22;;:6;;;;;;;;;;:22;;;2981:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16922:12:::1;;16903:16;:31;;;;16960:12;;16945;:27;;;;16852:130::o:0;13363:55::-;;;;:::o;14990:80::-;15038:13;15062:5;;;;;;;;;;;;;;;;;15055:12;;14990:80;:::o;15412:216::-;15487:4;15539:6;15504:11;:23;15516:10;15504:23;;;;;;;;;;;;;;;:32;15528:7;15504:32;;;;;;;;;;;;;;;:41;;;;15582:7;15561:37;;15570:10;15561:37;;;15591:6;15561:37;;;;;;:::i;:::-;;;;;;;;15616:4;15609:11;;15412:216;;;;:::o;14720:88::-;14775:7;14793:12;;14786:19;;14720:88;:::o;24867:451::-;2999:12;:10;:12::i;:::-;2989:22;;:6;;;;;;;;;;:22;;;2981:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25090:22:::1;25066:21;;:46;;;;;;;;;;;;;;;;;;25146:21;25123:20;;:44;;;;;;;;;;;;;;;;;;25201:21;25178:20;;:44;;;;;;;;;;;;;;;;;;25251:16;25233:15;;:34;;;;;;;;;;;;;;;;;;25295:15;25278:14;;:32;;;;;;;;;;;;;;;;;;24867:451:::0;;;;;:::o;12540:106::-;;;;:::o;15930:370::-;16030:4;16085:17;16050:11;:19;16062:6;16050:19;;;;;;;;;;;;;;;:31;16070:10;16050:31;;;;;;;;;;;;;;;;:52;16047:186;;16152:69;16188:6;16152:69;;;;;;;;;;;;;;;;;:11;:19;16164:6;16152:19;;;;;;;;;;;;;;;:31;16172:10;16152:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;16118:11;:19;16130:6;16118:19;;;;;;;;;;;;;;;:31;16138:10;16118:31;;;;;;;;;;;;;;;:103;;;;16047:186;16252:40;16266:6;16274:9;16285:6;16252:13;:40::i;:::-;16245:47;;15930:370;;;;;:::o;26334:142::-;26387:7;26414:54;26452:15;26462:4;;;;;;;;;;;26452:9;:15::i;:::-;26414:33;26431:15;26441:4;;;;;;;;;;;26431:9;:15::i;:::-;26414:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;26407:61;;26334:142;:::o;25826:185::-;2999:12;:10;:12::i;:::-;2989:22;;:6;;;;;;;;;;:22;;;2981:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25933:11:::1;;;;;;;;;;;:35;;;25969:10;25981:16;25933:65;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25826:185:::0;;:::o;21340:126::-;2999:12;:10;:12::i;:::-;2989:22;;:6;;;;;;;;;;:22;;;2981:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21407:4:::1;21393:11;;:18;;;;;;;;;;;;;;;;;;21436:12;21422:11;:26;;;;21340:126::o:0;14814:80::-;14866:5;11816:1;14875:16;;14814:80;:::o;12230:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;16763:81::-;2999:12;:10;:12::i;:::-;2989:22;;:6;;;;;;;;;;:22;;;2981:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16820:10:::1;:8;:10::i;:::-;16763:81::o:0;15636:122::-;15691:4;15715:35;15723:7;15732:17;15715:7;:35::i;:::-;15708:42;;15636:122;;;:::o;25326:156::-;2999:12;:10;:12::i;:::-;2989:22;;:6;;;;;;;;;;:22;;;2981:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25432:8:::1;25418:11;;:22;;;;;;;;;;;;;;;;;;25467:7;25451:13;:23;;;;25326:156:::0;;:::o;13326:30::-;;;;;;;;;;;;;:::o;15160:105::-;15226:7;15244:9;:18;15254:7;15244:18;;;;;;;;;;;;;;;;15237:25;;15160:105;;;:::o;3076:148::-;2999:12;:10;:12::i;:::-;2989:22;;:6;;;;;;;;;;:22;;;2981:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3183:1:::1;3146:40;;3167:6;::::0;::::1;;;;;;;;3146:40;;;;;;;;;;;;3214:1;3197:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3076:148::o:0;11883:58::-;;;;:::o;15076:78::-;15128:7;15145;:5;:7::i;:::-;15138:14;;15076:78;:::o;20462:287::-;20543:12;20582:1;20572:6;:11;20569:96;;;20615:12;20608:30;;;20647:4;20608:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20599:54;;20569:96;20689:12;20682:29;;;20712:20;;;;;;;;;;;20734:6;20682:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20675:66;;20462:287;;;;:::o;21480:111::-;21524:20;;;;;;;;;;;21516:38;;:61;21555:21;21516:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21480:111::o;25490:185::-;2999:12;:10;:12::i;:::-;2989:22;;:6;;;;;;;;;;:22;;;2981:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25603:7:::1;25585:15;:25;;;;25650:12;25621:26;:41;;;;25490:185:::0;;:::o;2862:79::-;2900:7;2927:6;;;;;;;;;;;2920:13;;2862:79;:::o;14900:84::-;14950:13;14974:7;;;;;;;;;;;;;;;;;14967:14;;14900:84;:::o;25683:135::-;2999:12;:10;:12::i;:::-;2989:22;;:6;;;;;;;;;;:22;;;2981:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25772:6:::1;25766:3;:12;25758:21;;;::::0;::::1;;25807:3;25790:14;:20;;;;25683:135:::0;:::o;13136:19::-;;;;;;;;;;;;;:::o;15766:156::-;15846:4;15870:44;15884:10;15896:9;15907:6;15870:13;:44::i;:::-;15863:51;;15766:156;;;;:::o;24052:165::-;2999:12;:10;:12::i;:::-;2989:22;;:6;;;;;;;;;;:22;;;2981:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24160:6:::1;24138:11;:19;24150:6;24138:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;24203:6;24177:15;:23;24193:6;24177:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;24052:165:::0;;:::o;2482:21::-;;;;;;;;;;;;:::o;16308:224::-;2999:12;:10;:12::i;:::-;2989:22;;:6;;;;;;;;;;:22;;;2981:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16441:4:::1;16426:12;;:19;;;;:::i;:::-;16406:16;;:39;;16398:48;;;::::0;::::1;;16520:4;16492:23;16477:12;;:38;;;;:::i;:::-;16476:48;;;;:::i;:::-;16457:16;:67;;;;16308:224:::0;:::o;20900:226::-;2999:12;:10;:12::i;:::-;2989:22;;:6;;;;;;;;;;:22;;;2981:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21018:5:::1;21001:14;:22;;;;21050:4;21034:13;:20;;;;21086:6;21065:18;:27;;;;20900:226:::0;;;:::o;20757:127::-;2999:12;:10;:12::i;:::-;2989:22;;:6;;;;;;;;;;:22;;;2981:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20836:11:::1;;;;;;;;;;;:26;;;20863:12;20836:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20757:127:::0;:::o;16540:213::-;2999:12;:10;:12::i;:::-;2989:22;;:6;;;;;;;;;;:22;;;2981:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16665:4:::1;16650:12;;:19;;;;:::i;:::-;16634:12;;:35;;16626:44;;;::::0;::::1;;16741:4;16712:24;16697:12;;:39;;;;:::i;:::-;16696:49;;;;:::i;:::-;16681:12;:64;;;;16540:213:::0;:::o;26119:201::-;26225:12;2999;:10;:12::i;:::-;2989:22;;:6;;;;;;;;;;:22;;;2981:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26257:11:::1;;;;;;;;;;;:23;;;26281:12;26295:9;26305:6;26257:55;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26250:62;;26119:201:::0;;;;;:::o;21135:197::-;21204:17;21224:21;21204:41;;21264:14;;;;;;;;;;;21256:32;;:68;21320:3;21301:16;21289:9;:28;;;;:::i;:::-;:34;;;;:::i;:::-;21256:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21193:139;21135:197;:::o;24231:628::-;2999:12;:10;:12::i;:::-;2989:22;;:6;;;;;;;;;;:22;;;2981:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24440:13:::1;24425:12;:28;;;;24476:10;24464:9;:22;;;;24512:13;24497:12;:28;;;;24559:13;24544:12;:28;;;;24592:7;24583:6;:16;;;;24620:8;24610:7;:18;;;;24722:7;24711:8;24695:13;24679;24666:10;24650:13;:26;;;;:::i;:::-;:42;;;;:::i;:::-;:58;;;;:::i;:::-;:69;;;;:::i;:::-;:79;;;;:::i;:::-;24639:8;:90;;;;24757:15;24740:14;:32;;;;24817:1;24802:14;;:16;;;;:::i;:::-;24791:8;;:27;24783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24231:628:::0;;;;;;;:::o;11948:62::-;;;;:::o;15271:133::-;15355:7;15373:11;:19;15385:6;15373:19;;;;;;;;;;;;;;;:28;15393:7;15373:28;;;;;;;;;;;;;;;;15366:35;;15271:133;;;;:::o;12859:35::-;;;;;;;;;;;;;:::o;26019:90::-;26064:11;;;;;;;;;;;:25;;;26090:10;26064:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26019:90::o;3232:244::-;2999:12;:10;:12::i;:::-;2989:22;;:6;;;;;;;;;;:22;;;2981:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3341:1:::1;3321:22;;:8;:22;;;;3313:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3431:8;3402:38;;3423:6;::::0;::::1;;;;;;;;3402:38;;;;;;;;;;;;3460:8;3451:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3232:244:::0;:::o;23693:344::-;2999:12;:10;:12::i;:::-;2989:22;;:6;;;;;;;;;;:22;;;2981:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23805:4:::1;23787:23;;:6;:23;;;;:41;;;;;23824:4;;;;;;;;;;;23814:14;;:6;:14;;;;23787:41;23779:50;;;::::0;::::1;;23867:6;23840:16;:24;23857:6;23840:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;23887:6;23884:146;;;23909:11;;;;;;;;;;;:20;;;23930:6;23938:1;23909:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23884:146;;;23971:11;;;;;;;;;;;:20;;;23992:6;24000:9;:17;24010:6;24000:17;;;;;;;;;;;;;;;;23971:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23884:146;23693:344:::0;;:::o;13105:24::-;;;;;;;;;;;;;:::o;13168:31::-;;;;;;;;;;;;;:::o;660:250::-;718:7;747:1;742;:6;738:47;;;772:1;765:8;;;;738:47;797:9;813:1;809;:5;;;;:::i;:::-;797:17;;842:1;837;833;:5;;;;:::i;:::-;:10;825:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;901:1;894:8;;;660:250;;;;;:::o;916:132::-;974:7;1001:39;1005:1;1008;1001:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;994:46;;916:132;;;;:::o;2203:115::-;2256:15;2299:10;2284:26;;2203:115;:::o;462:192::-;548:7;581:1;576;:6;;584:12;568:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;608:9;624:1;620;:5;;;;:::i;:::-;608:17;;645:1;638:8;;;462:192;;;;;:::o;16992:1649::-;17084:4;17104:6;;;;;;;;;;;17101:63;;;17120:41;17135:6;17143:9;17154:6;17120:14;:41::i;:::-;17113:48;;;;17101:63;17182:14;:22;17197:6;17182:22;;;;;;;;;;;;;;;;;;;;;;;;;17181:23;:53;;;;;17209:14;:25;17224:9;17209:25;;;;;;;;;;;;;;;;;;;;;;;;;17208:26;17181:53;17178:137;;;17258:11;;;;;;;;;;;17250:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;17178:137;17352:14;:22;17367:6;17352:22;;;;;;;;;;;;;;;;;;;;;;;;;17351:23;:53;;;;;17399:4;17378:26;;:9;:26;;;;17351:53;:84;;;;;17430:4;;;;;;;;;;;17409:26;;:9;:26;;;;17351:84;:105;;;;;17452:4;;;;;;;;;;;17439:17;;:9;:17;;;;17351:105;:142;;;;;17473:20;;;;;;;;;;;17460:33;;:9;:33;;;;17351:142;:174;;;;;17510:15;;;;;;;;;;;17497:28;;:9;:28;;;;17351:174;:205;;;;;17530:15;:26;17546:9;17530:26;;;;;;;;;;;;;;;;;;;;;;;;;17529:27;17351:205;17347:398;;;17572:18;17593:20;17603:9;17593;:20::i;:::-;17572:41;;17661:16;;17650:6;17637:10;:19;;;;:::i;:::-;17636:41;;17628:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;17557:188;17347:398;17792:28;17805:6;17813;17792:12;:28::i;:::-;17836:16;:14;:16::i;:::-;17833:35;;;17855:10;:8;:10::i;:::-;17833:35;17900:53;17922:6;17900:53;;;;;;;;;;;;;;;;;:9;:17;17910:6;17900:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;17880:9;:17;17890:6;17880:17;;;;;;;;;;;;;;;:73;;;;17966:22;17992:11;:19;18004:6;17992:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;18015:11;:22;18027:9;18015:22;;;;;;;;;;;;;;;;;;;;;;;;;17992:45;17991:93;;18050:34;18058:6;18066;18074:9;18050:7;:34::i;:::-;17991:93;;;18041:6;17991:93;17966:118;;18118:40;18143:14;18118:9;:20;18128:9;18118:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;18095:9;:20;18105:9;18095:20;;;;;;;;;;;;;;;:63;;;;18175:16;:24;18192:6;18175:24;;;;;;;;;;;;;;;;;;;;;;;;;18171:119;;18220:11;;;;;;;;;;;:20;;;18241:6;18249:9;:17;18259:6;18249:17;;;;;;;;;;;;;;;;18220:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18216:63;;;;;;18171:119;18306:16;:27;18323:9;18306:27;;;;;;;;;;;;;;;;;;;;;;;;;18302:129;;18354:11;;;;;;;;;;;:20;;;18375:9;18386;:20;18396:9;18386:20;;;;;;;;;;;;;;;;18354:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18350:69;;;;;;18302:129;18458:1;18446:9;;:13;18443:98;;;18479:11;;;;;;;;;;;:19;;;18499:14;;18479:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18475:51;;;;;;18443:98;18585:9;18568:43;;18577:6;18568:43;;;18596:14;18568:43;;;;;;:::i;:::-;;;;;;;;18629:4;18622:11;;;16992:1649;;;;;;:::o;320:136::-;378:7;405:43;409:1;412;405:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;398:50;;320:136;;;;:::o;21597:2088::-;13474:4;13465:6;;:13;;;;;;;;;;;;;;;;;;21646:27:::1;21676:60;21692:15;;21709:26;;21676:15;:60::i;:::-;:79;;21743:12;;21676:79;;;21739:1;21676:79;21646:109;;21766:23;21792:59;21849:1;21792:52;21835:8;;21792:38;21810:19;21792:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;21766:85;;21862:20;21885:34;21903:15;21885:13;;:17;;:34;;;;:::i;:::-;21862:57;;21932:21;21970:1;21956:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21932:40;;22001:4;21983;21988:1;21983:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;22027:4;;;;;;;;;;;22017;22022:1;22017:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;22052:21;22076;22052:45;;22110:6;;;;;;;;;;;:57;;;22182:12;22209:1;22225:4;22252;22272:15;22110:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22311:17;22331:40;22357:13;22331:21;:25;;:40;;;;:::i;:::-;22311:60;;22384:19;22406:40;22419:26;22443:1;22419:19;:23;;:26;;;;:::i;:::-;22406:8;;:12;;:40;;;;:::i;:::-;22384:62;;22467:26;22496:58;22552:1;22496:51;22535:11;22496:34;22510:19;22496:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;22467:87;;22565:23;22591:41;22620:11;22591:24;22605:9;;22591;:13;;:24;;;;:::i;:::-;:28;;:41;;;;:::i;:::-;22565:67;;22643:26;22672:44;22704:11;22672:27;22686:12;;22672:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;22643:73;;22727:26;22756:44;22788:11;22756:27;22770:12;;22756:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;22727:73;;22811:20;22834:38;22860:11;22834:21;22848:6;;22834:9;:13;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;22811:61;;22893:11;;;;;;;;;;;:19;;;22920:15;22893:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;22889:61;;;;;;22961:15;22989:20;;;;;;;;;;;22981:34;;23023:18;23048:5;22981:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22960:98;;;23093:20;;;;;;;;;;;23085:34;;23127:18;23152:5;23085:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23069:93;;;;;23197:14;;;;;;;;;;;23189:28;;23225:12;23244:5;23189:65;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23173:81;;;;;23298:5;23285:18;;23337:1;23319:15;:19;23316:362;;;23354:6;;;;;;;;;;;:22;;;23384:18;23430:4;23454:15;23488:1;23508::::0;23528:21:::1;;;;;;;;;;;23568:15;23354:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23618:48;23630:18;23650:15;23618:48;;;;;;;:::i;:::-;;;;;;;;23316:362;21635:2050;;;;;;;;;;;;;13492:5:::0;13483:6;;:14;;;;;;;;;;;;;;;;;;21597:2088::o;1054:189::-;1140:7;1172:1;1168;:5;1175:12;1160:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1199:9;1215:1;1211;:5;;;;:::i;:::-;1199:17;;1234:1;1227:8;;;1054:189;;;;;:::o;18653:330::-;18746:4;18783:53;18805:6;18783:53;;;;;;;;;;;;;;;;;:9;:17;18793:6;18783:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;18763:9;:17;18773:6;18763:17;;;;;;;;;;;;;;;:73;;;;18870:32;18895:6;18870:9;:20;18880:9;18870:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;18847:9;:20;18857:9;18847:20;;;;;;;;;;;;;;;:55;;;;18935:9;18918:35;;18927:6;18918:35;;;18946:6;18918:35;;;;;;:::i;:::-;;;;;;;;18971:4;18964:11;;18653:330;;;;;:::o;18991:166::-;19088:12;;19078:6;:22;;:49;;;;19104:15;:23;19120:6;19104:23;;;;;;;;;;;;;;;;;;;;;;;;;19078:49;19070:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;18991:166;;:::o;20255:197::-;20304:4;20342;;;;;;;;;;;20328:18;;:10;:18;;;;:38;;;;;20360:6;;;;;;;;;;;20359:7;20328:38;:62;;;;;20379:11;;;;;;;;;;;20328:62;:116;;;;;20431:13;;20403:9;:24;20421:4;20403:24;;;;;;;;;;;;;;;;:41;;20328:116;20321:123;;20255:197;:::o;19293:954::-;19379:7;19409:18;19430;;19409:39;;19477:4;;;;;;;;;;;19464:17;;:9;:17;;;19461:154;;;19511:14;;19498:27;;19461:154;;;19556:4;;;;;;;;;;;19546:14;;:6;:14;;;19543:72;;;19590:13;;19577:26;;19543:72;19461:154;19627:17;19647:62;19705:3;19688:14;;:20;;;;:::i;:::-;19647:36;19672:10;19647:20;19658:8;;19647:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;19627:82;;19720:18;19741:36;19768:8;;19741:22;19755:7;;19741:9;:13;;:22;;;;:::i;:::-;:26;;:36;;;;:::i;:::-;19720:57;;19788:22;19813:25;19827:10;19813:9;:13;;:25;;;;:::i;:::-;19788:50;;19878:44;19907:14;19878:9;:24;19896:4;19878:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;19851:9;:24;19869:4;19851:24;;;;;;;;;;;;;;;:71;;;;19962:42;19993:10;19962:9;:26;19972:15;;;;;;;;;;;19962:26;;;;;;;;;;;;;;;;:30;;:42;;;;:::i;:::-;19933:9;:26;19943:15;;;;;;;;;;;19933:26;;;;;;;;;;;;;;;:71;;;;20045:4;20020:47;;20029:6;20020:47;;;20052:14;20020:47;;;;;;:::i;:::-;;;;;;;;20104:1;20091:10;:14;20088:99;;;20143:15;;;;;;;;;;;20126:45;;20135:6;20126:45;;;20160:10;20126:45;;;;;;:::i;:::-;;;;;;;;20088:99;20208:21;20219:9;20208:6;:10;;:21;;;;:::i;:::-;20201:28;;;;;;19293:954;;;;;:::o;133:181::-;191:7;211:9;227:1;223;:5;;;;:::i;:::-;211:17;;252:1;247;:6;;239:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;305:1;298:8;;;133:181;;;;:::o;26660:151::-;26741:4;26797:6;26765:29;26785:8;26765:19;:29::i;:::-;:38;26758:45;;26660:151;;;;:::o;26484:168::-;26553:7;26580:64;26621:22;:20;:22::i;:::-;26580:36;26593:22;26613:1;26593:15;26603:4;;;;;;;;;;;26593:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;26580:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;26573:71;;26484:168;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1913:117::-;2022:1;2019;2012:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:911::-;3941:6;3949;3957;3965;3973;4022:3;4010:9;4001:7;3997:23;3993:33;3990:120;;;4029:79;;:::i;:::-;3990:120;4149:1;4174:53;4219:7;4210:6;4199:9;4195:22;4174:53;:::i;:::-;4164:63;;4120:117;4276:2;4302:53;4347:7;4338:6;4327:9;4323:22;4302:53;:::i;:::-;4292:63;;4247:118;4404:2;4430:53;4475:7;4466:6;4455:9;4451:22;4430:53;:::i;:::-;4420:63;;4375:118;4532:2;4558:53;4603:7;4594:6;4583:9;4579:22;4558:53;:::i;:::-;4548:63;;4503:118;4660:3;4687:53;4732:7;4723:6;4712:9;4708:22;4687:53;:::i;:::-;4677:63;;4631:119;3846:911;;;;;;;;:::o;4763:619::-;4840:6;4848;4856;4905:2;4893:9;4884:7;4880:23;4876:32;4873:119;;;4911:79;;:::i;:::-;4873:119;5031:1;5056:53;5101:7;5092:6;5081:9;5077:22;5056:53;:::i;:::-;5046:63;;5002:117;5158:2;5184:53;5229:7;5220:6;5209:9;5205:22;5184:53;:::i;:::-;5174:63;;5129:118;5286:2;5312:53;5357:7;5348:6;5337:9;5333:22;5312:53;:::i;:::-;5302:63;;5257:118;4763:619;;;;;:::o;5388:474::-;5456:6;5464;5513:2;5501:9;5492:7;5488:23;5484:32;5481:119;;;5519:79;;:::i;:::-;5481:119;5639:1;5664:53;5709:7;5700:6;5689:9;5685:22;5664:53;:::i;:::-;5654:63;;5610:117;5766:2;5792:53;5837:7;5828:6;5817:9;5813:22;5792:53;:::i;:::-;5782:63;;5737:118;5388:474;;;;;:::o;5868:86::-;5903:7;5943:4;5936:5;5932:16;5921:27;;5868:86;;;:::o;5960:112::-;6043:22;6059:5;6043:22;:::i;:::-;6038:3;6031:35;5960:112;;:::o;6078:214::-;6167:4;6205:2;6194:9;6190:18;6182:26;;6218:67;6282:1;6271:9;6267:17;6258:6;6218:67;:::i;:::-;6078:214;;;;:::o;6298:329::-;6357:6;6406:2;6394:9;6385:7;6381:23;6377:32;6374:119;;;6412:79;;:::i;:::-;6374:119;6532:1;6557:53;6602:7;6593:6;6582:9;6578:22;6557:53;:::i;:::-;6547:63;;6503:117;6298:329;;;;:::o;6633:116::-;6703:21;6718:5;6703:21;:::i;:::-;6696:5;6693:32;6683:60;;6739:1;6736;6729:12;6683:60;6633:116;:::o;6755:133::-;6798:5;6836:6;6823:20;6814:29;;6852:30;6876:5;6852:30;:::i;:::-;6755:133;;;;:::o;6894:468::-;6959:6;6967;7016:2;7004:9;6995:7;6991:23;6987:32;6984:119;;;7022:79;;:::i;:::-;6984:119;7142:1;7167:50;7209:7;7200:6;7189:9;7185:22;7167:50;:::i;:::-;7157:60;;7113:114;7266:2;7292:53;7337:7;7328:6;7317:9;7313:22;7292:53;:::i;:::-;7282:63;;7237:118;6894:468;;;;;:::o;7368:118::-;7455:24;7473:5;7455:24;:::i;:::-;7450:3;7443:37;7368:118;;:::o;7492:222::-;7585:4;7623:2;7612:9;7608:18;7600:26;;7636:71;7704:1;7693:9;7689:17;7680:6;7636:71;:::i;:::-;7492:222;;;;:::o;7720:329::-;7779:6;7828:2;7816:9;7807:7;7803:23;7799:32;7796:119;;;7834:79;;:::i;:::-;7796:119;7954:1;7979:53;8024:7;8015:6;8004:9;8000:22;7979:53;:::i;:::-;7969:63;;7925:117;7720:329;;;;:::o;8055:468::-;8120:6;8128;8177:2;8165:9;8156:7;8152:23;8148:32;8145:119;;;8183:79;;:::i;:::-;8145:119;8303:1;8328:53;8373:7;8364:6;8353:9;8349:22;8328:53;:::i;:::-;8318:63;;8274:117;8430:2;8456:50;8498:7;8489:6;8478:9;8474:22;8456:50;:::i;:::-;8446:60;;8401:115;8055:468;;;;;:::o;8529:619::-;8606:6;8614;8622;8671:2;8659:9;8650:7;8646:23;8642:32;8639:119;;;8677:79;;:::i;:::-;8639:119;8797:1;8822:53;8867:7;8858:6;8847:9;8843:22;8822:53;:::i;:::-;8812:63;;8768:117;8924:2;8950:53;8995:7;8986:6;8975:9;8971:22;8950:53;:::i;:::-;8940:63;;8895:118;9052:2;9078:53;9123:7;9114:6;9103:9;9099:22;9078:53;:::i;:::-;9068:63;;9023:118;8529:619;;;;;:::o;9154:1203::-;9267:6;9275;9283;9291;9299;9307;9315;9364:3;9352:9;9343:7;9339:23;9335:33;9332:120;;;9371:79;;:::i;:::-;9332:120;9491:1;9516:53;9561:7;9552:6;9541:9;9537:22;9516:53;:::i;:::-;9506:63;;9462:117;9618:2;9644:53;9689:7;9680:6;9669:9;9665:22;9644:53;:::i;:::-;9634:63;;9589:118;9746:2;9772:53;9817:7;9808:6;9797:9;9793:22;9772:53;:::i;:::-;9762:63;;9717:118;9874:2;9900:53;9945:7;9936:6;9925:9;9921:22;9900:53;:::i;:::-;9890:63;;9845:118;10002:3;10029:53;10074:7;10065:6;10054:9;10050:22;10029:53;:::i;:::-;10019:63;;9973:119;10131:3;10158:53;10203:7;10194:6;10183:9;10179:22;10158:53;:::i;:::-;10148:63;;10102:119;10260:3;10287:53;10332:7;10323:6;10312:9;10308:22;10287:53;:::i;:::-;10277:63;;10231:119;9154:1203;;;;;;;;;;:::o;10363:474::-;10431:6;10439;10488:2;10476:9;10467:7;10463:23;10459:32;10456:119;;;10494:79;;:::i;:::-;10456:119;10614:1;10639:53;10684:7;10675:6;10664:9;10660:22;10639:53;:::i;:::-;10629:63;;10585:117;10741:2;10767:53;10812:7;10803:6;10792:9;10788:22;10767:53;:::i;:::-;10757:63;;10712:118;10363:474;;;;;:::o;10843:60::-;10871:3;10892:5;10885:12;;10843:60;;;:::o;10909:142::-;10959:9;10992:53;11010:34;11019:24;11037:5;11019:24;:::i;:::-;11010:34;:::i;:::-;10992:53;:::i;:::-;10979:66;;10909:142;;;:::o;11057:126::-;11107:9;11140:37;11171:5;11140:37;:::i;:::-;11127:50;;11057:126;;;:::o;11189:144::-;11257:9;11290:37;11321:5;11290:37;:::i;:::-;11277:50;;11189:144;;;:::o;11339:167::-;11444:55;11493:5;11444:55;:::i;:::-;11439:3;11432:68;11339:167;;:::o;11512:258::-;11623:4;11661:2;11650:9;11646:18;11638:26;;11674:89;11760:1;11749:9;11745:17;11736:6;11674:89;:::i;:::-;11512:258;;;;:::o;11776:182::-;11916:34;11912:1;11904:6;11900:14;11893:58;11776:182;:::o;11964:366::-;12106:3;12127:67;12191:2;12186:3;12127:67;:::i;:::-;12120:74;;12203:93;12292:3;12203:93;:::i;:::-;12321:2;12316:3;12312:12;12305:19;;11964:366;;;:::o;12336:419::-;12502:4;12540:2;12529:9;12525:18;12517:26;;12589:9;12583:4;12579:20;12575:1;12564:9;12560:17;12553:47;12617:131;12743:4;12617:131;:::i;:::-;12609:139;;12336:419;;;:::o;12761:332::-;12882:4;12920:2;12909:9;12905:18;12897:26;;12933:71;13001:1;12990:9;12986:17;12977:6;12933:71;:::i;:::-;13014:72;13082:2;13071:9;13067:18;13058:6;13014:72;:::i;:::-;12761:332;;;;;:::o;13099:143::-;13156:5;13187:6;13181:13;13172:22;;13203:33;13230:5;13203:33;:::i;:::-;13099:143;;;;:::o;13248:351::-;13318:6;13367:2;13355:9;13346:7;13342:23;13338:32;13335:119;;;13373:79;;:::i;:::-;13335:119;13493:1;13518:64;13574:7;13565:6;13554:9;13550:22;13518:64;:::i;:::-;13508:74;;13464:128;13248:351;;;;:::o;13605:332::-;13726:4;13764:2;13753:9;13749:18;13741:26;;13777:71;13845:1;13834:9;13830:17;13821:6;13777:71;:::i;:::-;13858:72;13926:2;13915:9;13911:18;13902:6;13858:72;:::i;:::-;13605:332;;;;;:::o;13943:137::-;13997:5;14028:6;14022:13;14013:22;;14044:30;14068:5;14044:30;:::i;:::-;13943:137;;;;:::o;14086:345::-;14153:6;14202:2;14190:9;14181:7;14177:23;14173:32;14170:119;;;14208:79;;:::i;:::-;14170:119;14328:1;14353:61;14406:7;14397:6;14386:9;14382:22;14353:61;:::i;:::-;14343:71;;14299:125;14086:345;;;;:::o;14437:180::-;14485:77;14482:1;14475:88;14582:4;14579:1;14572:15;14606:4;14603:1;14596:15;14623:180;14671:77;14668:1;14661:88;14768:4;14765:1;14758:15;14792:4;14789:1;14782:15;14809:185;14849:1;14866:20;14884:1;14866:20;:::i;:::-;14861:25;;14900:20;14918:1;14900:20;:::i;:::-;14895:25;;14939:1;14929:35;;14944:18;;:::i;:::-;14929:35;14986:1;14983;14979:9;14974:14;;14809:185;;;;:::o;15000:348::-;15040:7;15063:20;15081:1;15063:20;:::i;:::-;15058:25;;15097:20;15115:1;15097:20;:::i;:::-;15092:25;;15285:1;15217:66;15213:74;15210:1;15207:81;15202:1;15195:9;15188:17;15184:105;15181:131;;;15292:18;;:::i;:::-;15181:131;15340:1;15337;15333:9;15322:20;;15000:348;;;;:::o;15354:442::-;15503:4;15541:2;15530:9;15526:18;15518:26;;15554:71;15622:1;15611:9;15607:17;15598:6;15554:71;:::i;:::-;15635:72;15703:2;15692:9;15688:18;15679:6;15635:72;:::i;:::-;15717;15785:2;15774:9;15770:18;15761:6;15717:72;:::i;:::-;15354:442;;;;;;:::o;15802:305::-;15842:3;15861:20;15879:1;15861:20;:::i;:::-;15856:25;;15895:20;15913:1;15895:20;:::i;:::-;15890:25;;16049:1;15981:66;15977:74;15974:1;15971:81;15968:107;;;16055:18;;:::i;:::-;15968:107;16099:1;16096;16092:9;16085:16;;15802:305;;;;:::o;16113:178::-;16253:30;16249:1;16241:6;16237:14;16230:54;16113:178;:::o;16297:366::-;16439:3;16460:67;16524:2;16519:3;16460:67;:::i;:::-;16453:74;;16536:93;16625:3;16536:93;:::i;:::-;16654:2;16649:3;16645:12;16638:19;;16297:366;;;:::o;16669:419::-;16835:4;16873:2;16862:9;16858:18;16850:26;;16922:9;16916:4;16912:20;16908:1;16897:9;16893:17;16886:47;16950:131;17076:4;16950:131;:::i;:::-;16942:139;;16669:419;;;:::o;17094:225::-;17234:34;17230:1;17222:6;17218:14;17211:58;17303:8;17298:2;17290:6;17286:15;17279:33;17094:225;:::o;17325:366::-;17467:3;17488:67;17552:2;17547:3;17488:67;:::i;:::-;17481:74;;17564:93;17653:3;17564:93;:::i;:::-;17682:2;17677:3;17673:12;17666:19;;17325:366;;;:::o;17697:419::-;17863:4;17901:2;17890:9;17886:18;17878:26;;17950:9;17944:4;17940:20;17936:1;17925:9;17921:17;17914:47;17978:131;18104:4;17978:131;:::i;:::-;17970:139;;17697:419;;;:::o;18122:85::-;18167:7;18196:5;18185:16;;18122:85;;;:::o;18213:158::-;18271:9;18304:61;18322:42;18331:32;18357:5;18331:32;:::i;:::-;18322:42;:::i;:::-;18304:61;:::i;:::-;18291:74;;18213:158;;;:::o;18377:147::-;18472:45;18511:5;18472:45;:::i;:::-;18467:3;18460:58;18377:147;;:::o;18530:348::-;18659:4;18697:2;18686:9;18682:18;18674:26;;18710:71;18778:1;18767:9;18763:17;18754:6;18710:71;:::i;:::-;18791:80;18867:2;18856:9;18852:18;18843:6;18791:80;:::i;:::-;18530:348;;;;;:::o;18884:220::-;19024:34;19020:1;19012:6;19008:14;19001:58;19093:3;19088:2;19080:6;19076:15;19069:28;18884:220;:::o;19110:366::-;19252:3;19273:67;19337:2;19332:3;19273:67;:::i;:::-;19266:74;;19349:93;19438:3;19349:93;:::i;:::-;19467:2;19462:3;19458:12;19451:19;;19110:366;;;:::o;19482:419::-;19648:4;19686:2;19675:9;19671:18;19663:26;;19735:9;19729:4;19725:20;19721:1;19710:9;19706:17;19699:47;19763:131;19889:4;19763:131;:::i;:::-;19755:139;;19482:419;;;:::o;19907:191::-;19947:4;19967:20;19985:1;19967:20;:::i;:::-;19962:25;;20001:20;20019:1;20001:20;:::i;:::-;19996:25;;20040:1;20037;20034:8;20031:34;;;20045:18;;:::i;:::-;20031:34;20090:1;20087;20083:9;20075:17;;19907:191;;;;:::o;20104:170::-;20244:22;20240:1;20232:6;20228:14;20221:46;20104:170;:::o;20280:366::-;20422:3;20443:67;20507:2;20502:3;20443:67;:::i;:::-;20436:74;;20519:93;20608:3;20519:93;:::i;:::-;20637:2;20632:3;20628:12;20621:19;;20280:366;;;:::o;20652:419::-;20818:4;20856:2;20845:9;20841:18;20833:26;;20905:9;20899:4;20895:20;20891:1;20880:9;20876:17;20869:47;20933:131;21059:4;20933:131;:::i;:::-;20925:139;;20652:419;;;:::o;21077:249::-;21217:34;21213:1;21205:6;21201:14;21194:58;21286:32;21281:2;21273:6;21269:15;21262:57;21077:249;:::o;21332:366::-;21474:3;21495:67;21559:2;21554:3;21495:67;:::i;:::-;21488:74;;21571:93;21660:3;21571:93;:::i;:::-;21689:2;21684:3;21680:12;21673:19;;21332:366;;;:::o;21704:419::-;21870:4;21908:2;21897:9;21893:18;21885:26;;21957:9;21951:4;21947:20;21943:1;21932:9;21928:17;21921:47;21985:131;22111:4;21985:131;:::i;:::-;21977:139;;21704:419;;;:::o;22129:180::-;22177:77;22174:1;22167:88;22274:4;22271:1;22264:15;22298:4;22295:1;22288:15;22315:180;22363:77;22360:1;22353:88;22460:4;22457:1;22450:15;22484:4;22481:1;22474:15;22501:114;22568:6;22602:5;22596:12;22586:22;;22501:114;;;:::o;22621:184::-;22720:11;22754:6;22749:3;22742:19;22794:4;22789:3;22785:14;22770:29;;22621:184;;;;:::o;22811:132::-;22878:4;22901:3;22893:11;;22931:4;22926:3;22922:14;22914:22;;22811:132;;;:::o;22949:108::-;23026:24;23044:5;23026:24;:::i;:::-;23021:3;23014:37;22949:108;;:::o;23063:179::-;23132:10;23153:46;23195:3;23187:6;23153:46;:::i;:::-;23231:4;23226:3;23222:14;23208:28;;23063:179;;;;:::o;23248:113::-;23318:4;23350;23345:3;23341:14;23333:22;;23248:113;;;:::o;23397:732::-;23516:3;23545:54;23593:5;23545:54;:::i;:::-;23615:86;23694:6;23689:3;23615:86;:::i;:::-;23608:93;;23725:56;23775:5;23725:56;:::i;:::-;23804:7;23835:1;23820:284;23845:6;23842:1;23839:13;23820:284;;;23921:6;23915:13;23948:63;24007:3;23992:13;23948:63;:::i;:::-;23941:70;;24034:60;24087:6;24034:60;:::i;:::-;24024:70;;23880:224;23867:1;23864;23860:9;23855:14;;23820:284;;;23824:14;24120:3;24113:10;;23521:608;;;23397:732;;;;:::o;24135:831::-;24398:4;24436:3;24425:9;24421:19;24413:27;;24450:71;24518:1;24507:9;24503:17;24494:6;24450:71;:::i;:::-;24531:80;24607:2;24596:9;24592:18;24583:6;24531:80;:::i;:::-;24658:9;24652:4;24648:20;24643:2;24632:9;24628:18;24621:48;24686:108;24789:4;24780:6;24686:108;:::i;:::-;24678:116;;24804:72;24872:2;24861:9;24857:18;24848:6;24804:72;:::i;:::-;24886:73;24954:3;24943:9;24939:19;24930:6;24886:73;:::i;:::-;24135:831;;;;;;;;:::o;24972:147::-;25073:11;25110:3;25095:18;;24972:147;;;;:::o;25125:114::-;;:::o;25245:398::-;25404:3;25425:83;25506:1;25501:3;25425:83;:::i;:::-;25418:90;;25517:93;25606:3;25517:93;:::i;:::-;25635:1;25630:3;25626:11;25619:18;;25245:398;;;:::o;25649:379::-;25833:3;25855:147;25998:3;25855:147;:::i;:::-;25848:154;;26019:3;26012:10;;25649:379;;;:::o;26034:807::-;26283:4;26321:3;26310:9;26306:19;26298:27;;26335:71;26403:1;26392:9;26388:17;26379:6;26335:71;:::i;:::-;26416:72;26484:2;26473:9;26469:18;26460:6;26416:72;:::i;:::-;26498:80;26574:2;26563:9;26559:18;26550:6;26498:80;:::i;:::-;26588;26664:2;26653:9;26649:18;26640:6;26588:80;:::i;:::-;26678:73;26746:3;26735:9;26731:19;26722:6;26678:73;:::i;:::-;26761;26829:3;26818:9;26814:19;26805:6;26761:73;:::i;:::-;26034:807;;;;;;;;;:::o;26847:663::-;26935:6;26943;26951;27000:2;26988:9;26979:7;26975:23;26971:32;26968:119;;;27006:79;;:::i;:::-;26968:119;27126:1;27151:64;27207:7;27198:6;27187:9;27183:22;27151:64;:::i;:::-;27141:74;;27097:128;27264:2;27290:64;27346:7;27337:6;27326:9;27322:22;27290:64;:::i;:::-;27280:74;;27235:129;27403:2;27429:64;27485:7;27476:6;27465:9;27461:22;27429:64;:::i;:::-;27419:74;;27374:129;26847:663;;;;;:::o;27516:167::-;27656:19;27652:1;27644:6;27640:14;27633:43;27516:167;:::o;27689:366::-;27831:3;27852:67;27916:2;27911:3;27852:67;:::i;:::-;27845:74;;27928:93;28017:3;27928:93;:::i;:::-;28046:2;28041:3;28037:12;28030:19;;27689:366;;;:::o;28061:419::-;28227:4;28265:2;28254:9;28250:18;28242:26;;28314:9;28308:4;28304:20;28300:1;28289:9;28285:17;28278:47;28342:131;28468:4;28342:131;:::i;:::-;28334:139;;28061:419;;;:::o;28486:177::-;28626:29;28622:1;28614:6;28610:14;28603:53;28486:177;:::o;28669:366::-;28811:3;28832:67;28896:2;28891:3;28832:67;:::i;:::-;28825:74;;28908:93;28997:3;28908:93;:::i;:::-;29026:2;29021:3;29017:12;29010:19;;28669:366;;;:::o;29041:419::-;29207:4;29245:2;29234:9;29230:18;29222:26;;29294:9;29288:4;29284:20;29280:1;29269:9;29265:17;29258:47;29322:131;29448:4;29322:131;:::i;:::-;29314:139;;29041:419;;;:::o
Swarm Source
ipfs://ca600fd0e92dcaf499a91a3792cc93336f210ebc3725041ba27d735cb34ebf4f
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.