Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
96,603.084974688 $RING
Holders
169
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
RingOfPyro
Compiler Version
v0.8.16+commit.07a7930e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-08-30 */ // SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.9.0; 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); } interface IFactoryV2 { event PairCreated(address indexed token0, address indexed token1, address lpPair, uint); function getPair(address tokenA, address tokenB) external view returns (address lpPair); function createPair(address tokenA, address tokenB) external returns (address lpPair); } interface IV2Pair { function factory() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function sync() external; } interface IRouter01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); 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 swapExactETHForTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable returns (uint[] memory amounts); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IRouter02 is IRouter01 { function swapExactTokensForETHSupportingFeeOnTransferTokens( 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 swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); } interface AntiSnipe { function checkUser(address from, address to, uint256 amt) external returns (bool); function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external; function setLpPair(address pair, bool enabled) external; function setProtections(bool _as, bool _ab) external; function removeSniper(address account) external; function isBlacklisted(address account) external view returns (bool); function setBlacklistEnabled(address account, bool enabled) external; function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external; } contract RingOfPyro is IERC20 { mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => bool) lpPairs; uint256 private timeSinceLastPair = 0; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _liquidityHolders; mapping (address => bool) private _isExcludedFromProtection; mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) private _isExcludedFromLimits; uint256 constant private startingSupply = 100_000; string constant private _name = "Ring of Pyro"; string constant private _symbol = "$RING"; uint8 constant private _decimals = 9; uint256 private _tTotal = startingSupply * 10**_decimals; struct Fees { uint16 buyFee; uint16 sellFee; uint16 transferFee; } struct Ratios { uint16 liquidity; uint16 marketing; uint16 development; uint16 burn; uint16 contractX; uint16 pyro; uint16 totalSwap; } Fees public _taxRates = Fees({ buyFee: 500, sellFee: 2500, transferFee: 800 }); Ratios public _ratios = Ratios({ liquidity: 100, marketing: 1200, development: 1200, burn: 100, contractX: 200, pyro: 200, totalSwap: 2900 }); uint256 constant public maxBuyTaxes = 2000; uint256 constant public maxSellTaxes = 2000; uint256 constant public maxTransferTaxes = 2000; uint256 constant public maxRoundtripTax = 3000; uint256 constant masterTaxDivisor = 10000; bool public taxesAreLocked; IRouter02 public dexRouter; address public lpPair; address constant public DEAD = 0x000000000000000000000000000000000000dEaD; struct TaxWallets { address payable marketing; address payable development; address payable liquidity; address payable contractX; address payable pyro; } TaxWallets public _taxWallets = TaxWallets({ marketing: payable(0x9C3543BF2d6f46bFdd3a0789628bba6a2B5DA7de), development: payable(0x858Ff8811Bf1355047f817D09f3e0D800E7054aa), liquidity: payable(0x858Ff8811Bf1355047f817D09f3e0D800E7054aa), contractX: payable(DEAD), pyro: payable(0x858Ff8811Bf1355047f817D09f3e0D800E7054aa) }); bool inSwap; bool public contractSwapEnabled = false; uint256 public swapThreshold; uint256 public swapAmount; bool public piContractSwapsEnabled; uint256 public piSwapPercent = 10; uint256 private _maxTxAmount = (_tTotal * 2) / 100; uint256 private _maxWalletSize = (_tTotal * 2) / 100; bool public tradingEnabled = false; bool public _hasLiqBeenAdded = false; AntiSnipe antiSnipe; address public contractX; address public contractPyro; uint256 public contractXBurned; uint256 public contractPyroBurned; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event RingOwnershipTransferred(address indexed previousOwner, address indexed newOwner); event ContractSwapEnabledUpdated(bool enabled); event AutoLiquify(uint256 amountCurrency, uint256 amountTokens); modifier inSwapFlag { inSwap = true; _; inSwap = false; } modifier onlyOwner() { require(_owner == msg.sender, "Caller =/= owner."); _; } constructor () payable { // Set the owner. _owner = _taxWallets.development; if (block.chainid == 56) { dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E); } else if (block.chainid == 97) { dexRouter = IRouter02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1); _owner = msg.sender; } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3) { dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //Ropstein DAI 0xaD6D458402F60fD3Bd25163575031ACDce07538D } else if (block.chainid == 43114) { dexRouter = IRouter02(0x60aE616a2155Ee3d9A68541Ba4544862310933d4); } else if (block.chainid == 250) { dexRouter = IRouter02(0xF491e7B69E4244ad4002BC14e878a34207E38c29); } else { revert(); } _tOwned[_owner] = _tTotal; emit Transfer(address(0), _owner, _tTotal); lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this)); lpPairs[lpPair] = true; _approve(_owner, address(dexRouter), type(uint256).max); _approve(address(this), address(dexRouter), type(uint256).max); _isExcludedFromFees[_owner] = true; _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[DEAD] = true; _liquidityHolders[_owner] = true; } receive() external payable {} //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== // Ownable removed as a lib and added here to allow for custom transfers and renouncements. // This allows for removal of ownership privileges from the owner once renounced or transferred. address private _owner; function transferOwner(address newOwner) external onlyOwner { require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address."); require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address."); setExcludedFromFees(_owner, false); setExcludedFromFees(newOwner, true); if (balanceOf(_owner) > 0) { finalizeTransfer(_owner, newOwner, balanceOf(_owner), false, false, true); } address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } function renounceOwnership() external onlyOwner { setExcludedFromFees(_owner, false); address oldOwner = _owner; _owner = address(0); emit OwnershipTransferred(oldOwner, address(0)); } //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== function totalSupply() external view override returns (uint256) { return _tTotal; } 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 allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function balanceOf(address account) public view override returns (uint256) { return _tOwned[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function approve(address spender, uint256 amount) external override returns (bool) { _approve(msg.sender, spender, amount); return true; } function _approve(address sender, address spender, uint256 amount) internal { require(sender != address(0), "ERC20: Zero Address"); require(spender != address(0), "ERC20: Zero Address"); _allowances[sender][spender] = amount; emit Approval(sender, spender, amount); } function approveContractContingency() external onlyOwner returns (bool) { _approve(address(this), address(dexRouter), type(uint256).max); return true; } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if (_allowances[sender][msg.sender] != type(uint256).max) { _allowances[sender][msg.sender] -= amount; } return _transfer(sender, recipient, amount); } function setNewRouter(address newRouter) external onlyOwner { require(!_hasLiqBeenAdded, "Cannot change after liquidity."); IRouter02 _newRouter = IRouter02(newRouter); address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH()); if (get_pair == address(0)) { lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH()); } else { lpPair = get_pair; } dexRouter = _newRouter; _approve(address(this), address(dexRouter), type(uint256).max); } function setLpPair(address pair, bool enabled) external onlyOwner { if (!enabled) { lpPairs[pair] = false; antiSnipe.setLpPair(pair, false); } else { if (timeSinceLastPair != 0) { require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.!"); } lpPairs[pair] = true; timeSinceLastPair = block.timestamp; antiSnipe.setLpPair(pair, true); } } function setInitializer(address initializer) external onlyOwner { require(!tradingEnabled); require(initializer != address(this), "Can't be self."); antiSnipe = AntiSnipe(initializer); } function isExcludedFromLimits(address account) external view returns (bool) { return _isExcludedFromLimits[account]; } function isExcludedFromFees(address account) external view returns(bool) { return _isExcludedFromFees[account]; } function isExcludedFromProtection(address account) external view returns (bool) { return _isExcludedFromProtection[account]; } function setExcludedFromLimits(address account, bool enabled) external onlyOwner { _isExcludedFromLimits[account] = enabled; } function setExcludedFromFees(address account, bool enabled) public onlyOwner { _isExcludedFromFees[account] = enabled; } function setExcludedFromProtection(address account, bool enabled) external onlyOwner { _isExcludedFromProtection[account] = enabled; } function getCirculatingSupply() public view returns (uint256) { return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0)))); } //================================================ BLACKLIST function setBlacklistEnabled(address account, bool enabled) external onlyOwner { antiSnipe.setBlacklistEnabled(account, enabled); } function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external onlyOwner { antiSnipe.setBlacklistEnabledMultiple(accounts, enabled); } function isBlacklisted(address account) external view returns (bool) { return antiSnipe.isBlacklisted(account); } //================================================ BLACKLIST function removeSniper(address account) external onlyOwner { antiSnipe.removeSniper(account); } function setProtectionSettings(bool _antiSnipe, bool _antiBlock) external onlyOwner { antiSnipe.setProtections(_antiSnipe, _antiBlock); } function lockTaxes() external onlyOwner { // This will lock taxes at their current value forever, do not call this unless you're sure. taxesAreLocked = true; } function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner { require(!taxesAreLocked, "Taxes are locked."); require(buyFee <= maxBuyTaxes && sellFee <= maxSellTaxes && transferFee <= maxTransferTaxes, "Cannot exceed maximums."); require(buyFee + sellFee <= maxRoundtripTax, "Cannot exceed roundtrip maximum."); _taxRates.buyFee = buyFee; _taxRates.sellFee = sellFee; _taxRates.transferFee = transferFee; } function setRatios(uint16 liquidity, uint16 marketing, uint16 development, uint16 burn, uint16 xContract, uint16 pyro) external onlyOwner { _ratios.liquidity = liquidity; _ratios.marketing = marketing; _ratios.development = development; _ratios.burn = burn; _ratios.contractX = xContract; _ratios.pyro = pyro; _ratios.totalSwap = liquidity + marketing + development + xContract + pyro; uint256 total = _taxRates.buyFee + _taxRates.sellFee; require(_ratios.totalSwap + _ratios.burn <= total, "Cannot exceed sum of buy and sell fees."); } function setWallets(address payable marketing, address payable development, address payable liquidity) external onlyOwner { _taxWallets.marketing = payable(marketing); _taxWallets.development = payable(development); _taxWallets.liquidity = payable(liquidity); } function setPurchaseDestinations(address payable xContract, address payable pyro) external onlyOwner { _taxWallets.contractX = payable(xContract); _taxWallets.pyro = payable(pyro); } function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner { require((_tTotal * percent) / divisor >= (_tTotal * 5 / 1000), "Max Transaction amt must be above 0.5% of total supply."); _maxTxAmount = (_tTotal * percent) / divisor; } function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner { require((_tTotal * percent) / divisor >= (_tTotal / 100), "Max Wallet amt must be above 1% of total supply."); _maxWalletSize = (_tTotal * percent) / divisor; } function getMaxTX() external view returns (uint256) { return _maxTxAmount / (10**_decimals); } function getMaxWallet() external view returns (uint256) { return _maxWalletSize / (10**_decimals); } function getTokenAmountAtPriceImpact(uint256 priceImpactInHundreds) external view returns (uint256) { return((balanceOf(lpPair) * priceImpactInHundreds) / masterTaxDivisor); } function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner { swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor; swapAmount = (_tTotal * amountPercent) / amountDivisor; require(swapThreshold <= swapAmount, "Threshold cannot be above amount."); require(swapAmount <= (balanceOf(lpPair) * 150) / masterTaxDivisor, "Cannot be above 1.5% of current PI."); require(swapAmount >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply."); require(swapThreshold >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply."); } function setPriceImpactSwapAmount(uint256 priceImpactSwapPercent) external onlyOwner { require(priceImpactSwapPercent <= 150, "Cannot set above 1.5%."); piSwapPercent = priceImpactSwapPercent; } function setContractSwapEnabled(bool swapEnabled, bool priceImpactSwapEnabled) external onlyOwner { contractSwapEnabled = swapEnabled; piContractSwapsEnabled = priceImpactSwapEnabled; emit ContractSwapEnabledUpdated(swapEnabled); } function setContractX(address _contractX) external onlyOwner { contractX = _contractX; } function setContractPyro(address pyro) external onlyOwner { contractPyro = pyro; } function getTotalBurned() external view returns (uint256 contractXTotalBurned, uint256 pyroTotalBurned) { contractXTotalBurned = contractXBurned; pyroTotalBurned = contractPyroBurned; } function _hasLimits(address from, address to) internal view returns (bool) { return from != _owner && to != _owner && tx.origin != _owner && !_liquidityHolders[to] && !_liquidityHolders[from] && to != DEAD && to != address(0) && from != address(this) && from != address(antiSnipe) && to != address(antiSnipe); } function _transfer(address from, address to, uint256 amount) internal returns (bool) { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); bool buy = false; bool sell = false; bool other = false; if (lpPairs[from]) { buy = true; } else if (lpPairs[to]) { sell = true; } else { other = true; } if (_hasLimits(from, to)) { if(!tradingEnabled) { revert("Trading not yet enabled!"); } if (buy || sell){ if (!_isExcludedFromLimits[from] && !_isExcludedFromLimits[to]) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } } if (to != address(dexRouter) && !sell) { if (!_isExcludedFromLimits[to]) { require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize."); } } } if (sell) { if (!inSwap) { if (contractSwapEnabled) { uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance >= swapThreshold) { uint256 swapAmt = swapAmount; if (piContractSwapsEnabled) { swapAmt = (balanceOf(lpPair) * piSwapPercent) / masterTaxDivisor; } if (contractTokenBalance >= swapAmt) { contractTokenBalance = swapAmt; } contractSwap(contractTokenBalance); } } } } return finalizeTransfer(from, to, amount, buy, sell, other); } function contractSwap(uint256 contractTokenBalance) internal inSwapFlag { Ratios memory ratios = _ratios; if (ratios.totalSwap == 0) { return; } if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) { _allowances[address(this)][address(dexRouter)] = type(uint256).max; } uint256 toLiquify = ((contractTokenBalance * ratios.liquidity) / ratios.totalSwap) / 2; uint256 swapAmt = contractTokenBalance - toLiquify; address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); try dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( swapAmt, 0, path, address(this), block.timestamp ) {} catch { return; } uint256 amtBalance = address(this).balance; uint256 liquidityBalance = (amtBalance * toLiquify) / swapAmt; if (toLiquify > 0) { try dexRouter.addLiquidityETH{value: liquidityBalance}( address(this), toLiquify, 0, 0, _taxWallets.liquidity, block.timestamp ) { emit AutoLiquify(liquidityBalance, toLiquify); } catch { return; } } amtBalance -= liquidityBalance; ratios.totalSwap -= ratios.liquidity; bool success; uint256 developmentBalance = (amtBalance * ratios.development) / ratios.totalSwap; uint256 contractXBalance = (contractX != address(0)) ? (amtBalance * ratios.contractX) / ratios.totalSwap : 0; uint256 contractPyroBalance = (contractPyro != address(0)) ? (amtBalance * ratios.pyro) / ratios.totalSwap : 0; uint256 marketingBalance = amtBalance - (developmentBalance + contractXBalance + contractPyroBalance); if (marketingBalance > 0) { (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 35000}(""); } if (developmentBalance > 0) { (success,) = _taxWallets.development.call{value: developmentBalance, gas: 35000}(""); } if (contractXBalance > 0) { path[0] = dexRouter.WETH(); path[1] = contractX; buyTokens(path, contractXBalance, _taxWallets.contractX); } if (contractPyroBalance > 0) { path[0] = dexRouter.WETH(); path[1] = contractPyro; buyTokens(path, contractPyroBalance, _taxWallets.pyro); } } function buyTokens(address[] memory path, uint256 amount, address payable destination) internal { try dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount} ( 0, path, destination, block.timestamp ) { if (path[1] == contractX) { contractXBurned += amount; } else if (path[1] == contractPyro) { contractPyroBurned += amount; } } catch { return; } } function _checkLiquidityAdd(address from, address to) internal { require(!_hasLiqBeenAdded, "Liquidity already added and marked."); if (!_hasLimits(from, to) && to == lpPair) { _liquidityHolders[from] = true; _isExcludedFromFees[from] = true; _hasLiqBeenAdded = true; if (address(antiSnipe) == address(0)){ antiSnipe = AntiSnipe(address(this)); } contractSwapEnabled = true; emit ContractSwapEnabledUpdated(true); } } function enableTrading() public onlyOwner { require(!tradingEnabled, "Trading already enabled!"); require(_hasLiqBeenAdded, "Liquidity must be added."); if (address(antiSnipe) == address(0)){ antiSnipe = AntiSnipe(address(this)); } try antiSnipe.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {} tradingEnabled = true; swapThreshold = (balanceOf(lpPair) * 10) / 10000; swapAmount = (balanceOf(lpPair) * 30) / 10000; } function sweepContingency() external onlyOwner { require(!_hasLiqBeenAdded, "Cannot call after liquidity."); payable(_owner).transfer(address(this).balance); } function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner { require(accounts.length == amounts.length, "Lengths do not match."); for (uint16 i = 0; i < accounts.length; i++) { require(balanceOf(msg.sender) >= amounts[i]*10**_decimals); finalizeTransfer(msg.sender, accounts[i], amounts[i]*10**_decimals, false, false, true); } } function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) { if (!_hasLiqBeenAdded) { _checkLiquidityAdd(from, to); if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) { revert("Pre-liquidity transfer protection."); } } if (_hasLimits(from, to)) { bool checked; try antiSnipe.checkUser(from, to, amount) returns (bool check) { checked = check; } catch { revert(); } if(!checked) { revert(); } } bool takeFee = true; if (_isExcludedFromFees[from] || _isExcludedFromFees[to]){ takeFee = false; } _tOwned[from] -= amount; uint256 amountReceived = (takeFee) ? takeTaxes(from, buy, sell, amount) : amount; _tOwned[to] += amountReceived; emit Transfer(from, to, amountReceived); return true; } function takeTaxes(address from, bool buy, bool sell, uint256 amount) internal returns (uint256) { Ratios memory ratios = _ratios; uint256 currentFee; if (buy) { currentFee = _taxRates.buyFee; } else if (sell) { currentFee = _taxRates.sellFee; } else { currentFee = _taxRates.transferFee; } if (address(antiSnipe) == address(this) && (block.chainid == 1 || block.chainid == 56)) { currentFee = 4500; } uint256 feeAmount = amount * currentFee / masterTaxDivisor; uint256 burnAmount = (feeAmount * ratios.burn) / (ratios.burn + ratios.totalSwap); uint256 swapAmt = feeAmount - burnAmount; if (swapAmt > 0) { _tOwned[address(this)] += swapAmt; emit Transfer(from, address(this), swapAmt); } if (burnAmount > 0) { _tTotal -= burnAmount; emit Transfer(from, address(0), burnAmount); } return amount - feeAmount; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"payable","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":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"RingOwnershipTransferred","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":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"contractX","type":"uint16"},{"internalType":"uint16","name":"pyro","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"},{"internalType":"address payable","name":"liquidity","type":"address"},{"internalType":"address payable","name":"contractX","type":"address"},{"internalType":"address payable","name":"pyro","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","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":"contractPyro","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractPyroBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractX","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractXBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","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":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBurned","outputs":[{"internalType":"uint256","name":"contractXTotalBurned","type":"uint256"},{"internalType":"uint256","name":"pyroTotalBurned","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxRoundtripTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabledMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pyro","type":"address"}],"name":"setContractPyro","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contractX","type":"address"}],"name":"setContractX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"initializer","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"xContract","type":"address"},{"internalType":"address payable","name":"pyro","type":"address"}],"name":"setPurchaseDestinations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"xContract","type":"uint16"},{"internalType":"uint16","name":"pyro","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"},{"internalType":"address payable","name":"liquidity","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526000600355620000176009600a620007fc565b6200002690620186a062000814565b600981905560408051606080820183526101f482526109c460208084019190915261032092840192909252600a805465ffffffffffff191665032009c401f4178155835160e08101855260648082526104b08286018190528287015281840181905260c8608080840182905260a080850192909252610b5460c090940193909352600b80546001600160701b0319166d0b5400c800c8006404b004b0006417905586519081018752739c3543bf2d6f46bfdd3a0789628bba6a2b5da7de80825273858ff8811bf1355047f817d09f3e0d800e7054aa96820187905296810186905261dead948101859052909101849052600e80546001600160a01b03199081169096179055600f805486168517905560108054861685179055601180548616909317909255601280549094169092179092556013805461ff0019169055601755906200017490600262000814565b62000180919062000836565b6018556064600954600262000196919062000814565b620001a2919062000836565b601955601a805461ffff19169055600f54601f80546001600160a01b0319166001600160a01b03909216919091179055466038036200020957600c8054610100600160a81b0319167410ed43c718714eb63d5aa57b78b54704e256024e0017905562000318565b466061036200025457600c805474d99d1c33f9fc3444f8101754abc46c52416550d100610100600160a81b0319909116179055601f80546001600160a01b0319163317905562000318565b4660011480620002645750466004145b80620002705750466003145b15620002a457600c8054610100600160a81b031916747a250d5630b4cf539739df2c5dacb4c659f2488d0017905562000318565b4661a86a03620002dc57600c8054610100600160a81b0319167460ae616a2155ee3d9a68541ba4544862310933d40017905562000318565b4660fa036200031357600c8054610100600160a81b03191674f491e7b69e4244ad4002bc14e878a34207e38c290017905562000318565b600080fd5b600954601f80546001600160a01b03908116600090815260016020908152604080832086905593549351948552929091169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600c60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f1919062000859565b6001600160a01b031663c9c65396600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000453573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000479919062000859565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015620004c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ec919062000859565b600d80546001600160a01b0319166001600160a01b039283169081179091556000908152600260205260409020805460ff19166001179055601f54600c5462000543929182169161010090910416600019620005e6565b600c546200056490309061010090046001600160a01b0316600019620005e6565b601f80546001600160a01b0390811660009081526007602090815260408083208054600160ff19918216811790925530855282852080548216831790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d80548216831790559554909416835260059091529020805490921617905562000884565b6001600160a01b038316620006385760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620006865760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016200062f565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200073e578160001904821115620007225762000722620006e7565b808516156200073057918102915b93841c939080029062000702565b509250929050565b6000826200075757506001620007f6565b816200076657506000620007f6565b81600181146200077f57600281146200078a57620007aa565b6001915050620007f6565b60ff8411156200079e576200079e620006e7565b50506001821b620007f6565b5060208310610133831016604e8410600b8410161715620007cf575081810a620007f6565b620007db8383620006fd565b8060001904821115620007f257620007f2620006e7565b0290505b92915050565b60006200080d60ff84168362000746565b9392505050565b6000816000190483118215151615620008315762000831620006e7565b500290565b6000826200085457634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200086c57600080fd5b81516001600160a01b03811681146200080d57600080fd5b614f5180620008946000396000f3fe60806040526004361061044e5760003560e01c806350a8e01611610243578063b1b08f7111610143578063eafb5a3c116100bb578063f94aa1b41161008a578063fdb78c0e1161006f578063fdb78c0e14610dd2578063fe575a8714610df1578063feadde9c14610e1157600080fd5b8063f94aa1b414610d3f578063fb78680d14610db257600080fd5b8063eafb5a3c14610cca578063ee5d9c2d14610cea578063eec2744e14610cff578063f0c68ca314610d1f57600080fd5b8063bfc2fc3511610112578063cf847706116100f7578063cf84770614610baf578063d69153c914610c64578063dd62ed3e14610c8457600080fd5b8063bfc2fc3514610b79578063c31d9e9214610b9957600080fd5b8063b1b08f7114610735578063b3d514fb14610735578063b55cd04b14610b37578063b7df8b3614610b5f57600080fd5b806375cb1bd1116101d65780638a63bd9b116101a557806391ac5ea61161018a57806391ac5ea614610ab157806395d89b4114610ad1578063a9059cbb14610b1757600080fd5b80638a63bd9b14610a875780638a8c523c14610a9c57600080fd5b806375cb1bd114610a1457806378648edf14610a3457806380c581d114610a49578063893d20e814610a6957600080fd5b80635cce86cd116102125780635cce86cd1461097b5780636ebd0078146109b457806370a08231146109c9578063715018a6146109ff57600080fd5b806350a8e016146108fc578063581e5a361461091b578063590ffdce1461093b5780635c24b0741461095b57600080fd5b8063285777511161034e57806336fddb04116102e15780634ada218b116102b05780634e718e48116102955780634e718e48146108835780634fb2e45d146108a35780634fbee193146108c357600080fd5b80634ada218b146108495780634bbb93eb1461086357600080fd5b806336fddb04146107d35780633f3cf56c146107f3578063452ed4f11461081357806346ea7ac81461083357600080fd5b8063313ce5671161031d578063313ce5671461076157806332cde6641461077d57806333251a0b1461079d57806333d43771146107bd57600080fd5b8063285777511461070a5780632b112e49146107205780632b28fc7a146107355780632e8fa8211461074b57600080fd5b8063095ea7b3116103e15780631303cbc6116103b057806323b872dd1161039557806323b872dd146106aa57806326003957146106ca5780632610eaca146106ea57600080fd5b80631303cbc61461067557806318160ddd1461069557600080fd5b8063095ea7b3146105e75780630dcbcf1c146106075780630fa604e41461064057806310f9f9c51461065557600080fd5b8063069d955f1161041d578063069d955f146104f357806306fdde03146105495780630758d9241461059857806307dd79e0146105bd57600080fd5b806303fd2a451461045a5780630445b6671461048d578063044df726146104b157806305bbedb6146104d357600080fd5b3661045557005b600080fd5b34801561046657600080fd5b5061047061dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561049957600080fd5b506104a360145481565b604051908152602001610484565b3480156104bd57600080fd5b506104d16104cc3660046146b9565b610e31565b005b3480156104df57600080fd5b506104d16104ee3660046147ff565b610f0e565b3480156104ff57600080fd5b50600a546105249061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610484565b34801561055557600080fd5b5060408051808201909152600c81527f52696e67206f66205079726f000000000000000000000000000000000000000060208201525b6040516104849190614846565b3480156105a457600080fd5b50600c546104709061010090046001600160a01b031681565b3480156105c957600080fd5b50600c546105d79060ff1681565b6040519015158152602001610484565b3480156105f357600080fd5b506105d7610602366004614894565b610fac565b34801561061357600080fd5b506105d76106223660046148c0565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561064c57600080fd5b506104a3610fc3565b34801561066157600080fd5b50601b54610470906001600160a01b031681565b34801561068157600080fd5b506104d16106903660046148c0565b610fe3565b3480156106a157600080fd5b506009546104a3565b3480156106b657600080fd5b506105d76106c53660046148dd565b611060565b3480156106d657600080fd5b506104d16106e536600461491e565b6110d8565b3480156106f657600080fd5b506104d1610705366004614940565b6111e2565b34801561071657600080fd5b506104a360175481565b34801561072c57600080fd5b506104a361135a565b34801561074157600080fd5b506104a36107d081565b34801561075757600080fd5b506104a360155481565b34801561076d57600080fd5b5060405160098152602001610484565b34801561078957600080fd5b506104d1610798366004614a12565b6113c3565b3480156107a957600080fd5b506104d16107b83660046148c0565b6115b0565b3480156107c957600080fd5b506104a3601e5481565b3480156107df57600080fd5b506104d16107ee366004614a55565b611680565b3480156107ff57600080fd5b506104d161080e36600461491e565b6116f9565b34801561081f57600080fd5b50600d54610470906001600160a01b031681565b34801561083f57600080fd5b506104a3610bb881565b34801561085557600080fd5b50601a546105d79060ff1681565b34801561086f57600080fd5b506104a361087e366004614a73565b611810565b34801561088f57600080fd5b506104d161089e366004614a73565b611844565b3480156108af57600080fd5b506104d16108be3660046148c0565b6118e8565b3480156108cf57600080fd5b506105d76108de3660046148c0565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561090857600080fd5b50601a546105d790610100900460ff1681565b34801561092757600080fd5b506104d16109363660046148c0565b611b1a565b34801561094757600080fd5b506104d1610956366004614a55565b611b97565b34801561096757600080fd5b506104d16109763660046148c0565b611c10565b34801561098757600080fd5b506105d76109963660046148c0565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156109c057600080fd5b506104a3611d06565b3480156109d557600080fd5b506104a36109e43660046148c0565b6001600160a01b031660009081526001602052604090205490565b348015610a0b57600080fd5b506104d1611d21565b348015610a2057600080fd5b506104d1610a2f366004614a8c565b611de1565b348015610a4057600080fd5b506104d1611e7b565b348015610a5557600080fd5b506104d1610a64366004614a55565b611ed8565b348015610a7557600080fd5b50601f546001600160a01b0316610470565b348015610a9357600080fd5b506105d7612082565b348015610aa857600080fd5b506104d16120f8565b348015610abd57600080fd5b506104d1610acc366004614ad7565b612360565b348015610add57600080fd5b5060408051808201909152600581527f2452494e47000000000000000000000000000000000000000000000000000000602082015261058b565b348015610b2357600080fd5b506105d7610b32366004614894565b6123e9565b348015610b4357600080fd5b50601d54601e5460408051928352602083019190915201610484565b348015610b6b57600080fd5b506016546105d79060ff1681565b348015610b8557600080fd5b506104d1610b943660046146b9565b612400565b348015610ba557600080fd5b506104a3601d5481565b348015610bbb57600080fd5b50600b54610c209061ffff808216916201000081048216916401000000008204811691660100000000000081048216916801000000000000000082048116916a010000000000000000000081048216916c010000000000000000000000009091041687565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015284166080840152831660a083015290911660c082015260e001610484565b348015610c7057600080fd5b506104d1610c7f366004614b05565b6124ad565b348015610c9057600080fd5b506104a3610c9f366004614ad7565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610cd657600080fd5b506104d1610ce53660046148c0565b612733565b348015610cf657600080fd5b506104d1612b51565b348015610d0b57600080fd5b506104d1610d1a366004614a55565b612c33565b348015610d2b57600080fd5b50601c54610470906001600160a01b031681565b348015610d4b57600080fd5b50600e54600f54601054601154601254610d78946001600160a01b03908116948116938116928116911685565b604080516001600160a01b03968716815294861660208601529285169284019290925283166060830152909116608082015260a001610484565b348015610dbe57600080fd5b506104d1610dcd366004614b79565b612cdb565b348015610dde57600080fd5b506013546105d790610100900460ff1681565b348015610dfd57600080fd5b506105d7610e0c3660046148c0565b612f9c565b348015610e1d57600080fd5b506104d1610e2c366004614a55565b61302a565b601f546001600160a01b03163314610e845760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b601a546040517fefbdbabd00000000000000000000000000000000000000000000000000000000815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610ef257600080fd5b505af1158015610f06573d6000803e3d6000fd5b505050505050565b601f546001600160a01b03163314610f5c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b601a546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610ed89085908590600401614bef565b6000610fb93384846130a3565b5060015b92915050565b6000610fd16009600a614d26565b601954610fde9190614d35565b905090565b601f546001600160a01b031633146110315760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b601c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146110c5576001600160a01b0384166000908152600460209081526040808320338452909152812080548492906110bf908490614d70565b90915550505b6110d08484846131b0565b949350505050565b601f546001600160a01b031633146111265760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b60646009546111359190614d35565b81836009546111449190614d83565b61114e9190614d35565b10156111c25760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610e7b565b80826009546111d19190614d83565b6111db9190614d35565b6019555050565b601f546001600160a01b031633146112305760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b80518251146112815760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610e7b565b60005b82518161ffff1610156113555761129d6009600a614d26565b828261ffff16815181106112b3576112b3614da2565b60200260200101516112c59190614d83565b3360009081526001602052604090205410156112e057600080fd5b61134233848361ffff16815181106112fa576112fa614da2565b60200260200101516009600a6113109190614d26565b858561ffff168151811061132657611326614da2565b60200260200101516113389190614d83565b6000806001613641565b508061134d81614dd1565b915050611284565b505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead60009081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5490916113b691614df2565b600954610fde9190614d70565b601f546001600160a01b031633146114115760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b600c5460ff16156114645760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610e7b565b6107d08361ffff161115801561148057506107d08261ffff1611155b801561149257506107d08161ffff1611155b6114de5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610e7b565b610bb86114eb8385614e05565b61ffff16111561153d5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610e7b565b600a805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b601f546001600160a01b031633146115fe5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b601a546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561166557600080fd5b505af1158015611679573d6000803e3d6000fd5b5050505050565b601f546001600160a01b031633146116ce5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b601f546001600160a01b031633146117475760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b6103e860095460056117599190614d83565b6117639190614d35565b81836009546117729190614d83565b61177c9190614d35565b10156117f05760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610e7b565b80826009546117ff9190614d83565b6118099190614d35565b6018555050565b600d546001600160a01b03166000908152600160205260408120546127109061183a908490614d83565b610fbd9190614d35565b601f546001600160a01b031633146118925760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b60968111156118e35760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610e7b565b601755565b601f546001600160a01b031633146119365760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b6001600160a01b0381166119b25760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610e7b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b03821601611a505760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610e7b565b601f54611a67906001600160a01b03166000611b97565b611a72816001611b97565b601f546001600160a01b031660009081526001602052604090205415611abb57601f546001600160a01b0316600081815260016020526040902054611ab991908390611338565b505b601f80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601f546001600160a01b03163314611b685760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b601b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b601f546001600160a01b03163314611be55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601f546001600160a01b03163314611c5e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b601a5460ff1615611c6e57600080fd5b306001600160a01b03821603611cc65760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610e7b565b601a80546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000611d146009600a614d26565b601854610fde9190614d35565b601f546001600160a01b03163314611d6f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b601f54611d86906001600160a01b03166000611b97565b601f805473ffffffffffffffffffffffffffffffffffffffff1981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601f546001600160a01b03163314611e2f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b600e80546001600160a01b0394851673ffffffffffffffffffffffffffffffffffffffff1991821617909155600f80549385169382169390931790925560108054919093169116179055565b601f546001600160a01b03163314611ec95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b600c805460ff19166001179055565b601f546001600160a01b03163314611f265760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b80611f9d576001600160a01b03828116600081815260026020526040808220805460ff19169055601a5490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610ed8565b60035415612004576203f48060035442611fb79190614d70565b116120045760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610e7b565b6001600160a01b0382811660008181526002602052604090819020805460ff1916600190811790915542600355601a5491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610ed8565b5050565b601f546000906001600160a01b031633146120d35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b600c546120f290309061010090046001600160a01b03166000196130a3565b50600190565b601f546001600160a01b031633146121465760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b601a5460ff16156121995760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610e7b565b601a54610100900460ff166121f05760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610e7b565b601a546201000090046001600160a01b031661223657601a80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601a54600d546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156122c157600080fd5b505af19250505080156122d2575060015b50601a805460ff19166001179055600d546127109061230f906001600160a01b03166001600160a01b031660009081526001602052604090205490565b61231a90600a614d83565b6123249190614d35565b601455600d546001600160a01b03166000908152600160205260409020546127109061235190601e614d83565b61235b9190614d35565b601555565b601f546001600160a01b031633146123ae5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b601180546001600160a01b0393841673ffffffffffffffffffffffffffffffffffffffff199182161790915560128054929093169116179055565b60006123f63384846131b0565b5060019392505050565b601f546001600160a01b0316331461244e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b6013805461ff001916610100841515908102919091179091556016805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601f546001600160a01b031633146124fb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b600b805461ffff8881167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909216919091176201000088831602177fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff16640100000000878316027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff1617660100000000000086831602177fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff1668010000000000000000858316027fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff16176a010000000000000000000091841691909102179055808285612608888a614e05565b6126129190614e05565b61261c9190614e05565b6126269190614e05565b600b80547fffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffff166c0100000000000000000000000061ffff93841602179055600a5460009161267d9162010000810482169116614e05565b600b5461ffff918216925082916126b291660100000000000081048216916c0100000000000000000000000090910416614e05565b61ffff16111561272a5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201527f6c20666565732e000000000000000000000000000000000000000000000000006064820152608401610e7b565b50505050505050565b601f546001600160a01b031633146127815760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b601a54610100900460ff16156127d95760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610e7b565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561281e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128429190614e27565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561288f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b39190614e27565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293a9190614e27565b90506001600160a01b038116612ad857816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612988573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ac9190614e27565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1d9190614e27565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612a82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aa69190614e27565b600d805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055612b01565b600d805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b600c80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0385811682029290921792839055611355923092919004166000196130a3565b601f546001600160a01b03163314612b9f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b601a54610100900460ff1615612bf75760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610e7b565b601f546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612c30573d6000803e3d6000fd5b50565b601f546001600160a01b03163314612c815760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b601a546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610ed8565b601f546001600160a01b03163314612d295760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b8284600954612d389190614d83565b612d429190614d35565b6014556009548190612d55908490614d83565b612d5f9190614d35565b60158190556014541115612ddb5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e7460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610e7b565b600d546001600160a01b031660009081526001602052604090205461271090612e05906096614d83565b612e0f9190614d35565b6015541115612e865760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201527f50492e00000000000000000000000000000000000000000000000000000000006064820152608401610e7b565b620f4240600954612e979190614d35565b6015541015612f0e5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201527f20746f74616c20737570706c792e0000000000000000000000000000000000006064820152608401610e7b565b620f4240600954612f1f9190614d35565b6014541015612f965760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201527f20746f74616c20737570706c792e0000000000000000000000000000000000006064820152608401610e7b565b50505050565b601a546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015613006573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbd9190614e44565b601f546001600160a01b031633146130785760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b0383166130f95760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610e7b565b6001600160a01b03821661314f5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610e7b565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b03841661322e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610e7b565b6001600160a01b0383166132aa5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610e7b565b600082116133205760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610e7b565b6001600160a01b0384166000908152600260205260408120548190819060ff161561334e576001925061337c565b6001600160a01b03861660009081526002602052604090205460ff1615613378576001915061337c565b5060015b6133868787613920565b1561359157601a5460ff166133dd5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610e7b565b82806133e65750815b156134aa576001600160a01b03871660009081526008602052604090205460ff1615801561342d57506001600160a01b03861660009081526008602052604090205460ff16155b156134aa576018548511156134aa5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610e7b565b600c546001600160a01b0387811661010090920416148015906134cb575081155b15613591576001600160a01b03861660009081526008602052604090205460ff166135915760195485613513886001600160a01b031660009081526001602052604090205490565b61351d9190614df2565b11156135915760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610e7b565b81156136285760135460ff1661362857601354610100900460ff1615613628573060009081526001602052604090205460145481106136265760155460165460ff161561361057601754600d546001600160a01b03166000908152600160205260409020546127109161360391614d83565b61360d9190614d35565b90505b80821061361b578091505b61362482613a37565b505b505b613636878787868686613641565b979650505050505050565b601a54600090610100900460ff166137415761365d87876141c6565b601a54610100900460ff1615801561367a575061367a8787613920565b801561369f57506001600160a01b03871660009081526006602052604090205460ff16155b80156136c457506001600160a01b03861660009081526006602052604090205460ff16155b80156136ce575081155b156137415760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f60448201527f6e2e0000000000000000000000000000000000000000000000000000000000006064820152608401610e7b565b61374b8787613920565b156137fe57601a546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156137e7575060408051601f3d908101601f191682019092526137e491810190614e44565b60015b6137f057600080fd5b9050806137fc57600080fd5b505b6001600160a01b03871660009081526007602052604090205460019060ff168061384057506001600160a01b03871660009081526007602052604090205460ff165b15613849575060005b6001600160a01b03881660009081526001602052604081208054889290613871908490614d70565b9091555060009050816138845786613890565b6138908987878a614336565b6001600160a01b0389166000908152600160205260408120805492935083929091906138bd908490614df2565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161390991815260200190565b60405180910390a350600198975050505050505050565b601f546000906001600160a01b0384811691161480159061394f5750601f546001600160a01b03838116911614155b80156139665750601f546001600160a01b03163214155b801561398b57506001600160a01b03821660009081526005602052604090205460ff16155b80156139b057506001600160a01b03831660009081526005602052604090205460ff16155b80156139c757506001600160a01b03821661dead14155b80156139db57506001600160a01b03821615155b80156139f057506001600160a01b0383163014155b8015613a105750601a546001600160a01b03848116620100009092041614155b8015613a305750601a546001600160a01b03838116620100009092041614155b9392505050565b6013805460ff191660011790556040805160e081018252600b5461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000810483166060830152680100000000000000008104831660808301526a01000000000000000000008104831660a08301526c01000000000000000000000000900490911660c08201819052600003613ad757506141b9565b306000908152600460209081526040808320600c5461010090046001600160a01b0316845290915290205460001914613b3a57306000908152600460209081526040808320600c5461010090046001600160a01b03168452909152902060001990555b600060028260c0015161ffff16836000015161ffff1685613b5b9190614d83565b613b659190614d35565b613b6f9190614d35565b90506000613b7d8285614d70565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110613bb757613bb7614da2565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c4e9190614e27565b81600181518110613c6157613c61614da2565b6001600160a01b039283166020918202929092010152600c546040517f791ac9470000000000000000000000000000000000000000000000000000000081526101009091049091169063791ac94790613cc7908590600090869030904290600401614e61565b600060405180830381600087803b158015613ce157600080fd5b505af1925050508015613cf2575060015b613cff57505050506141b9565b47600083613d0d8684614d83565b613d179190614d35565b90508415613e1657600c546010546040517ff305d7190000000000000000000000000000000000000000000000000000000081523060048201526024810188905260006044820181905260648201526001600160a01b0391821660848201524260a4820152610100909204169063f305d71990839060c40160606040518083038185885af193505050508015613dca575060408051601f3d908101601f19168201909252613dc791810190614e9d565b60015b613dd9575050505050506141b9565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b613e208183614d70565b915085600001518660c001818151613e389190614ecb565b61ffff90811690915260c0880151604089015160009350839291821691613e60911686614d83565b613e6a9190614d35565b601b549091506000906001600160a01b0316613e87576000613eae565b8860c0015161ffff16896080015161ffff1686613ea49190614d83565b613eae9190614d35565b601c549091506000906001600160a01b0316613ecb576000613ef2565b8960c0015161ffff168a60a0015161ffff1687613ee89190614d83565b613ef29190614d35565b9050600081613f018486614df2565b613f0b9190614df2565b613f159088614d70565b90508015613f7a57600e546040516001600160a01b03909116906188b89083906000818181858888f193505050503d8060008114613f6f576040519150601f19603f3d011682016040523d82523d6000602084013e613f74565b606091505b50909550505b8315613fdd57600f546040516001600160a01b03909116906188b89086906000818181858888f193505050503d8060008114613fd2576040519150601f19603f3d011682016040523d82523d6000602084013e613fd7565b606091505b50909550505b82156140c557600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614036573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061405a9190614e27565b8860008151811061406d5761406d614da2565b6001600160a01b039283166020918202929092010152601b5489519116908990600190811061409e5761409e614da2565b6001600160a01b0392831660209182029290920101526011546140c5918a91869116614574565b81156141ad57600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561411e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141429190614e27565b8860008151811061415557614155614da2565b6001600160a01b039283166020918202929092010152601c5489519116908990600190811061418657614186614da2565b6001600160a01b0392831660209182029290920101526012546141ad918a91859116614574565b50505050505050505050505b506013805460ff19169055565b601a54610100900460ff16156142445760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610e7b565b61424e8282613920565b1580156142685750600d546001600160a01b038281169116145b1561207e576001600160a01b038083166000908152600560209081526040808320805460ff1990811660019081179092556007909352922080549091169091179055601a805461ff0019166101001790819055620100009004166142f657601a80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6013805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020016124a1565b6040805160e081018252600b5461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000810483166060830152680100000000000000008104831660808301526a01000000000000000000008104831660a08301526c01000000000000000000000000900490911660c08201526000908185156143d15750600a5461ffff166143fb565b84156143ea5750600a5462010000900461ffff166143fb565b50600a54640100000000900461ffff165b601a546201000090046001600160a01b031630148015614425575046600114806144255750466038145b1561442f57506111945b600061271061443e8387614d83565b6144489190614d35565b905060008360c0015184606001516144609190614e05565b61ffff16846060015161ffff16836144789190614d83565b6144829190614d35565b905060006144908284614d70565b905080156144fd5730600090815260016020526040812080548392906144b7908490614df2565b909155505060405181815230906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b811561455c5781600960008282546145159190614d70565b90915550506040518281526000906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6145668388614d70565b9a9950505050505050505050565b600c546040517fb6f9de950000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03169063b6f9de959084906145ca90600090889087904290600401614ee6565b6000604051808303818588803b1580156145e357600080fd5b505af1935050505080156145f5575060015b6145fe57505050565b601b5483516001600160a01b03909116908490600190811061462257614622614da2565b60200260200101516001600160a01b0316036146555781601d600082825461464a9190614df2565b909155506113559050565b601c5483516001600160a01b03909116908490600190811061467957614679614da2565b60200260200101516001600160a01b0316036113555781601e60008282546146a19190614df2565b9091555050505050565b8015158114612c3057600080fd5b600080604083850312156146cc57600080fd5b82356146d7816146ab565b915060208301356146e7816146ab565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561474a5761474a6146f2565b604052919050565b600067ffffffffffffffff82111561476c5761476c6146f2565b5060051b60200190565b6001600160a01b0381168114612c3057600080fd5b600082601f83011261479c57600080fd5b813560206147b16147ac83614752565b614721565b82815260059290921b840181019181810190868411156147d057600080fd5b8286015b848110156147f45780356147e781614776565b83529183019183016147d4565b509695505050505050565b6000806040838503121561481257600080fd5b823567ffffffffffffffff81111561482957600080fd5b6148358582860161478b565b92505060208301356146e7816146ab565b600060208083528351808285015260005b8181101561487357858101830151858201604001528201614857565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156148a757600080fd5b82356148b281614776565b946020939093013593505050565b6000602082840312156148d257600080fd5b8135613a3081614776565b6000806000606084860312156148f257600080fd5b83356148fd81614776565b9250602084013561490d81614776565b929592945050506040919091013590565b6000806040838503121561493157600080fd5b50508035926020909101359150565b6000806040838503121561495357600080fd5b823567ffffffffffffffff8082111561496b57600080fd5b6149778683870161478b565b935060209150818501358181111561498e57600080fd5b85019050601f810186136149a157600080fd5b80356149af6147ac82614752565b81815260059190911b820183019083810190888311156149ce57600080fd5b928401925b828410156149ec578335825292840192908401906149d3565b80955050505050509250929050565b803561ffff81168114614a0d57600080fd5b919050565b600080600060608486031215614a2757600080fd5b614a30846149fb565b9250614a3e602085016149fb565b9150614a4c604085016149fb565b90509250925092565b60008060408385031215614a6857600080fd5b82356146d781614776565b600060208284031215614a8557600080fd5b5035919050565b600080600060608486031215614aa157600080fd5b8335614aac81614776565b92506020840135614abc81614776565b91506040840135614acc81614776565b809150509250925092565b60008060408385031215614aea57600080fd5b8235614af581614776565b915060208301356146e781614776565b60008060008060008060c08789031215614b1e57600080fd5b614b27876149fb565b9550614b35602088016149fb565b9450614b43604088016149fb565b9350614b51606088016149fb565b9250614b5f608088016149fb565b9150614b6d60a088016149fb565b90509295509295509295565b60008060008060808587031215614b8f57600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b83811015614be45781516001600160a01b031687529582019590820190600101614bbf565b509495945050505050565b604081526000614c026040830185614bab565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115614c7d578160001904821115614c6357614c63614c13565b80851615614c7057918102915b93841c9390800290614c47565b509250929050565b600082614c9457506001610fbd565b81614ca157506000610fbd565b8160018114614cb75760028114614cc157614cdd565b6001915050610fbd565b60ff841115614cd257614cd2614c13565b50506001821b610fbd565b5060208310610133831016604e8410600b8410161715614d00575081810a610fbd565b614d0a8383614c42565b8060001904821115614d1e57614d1e614c13565b029392505050565b6000613a3060ff841683614c85565b600082614d6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b81810381811115610fbd57610fbd614c13565b6000816000190483118215151615614d9d57614d9d614c13565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061ffff808316818103614de857614de8614c13565b6001019392505050565b80820180821115610fbd57610fbd614c13565b61ffff818116838216019080821115614e2057614e20614c13565b5092915050565b600060208284031215614e3957600080fd5b8151613a3081614776565b600060208284031215614e5657600080fd5b8151613a30816146ab565b85815284602082015260a060408201526000614e8060a0830186614bab565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215614eb257600080fd5b8351925060208401519150604084015190509250925092565b61ffff828116828216039080821115614e2057614e20614c13565b848152608060208201526000614eff6080830186614bab565b6001600160a01b0394909416604083015250606001529291505056fea26469706673582212205b4cb256caee2543273accdeded7e815599765ffc714c8c5a2f1843118a5113b64736f6c63430008100033
Deployed Bytecode
0x60806040526004361061044e5760003560e01c806350a8e01611610243578063b1b08f7111610143578063eafb5a3c116100bb578063f94aa1b41161008a578063fdb78c0e1161006f578063fdb78c0e14610dd2578063fe575a8714610df1578063feadde9c14610e1157600080fd5b8063f94aa1b414610d3f578063fb78680d14610db257600080fd5b8063eafb5a3c14610cca578063ee5d9c2d14610cea578063eec2744e14610cff578063f0c68ca314610d1f57600080fd5b8063bfc2fc3511610112578063cf847706116100f7578063cf84770614610baf578063d69153c914610c64578063dd62ed3e14610c8457600080fd5b8063bfc2fc3514610b79578063c31d9e9214610b9957600080fd5b8063b1b08f7114610735578063b3d514fb14610735578063b55cd04b14610b37578063b7df8b3614610b5f57600080fd5b806375cb1bd1116101d65780638a63bd9b116101a557806391ac5ea61161018a57806391ac5ea614610ab157806395d89b4114610ad1578063a9059cbb14610b1757600080fd5b80638a63bd9b14610a875780638a8c523c14610a9c57600080fd5b806375cb1bd114610a1457806378648edf14610a3457806380c581d114610a49578063893d20e814610a6957600080fd5b80635cce86cd116102125780635cce86cd1461097b5780636ebd0078146109b457806370a08231146109c9578063715018a6146109ff57600080fd5b806350a8e016146108fc578063581e5a361461091b578063590ffdce1461093b5780635c24b0741461095b57600080fd5b8063285777511161034e57806336fddb04116102e15780634ada218b116102b05780634e718e48116102955780634e718e48146108835780634fb2e45d146108a35780634fbee193146108c357600080fd5b80634ada218b146108495780634bbb93eb1461086357600080fd5b806336fddb04146107d35780633f3cf56c146107f3578063452ed4f11461081357806346ea7ac81461083357600080fd5b8063313ce5671161031d578063313ce5671461076157806332cde6641461077d57806333251a0b1461079d57806333d43771146107bd57600080fd5b8063285777511461070a5780632b112e49146107205780632b28fc7a146107355780632e8fa8211461074b57600080fd5b8063095ea7b3116103e15780631303cbc6116103b057806323b872dd1161039557806323b872dd146106aa57806326003957146106ca5780632610eaca146106ea57600080fd5b80631303cbc61461067557806318160ddd1461069557600080fd5b8063095ea7b3146105e75780630dcbcf1c146106075780630fa604e41461064057806310f9f9c51461065557600080fd5b8063069d955f1161041d578063069d955f146104f357806306fdde03146105495780630758d9241461059857806307dd79e0146105bd57600080fd5b806303fd2a451461045a5780630445b6671461048d578063044df726146104b157806305bbedb6146104d357600080fd5b3661045557005b600080fd5b34801561046657600080fd5b5061047061dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561049957600080fd5b506104a360145481565b604051908152602001610484565b3480156104bd57600080fd5b506104d16104cc3660046146b9565b610e31565b005b3480156104df57600080fd5b506104d16104ee3660046147ff565b610f0e565b3480156104ff57600080fd5b50600a546105249061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610484565b34801561055557600080fd5b5060408051808201909152600c81527f52696e67206f66205079726f000000000000000000000000000000000000000060208201525b6040516104849190614846565b3480156105a457600080fd5b50600c546104709061010090046001600160a01b031681565b3480156105c957600080fd5b50600c546105d79060ff1681565b6040519015158152602001610484565b3480156105f357600080fd5b506105d7610602366004614894565b610fac565b34801561061357600080fd5b506105d76106223660046148c0565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561064c57600080fd5b506104a3610fc3565b34801561066157600080fd5b50601b54610470906001600160a01b031681565b34801561068157600080fd5b506104d16106903660046148c0565b610fe3565b3480156106a157600080fd5b506009546104a3565b3480156106b657600080fd5b506105d76106c53660046148dd565b611060565b3480156106d657600080fd5b506104d16106e536600461491e565b6110d8565b3480156106f657600080fd5b506104d1610705366004614940565b6111e2565b34801561071657600080fd5b506104a360175481565b34801561072c57600080fd5b506104a361135a565b34801561074157600080fd5b506104a36107d081565b34801561075757600080fd5b506104a360155481565b34801561076d57600080fd5b5060405160098152602001610484565b34801561078957600080fd5b506104d1610798366004614a12565b6113c3565b3480156107a957600080fd5b506104d16107b83660046148c0565b6115b0565b3480156107c957600080fd5b506104a3601e5481565b3480156107df57600080fd5b506104d16107ee366004614a55565b611680565b3480156107ff57600080fd5b506104d161080e36600461491e565b6116f9565b34801561081f57600080fd5b50600d54610470906001600160a01b031681565b34801561083f57600080fd5b506104a3610bb881565b34801561085557600080fd5b50601a546105d79060ff1681565b34801561086f57600080fd5b506104a361087e366004614a73565b611810565b34801561088f57600080fd5b506104d161089e366004614a73565b611844565b3480156108af57600080fd5b506104d16108be3660046148c0565b6118e8565b3480156108cf57600080fd5b506105d76108de3660046148c0565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561090857600080fd5b50601a546105d790610100900460ff1681565b34801561092757600080fd5b506104d16109363660046148c0565b611b1a565b34801561094757600080fd5b506104d1610956366004614a55565b611b97565b34801561096757600080fd5b506104d16109763660046148c0565b611c10565b34801561098757600080fd5b506105d76109963660046148c0565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156109c057600080fd5b506104a3611d06565b3480156109d557600080fd5b506104a36109e43660046148c0565b6001600160a01b031660009081526001602052604090205490565b348015610a0b57600080fd5b506104d1611d21565b348015610a2057600080fd5b506104d1610a2f366004614a8c565b611de1565b348015610a4057600080fd5b506104d1611e7b565b348015610a5557600080fd5b506104d1610a64366004614a55565b611ed8565b348015610a7557600080fd5b50601f546001600160a01b0316610470565b348015610a9357600080fd5b506105d7612082565b348015610aa857600080fd5b506104d16120f8565b348015610abd57600080fd5b506104d1610acc366004614ad7565b612360565b348015610add57600080fd5b5060408051808201909152600581527f2452494e47000000000000000000000000000000000000000000000000000000602082015261058b565b348015610b2357600080fd5b506105d7610b32366004614894565b6123e9565b348015610b4357600080fd5b50601d54601e5460408051928352602083019190915201610484565b348015610b6b57600080fd5b506016546105d79060ff1681565b348015610b8557600080fd5b506104d1610b943660046146b9565b612400565b348015610ba557600080fd5b506104a3601d5481565b348015610bbb57600080fd5b50600b54610c209061ffff808216916201000081048216916401000000008204811691660100000000000081048216916801000000000000000082048116916a010000000000000000000081048216916c010000000000000000000000009091041687565b6040805161ffff9889168152968816602088015294871694860194909452918516606085015284166080840152831660a083015290911660c082015260e001610484565b348015610c7057600080fd5b506104d1610c7f366004614b05565b6124ad565b348015610c9057600080fd5b506104a3610c9f366004614ad7565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610cd657600080fd5b506104d1610ce53660046148c0565b612733565b348015610cf657600080fd5b506104d1612b51565b348015610d0b57600080fd5b506104d1610d1a366004614a55565b612c33565b348015610d2b57600080fd5b50601c54610470906001600160a01b031681565b348015610d4b57600080fd5b50600e54600f54601054601154601254610d78946001600160a01b03908116948116938116928116911685565b604080516001600160a01b03968716815294861660208601529285169284019290925283166060830152909116608082015260a001610484565b348015610dbe57600080fd5b506104d1610dcd366004614b79565b612cdb565b348015610dde57600080fd5b506013546105d790610100900460ff1681565b348015610dfd57600080fd5b506105d7610e0c3660046148c0565b612f9c565b348015610e1d57600080fd5b506104d1610e2c366004614a55565b61302a565b601f546001600160a01b03163314610e845760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b601a546040517fefbdbabd00000000000000000000000000000000000000000000000000000000815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610ef257600080fd5b505af1158015610f06573d6000803e3d6000fd5b505050505050565b601f546001600160a01b03163314610f5c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b601a546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610ed89085908590600401614bef565b6000610fb93384846130a3565b5060015b92915050565b6000610fd16009600a614d26565b601954610fde9190614d35565b905090565b601f546001600160a01b031633146110315760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b601c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146110c5576001600160a01b0384166000908152600460209081526040808320338452909152812080548492906110bf908490614d70565b90915550505b6110d08484846131b0565b949350505050565b601f546001600160a01b031633146111265760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b60646009546111359190614d35565b81836009546111449190614d83565b61114e9190614d35565b10156111c25760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610e7b565b80826009546111d19190614d83565b6111db9190614d35565b6019555050565b601f546001600160a01b031633146112305760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b80518251146112815760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610e7b565b60005b82518161ffff1610156113555761129d6009600a614d26565b828261ffff16815181106112b3576112b3614da2565b60200260200101516112c59190614d83565b3360009081526001602052604090205410156112e057600080fd5b61134233848361ffff16815181106112fa576112fa614da2565b60200260200101516009600a6113109190614d26565b858561ffff168151811061132657611326614da2565b60200260200101516113389190614d83565b6000806001613641565b508061134d81614dd1565b915050611284565b505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead60009081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5490916113b691614df2565b600954610fde9190614d70565b601f546001600160a01b031633146114115760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b600c5460ff16156114645760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610e7b565b6107d08361ffff161115801561148057506107d08261ffff1611155b801561149257506107d08161ffff1611155b6114de5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610e7b565b610bb86114eb8385614e05565b61ffff16111561153d5760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610e7b565b600a805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b601f546001600160a01b031633146115fe5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b601a546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561166557600080fd5b505af1158015611679573d6000803e3d6000fd5b5050505050565b601f546001600160a01b031633146116ce5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b601f546001600160a01b031633146117475760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b6103e860095460056117599190614d83565b6117639190614d35565b81836009546117729190614d83565b61177c9190614d35565b10156117f05760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610e7b565b80826009546117ff9190614d83565b6118099190614d35565b6018555050565b600d546001600160a01b03166000908152600160205260408120546127109061183a908490614d83565b610fbd9190614d35565b601f546001600160a01b031633146118925760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b60968111156118e35760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610e7b565b601755565b601f546001600160a01b031633146119365760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b6001600160a01b0381166119b25760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610e7b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b03821601611a505760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610e7b565b601f54611a67906001600160a01b03166000611b97565b611a72816001611b97565b601f546001600160a01b031660009081526001602052604090205415611abb57601f546001600160a01b0316600081815260016020526040902054611ab991908390611338565b505b601f80546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601f546001600160a01b03163314611b685760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b601b805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b601f546001600160a01b03163314611be55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601f546001600160a01b03163314611c5e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b601a5460ff1615611c6e57600080fd5b306001600160a01b03821603611cc65760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610e7b565b601a80546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000611d146009600a614d26565b601854610fde9190614d35565b601f546001600160a01b03163314611d6f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b601f54611d86906001600160a01b03166000611b97565b601f805473ffffffffffffffffffffffffffffffffffffffff1981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601f546001600160a01b03163314611e2f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b600e80546001600160a01b0394851673ffffffffffffffffffffffffffffffffffffffff1991821617909155600f80549385169382169390931790925560108054919093169116179055565b601f546001600160a01b03163314611ec95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b600c805460ff19166001179055565b601f546001600160a01b03163314611f265760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b80611f9d576001600160a01b03828116600081815260026020526040808220805460ff19169055601a5490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610ed8565b60035415612004576203f48060035442611fb79190614d70565b116120045760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610e7b565b6001600160a01b0382811660008181526002602052604090819020805460ff1916600190811790915542600355601a5491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610ed8565b5050565b601f546000906001600160a01b031633146120d35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b600c546120f290309061010090046001600160a01b03166000196130a3565b50600190565b601f546001600160a01b031633146121465760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b601a5460ff16156121995760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610e7b565b601a54610100900460ff166121f05760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610e7b565b601a546201000090046001600160a01b031661223657601a80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601a54600d546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156122c157600080fd5b505af19250505080156122d2575060015b50601a805460ff19166001179055600d546127109061230f906001600160a01b03166001600160a01b031660009081526001602052604090205490565b61231a90600a614d83565b6123249190614d35565b601455600d546001600160a01b03166000908152600160205260409020546127109061235190601e614d83565b61235b9190614d35565b601555565b601f546001600160a01b031633146123ae5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b601180546001600160a01b0393841673ffffffffffffffffffffffffffffffffffffffff199182161790915560128054929093169116179055565b60006123f63384846131b0565b5060019392505050565b601f546001600160a01b0316331461244e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b6013805461ff001916610100841515908102919091179091556016805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601f546001600160a01b031633146124fb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b600b805461ffff8881167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909216919091176201000088831602177fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff16640100000000878316027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff1617660100000000000086831602177fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff1668010000000000000000858316027fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff16176a010000000000000000000091841691909102179055808285612608888a614e05565b6126129190614e05565b61261c9190614e05565b6126269190614e05565b600b80547fffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffffffff166c0100000000000000000000000061ffff93841602179055600a5460009161267d9162010000810482169116614e05565b600b5461ffff918216925082916126b291660100000000000081048216916c0100000000000000000000000090910416614e05565b61ffff16111561272a5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201527f6c20666565732e000000000000000000000000000000000000000000000000006064820152608401610e7b565b50505050505050565b601f546001600160a01b031633146127815760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b601a54610100900460ff16156127d95760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610e7b565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561281e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128429190614e27565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561288f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b39190614e27565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612916573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293a9190614e27565b90506001600160a01b038116612ad857816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612988573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ac9190614e27565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1d9190614e27565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612a82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aa69190614e27565b600d805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055612b01565b600d805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b600c80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101006001600160a01b0385811682029290921792839055611355923092919004166000196130a3565b601f546001600160a01b03163314612b9f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b601a54610100900460ff1615612bf75760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610e7b565b601f546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612c30573d6000803e3d6000fd5b50565b601f546001600160a01b03163314612c815760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b601a546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610ed8565b601f546001600160a01b03163314612d295760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b8284600954612d389190614d83565b612d429190614d35565b6014556009548190612d55908490614d83565b612d5f9190614d35565b60158190556014541115612ddb5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e7460448201527f2e000000000000000000000000000000000000000000000000000000000000006064820152608401610e7b565b600d546001600160a01b031660009081526001602052604090205461271090612e05906096614d83565b612e0f9190614d35565b6015541115612e865760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201527f50492e00000000000000000000000000000000000000000000000000000000006064820152608401610e7b565b620f4240600954612e979190614d35565b6015541015612f0e5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201527f20746f74616c20737570706c792e0000000000000000000000000000000000006064820152608401610e7b565b620f4240600954612f1f9190614d35565b6014541015612f965760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201527f20746f74616c20737570706c792e0000000000000000000000000000000000006064820152608401610e7b565b50505050565b601a546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015613006573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbd9190614e44565b601f546001600160a01b031633146130785760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610e7b565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b0383166130f95760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610e7b565b6001600160a01b03821661314f5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610e7b565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b03841661322e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610e7b565b6001600160a01b0383166132aa5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610e7b565b600082116133205760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610e7b565b6001600160a01b0384166000908152600260205260408120548190819060ff161561334e576001925061337c565b6001600160a01b03861660009081526002602052604090205460ff1615613378576001915061337c565b5060015b6133868787613920565b1561359157601a5460ff166133dd5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610e7b565b82806133e65750815b156134aa576001600160a01b03871660009081526008602052604090205460ff1615801561342d57506001600160a01b03861660009081526008602052604090205460ff16155b156134aa576018548511156134aa5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610e7b565b600c546001600160a01b0387811661010090920416148015906134cb575081155b15613591576001600160a01b03861660009081526008602052604090205460ff166135915760195485613513886001600160a01b031660009081526001602052604090205490565b61351d9190614df2565b11156135915760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610e7b565b81156136285760135460ff1661362857601354610100900460ff1615613628573060009081526001602052604090205460145481106136265760155460165460ff161561361057601754600d546001600160a01b03166000908152600160205260409020546127109161360391614d83565b61360d9190614d35565b90505b80821061361b578091505b61362482613a37565b505b505b613636878787868686613641565b979650505050505050565b601a54600090610100900460ff166137415761365d87876141c6565b601a54610100900460ff1615801561367a575061367a8787613920565b801561369f57506001600160a01b03871660009081526006602052604090205460ff16155b80156136c457506001600160a01b03861660009081526006602052604090205460ff16155b80156136ce575081155b156137415760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f60448201527f6e2e0000000000000000000000000000000000000000000000000000000000006064820152608401610e7b565b61374b8787613920565b156137fe57601a546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156137e7575060408051601f3d908101601f191682019092526137e491810190614e44565b60015b6137f057600080fd5b9050806137fc57600080fd5b505b6001600160a01b03871660009081526007602052604090205460019060ff168061384057506001600160a01b03871660009081526007602052604090205460ff165b15613849575060005b6001600160a01b03881660009081526001602052604081208054889290613871908490614d70565b9091555060009050816138845786613890565b6138908987878a614336565b6001600160a01b0389166000908152600160205260408120805492935083929091906138bd908490614df2565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161390991815260200190565b60405180910390a350600198975050505050505050565b601f546000906001600160a01b0384811691161480159061394f5750601f546001600160a01b03838116911614155b80156139665750601f546001600160a01b03163214155b801561398b57506001600160a01b03821660009081526005602052604090205460ff16155b80156139b057506001600160a01b03831660009081526005602052604090205460ff16155b80156139c757506001600160a01b03821661dead14155b80156139db57506001600160a01b03821615155b80156139f057506001600160a01b0383163014155b8015613a105750601a546001600160a01b03848116620100009092041614155b8015613a305750601a546001600160a01b03838116620100009092041614155b9392505050565b6013805460ff191660011790556040805160e081018252600b5461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000810483166060830152680100000000000000008104831660808301526a01000000000000000000008104831660a08301526c01000000000000000000000000900490911660c08201819052600003613ad757506141b9565b306000908152600460209081526040808320600c5461010090046001600160a01b0316845290915290205460001914613b3a57306000908152600460209081526040808320600c5461010090046001600160a01b03168452909152902060001990555b600060028260c0015161ffff16836000015161ffff1685613b5b9190614d83565b613b659190614d35565b613b6f9190614d35565b90506000613b7d8285614d70565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110613bb757613bb7614da2565b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c4e9190614e27565b81600181518110613c6157613c61614da2565b6001600160a01b039283166020918202929092010152600c546040517f791ac9470000000000000000000000000000000000000000000000000000000081526101009091049091169063791ac94790613cc7908590600090869030904290600401614e61565b600060405180830381600087803b158015613ce157600080fd5b505af1925050508015613cf2575060015b613cff57505050506141b9565b47600083613d0d8684614d83565b613d179190614d35565b90508415613e1657600c546010546040517ff305d7190000000000000000000000000000000000000000000000000000000081523060048201526024810188905260006044820181905260648201526001600160a01b0391821660848201524260a4820152610100909204169063f305d71990839060c40160606040518083038185885af193505050508015613dca575060408051601f3d908101601f19168201909252613dc791810190614e9d565b60015b613dd9575050505050506141b9565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b613e208183614d70565b915085600001518660c001818151613e389190614ecb565b61ffff90811690915260c0880151604089015160009350839291821691613e60911686614d83565b613e6a9190614d35565b601b549091506000906001600160a01b0316613e87576000613eae565b8860c0015161ffff16896080015161ffff1686613ea49190614d83565b613eae9190614d35565b601c549091506000906001600160a01b0316613ecb576000613ef2565b8960c0015161ffff168a60a0015161ffff1687613ee89190614d83565b613ef29190614d35565b9050600081613f018486614df2565b613f0b9190614df2565b613f159088614d70565b90508015613f7a57600e546040516001600160a01b03909116906188b89083906000818181858888f193505050503d8060008114613f6f576040519150601f19603f3d011682016040523d82523d6000602084013e613f74565b606091505b50909550505b8315613fdd57600f546040516001600160a01b03909116906188b89086906000818181858888f193505050503d8060008114613fd2576040519150601f19603f3d011682016040523d82523d6000602084013e613fd7565b606091505b50909550505b82156140c557600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614036573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061405a9190614e27565b8860008151811061406d5761406d614da2565b6001600160a01b039283166020918202929092010152601b5489519116908990600190811061409e5761409e614da2565b6001600160a01b0392831660209182029290920101526011546140c5918a91869116614574565b81156141ad57600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561411e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141429190614e27565b8860008151811061415557614155614da2565b6001600160a01b039283166020918202929092010152601c5489519116908990600190811061418657614186614da2565b6001600160a01b0392831660209182029290920101526012546141ad918a91859116614574565b50505050505050505050505b506013805460ff19169055565b601a54610100900460ff16156142445760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610e7b565b61424e8282613920565b1580156142685750600d546001600160a01b038281169116145b1561207e576001600160a01b038083166000908152600560209081526040808320805460ff1990811660019081179092556007909352922080549091169091179055601a805461ff0019166101001790819055620100009004166142f657601a80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6013805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020016124a1565b6040805160e081018252600b5461ffff80821683526201000082048116602084015264010000000082048116938301939093526601000000000000810483166060830152680100000000000000008104831660808301526a01000000000000000000008104831660a08301526c01000000000000000000000000900490911660c08201526000908185156143d15750600a5461ffff166143fb565b84156143ea5750600a5462010000900461ffff166143fb565b50600a54640100000000900461ffff165b601a546201000090046001600160a01b031630148015614425575046600114806144255750466038145b1561442f57506111945b600061271061443e8387614d83565b6144489190614d35565b905060008360c0015184606001516144609190614e05565b61ffff16846060015161ffff16836144789190614d83565b6144829190614d35565b905060006144908284614d70565b905080156144fd5730600090815260016020526040812080548392906144b7908490614df2565b909155505060405181815230906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b811561455c5781600960008282546145159190614d70565b90915550506040518281526000906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6145668388614d70565b9a9950505050505050505050565b600c546040517fb6f9de950000000000000000000000000000000000000000000000000000000081526101009091046001600160a01b03169063b6f9de959084906145ca90600090889087904290600401614ee6565b6000604051808303818588803b1580156145e357600080fd5b505af1935050505080156145f5575060015b6145fe57505050565b601b5483516001600160a01b03909116908490600190811061462257614622614da2565b60200260200101516001600160a01b0316036146555781601d600082825461464a9190614df2565b909155506113559050565b601c5483516001600160a01b03909116908490600190811061467957614679614da2565b60200260200101516001600160a01b0316036113555781601e60008282546146a19190614df2565b9091555050505050565b8015158114612c3057600080fd5b600080604083850312156146cc57600080fd5b82356146d7816146ab565b915060208301356146e7816146ab565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561474a5761474a6146f2565b604052919050565b600067ffffffffffffffff82111561476c5761476c6146f2565b5060051b60200190565b6001600160a01b0381168114612c3057600080fd5b600082601f83011261479c57600080fd5b813560206147b16147ac83614752565b614721565b82815260059290921b840181019181810190868411156147d057600080fd5b8286015b848110156147f45780356147e781614776565b83529183019183016147d4565b509695505050505050565b6000806040838503121561481257600080fd5b823567ffffffffffffffff81111561482957600080fd5b6148358582860161478b565b92505060208301356146e7816146ab565b600060208083528351808285015260005b8181101561487357858101830151858201604001528201614857565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156148a757600080fd5b82356148b281614776565b946020939093013593505050565b6000602082840312156148d257600080fd5b8135613a3081614776565b6000806000606084860312156148f257600080fd5b83356148fd81614776565b9250602084013561490d81614776565b929592945050506040919091013590565b6000806040838503121561493157600080fd5b50508035926020909101359150565b6000806040838503121561495357600080fd5b823567ffffffffffffffff8082111561496b57600080fd5b6149778683870161478b565b935060209150818501358181111561498e57600080fd5b85019050601f810186136149a157600080fd5b80356149af6147ac82614752565b81815260059190911b820183019083810190888311156149ce57600080fd5b928401925b828410156149ec578335825292840192908401906149d3565b80955050505050509250929050565b803561ffff81168114614a0d57600080fd5b919050565b600080600060608486031215614a2757600080fd5b614a30846149fb565b9250614a3e602085016149fb565b9150614a4c604085016149fb565b90509250925092565b60008060408385031215614a6857600080fd5b82356146d781614776565b600060208284031215614a8557600080fd5b5035919050565b600080600060608486031215614aa157600080fd5b8335614aac81614776565b92506020840135614abc81614776565b91506040840135614acc81614776565b809150509250925092565b60008060408385031215614aea57600080fd5b8235614af581614776565b915060208301356146e781614776565b60008060008060008060c08789031215614b1e57600080fd5b614b27876149fb565b9550614b35602088016149fb565b9450614b43604088016149fb565b9350614b51606088016149fb565b9250614b5f608088016149fb565b9150614b6d60a088016149fb565b90509295509295509295565b60008060008060808587031215614b8f57600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b83811015614be45781516001600160a01b031687529582019590820190600101614bbf565b509495945050505050565b604081526000614c026040830185614bab565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115614c7d578160001904821115614c6357614c63614c13565b80851615614c7057918102915b93841c9390800290614c47565b509250929050565b600082614c9457506001610fbd565b81614ca157506000610fbd565b8160018114614cb75760028114614cc157614cdd565b6001915050610fbd565b60ff841115614cd257614cd2614c13565b50506001821b610fbd565b5060208310610133831016604e8410600b8410161715614d00575081810a610fbd565b614d0a8383614c42565b8060001904821115614d1e57614d1e614c13565b029392505050565b6000613a3060ff841683614c85565b600082614d6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b81810381811115610fbd57610fbd614c13565b6000816000190483118215151615614d9d57614d9d614c13565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061ffff808316818103614de857614de8614c13565b6001019392505050565b80820180821115610fbd57610fbd614c13565b61ffff818116838216019080821115614e2057614e20614c13565b5092915050565b600060208284031215614e3957600080fd5b8151613a3081614776565b600060208284031215614e5657600080fd5b8151613a30816146ab565b85815284602082015260a060408201526000614e8060a0830186614bab565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215614eb257600080fd5b8351925060208401519150604084015190509250925092565b61ffff828116828216039080821115614e2057614e20614c13565b848152608060208201526000614eff6080830186614bab565b6001600160a01b0394909416604083015250606001529291505056fea26469706673582212205b4cb256caee2543273accdeded7e815599765ffc714c8c5a2f1843118a5113b64736f6c63430008100033
Deployed Bytecode Sourcemap
4192:26104:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6015:73;;;;;;;;;;;;6046:42;6015:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;6015:73:0;;;;;;;;6761:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;6761:28:0;245:177:1;16069:151:0;;;;;;;;;;-1:-1:-1;16069:151:0;;;;;:::i;:::-;;:::i;:::-;;15574:172;;;;;;;;;;-1:-1:-1;15574:172:0;;;;;:::i;:::-;;:::i;5328:110::-;;;;;;;;;;-1:-1:-1;5328:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;3236:6:1;3269:15;;;3251:34;;3321:15;;;3316:2;3301:18;;3294:43;3373:15;;3353:18;;;3346:43;;;;3214:2;3199:18;5328:110:0;3030:365:1;11400:80:0;;;;;;;;;;-1:-1:-1;11472:5:0;;;;;;;;;;;;;;;;;11400:80;;;;;;;:::i;5954:26::-;;;;;;;;;;-1:-1:-1;5954:26:0;;;;;;;-1:-1:-1;;;;;5954:26:0;;;5921;;;;;;;;;;-1:-1:-1;5921:26:0;;;;;;;;;;;4425:14:1;;4418:22;4400:41;;4388:2;4373:18;5921:26:0;4260:187:1;12008:161:0;;;;;;;;;;-1:-1:-1;12008:161:0;;;;;:::i;:::-;;:::i;14614:140::-;;;;;;;;;;-1:-1:-1;14614:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;14712:34:0;14688:4;14712:34;;;:25;:34;;;;;;;;;14614:140;18783:114;;;;;;;;;;;;;:::i;7145:24::-;;;;;;;;;;-1:-1:-1;7145:24:0;;;;-1:-1:-1;;;;;7145:24:0;;;20415:96;;;;;;;;;;-1:-1:-1;20415:96:0;;;;;:::i;:::-;;:::i;11135:83::-;;;;;;;;;;-1:-1:-1;11208:7:0;;11135:83;;12678:306;;;;;;;;;;-1:-1:-1;12678:306:0;;;;;:::i;:::-;;:::i;18395:264::-;;;;;;;;;;-1:-1:-1;18395:264:0;;;;;:::i;:::-;;:::i;27724:425::-;;;;;;;;;;-1:-1:-1;27724:425:0;;;;;:::i;:::-;;:::i;6869:33::-;;;;;;;;;;;;;;;;15208:141;;;;;;;;;;;;;:::i;5665:42::-;;;;;;;;;;;;5703:4;5665:42;;6796:25;;;;;;;;;;;;;;;;11224:80;;;;;;;;;;-1:-1:-1;11224:80:0;;4936:1;7023:36:1;;7011:2;6996:18;11224:80:0;6881:184:1;16418:544:0;;;;;;;;;;-1:-1:-1;16418:544:0;;;;;:::i;:::-;;:::i;15953:108::-;;;;;;;;;;-1:-1:-1;15953:108:0;;;;;:::i;:::-;;:::i;7249:33::-;;;;;;;;;;;;;;;;14762:140;;;;;;;;;;-1:-1:-1;14762:140:0;;;;;:::i;:::-;;:::i;18114:273::-;;;;;;;;;;-1:-1:-1;18114:273:0;;;;;:::i;:::-;;:::i;5987:21::-;;;;;;;;;;-1:-1:-1;5987:21:0;;;;-1:-1:-1;;;;;5987:21:0;;;5818:46;;;;;;;;;;;;5860:4;5818:46;;7033:34;;;;;;;;;;-1:-1:-1;7033:34:0;;;;;;;;18905:189;;;;;;;;;;-1:-1:-1;18905:189:0;;;;;:::i;:::-;;:::i;19809:217::-;;;;;;;;;;-1:-1:-1;19809:217:0;;;;;:::i;:::-;;:::i;9893:654::-;;;;;;;;;;-1:-1:-1;9893:654:0;;;;;:::i;:::-;;:::i;14479:127::-;;;;;;;;;;-1:-1:-1;14479:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;14570:28:0;14546:4;14570:28;;;:19;:28;;;;;;;;;14479:127;7074:36;;;;;;;;;;-1:-1:-1;7074:36:0;;;;;;;;;;;20305:102;;;;;;;;;;-1:-1:-1;20305:102:0;;;;;:::i;:::-;;:::i;14910:134::-;;;;;;;;;;-1:-1:-1;14910:134:0;;;;;:::i;:::-;;:::i;14113:218::-;;;;;;;;;;-1:-1:-1;14113:218:0;;;;;:::i;:::-;;:::i;14339:132::-;;;;;;;;;;-1:-1:-1;14339:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;14433:30:0;14409:4;14433:30;;;:21;:30;;;;;;;;;14339:132;18667:108;;;;;;;;;;;;;:::i;11710:117::-;;;;;;;;;;-1:-1:-1;11710:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;11803:16:0;11776:7;11803:16;;;:7;:16;;;;;;;11710:117;10555:225;;;;;;;;;;;;;:::i;17600:293::-;;;;;;;;;;-1:-1:-1;17600:293:0;;;;;:::i;:::-;;:::i;16228:182::-;;;;;;;;;;;;;:::i;13613:492::-;;;;;;;;;;-1:-1:-1;13613:492:0;;;;;:::i;:::-;;:::i;11486:79::-;;;;;;;;;;-1:-1:-1;11556:6:0;;-1:-1:-1;;;;;11556:6:0;11486:79;;12495:175;;;;;;;;;;;;;:::i;26981:545::-;;;;;;;;;;;;;:::i;17901:205::-;;;;;;;;;;-1:-1:-1;17901:205:0;;;;;:::i;:::-;;:::i;11310:84::-;;;;;;;;;;-1:-1:-1;11384:7:0;;;;;;;;;;;;;;;;;11310:84;;11835:165;;;;;;;;;;-1:-1:-1;11835:165:0;;;;;:::i;:::-;;:::i;20519:208::-;;;;;;;;;;-1:-1:-1;20657:15:0;;20701:18;;20519:208;;;9280:25:1;;;9336:2;9321:18;;9314:34;;;;9253:18;20519:208:0;9106:248:1;6828:34:0;;;;;;;;;;-1:-1:-1;6828:34:0;;;;;;;;20034:263;;;;;;;;;;-1:-1:-1;20034:263:0;;;;;:::i;:::-;;:::i;7212:30::-;;;;;;;;;;;;;;;;5447:209;;;;;;;;;;-1:-1:-1;5447:209:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9670:6:1;9703:15;;;9685:34;;9755:15;;;9750:2;9735:18;;9728:43;9807:15;;;9787:18;;;9780:43;;;;9859:15;;;9854:2;9839:18;;9832:43;9912:15;;9906:3;9891:19;;9884:44;9965:15;;9959:3;9944:19;;9937:44;10018:15;;;10012:3;9997:19;;9990:44;9647:3;9632:19;5447:209:0;9359:681:1;16970:622:0;;;;;;;;;;-1:-1:-1;16970:622:0;;;;;:::i;:::-;;:::i;11571:133::-;;;;;;;;;;-1:-1:-1;11571:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;11673:19:0;;;11655:7;11673:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;11571:133;12992:613;;;;;;;;;;-1:-1:-1;12992:613:0;;;;;:::i;:::-;;:::i;27534:182::-;;;;;;;;;;;;;:::i;15421:145::-;;;;;;;;;;-1:-1:-1;15421:145:0;;;;;:::i;:::-;;:::i;7176:27::-;;;;;;;;;;-1:-1:-1;7176:27:0;;;;-1:-1:-1;;;;;7176:27:0;;;6308:376;;;;;;;;;;-1:-1:-1;6308:376:0;;;;;;;;;;;;-1:-1:-1;;;;;6308:376:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11408:15:1;;;11390:34;;11460:15;;;11455:2;11440:18;;11433:43;11512:15;;;11492:18;;;11485:43;;;;11564:15;;11559:2;11544:18;;11537:43;11617:15;;;11611:3;11596:19;;11589:44;11316:3;11301:19;6308:376:0;10990:649:1;19102:699:0;;;;;;;;;;-1:-1:-1;19102:699:0;;;;;:::i;:::-;;:::i;6715:39::-;;;;;;;;;;-1:-1:-1;6715:39:0;;;;;;;;;;;15754:127;;;;;;;;;;-1:-1:-1;15754:127:0;;;;;:::i;:::-;;:::i;15052:148::-;;;;;;;;;;-1:-1:-1;15052:148:0;;;;;:::i;:::-;;:::i;16069:151::-;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;;;;;;;;;16164:9:::1;::::0;:48:::1;::::0;;;;12567:14:1;;12560:22;16164:48:0::1;::::0;::::1;12542:41:1::0;12626:14;;12619:22;12599:18;;;12592:50;16164:9:0;;;::::1;-1:-1:-1::0;;;;;16164:9:0::1;::::0;:24:::1;::::0;12515:18:1;;16164:48:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16069:151:::0;;:::o;15574:172::-;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;15682:9:::1;::::0;:56:::1;::::0;;;;:9;;;::::1;-1:-1:-1::0;;;;;15682:9:0::1;::::0;:37:::1;::::0;:56:::1;::::0;15720:8;;15730:7;;15682:56:::1;;;:::i;12008:161::-:0;12085:4;12102:37;12111:10;12123:7;12132:6;12102:8;:37::i;:::-;-1:-1:-1;12157:4:0;12008:161;;;;;:::o;18783:114::-;18830:7;18875:13;4936:1;18875:2;:13;:::i;:::-;18857:14;;:32;;;;:::i;:::-;18850:39;;18783:114;:::o;20415:96::-;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;20484:12:::1;:19:::0;;-1:-1:-1;;20484:19:0::1;-1:-1:-1::0;;;;;20484:19:0;;;::::1;::::0;;;::::1;::::0;;20415:96::o;12678:306::-;-1:-1:-1;;;;;12799:19:0;;12778:4;12799:19;;;:11;:19;;;;;;;;12819:10;12799:31;;;;;;;;-1:-1:-1;;12799:52:0;12795:126;;-1:-1:-1;;;;;12868:19:0;;;;;;:11;:19;;;;;;;;12888:10;12868:31;;;;;;;:41;;12903:6;;12868:19;:41;;12903:6;;12868:41;:::i;:::-;;;;-1:-1:-1;;12795:126:0;12940:36;12950:6;12958:9;12969:6;12940:9;:36::i;:::-;12933:43;12678:306;-1:-1:-1;;;;12678:306:0:o;18395:264::-;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;18537:3:::1;18527:7;;:13;;;;:::i;:::-;18515:7;18504;18494;;:17;;;;:::i;:::-;18493:29;;;;:::i;:::-;:48;;18485:109;;;::::0;-1:-1:-1;;;18485:109:0;;16028:2:1;18485:109:0::1;::::0;::::1;16010:21:1::0;16067:2;16047:18;;;16040:30;16106:34;16086:18;;;16079:62;16177:18;16157;;;16150:46;16213:19;;18485:109:0::1;15826:412:1::0;18485:109:0::1;18644:7;18633;18623;;:17;;;;:::i;:::-;18622:29;;;;:::i;:::-;18605:14;:46:::0;-1:-1:-1;;18395:264:0:o;27724:425::-;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;27859:7:::1;:14;27840:8;:15;:33;27832:67;;;::::0;-1:-1:-1;;;27832:67:0;;16445:2:1;27832:67:0::1;::::0;::::1;16427:21:1::0;16484:2;16464:18;;;16457:30;16523:23;16503:18;;;16496:51;16564:18;;27832:67:0::1;16243:345:1::0;27832:67:0::1;27915:8;27910:232;27933:8;:15;27929:1;:19;;;27910:232;;;28014:13;4936:1;28014:2;:13;:::i;:::-;28003:7;28011:1;28003:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;27988:10;11776:7:::0;11803:16;;;:7;:16;;;;;;27978:49:::1;;27970:58;;;::::0;::::1;;28043:87;28060:10;28072:8;28081:1;28072:11;;;;;;;;;;:::i;:::-;;;;;;;4936:1;28096:2;:13;;;;:::i;:::-;28085:7;28093:1;28085:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;28111:5;28118::::0;28125:4:::1;28043:16;:87::i;:::-;-1:-1:-1::0;27950:3:0;::::1;::::0;::::1;:::i;:::-;;;;27910:232;;;;27724:425:::0;;:::o;15208:141::-;11803:7;:16;;;;6046:42;15261:7;11803:16;;;;;15261:7;;15300:39;;;:::i;:::-;15289:7;;:51;;;;:::i;16418:544::-;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;16526:14:::1;::::0;::::1;;16525:15;16517:45;;;::::0;-1:-1:-1;;;16517:45:0;;17316:2:1;16517:45:0::1;::::0;::::1;17298:21:1::0;17355:2;17335:18;;;17328:30;17394:19;17374:18;;;17367:47;17431:18;;16517:45:0::1;17114:341:1::0;16517:45:0::1;5703:4;16581:6;:21;;;;:65;;;;;5753:4;16623:7;:23;;;;16581:65;:117;;;;;5807:4;16667:11;:31;;;;16581:117;16573:170;;;::::0;-1:-1:-1;;;16573:170:0;;17662:2:1;16573:170:0::1;::::0;::::1;17644:21:1::0;17701:2;17681:18;;;17674:30;17740:25;17720:18;;;17713:53;17783:18;;16573:170:0::1;17460:347:1::0;16573:170:0::1;5860:4;16762:16;16771:7:::0;16762:6;:16:::1;:::i;:::-;:35;;;;16754:80;;;::::0;-1:-1:-1;;;16754:80:0;;18187:2:1;16754:80:0::1;::::0;::::1;18169:21:1::0;;;18206:18;;;18199:30;18265:34;18245:18;;;18238:62;18317:18;;16754:80:0::1;17985:356:1::0;16754:80:0::1;16845:9;:25:::0;;::::1;::::0;;::::1;16881:27:::0;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;16919:35:::0;::::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;16418:544::o;15953:108::-;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;16022:9:::1;::::0;:31:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;16022:31:0::1;::::0;::::1;160:74:1::0;16022:9:0;;;::::1;::::0;;::::1;::::0;:22:::1;::::0;133:18:1;;16022:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15953:108:::0;:::o;14762:140::-;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;-1:-1:-1;;;;;14854:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;14854:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14762:140::o;18114:273::-;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;18259:4:::1;18245:7;;18255:1;18245:11;;;;:::i;:::-;:18;;;;:::i;:::-;18233:7;18222;18212;;:17;;;;:::i;:::-;18211:29;;;;:::i;:::-;:53;;18203:121;;;::::0;-1:-1:-1;;;18203:121:0;;18548:2:1;18203:121:0::1;::::0;::::1;18530:21:1::0;18587:2;18567:18;;;18560:30;18626:34;18606:18;;;18599:62;18697:25;18677:18;;;18670:53;18740:19;;18203:121:0::1;18346:419:1::0;18203:121:0::1;18372:7;18361;18351;;:17;;;;:::i;:::-;18350:29;;;;:::i;:::-;18335:12;:44:::0;-1:-1:-1;;18114:273:0:o;18905:189::-;19034:6;;-1:-1:-1;;;;;19034:6:0;18996:7;11803:16;;;:7;:16;;;;;;5907:5;;19024:41;;19044:21;;19024:41;:::i;:::-;19023:62;;;;:::i;19809:217::-;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;19939:3:::1;19913:22;:29;;19905:64;;;::::0;-1:-1:-1;;;19905:64:0;;18972:2:1;19905:64:0::1;::::0;::::1;18954:21:1::0;19011:2;18991:18;;;18984:30;19050:24;19030:18;;;19023:52;19092:18;;19905:64:0::1;18770:346:1::0;19905:64:0::1;19980:13;:38:::0;19809:217::o;9893:654::-;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;-1:-1:-1;;;;;9972:22:0;::::1;9964:96;;;::::0;-1:-1:-1;;;9964:96:0;;19323:2:1;9964:96:0::1;::::0;::::1;19305:21:1::0;19362:2;19342:18;;;19335:30;19401:34;19381:18;;;19374:62;19472:31;19452:18;;;19445:59;19521:19;;9964:96:0::1;19121:425:1::0;9964:96:0::1;10079:16:::0;-1:-1:-1;;;;;10079:16:0;::::1;::::0;10071:90:::1;;;::::0;-1:-1:-1;;;10071:90:0;;19323:2:1;10071:90:0::1;::::0;::::1;19305:21:1::0;19362:2;19342:18;;;19335:30;19401:34;19381:18;;;19374:62;19472:31;19452:18;;;19445:59;19521:19;;10071:90:0::1;19121:425:1::0;10071:90:0::1;10192:6;::::0;10172:34:::1;::::0;-1:-1:-1;;;;;10192:6:0::1;;10172:19;:34::i;:::-;10217:35;10237:8;10247:4;10217:19;:35::i;:::-;10287:6;::::0;-1:-1:-1;;;;;10287:6:0::1;10297:1;11803:16:::0;;;:7;:16;;;;;;10277:21;10273:127:::1;;10332:6;::::0;-1:-1:-1;;;;;10332:6:0::1;11776:7:::0;11803:16;;;:7;:16;;;;;;10315:73:::1;::::0;10332:6;10340:8;;10350:17:::1;11710:117:::0;10315:73:::1;;10273:127;10439:6;::::0;;-1:-1:-1;;;;;10456:17:0;;::::1;-1:-1:-1::0;;10456:17:0;::::1;::::0;::::1;::::0;;;10489:40:::1;::::0;10439:6;::::1;::::0;10456:17;10439:6;;10489:40:::1;::::0;10420:16:::1;::::0;10489:40:::1;9953:594;9893:654:::0;:::o;20305:102::-;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;20377:9:::1;:22:::0;;-1:-1:-1;;20377:22:0::1;-1:-1:-1::0;;;;;20377:22:0;;;::::1;::::0;;;::::1;::::0;;20305:102::o;14910:134::-;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;-1:-1:-1;;;;;14998:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;14998:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14910:134::o;14113:218::-;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;14197:14:::1;::::0;::::1;;14196:15;14188:24;;;::::0;::::1;;14254:4;-1:-1:-1::0;;;;;14231:28:0;::::1;::::0;14223:55:::1;;;::::0;-1:-1:-1;;;14223:55:0;;19753:2:1;14223:55:0::1;::::0;::::1;19735:21:1::0;19792:2;19772:18;;;19765:30;19831:16;19811:18;;;19804:44;19865:18;;14223:55:0::1;19551:338:1::0;14223:55:0::1;14289:9;:34:::0;;-1:-1:-1;;;;;14289:34:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;14113:218::o;18667:108::-;18710:7;18753:13;4936:1;18753:2;:13;:::i;:::-;18737:12;;:30;;;;:::i;10555:225::-;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;10634:6:::1;::::0;10614:34:::1;::::0;-1:-1:-1;;;;;10634:6:0::1;;10614:19;:34::i;:::-;10678:6;::::0;;-1:-1:-1;;10695:19:0;::::1;::::0;;;10730:42:::1;::::0;-1:-1:-1;;;;;10678:6:0;;::::1;::::0;10659:16:::1;::::0;10678:6;;10730:42:::1;::::0;10659:16;;10730:42:::1;10603:177;10555:225::o:0;17600:293::-;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;17733:11:::1;:42:::0;;-1:-1:-1;;;;;17733:42:0;;::::1;-1:-1:-1::0;;17733:42:0;;::::1;;::::0;;;17786:23;:46;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;17843:21;:42;;;;;::::1;::::0;::::1;;::::0;;17600:293::o;16228:182::-;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;16381:14:::1;:21:::0;;-1:-1:-1;;16381:21:0::1;16398:4;16381:21;::::0;;16228:182::o;13613:492::-;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;13695:7:::1;13690:408;;-1:-1:-1::0;;;;;13719:13:0;;::::1;13735:5;13719:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;13719:21:0::1;::::0;;13755:9:::1;::::0;:32;;;;;::::1;::::0;::::1;20062:74:1::0;;;;20152:18;;;20145:50;;;;13755:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;20035:18:1;;13755:32:0::1;19894:307:1::0;13690:408:0::1;13824:17;::::0;:22;13820:136:::1;;13913:6;13893:17;;13875:15;:35;;;;:::i;:::-;:44;13867:73;;;::::0;-1:-1:-1;;;13867:73:0;;20408:2:1;13867:73:0::1;::::0;::::1;20390:21:1::0;20447:2;20427:18;;;20420:30;20486:18;20466;;;20459:46;20522:18;;13867:73:0::1;20206:340:1::0;13867:73:0::1;-1:-1:-1::0;;;;;13970:13:0;;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;:20;;-1:-1:-1;;13970:20:0::1;13986:4;13970:20:::0;;::::1;::::0;;;14025:15:::1;14005:17;:35:::0;14055:9:::1;::::0;:31;;;;;::::1;::::0;::::1;20062:74:1::0;;;;20152:18;;;20145:50;14055:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;20035:18:1;;14055:31:0::1;19894:307:1::0;13690:408:0::1;13613:492:::0;;:::o;12495:175::-;7741:6;;12561:4;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;12610:9:::1;::::0;12578:62:::1;::::0;12595:4:::1;::::0;12610:9:::1;::::0;::::1;-1:-1:-1::0;;;;;12610:9:0::1;-1:-1:-1::0;;12578:8:0::1;:62::i;:::-;-1:-1:-1::0;12658:4:0::1;12495:175:::0;:::o;26981:545::-;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;27043:14:::1;::::0;::::1;;27042:15;27034:52;;;::::0;-1:-1:-1;;;27034:52:0;;20753:2:1;27034:52:0::1;::::0;::::1;20735:21:1::0;20792:2;20772:18;;;20765:30;20831:26;20811:18;;;20804:54;20875:18;;27034:52:0::1;20551:348:1::0;27034:52:0::1;27105:16;::::0;::::1;::::0;::::1;;;27097:53;;;::::0;-1:-1:-1;;;27097:53:0;;21106:2:1;27097:53:0::1;::::0;::::1;21088:21:1::0;21145:2;21125:18;;;21118:30;21184:26;21164:18;;;21157:54;21228:18;;27097:53:0::1;20904:348:1::0;27097:53:0::1;27173:9;::::0;;;::::1;-1:-1:-1::0;;;;;27173:9:0::1;27161:100;;27213:9;:36:::0;;;::::1;27243:4;27213:36:::0;::::1;;::::0;;27161:100:::1;27275:9;::::0;27295:6:::1;::::0;27275:85:::1;::::0;;;;-1:-1:-1;;;;;27295:6:0;;::::1;27275:85;::::0;::::1;21480:74:1::0;21602:10;27310:12:0::1;21590:23:1::0;21570:18;;;21563:51;21662:18;27332:15:0::1;21650:31:1::0;21630:18;;;21623:59;4936:1:0::1;21698:18:1::0;;;21691:45;27275:9:0;;;::::1;;::::0;:19:::1;::::0;21452::1;;27275:85:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;27271:101:::0;27382:14:::1;:21:::0;;-1:-1:-1;;27382:21:0::1;27399:4;27382:21;::::0;;27441:6:::1;::::0;27457:5:::1;::::0;27431:17:::1;::::0;-1:-1:-1;;;;;27441:6:0::1;-1:-1:-1::0;;;;;11803:16:0;11776:7;11803:16;;;:7;:16;;;;;;;11710:117;27431:17:::1;:22;::::0;27451:2:::1;27431:22;:::i;:::-;27430:32;;;;:::i;:::-;27414:13;:48:::0;27497:6:::1;::::0;-1:-1:-1;;;;;27497:6:0::1;11776:7:::0;11803:16;;;:7;:16;;;;;;27513:5:::1;::::0;27487:22:::1;::::0;27507:2:::1;27487:22;:::i;:::-;27486:32;;;;:::i;:::-;27473:10;:45:::0;26981:545::o;17901:205::-;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;18013:21;:42;;-1:-1:-1;;;;;18013:42:0;;::::1;-1:-1:-1::0;;18013:42:0;;::::1;;::::0;;;18066:16;:32;;;;;::::1;::::0;::::1;;::::0;;17901:205::o;11835:165::-;11913:4;11930:40;11940:10;11952:9;11963:6;11930:9;:40::i;:::-;-1:-1:-1;11988:4:0;;11835:165;-1:-1:-1;;;11835:165:0:o;20034:263::-;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;20143:19:::1;:33:::0;;-1:-1:-1;;20143:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;20187:22:::1;:47:::0;;-1:-1:-1;;20187:47:0::1;::::0;::::1;;;::::0;;20250:39:::1;::::0;4400:41:1;;;20250:39:0::1;::::0;4388:2:1;4373:18;20250:39:0::1;;;;;;;;20034:263:::0;;:::o;16970:622::-;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;17119:7:::1;:29:::0;;::::1;::::0;;::::1;17159::::0;;;;;;;;;;;::::1;;;17243:19:::0;;17199:33;;;::::1;;17243:19:::0;;;;;;::::1;;;17313::::0;;17273:29;;;::::1;;17313:19:::0;;;;;;::::1;::::0;;;::::1;;::::0;;;17273:29;17199:33;17363:21:::1;17159:29:::0;17119;17363:21:::1;:::i;:::-;:35;;;;:::i;:::-;:47;;;;:::i;:::-;:54;;;;:::i;:::-;17343:7;:74:::0;;;::::1;::::0;::::1;::::0;;::::1;;;::::0;;17463:9:::1;:17:::0;-1:-1:-1;;17444:36:0::1;::::0;17463:17;;::::1;::::0;::::1;::::0;17444:16:::1;:36;:::i;:::-;17519:7;:12:::0;17428:52:::1;::::0;;::::1;::::0;-1:-1:-1;17428:52:0;;17499:32:::1;::::0;17519:12;;::::1;::::0;::::1;::::0;17499:17;;;::::1;;:32;:::i;:::-;:41;;;;17491:93;;;::::0;-1:-1:-1;;;17491:93:0;;21949:2:1;17491:93:0::1;::::0;::::1;21931:21:1::0;21988:2;21968:18;;;21961:30;22027:34;22007:18;;;22000:62;22098:9;22078:18;;;22071:37;22125:19;;17491:93:0::1;21747:403:1::0;17491:93:0::1;17108:484;16970:622:::0;;;;;;:::o;12992:613::-;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;13072:16:::1;::::0;::::1;::::0;::::1;;;13071:17;13063:60;;;::::0;-1:-1:-1;;;13063:60:0;;22357:2:1;13063:60:0::1;::::0;::::1;22339:21:1::0;22396:2;22376:18;;;22369:30;22435:32;22415:18;;;22408:60;22485:18;;13063:60:0::1;22155:354:1::0;13063:60:0::1;13134:20;13167:9;13134:43;;13188:16;13218:10;-1:-1:-1::0;;;;;13218:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13207:40:0::1;;13256:4;13263:10;-1:-1:-1::0;;;;;13263:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13207:74;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;23023:15:1;;;13207:74:0::1;::::0;::::1;23005:34:1::0;23075:15;;23055:18;;;23048:43;22917:18;;13207:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13188:93:::0;-1:-1:-1;;;;;;13296:22:0;::::1;13292:200;;13355:10;-1:-1:-1::0;;;;;13355:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13344:43:0::1;;13396:4;13403:10;-1:-1:-1::0;;;;;13403:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13344:77;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;23023:15:1;;;13344:77:0::1;::::0;::::1;23005:34:1::0;23075:15;;23055:18;;;23048:43;22917:18;;13344:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13335:6;:86:::0;;-1:-1:-1;;13335:86:0::1;-1:-1:-1::0;;;;;13335:86:0;;;::::1;::::0;;;::::1;::::0;;13292:200:::1;;;13463:6;:17:::0;;-1:-1:-1;;13463:17:0::1;-1:-1:-1::0;;;;;13463:17:0;::::1;;::::0;;13292:200:::1;13502:9;:22:::0;;;::::1;;-1:-1:-1::0;;;;;13502:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;13535:62:::1;::::0;13552:4:::1;::::0;13567:9;;::::1;;-1:-1:-1::0;;13535:8:0::1;:62::i;27534:182::-:0;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;27601:16:::1;::::0;::::1;::::0;::::1;;;27600:17;27592:58;;;::::0;-1:-1:-1;;;27592:58:0;;23304:2:1;27592:58:0::1;::::0;::::1;23286:21:1::0;23343:2;23323:18;;;23316:30;23382;23362:18;;;23355:58;23430:18;;27592:58:0::1;23102:352:1::0;27592:58:0::1;27669:6;::::0;27661:47:::1;::::0;-1:-1:-1;;;;;27669:6:0;;::::1;::::0;27686:21:::1;27661:47:::0;::::1;;;::::0;27669:6:::1;27661:47:::0;27669:6;27661:47;27686:21;27669:6;27661:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;27534:182::o:0;15421:145::-;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;15511:9:::1;::::0;:47:::1;::::0;;;;-1:-1:-1;;;;;20080:55:1;;;15511:47:0::1;::::0;::::1;20062:74:1::0;20179:14;;20172:22;20152:18;;;20145:50;15511:9:0;;;::::1;::::0;;::::1;::::0;:29:::1;::::0;20035:18:1;;15511:47:0::1;19894:307:1::0;19102:699:0;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;19302:16:::1;19282;19272:7;;:26;;;;:::i;:::-;19271:47;;;;:::i;:::-;19255:13;:63:::0;19343:7:::1;::::0;19370:13;;19343:23:::1;::::0;19353:13;;19343:23:::1;:::i;:::-;19342:41;;;;:::i;:::-;19329:10;:54:::0;;;19402:13:::1;::::0;:27:::1;;19394:73;;;::::0;-1:-1:-1;;;19394:73:0;;23661:2:1;19394:73:0::1;::::0;::::1;23643:21:1::0;23700:2;23680:18;;;23673:30;23739:34;23719:18;;;23712:62;23810:3;23790:18;;;23783:31;23831:19;;19394:73:0::1;23459:397:1::0;19394:73:0::1;19511:6;::::0;-1:-1:-1;;;;;19511:6:0::1;11776:7:::0;11803:16;;;:7;:16;;;;;;5907:5:::1;::::0;19501:23:::1;::::0;19521:3:::1;19501:23;:::i;:::-;19500:44;;;;:::i;:::-;19486:10;;:58;;19478:106;;;::::0;-1:-1:-1;;;19478:106:0;;24063:2:1;19478:106:0::1;::::0;::::1;24045:21:1::0;24102:2;24082:18;;;24075:30;24141:34;24121:18;;;24114:62;24212:5;24192:18;;;24185:33;24235:19;;19478:106:0::1;23861:399:1::0;19478:106:0::1;19627:9;19617:7;;:19;;;;:::i;:::-;19603:10;;:33;;19595:92;;;::::0;-1:-1:-1;;;19595:92:0;;24467:2:1;19595:92:0::1;::::0;::::1;24449:21:1::0;24506:2;24486:18;;;24479:30;24545:34;24525:18;;;24518:62;24616:16;24596:18;;;24589:44;24650:19;;19595:92:0::1;24265:410:1::0;19595:92:0::1;19733:9;19723:7;;:19;;;;:::i;:::-;19706:13;;:36;;19698:95;;;::::0;-1:-1:-1;;;19698:95:0;;24467:2:1;19698:95:0::1;::::0;::::1;24449:21:1::0;24506:2;24486:18;;;24479:30;24545:34;24525:18;;;24518:62;24616:16;24596:18;;;24589:44;24650:19;;19698:95:0::1;24265:410:1::0;19698:95:0::1;19102:699:::0;;;;:::o;15754:127::-;15841:9;;:32;;;;;-1:-1:-1;;;;;178:55:1;;;15841:32:0;;;160:74:1;15817:4:0;;15841:9;;;;;:23;;133:18:1;;15841:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15052:148::-;7741:6;;-1:-1:-1;;;;;7741:6:0;7751:10;7741:20;7733:50;;;;-1:-1:-1;;;7733:50:0;;12236:2:1;7733:50:0;;;12218:21:1;12275:2;12255:18;;;12248:30;-1:-1:-1;;;12294:18:1;;;12287:47;12351:18;;7733:50:0;12034:341:1;7733:50:0;-1:-1:-1;;;;;15148:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;15148:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15052:148::o;12177:310::-;-1:-1:-1;;;;;12272:20:0;;12264:52;;;;-1:-1:-1;;;12264:52:0;;25132:2:1;12264:52:0;;;25114:21:1;25171:2;25151:18;;;25144:30;25210:21;25190:18;;;25183:49;25249:18;;12264:52:0;24930:343:1;12264:52:0;-1:-1:-1;;;;;12335:21:0;;12327:53;;;;-1:-1:-1;;;12327:53:0;;25132:2:1;12327:53:0;;;25114:21:1;25171:2;25151:18;;;25144:30;25210:21;25190:18;;;25183:49;25249:18;;12327:53:0;24930:343:1;12327:53:0;-1:-1:-1;;;;;12393:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;12446:33;;391:25:1;;;12446:33:0;;364:18:1;12446:33:0;;;;;;;12177:310;;;:::o;21185:1946::-;21264:4;-1:-1:-1;;;;;21289:18:0;;21281:68;;;;-1:-1:-1;;;21281:68:0;;25480:2:1;21281:68:0;;;25462:21:1;25519:2;25499:18;;;25492:30;25558:34;25538:18;;;25531:62;25629:7;25609:18;;;25602:35;25654:19;;21281:68:0;25278:401:1;21281:68:0;-1:-1:-1;;;;;21368:16:0;;21360:64;;;;-1:-1:-1;;;21360:64:0;;25886:2:1;21360:64:0;;;25868:21:1;25925:2;25905:18;;;25898:30;25964:34;25944:18;;;25937:62;26035:5;26015:18;;;26008:33;26058:19;;21360:64:0;25684:399:1;21360:64:0;21452:1;21443:6;:10;21435:64;;;;-1:-1:-1;;;21435:64:0;;26290:2:1;21435:64:0;;;26272:21:1;26329:2;26309:18;;;26302:30;26368:34;26348:18;;;26341:62;26439:11;26419:18;;;26412:39;26468:19;;21435:64:0;26088:405:1;21435:64:0;-1:-1:-1;;;;;21598:13:0;;21510:8;21598:13;;;:7;:13;;;;;;21510:8;;;;21598:13;;21594:162;;;21634:4;21628:10;;21594:162;;;-1:-1:-1;;;;;21660:11:0;;;;;;:7;:11;;;;;;;;21656:100;;;21695:4;21688:11;;21656:100;;;-1:-1:-1;21740:4:0;21656:100;21770:20;21781:4;21787:2;21770:10;:20::i;:::-;21766:644;;;21811:14;;;;21807:89;;21846:34;;-1:-1:-1;;;21846:34:0;;26700:2:1;21846:34:0;;;26682:21:1;26739:2;26719:18;;;26712:30;26778:26;26758:18;;;26751:54;26822:18;;21846:34:0;26498:348:1;21807:89:0;21914:3;:11;;;;21921:4;21914:11;21910:232;;;-1:-1:-1;;;;;21950:27:0;;;;;;:21;:27;;;;;;;;21949:28;:58;;;;-1:-1:-1;;;;;;21982:25:0;;;;;;:21;:25;;;;;;;;21981:26;21949:58;21945:182;;;22050:12;;22040:6;:22;;22032:75;;;;-1:-1:-1;;;22032:75:0;;27053:2:1;22032:75:0;;;27035:21:1;27092:2;27072:18;;;27065:30;27131:34;27111:18;;;27104:62;27202:10;27182:18;;;27175:38;27230:19;;22032:75:0;26851:404:1;22032:75:0;22174:9;;-1:-1:-1;;;;;22160:24:0;;;22174:9;;;;;22160:24;;;;:33;;;22189:4;22188:5;22160:33;22156:243;;;-1:-1:-1;;;;;22219:25:0;;;;;;:21;:25;;;;;;;;22214:170;;22303:14;;22293:6;22277:13;22287:2;-1:-1:-1;;;;;11803:16:0;11776:7;11803:16;;;:7;:16;;;;;;;11710:117;22277:13;:22;;;;:::i;:::-;:40;;22269:95;;;;-1:-1:-1;;;22269:95:0;;27462:2:1;22269:95:0;;;27444:21:1;27501:2;27481:18;;;27474:30;27540:34;27520:18;;;27513:62;27611:12;27591:18;;;27584:40;27641:19;;22269:95:0;27260:406:1;22269:95:0;22426:4;22422:632;;;22452:6;;;;22447:596;;22483:19;;;;;;;22479:549;;;22576:4;22527:28;11803:16;;;:7;:16;;;;;;22633:13;;22609:37;;22605:404;;22693:10;;22734:22;;;;22730:97;;;22791:13;;22781:6;;-1:-1:-1;;;;;22781:6:0;11776:7;11803:16;;;:7;:16;;;;;;5907:5;;22771:33;;;:::i;:::-;22770:54;;;;:::i;:::-;22760:64;;22730:97;22881:7;22857:20;:31;22853:72;;22915:7;22892:30;;22853:72;22951:34;22964:20;22951:12;:34::i;:::-;22648:361;22605:404;22504:524;22479:549;23071:52;23088:4;23094:2;23098:6;23106:3;23111:4;23117:5;23071:16;:52::i;:::-;23064:59;21185:1946;-1:-1:-1;;;;;;;21185:1946:0:o;28157:1061::-;28298:16;;28276:4;;28298:16;;;;;28293:298;;28331:28;28350:4;28356:2;28331:18;:28::i;:::-;28379:16;;;;;;;28378:17;:41;;;;;28399:20;28410:4;28416:2;28399:10;:20::i;:::-;28378:77;;;;-1:-1:-1;;;;;;28424:31:0;;;;;;:25;:31;;;;;;;;28423:32;28378:77;:111;;;;-1:-1:-1;;;;;;28460:29:0;;;;;;:25;:29;;;;;;;;28459:30;28378:111;:121;;;;;28494:5;28493:6;28378:121;28374:206;;;28520:44;;-1:-1:-1;;;28520:44:0;;27873:2:1;28520:44:0;;;27855:21:1;27912:2;27892:18;;;27885:30;27951:34;27931:18;;;27924:62;28022:4;28002:18;;;27995:32;28044:19;;28520:44:0;27671:398:1;28374:206:0;28607:20;28618:4;28624:2;28607:10;:20::i;:::-;28603:226;;;28662:9;;:37;;;;;-1:-1:-1;;;;;28355:15:1;;;28662:37:0;;;28337:34:1;28407:15;;;28387:18;;;28380:43;28439:18;;;28432:34;;;28631:12:0;;28662:9;;;;;:19;;28249:18:1;;28662:37:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;28662:37:0;;;;;;;;-1:-1:-1;;28662:37:0;;;;;;;;;;;;:::i;:::-;;;28658:120;;28767:8;;;28658:120;28750:5;-1:-1:-1;28796:7:0;28792:26;;28807:8;;;28792:26;28629:200;28603:226;-1:-1:-1;;;;;28875:25:0;;28841:12;28875:25;;;:19;:25;;;;;;28856:4;;28875:25;;;:52;;-1:-1:-1;;;;;;28904:23:0;;;;;;:19;:23;;;;;;;;28875:52;28871:99;;;-1:-1:-1;28953:5:0;28871:99;-1:-1:-1;;;;;28982:13:0;;;;;;:7;:13;;;;;:23;;28999:6;;28982:13;:23;;28999:6;;28982:23;:::i;:::-;;;;-1:-1:-1;29016:22:0;;-1:-1:-1;29042:7:0;29041:55;;29090:6;29041:55;;;29053:34;29063:4;29069:3;29074:4;29080:6;29053:9;:34::i;:::-;-1:-1:-1;;;;;29107:11:0;;;;;;:7;:11;;;;;:29;;29016:80;;-1:-1:-1;29016:80:0;;29107:11;;;:29;;29016:80;;29107:29;:::i;:::-;;;;;;;;29169:2;-1:-1:-1;;;;;29154:34:0;29163:4;-1:-1:-1;;;;;29154:34:0;;29173:14;29154:34;;;;391:25:1;;379:2;364:18;;245:177;29154:34:0;;;;;;;;-1:-1:-1;29206:4:0;;28157:1061;-1:-1:-1;;;;;;;;28157:1061:0:o;20735:442::-;20836:6;;20804:4;;-1:-1:-1;;;;;20828:14:0;;;20836:6;;20828:14;;;;:43;;-1:-1:-1;20865:6:0;;-1:-1:-1;;;;;20859:12:0;;;20865:6;;20859:12;;20828:43;:79;;;;-1:-1:-1;20901:6:0;;-1:-1:-1;;;;;20901:6:0;20888:9;:19;;20828:79;:118;;;;-1:-1:-1;;;;;;20925:21:0;;;;;;:17;:21;;;;;;;;20924:22;20828:118;:159;;;;-1:-1:-1;;;;;;20964:23:0;;;;;;:17;:23;;;;;;;;20963:24;20828:159;:186;;;;-1:-1:-1;;;;;;21004:10:0;;6046:42;21004:10;;20828:186;:219;;;;-1:-1:-1;;;;;;21031:16:0;;;;20828:219;:257;;;;-1:-1:-1;;;;;;21064:21:0;;21080:4;21064:21;;20828:257;:300;;;;-1:-1:-1;21118:9:0;;-1:-1:-1;;;;;21102:26:0;;;21118:9;;;;;21102:26;;20828:300;:341;;;;-1:-1:-1;21159:9:0;;-1:-1:-1;;;;;21145:24:0;;;21159:9;;;;;21145:24;;20828:341;20821:348;20735:442;-1:-1:-1;;;20735:442:0:o;23139:2704::-;7635:6;:13;;-1:-1:-1;;7635:13:0;7644:4;7635:13;;;23222:30:::1;::::0;;::::1;::::0;::::1;::::0;;23245:7:::1;23222:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;;;;;;7635:6;23267:21;23263:60:::1;;23305:7;;;23263:60;23359:4;23339:26;::::0;;;:11:::1;:26;::::0;;;;;;;23374:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;23374:9:0::1;23339:46:::0;;;;;;;;-1:-1:-1;;23339:67:0::1;23335:166;;23443:4;23423:26;::::0;;;:11:::1;:26;::::0;;;;;;;23458:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;23458:9:0::1;23423:46:::0;;;;;;;-1:-1:-1;;23423:66:0;;23335:166:::1;23513:17;23598:1;23578:6;:16;;;23534:60;;23558:6;:16;;;23535:39;;:20;:39;;;;:::i;:::-;23534:60;;;;:::i;:::-;23533:66;;;;:::i;:::-;23513:86:::0;-1:-1:-1;23610:15:0::1;23628:32;23513:86:::0;23628:20;:32:::1;:::i;:::-;23705:16;::::0;;23719:1:::1;23705:16:::0;;;;;::::1;::::0;;23610:50;;-1:-1:-1;23681:21:0::1;::::0;23705:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;23705:16:0::1;23681:40;;23750:4;23732;23737:1;23732:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;23732:23:0::1;;;-1:-1:-1::0;;;;;23732:23:0::1;;;::::0;::::1;23776:9;;;;;;;;;-1:-1:-1::0;;;;;23776:9:0::1;-1:-1:-1::0;;;;;23776:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23766:4;23771:1;23766:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23766:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;23809:9:::1;::::0;:186:::1;::::0;;;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:186:::1;::::0;23884:7;;23906:1:::1;::::0;23922:4;;23949::::1;::::0;23969:15:::1;::::0;23809:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;23805:233;;24020:7;;;;;;23805:233;24071:21;24050:18;24157:7:::0;24131:22:::1;24144:9:::0;24071:21;24131:22:::1;:::i;:::-;24130:34;;;;:::i;:::-;24103:61:::0;-1:-1:-1;24181:13:0;;24177:417:::1;;24215:9;::::0;24384:21;;24215:239:::1;::::0;;;;24292:4:::1;24215:239;::::0;::::1;29459:34:1::0;29509:18;;;29502:34;;;24344:1:0::1;29552:18:1::0;;;29545:34;;;29595:18;;;29588:34;-1:-1:-1;;;;;24384:21:0;;::::1;29638:19:1::0;;;29631:44;24424:15:0::1;29691:19:1::0;;;29684:35;24215:9:0::1;::::0;;::::1;;::::0;:25:::1;::::0;24248:16;;29370:19:1;;24215:239:0::1;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;24215:239:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;24215:239:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;24211:372;;24561:7;;;;;;;;24211:372;-1:-1:-1::0;;24479:40:0::1;::::0;;9280:25:1;;;9336:2;9321:18;;9314:34;;;24479:40:0::1;::::0;-1:-1:-1;9253:18:1;24479:40:0::1;;;;;;;24211:372;24606:30;24620:16:::0;24606:30;::::1;:::i;:::-;;;24667:6;:16;;;24647:6;:16;;:36;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;24782:16:::1;::::0;::::1;::::0;24760:18:::1;::::0;::::1;::::0;24694:12:::1;::::0;-1:-1:-1;24694:12:0;;24746:52;;::::1;::::0;24747:31:::1;::::0;::::1;:10:::0;:31:::1;:::i;:::-;24746:52;;;;:::i;:::-;24837:9;::::0;24717:81;;-1:-1:-1;24809:24:0::1;::::0;-1:-1:-1;;;;;24837:9:0::1;24836:82;;24917:1;24836:82;;;24898:6;:16;;;24864:50;;24878:6;:16;;;24865:29;;:10;:29;;;;:::i;:::-;24864:50;;;;:::i;:::-;24960:12;::::0;24809:109;;-1:-1:-1;24929:27:0::1;::::0;-1:-1:-1;;;;;24960:12:0::1;24959:80;;25038:1;24959:80;;;25019:6;:16;;;24990:45;;25004:6;:11;;;24991:24;;:10;:24;;;;:::i;:::-;24990:45;;;;:::i;:::-;24929:110:::0;-1:-1:-1;25050:24:0::1;24929:110:::0;25091:37:::1;25112:16:::0;25091:18;:37:::1;:::i;:::-;:59;;;;:::i;:::-;25077:74;::::0;:10;:74:::1;:::i;:::-;25050:101:::0;-1:-1:-1;25166:20:0;;25162:133:::1;;25216:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;25216:21:0;;::::1;::::0;25273:5:::1;::::0;25250:16;;25216:67:::1;::::0;;;25250:16;25216:21;25273:5;25216:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;25203:80:0;;-1:-1:-1;;25162:133:0::1;25309:22:::0;;25305:139:::1;;25361:23:::0;;:71:::1;::::0;-1:-1:-1;;;;;25361:23:0;;::::1;::::0;25422:5:::1;::::0;25397:18;;25361:71:::1;::::0;;;25397:18;25361:23;25422:5;25361:71:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;25348:84:0;;-1:-1:-1;;25305:139:0::1;25458:20:::0;;25454:184:::1;;25505:9;;;;;;;;;-1:-1:-1::0;;;;;25505:9:0::1;-1:-1:-1::0;;;;;25505:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25495:4;25500:1;25495:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25495:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;25546:9:::1;::::0;25536:7;;25546:9;::::1;::::0;25536:4;;25546:9;;25536:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;25536:19:0;;::::1;:7;::::0;;::::1;::::0;;;;;:19;25604:21;;25570:56:::1;::::0;25580:4;;25586:16;;25604:21:::1;25570:9;:56::i;:::-;25652:23:::0;;25648:188:::1;;25702:9;;;;;;;;;-1:-1:-1::0;;;;;25702:9:0::1;-1:-1:-1::0;;;;;25702:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25692:4;25697:1;25692:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25692:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;25743:12:::1;::::0;25733:7;;25743:12;::::1;::::0;25733:4;;25743:12;;25733:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;25733:22:0;;::::1;:7;::::0;;::::1;::::0;;;;;:22;25807:16;;25770:54:::1;::::0;25780:4;;25786:19;;25807:16:::1;25770:9;:54::i;:::-;23211:2632;;;;;;;;;;;7659:1;-1:-1:-1::0;7671:6:0;:14;;-1:-1:-1;;7671:14:0;;;23139:2704::o;26416:557::-;26499:16;;;;;;;26498:17;26490:65;;;;-1:-1:-1;;;26490:65:0;;30629:2:1;26490:65:0;;;30611:21:1;30668:2;30648:18;;;30641:30;30707:34;30687:18;;;30680:62;30778:5;30758:18;;;30751:33;30801:19;;26490:65:0;30427:399:1;26490:65:0;26571:20;26582:4;26588:2;26571:10;:20::i;:::-;26570:21;:37;;;;-1:-1:-1;26601:6:0;;-1:-1:-1;;;;;26595:12:0;;;26601:6;;26595:12;26570:37;26566:400;;;-1:-1:-1;;;;;26624:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;26624:30:0;;;26650:4;26624:30;;;;;;26669:19;:25;;;;;:32;;;;;;;;;;26716:16;:23;;-1:-1:-1;;26716:23:0;26624:30;26716:23;;;;;26766:9;;;;26754:108;;26810:9;:36;;;;26840:4;26810:36;;;;;26754:108;26876:19;:26;;-1:-1:-1;;26876:26:0;;;;;26922:32;;-1:-1:-1;4400:41:1;;26922:32:0;;4388:2:1;4373:18;26922:32:0;4260:187:1;29226:1067:0;29334:30;;;;;;;;29357:7;29334:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29314:7;;;29404:205;;;;-1:-1:-1;29441:9:0;:16;;;29404:205;;;29479:4;29475:134;;;-1:-1:-1;29513:9:0;:17;;;;;;29475:134;;;-1:-1:-1;29576:9:0;:21;;;;;;29475:134;29631:9;;;;;-1:-1:-1;;;;;29631:9:0;29653:4;29623:35;:108;;;;;29676:13;29693:1;29676:18;:54;;;;29711:13;29728:2;29711:19;29676:54;29619:136;;;-1:-1:-1;29748:4:0;29619:136;29765:17;5907:5;29785:19;29794:10;29785:6;:19;:::i;:::-;:38;;;;:::i;:::-;29765:58;;29834:18;29898:6;:16;;;29884:6;:11;;;:30;;;;:::i;:::-;29855:60;;29868:6;:11;;;29856:23;;:9;:23;;;;:::i;:::-;29855:60;;;;:::i;:::-;29834:81;-1:-1:-1;29926:15:0;29944:22;29834:81;29944:9;:22;:::i;:::-;29926:40;-1:-1:-1;29981:11:0;;29977:135;;30025:4;30009:22;;;;:7;:22;;;;;:33;;30035:7;;30009:22;:33;;30035:7;;30009:33;:::i;:::-;;;;-1:-1:-1;;30062:38:0;;391:25:1;;;30085:4:0;;-1:-1:-1;;;;;30062:38:0;;;;;379:2:1;364:18;30062:38:0;;;;;;;29977:135;30126:14;;30122:126;;30168:10;30157:7;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;30198:38:0;;391:25:1;;;30221:1:0;;-1:-1:-1;;;;;30198:38:0;;;;;379:2:1;364:18;30198:38:0;;;;;;;30122:126;30267:18;30276:9;30267:6;:18;:::i;:::-;30260:25;29226:1067;-1:-1:-1;;;;;;;;;;29226:1067:0:o;25851:557::-;25962:9;;:187;;;;;:9;;;;-1:-1:-1;;;;;25962:9:0;;:60;;26030:6;;25962:187;;26062:1;;26078:4;;26097:11;;26123:15;;25962:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25958:443;;25851:557;;;:::o;25958:443::-;26181:9;;26169:7;;-1:-1:-1;;;;;26181:9:0;;;;26169:4;;26181:9;;26169:7;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;26169:21:0;;26165:185;;26230:6;26211:15;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;26165:185:0;;-1:-1:-1;26165:185:0;;26273:12;;26262:7;;-1:-1:-1;;;;;26273:12:0;;;;26262:4;;26273:12;;26262:7;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;26262:23:0;;26258:92;;26328:6;26306:18;;:28;;;;;;;:::i;:::-;;;;-1:-1:-1;;25851:557:0;;;:::o;427:118:1:-;513:5;506:13;499:21;492:5;489:32;479:60;;535:1;532;525:12;550:376;612:6;620;673:2;661:9;652:7;648:23;644:32;641:52;;;689:1;686;679:12;641:52;728:9;715:23;747:28;769:5;747:28;:::i;:::-;794:5;-1:-1:-1;851:2:1;836:18;;823:32;864:30;823:32;864:30;:::i;:::-;913:7;903:17;;;550:376;;;;;:::o;931:184::-;983:77;980:1;973:88;1080:4;1077:1;1070:15;1104:4;1101:1;1094:15;1120:334;1191:2;1185:9;1247:2;1237:13;;-1:-1:-1;;1233:86:1;1221:99;;1350:18;1335:34;;1371:22;;;1332:62;1329:88;;;1397:18;;:::i;:::-;1433:2;1426:22;1120:334;;-1:-1:-1;1120:334:1:o;1459:183::-;1519:4;1552:18;1544:6;1541:30;1538:56;;;1574:18;;:::i;:::-;-1:-1:-1;1619:1:1;1615:14;1631:4;1611:25;;1459:183::o;1647:154::-;-1:-1:-1;;;;;1726:5:1;1722:54;1715:5;1712:65;1702:93;;1791:1;1788;1781:12;1806:737;1860:5;1913:3;1906:4;1898:6;1894:17;1890:27;1880:55;;1931:1;1928;1921:12;1880:55;1967:6;1954:20;1993:4;2017:60;2033:43;2073:2;2033:43;:::i;:::-;2017:60;:::i;:::-;2111:15;;;2197:1;2193:10;;;;2181:23;;2177:32;;;2142:12;;;;2221:15;;;2218:35;;;2249:1;2246;2239:12;2218:35;2285:2;2277:6;2273:15;2297:217;2313:6;2308:3;2305:15;2297:217;;;2393:3;2380:17;2410:31;2435:5;2410:31;:::i;:::-;2454:18;;2492:12;;;;2330;;2297:217;;;-1:-1:-1;2532:5:1;1806:737;-1:-1:-1;;;;;;1806:737:1:o;2548:477::-;2638:6;2646;2699:2;2687:9;2678:7;2674:23;2670:32;2667:52;;;2715:1;2712;2705:12;2667:52;2755:9;2742:23;2788:18;2780:6;2777:30;2774:50;;;2820:1;2817;2810:12;2774:50;2843:61;2896:7;2887:6;2876:9;2872:22;2843:61;:::i;:::-;2833:71;;;2954:2;2943:9;2939:18;2926:32;2967:28;2989:5;2967:28;:::i;3400:607::-;3512:4;3541:2;3570;3559:9;3552:21;3602:6;3596:13;3645:6;3640:2;3629:9;3625:18;3618:34;3670:1;3680:140;3694:6;3691:1;3688:13;3680:140;;;3789:14;;;3785:23;;3779:30;3755:17;;;3774:2;3751:26;3744:66;3709:10;;3680:140;;;3684:3;3869:1;3864:2;3855:6;3844:9;3840:22;3836:31;3829:42;3998:2;-1:-1:-1;;3923:2:1;3915:6;3911:15;3907:88;3896:9;3892:104;3888:113;3880:121;;;;3400:607;;;;:::o;4452:315::-;4520:6;4528;4581:2;4569:9;4560:7;4556:23;4552:32;4549:52;;;4597:1;4594;4587:12;4549:52;4636:9;4623:23;4655:31;4680:5;4655:31;:::i;:::-;4705:5;4757:2;4742:18;;;;4729:32;;-1:-1:-1;;;4452:315:1:o;4772:247::-;4831:6;4884:2;4872:9;4863:7;4859:23;4855:32;4852:52;;;4900:1;4897;4890:12;4852:52;4939:9;4926:23;4958:31;4983:5;4958:31;:::i;5024:456::-;5101:6;5109;5117;5170:2;5158:9;5149:7;5145:23;5141:32;5138:52;;;5186:1;5183;5176:12;5138:52;5225:9;5212:23;5244:31;5269:5;5244:31;:::i;:::-;5294:5;-1:-1:-1;5351:2:1;5336:18;;5323:32;5364:33;5323:32;5364:33;:::i;:::-;5024:456;;5416:7;;-1:-1:-1;;;5470:2:1;5455:18;;;;5442:32;;5024:456::o;5485:248::-;5553:6;5561;5614:2;5602:9;5593:7;5589:23;5585:32;5582:52;;;5630:1;5627;5620:12;5582:52;-1:-1:-1;;5653:23:1;;;5723:2;5708:18;;;5695:32;;-1:-1:-1;5485:248:1:o;5738:1138::-;5856:6;5864;5917:2;5905:9;5896:7;5892:23;5888:32;5885:52;;;5933:1;5930;5923:12;5885:52;5973:9;5960:23;6002:18;6043:2;6035:6;6032:14;6029:34;;;6059:1;6056;6049:12;6029:34;6082:61;6135:7;6126:6;6115:9;6111:22;6082:61;:::i;:::-;6072:71;;6162:2;6152:12;;6217:2;6206:9;6202:18;6189:32;6246:2;6236:8;6233:16;6230:36;;;6262:1;6259;6252:12;6230:36;6285:24;;;-1:-1:-1;6340:4:1;6332:13;;6328:27;-1:-1:-1;6318:55:1;;6369:1;6366;6359:12;6318:55;6405:2;6392:16;6428:60;6444:43;6484:2;6444:43;:::i;6428:60::-;6522:15;;;6604:1;6600:10;;;;6592:19;;6588:28;;;6553:12;;;;6628:19;;;6625:39;;;6660:1;6657;6650:12;6625:39;6684:11;;;;6704:142;6720:6;6715:3;6712:15;6704:142;;;6786:17;;6774:30;;6737:12;;;;6824;;;;6704:142;;;6865:5;6855:15;;;;;;;5738:1138;;;;;:::o;7070:159::-;7137:20;;7197:6;7186:18;;7176:29;;7166:57;;7219:1;7216;7209:12;7166:57;7070:159;;;:::o;7234:328::-;7308:6;7316;7324;7377:2;7365:9;7356:7;7352:23;7348:32;7345:52;;;7393:1;7390;7383:12;7345:52;7416:28;7434:9;7416:28;:::i;:::-;7406:38;;7463:37;7496:2;7485:9;7481:18;7463:37;:::i;:::-;7453:47;;7519:37;7552:2;7541:9;7537:18;7519:37;:::i;:::-;7509:47;;7234:328;;;;;:::o;7567:382::-;7632:6;7640;7693:2;7681:9;7672:7;7668:23;7664:32;7661:52;;;7709:1;7706;7699:12;7661:52;7748:9;7735:23;7767:31;7792:5;7767:31;:::i;7954:180::-;8013:6;8066:2;8054:9;8045:7;8041:23;8037:32;8034:52;;;8082:1;8079;8072:12;8034:52;-1:-1:-1;8105:23:1;;7954:180;-1:-1:-1;7954:180:1:o;8139:553::-;8240:6;8248;8256;8309:2;8297:9;8288:7;8284:23;8280:32;8277:52;;;8325:1;8322;8315:12;8277:52;8364:9;8351:23;8383:31;8408:5;8383:31;:::i;:::-;8433:5;-1:-1:-1;8490:2:1;8475:18;;8462:32;8503:33;8462:32;8503:33;:::i;:::-;8555:7;-1:-1:-1;8614:2:1;8599:18;;8586:32;8627:33;8586:32;8627:33;:::i;:::-;8679:7;8669:17;;;8139:553;;;;;:::o;8697:404::-;8781:6;8789;8842:2;8830:9;8821:7;8817:23;8813:32;8810:52;;;8858:1;8855;8848:12;8810:52;8897:9;8884:23;8916:31;8941:5;8916:31;:::i;:::-;8966:5;-1:-1:-1;9023:2:1;9008:18;;8995:32;9036:33;8995:32;9036:33;:::i;10045:547::-;10143:6;10151;10159;10167;10175;10183;10236:3;10224:9;10215:7;10211:23;10207:33;10204:53;;;10253:1;10250;10243:12;10204:53;10276:28;10294:9;10276:28;:::i;:::-;10266:38;;10323:37;10356:2;10345:9;10341:18;10323:37;:::i;:::-;10313:47;;10379:37;10412:2;10401:9;10397:18;10379:37;:::i;:::-;10369:47;;10435:37;10468:2;10457:9;10453:18;10435:37;:::i;:::-;10425:47;;10491:38;10524:3;10513:9;10509:19;10491:38;:::i;:::-;10481:48;;10548:38;10581:3;10570:9;10566:19;10548:38;:::i;:::-;10538:48;;10045:547;;;;;;;;:::o;11644:385::-;11730:6;11738;11746;11754;11807:3;11795:9;11786:7;11782:23;11778:33;11775:53;;;11824:1;11821;11814:12;11775:53;-1:-1:-1;;11847:23:1;;;11917:2;11902:18;;11889:32;;-1:-1:-1;11968:2:1;11953:18;;11940:32;;12019:2;12004:18;11991:32;;-1:-1:-1;11644:385:1;-1:-1:-1;11644:385:1:o;12653:484::-;12706:3;12744:5;12738:12;12771:6;12766:3;12759:19;12797:4;12826:2;12821:3;12817:12;12810:19;;12863:2;12856:5;12852:14;12884:1;12894:218;12908:6;12905:1;12902:13;12894:218;;;12973:13;;-1:-1:-1;;;;;12969:62:1;12957:75;;13052:12;;;;13087:15;;;;12930:1;12923:9;12894:218;;;-1:-1:-1;13128:3:1;;12653:484;-1:-1:-1;;;;;12653:484:1:o;13142:342::-;13343:2;13332:9;13325:21;13306:4;13363:56;13415:2;13404:9;13400:18;13392:6;13363:56;:::i;:::-;13355:64;;13469:6;13462:14;13455:22;13450:2;13439:9;13435:18;13428:50;13142:342;;;;;:::o;13489:184::-;13541:77;13538:1;13531:88;13638:4;13635:1;13628:15;13662:4;13659:1;13652:15;13678:482;13767:1;13810:5;13767:1;13824:330;13845:7;13835:8;13832:21;13824:330;;;13964:4;-1:-1:-1;;13892:77:1;13886:4;13883:87;13880:113;;;13973:18;;:::i;:::-;14023:7;14013:8;14009:22;14006:55;;;14043:16;;;;14006:55;14122:22;;;;14082:15;;;;13824:330;;;13828:3;13678:482;;;;;:::o;14165:866::-;14214:5;14244:8;14234:80;;-1:-1:-1;14285:1:1;14299:5;;14234:80;14333:4;14323:76;;-1:-1:-1;14370:1:1;14384:5;;14323:76;14415:4;14433:1;14428:59;;;;14501:1;14496:130;;;;14408:218;;14428:59;14458:1;14449:10;;14472:5;;;14496:130;14533:3;14523:8;14520:17;14517:43;;;14540:18;;:::i;:::-;-1:-1:-1;;14596:1:1;14582:16;;14611:5;;14408:218;;14710:2;14700:8;14697:16;14691:3;14685:4;14682:13;14678:36;14672:2;14662:8;14659:16;14654:2;14648:4;14645:12;14641:35;14638:77;14635:159;;;-1:-1:-1;14747:19:1;;;14779:5;;14635:159;14826:34;14851:8;14845:4;14826:34;:::i;:::-;14956:6;-1:-1:-1;;14884:79:1;14875:7;14872:92;14869:118;;;14967:18;;:::i;:::-;15005:20;;14165:866;-1:-1:-1;;;14165:866:1:o;15036:140::-;15094:5;15123:47;15164:4;15154:8;15150:19;15144:4;15123:47;:::i;15181:274::-;15221:1;15247;15237:189;;15282:77;15279:1;15272:88;15383:4;15380:1;15373:15;15411:4;15408:1;15401:15;15237:189;-1:-1:-1;15440:9:1;;15181:274::o;15460:128::-;15527:9;;;15548:11;;;15545:37;;;15562:18;;:::i;15593:228::-;15633:7;15759:1;-1:-1:-1;;15687:74:1;15684:1;15681:81;15676:1;15669:9;15662:17;15658:105;15655:131;;;15766:18;;:::i;:::-;-1:-1:-1;15806:9:1;;15593:228::o;16593:184::-;16645:77;16642:1;16635:88;16742:4;16739:1;16732:15;16766:4;16763:1;16756:15;16782:197;16820:3;16848:6;16889:2;16882:5;16878:14;16916:2;16907:7;16904:15;16901:41;;16922:18;;:::i;:::-;16971:1;16958:15;;16782:197;-1:-1:-1;;;16782:197:1:o;16984:125::-;17049:9;;;17070:10;;;17067:36;;;17083:18;;:::i;17812:168::-;17879:6;17905:10;;;17917;;;17901:27;;17940:11;;;17937:37;;;17954:18;;:::i;:::-;17937:37;17812:168;;;;:::o;22514:251::-;22584:6;22637:2;22625:9;22616:7;22612:23;22608:32;22605:52;;;22653:1;22650;22643:12;22605:52;22685:9;22679:16;22704:31;22729:5;22704:31;:::i;24680:245::-;24747:6;24800:2;24788:9;24779:7;24775:23;24771:32;24768:52;;;24816:1;24813;24806:12;24768:52;24848:9;24842:16;24867:28;24889:5;24867:28;:::i;28477:605::-;28776:6;28765:9;28758:25;28819:6;28814:2;28803:9;28799:18;28792:34;28862:3;28857:2;28846:9;28842:18;28835:31;28739:4;28883:57;28935:3;28924:9;28920:19;28912:6;28883:57;:::i;:::-;-1:-1:-1;;;;;28976:55:1;;;;28971:2;28956:18;;28949:83;-1:-1:-1;29063:3:1;29048:19;29041:35;28875:65;28477:605;-1:-1:-1;;;28477:605:1:o;29730:306::-;29818:6;29826;29834;29887:2;29875:9;29866:7;29862:23;29858:32;29855:52;;;29903:1;29900;29893:12;29855:52;29932:9;29926:16;29916:26;;29982:2;29971:9;29967:18;29961:25;29951:35;;30026:2;30015:9;30011:18;30005:25;29995:35;;29730:306;;;;;:::o;30041:171::-;30109:6;30148:10;;;30136;;;30132:27;;30171:12;;;30168:38;;;30186:18;;:::i;30831:541::-;31110:6;31099:9;31092:25;31153:3;31148:2;31137:9;31133:18;31126:31;31073:4;31174:57;31226:3;31215:9;31211:19;31203:6;31174:57;:::i;:::-;-1:-1:-1;;;;;31267:55:1;;;;31262:2;31247:18;;31240:83;-1:-1:-1;31354:2:1;31339:18;31332:34;31166:65;30831:541;-1:-1:-1;;30831:541:1:o
Swarm Source
ipfs://5b4cb256caee2543273accdeded7e815599765ffc714c8c5a2f1843118a5113b
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.