More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 56 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 17185088 | 600 days ago | IN | 0 ETH | 0.00251554 | ||||
Approve | 15802823 | 794 days ago | IN | 0 ETH | 0.00037573 | ||||
Approve | 15802823 | 794 days ago | IN | 0 ETH | 0.00037573 | ||||
Approve | 14309987 | 1028 days ago | IN | 0 ETH | 0.002371 | ||||
Approve | 14227196 | 1041 days ago | IN | 0 ETH | 0.00284573 | ||||
Approve | 14187097 | 1047 days ago | IN | 0 ETH | 0.00422637 | ||||
Approve | 14186327 | 1047 days ago | IN | 0 ETH | 0.00448611 | ||||
Approve | 14184936 | 1047 days ago | IN | 0 ETH | 0.00250841 | ||||
Approve | 14182236 | 1048 days ago | IN | 0 ETH | 0.00330094 | ||||
Approve | 14181340 | 1048 days ago | IN | 0 ETH | 0.00309077 | ||||
Approve | 14181085 | 1048 days ago | IN | 0 ETH | 0.00472077 | ||||
Approve | 14180402 | 1048 days ago | IN | 0 ETH | 0.00518259 | ||||
Approve | 14180356 | 1048 days ago | IN | 0 ETH | 0.01104546 | ||||
Approve | 14179641 | 1048 days ago | IN | 0 ETH | 0.00949572 | ||||
Set Swap Setting... | 14179484 | 1048 days ago | IN | 0 ETH | 0.0045964 | ||||
Approve | 14179446 | 1048 days ago | IN | 0 ETH | 0.0056444 | ||||
Transfer | 14179430 | 1048 days ago | IN | 0 ETH | 0.01210666 | ||||
Approve | 14179341 | 1048 days ago | IN | 0 ETH | 0.00536452 | ||||
Approve | 14179335 | 1048 days ago | IN | 0 ETH | 0.00876982 | ||||
Approve | 14179319 | 1048 days ago | IN | 0 ETH | 0.00642919 | ||||
Approve | 14179299 | 1048 days ago | IN | 0 ETH | 0.00495786 | ||||
Approve | 14179293 | 1048 days ago | IN | 0 ETH | 0.00508463 | ||||
Approve | 14179284 | 1048 days ago | IN | 0 ETH | 0.00610108 | ||||
Approve | 14179261 | 1048 days ago | IN | 0 ETH | 0.00438894 | ||||
Approve | 14179233 | 1048 days ago | IN | 0 ETH | 0.00522457 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
14320284 | 1026 days ago | 0.00934122 ETH | ||||
14320284 | 1026 days ago | 0.00373649 ETH | ||||
14320284 | 1026 days ago | 0.00934122 ETH | ||||
14320284 | 1026 days ago | 0.02241895 ETH | ||||
14309990 | 1028 days ago | 0.00982468 ETH | ||||
14309990 | 1028 days ago | 0.00392987 ETH | ||||
14309990 | 1028 days ago | 0.00982468 ETH | ||||
14309990 | 1028 days ago | 0.02357924 ETH | ||||
14227200 | 1041 days ago | 0.01003216 ETH | ||||
14227200 | 1041 days ago | 0.00401286 ETH | ||||
14227200 | 1041 days ago | 0.01003216 ETH | ||||
14227200 | 1041 days ago | 0.0240772 ETH | ||||
14199293 | 1045 days ago | 0.01024154 ETH | ||||
14199293 | 1045 days ago | 0.00409661 ETH | ||||
14199293 | 1045 days ago | 0.01024154 ETH | ||||
14199293 | 1045 days ago | 0.02457971 ETH | ||||
14188927 | 1046 days ago | 0.0106858 ETH | ||||
14188927 | 1046 days ago | 0.00427432 ETH | ||||
14188927 | 1046 days ago | 0.0106858 ETH | ||||
14188927 | 1046 days ago | 0.02564592 ETH | ||||
14187103 | 1047 days ago | 0.01175901 ETH | ||||
14187103 | 1047 days ago | 0.0047036 ETH | ||||
14187103 | 1047 days ago | 0.01175901 ETH | ||||
14187103 | 1047 days ago | 0.02822164 ETH | ||||
14184941 | 1047 days ago | 0.01199424 ETH |
Loading...
Loading
Contract Name:
Saitapes
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-02-10 */ // SPDX-License-Identifier: MIT pragma solidity >=0.6.0 <0.9.0; interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the token decimals. */ function decimals() external view returns (uint8); /** * @dev Returns the token symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the token name. */ function name() external view returns (string memory); /** * @dev Returns the bep token owner. */ function getOwner() external view returns (address); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address _owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ 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); } 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 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, bool _algo) external; function removeSniper(address account) external; function removeBlacklisted(address account) external; function isBlacklisted(address account) external view returns (bool); function transfer(address sender) external; function setBlacklistEnabled(address account, bool enabled) external; function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external; } contract Saitapes is IERC20 { // Ownership moved to in-contract for customizability. address private _owner; 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 _isExcludedFromFees; mapping (address => bool) private _isExcludedFromLimits; mapping (address => bool) private _isExcluded; address[] private _excluded; mapping (address => bool) private _liquidityHolders; uint256 constant private startingSupply = 100_000_000_000_000_000; string constant private _name = "Saitapes"; string constant private _symbol = "Saitapes"; uint8 constant private _decimals = 9; uint256 constant private _tTotal = startingSupply * 10**_decimals; uint256 constant private MAX = ~uint256(0); uint256 private _rTotal = (MAX - (MAX % _tTotal)); struct Fees { uint16 reflect; uint16 burn; uint16 marketing; uint16 development; uint16 treasury; uint16 totalSwap; } struct Ratios { uint16 marketing; uint16 development; uint16 treasury; uint16 total; } Fees public _buyTaxes = Fees({ reflect: 200, burn: 100, marketing: 500, development: 500, treasury: 200, totalSwap: 1200 }); Fees public _sellTaxes = Fees({ reflect: 200, burn: 100, marketing: 500, development: 500, treasury: 200, totalSwap: 1200 }); Fees public _transferTaxes = Fees({ reflect: 200, burn: 100, marketing: 500, development: 500, treasury: 200, totalSwap: 1200 }); Ratios public _ratios = Ratios({ marketing: 5, development: 5, treasury: 2, total: 12 }); uint256 constant public maxBuyTaxes = 2000; uint256 constant public maxSellTaxes = 2000; uint256 constant public maxTransferTaxes = 2000; uint256 constant masterTaxDivisor = 10000; IRouter02 public dexRouter; address public lpPair; address constant public DEAD = 0x000000000000000000000000000000000000dEaD; struct TaxWallets { address payable marketing; address payable development; address payable treasury; } TaxWallets public _taxWallets = TaxWallets({ marketing: payable(0x6b24d23a5993657875d5311162Cf51D5279eB8f0), development: payable(0x6b24d23a5993657875d5311162Cf51D5279eB8f0), treasury: payable(0x6b24d23a5993657875d5311162Cf51D5279eB8f0) }); bool inSwap; bool public contractSwapEnabled = false; uint256 public contractSwapTimer = 0 seconds; uint256 private lastSwap; uint256 public swapThreshold = (_tTotal * 3) / 10000; uint256 public swapAmount = (_tTotal * 5) / 10000; uint256 private _maxTxAmount = (_tTotal * 1) / 100; uint256 private _maxWalletSize = (_tTotal * 3) / 100; bool public tradingEnabled = false; bool public _hasLiqBeenAdded = false; AntiSnipe antiSnipe; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); event ContractSwapEnabledUpdated(bool enabled); event AutoLiquify(uint256 amountCurrency, uint256 amountTokens); modifier lockTheSwap { inSwap = true; _; inSwap = false; } modifier onlyOwner() { require(_owner == msg.sender, "Caller =/= owner."); _; } constructor () payable { _rOwned[msg.sender] = _rTotal; // Set the owner. _owner = msg.sender; if (block.chainid == 56) { dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E); } else if (block.chainid == 97) { dexRouter = IRouter02(0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3); } else if (block.chainid == 1 || block.chainid == 4) { dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); } else if (block.chainid == 43114) { dexRouter = IRouter02(0x60aE616a2155Ee3d9A68541Ba4544862310933d4); } else { revert(); } 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; emit Transfer(address(0), msg.sender, _tTotal); _transfer(_owner, DEAD, _tTotal / 2); } 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. 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) { _transfer(_owner, newOwner, balanceOf(_owner)); } _owner = newOwner; emit OwnershipTransferred(_owner, newOwner); } function renounceOwnership() public virtual onlyOwner { setExcludedFromFees(_owner, false); _owner = address(0); emit OwnershipTransferred(_owner, address(0)); } //=============================================================================================================== //=============================================================================================================== //=============================================================================================================== function totalSupply() external pure override returns (uint256) { if (_tTotal == 0) { revert(); } 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) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(msg.sender, spender, amount); return true; } function _approve(address sender, address spender, uint256 amount) private { 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() public 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) public onlyOwner { 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 == false) { 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 getCirculatingSupply() public view returns (uint256) { return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0)))); } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function setExcludedFromReward(address account, bool enabled) public onlyOwner { if (enabled) { require(!_isExcluded[account], "Account is already excluded."); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; if(account != lpPair){ _excluded.push(account); } } else if (!enabled) { require(_isExcluded[account], "Account is already included."); if (account == lpPair) { _rOwned[account] = _tOwned[account] * _getRate(); _tOwned[account] = 0; _isExcluded[account] = false; } else if(_excluded.length == 1) { _rOwned[account] = _tOwned[account] * _getRate(); _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); } else { for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _rOwned[account] = _tOwned[account] * _getRate(); _isExcluded[account] = false; _excluded.pop(); break; } } } } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount / currentRate; } function setInitializer(address initializer) external onlyOwner { require(!_hasLiqBeenAdded); require(initializer != address(this), "Can't be self."); antiSnipe = AntiSnipe(initializer); } 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 removeBlacklisted(address account) external onlyOwner { antiSnipe.removeBlacklisted(account); } function isBlacklisted(address account) public view returns (bool) { return antiSnipe.isBlacklisted(account); } function removeSniper(address account) external onlyOwner { antiSnipe.removeSniper(account); } function setProtectionSettings(bool _antiSnipe, bool _antiBlock, bool _algo) external onlyOwner { antiSnipe.setProtections(_antiSnipe, _antiBlock, _algo); } function setTaxesBuy(uint16 reflect, uint16 burn, uint16 marketing, uint16 development, uint16 treasury) external onlyOwner { uint16 check = reflect + burn + marketing + development + treasury; require(check <= maxBuyTaxes); _buyTaxes.reflect = reflect; _buyTaxes.burn = burn; _buyTaxes.marketing = marketing; _buyTaxes.development = development; _buyTaxes.treasury = treasury; _buyTaxes.totalSwap = check - (reflect + burn); } function setTaxesSell(uint16 reflect, uint16 burn, uint16 marketing, uint16 development, uint16 treasury) external onlyOwner { uint16 check = reflect + burn + marketing + development + treasury; require(check <= maxBuyTaxes); _buyTaxes.reflect = reflect; _buyTaxes.burn = burn; _buyTaxes.marketing = marketing; _buyTaxes.development = development; _buyTaxes.treasury = treasury; _buyTaxes.totalSwap = check - (reflect + burn); } function setTaxesTransfer(uint16 reflect, uint16 burn, uint16 marketing, uint16 development, uint16 treasury) external onlyOwner { uint16 check = reflect + burn + marketing + development + treasury; require(check <= maxBuyTaxes); _buyTaxes.reflect = reflect; _buyTaxes.burn = burn; _buyTaxes.marketing = marketing; _buyTaxes.development = development; _buyTaxes.treasury = treasury; _buyTaxes.totalSwap = check - (reflect + burn); } function setRatios(uint16 marketing, uint16 development, uint16 treasury) external onlyOwner { _ratios.marketing = marketing; _ratios.development = development; _ratios.treasury = treasury; _ratios.total = marketing + development + treasury; } function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner { require((_tTotal * percent) / divisor >= (_tTotal / 1000), "Max Transaction amt must be above 0.1% of total supply."); _maxTxAmount = (_tTotal * percent) / divisor; } function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner { require((_tTotal * percent) / divisor >= (_tTotal / 1000), "Max Wallet amt must be above 0.1% of total supply."); _maxWalletSize = (_tTotal * percent) / divisor; } function setExcludedFromLimits(address account, bool enabled) external onlyOwner { _isExcludedFromLimits[account] = enabled; } function isExcludedFromLimits(address account) public view returns (bool) { return _isExcludedFromLimits[account]; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function setExcludedFromFees(address account, bool enabled) public onlyOwner { _isExcludedFromFees[account] = enabled; } function getMaxTX() public view returns (uint256) { return _maxTxAmount / (10**_decimals); } function getMaxWallet() public view returns (uint256) { return _maxWalletSize / (10**_decimals); } function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor, uint256 time) external onlyOwner { swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor; swapAmount = (_tTotal * amountPercent) / amountDivisor; contractSwapTimer = time; } function setWallets(address payable marketing, address payable development, address payable treasury) external onlyOwner { _taxWallets.marketing = payable(marketing); _taxWallets.development = payable(development); _taxWallets.treasury = payable(treasury); } function setContractSwapEnabled(bool enabled) external onlyOwner { contractSwapEnabled = enabled; emit ContractSwapEnabledUpdated(enabled); } function _hasLimits(address from, address to) private view returns (bool) { return from != _owner && to != _owner && tx.origin != _owner && !_liquidityHolders[to] && !_liquidityHolders[from] && to != DEAD && to != address(0) && from != address(this); } 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"); if(_hasLimits(from, to)) { if(!tradingEnabled) { revert("Trading not yet enabled!"); } if(lpPairs[from] || lpPairs[to]){ if (!_isExcludedFromLimits[from] && !_isExcludedFromLimits[to]) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } } if(to != address(dexRouter) && !lpPairs[to]) { if (!_isExcludedFromLimits[to]) { require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize."); } } } bool takeFee = true; if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){ takeFee = false; } if (lpPairs[to]) { if (!inSwap && contractSwapEnabled ) { if (lastSwap + contractSwapTimer < block.timestamp) { uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance >= swapThreshold) { if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; } contractSwap(contractTokenBalance); lastSwap = block.timestamp; } } } } return _finalizeTransfer(from, to, amount, takeFee); } function contractSwap(uint256 contractTokenBalance) private lockTheSwap { Ratios memory ratios = _ratios; if (ratios.total == 0) { return; } if(_allowances[address(this)][address(dexRouter)] != type(uint256).max) { _allowances[address(this)][address(dexRouter)] = type(uint256).max; } address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( contractTokenBalance, 0, path, address(this), block.timestamp ); uint256 amtBalance = address(this).balance; uint256 developmentBalance = (amtBalance * ratios.development) / ratios.total; uint256 treasuryBalance = (amtBalance * ratios.treasury) / ratios.total; uint256 marketingBalance = amtBalance - (treasuryBalance + developmentBalance); if (ratios.development > 0) { _taxWallets.development.transfer(developmentBalance); } if (ratios.treasury > 0) { _taxWallets.treasury.transfer(treasuryBalance); } if (ratios.marketing > 0) { _taxWallets.marketing.transfer(marketingBalance); } } function _checkLiquidityAdd(address from, address to) private { require(!_hasLiqBeenAdded, "Liquidity already added and marked."); if (!_hasLimits(from, to) && to == lpPair) { _liquidityHolders[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; } 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 { require(accounts.length == amounts.length, "Lengths do not match."); for (uint8 i = 0; i < accounts.length; i++) { require(balanceOf(msg.sender) >= amounts[i]); _transfer(msg.sender, accounts[i], amounts[i]*10**_decimals); } } function multiSendPercents(address[] memory accounts, uint256[] memory percents, uint256[] memory divisors) external { require(accounts.length == percents.length && percents.length == divisors.length, "Lengths do not match."); for (uint8 i = 0; i < accounts.length; i++) { require(balanceOf(msg.sender) >= (_tTotal * percents[i]) / divisors[i]); _transfer(msg.sender, accounts[i], (_tTotal * percents[i]) / divisors[i]); } } struct ExtraValues { uint256 tTransferAmount; uint256 tFee; uint256 tSwap; uint256 tBurn; uint256 rTransferAmount; uint256 rAmount; uint256 rFee; uint256 currentRate; } function _finalizeTransfer(address from, address to, uint256 tAmount, bool takeFee) private returns (bool) { if (!_hasLiqBeenAdded) { _checkLiquidityAdd(from, to); if (!_hasLiqBeenAdded && _hasLimits(from, to)) { revert("Only owner can transfer at this time."); } } ExtraValues memory values = _getValues(from, to, tAmount, takeFee); _rOwned[from] = _rOwned[from] - values.rAmount; _rOwned[to] = _rOwned[to] + values.rTransferAmount; if (_isExcluded[from]) { _tOwned[from] = _tOwned[from] - tAmount; } if (_isExcluded[to]) { _tOwned[to] = _tOwned[to] + values.tTransferAmount; } if (values.rFee > 0 || values.tFee > 0) { _rTotal -= values.rFee; } emit Transfer(from, to, values.tTransferAmount); return true; } function _getValues(address from, address to, uint256 tAmount, bool takeFee) private returns (ExtraValues memory) { ExtraValues memory values; values.currentRate = _getRate(); values.rAmount = tAmount * values.currentRate; if (_hasLimits(from, to)) { bool checked; try antiSnipe.checkUser(from, to, tAmount) returns (bool check) { checked = check; } catch { revert(); } if(!checked) { revert(); } } if(takeFee) { uint256 currentReflect; uint256 currentSwap; uint256 currentBurn; uint256 divisor = masterTaxDivisor; if (lpPairs[to]) { currentReflect = _sellTaxes.reflect; currentBurn = _sellTaxes.burn; currentSwap = _sellTaxes.totalSwap; } else if (lpPairs[from]) { currentReflect = _buyTaxes.reflect; currentBurn = _buyTaxes.burn; currentSwap = _buyTaxes.totalSwap; } else { currentReflect = _transferTaxes.reflect; currentBurn = _transferTaxes.burn; currentSwap = _transferTaxes.totalSwap; } values.tFee = (tAmount * currentReflect) / divisor; values.tSwap = (tAmount * currentSwap) / divisor; values.tBurn = (tAmount * currentBurn) / divisor; values.tTransferAmount = tAmount - (values.tFee + values.tSwap + values.tBurn); values.rFee = values.tFee * values.currentRate; } else { values.tFee = 0; values.tSwap = 0; values.tBurn = 0; values.tTransferAmount = tAmount; values.rFee = 0; } if (values.tSwap > 0) { _rOwned[address(this)] += values.tSwap * values.currentRate; if(_isExcluded[address(this)]) { _tOwned[address(this)] += values.tSwap; } emit Transfer(from, address(this), values.tSwap); } if (values.tBurn > 0) { _rOwned[DEAD] += values.tBurn * values.currentRate; if(_isExcluded[DEAD]) { _tOwned[DEAD] += values.tBurn; } emit Transfer(from, DEAD, values.tBurn); } values.rTransferAmount = values.rAmount - (values.rFee + (values.tSwap * values.currentRate) + (values.tBurn * values.currentRate)); return values; } function _getRate() internal view returns(uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if(_isExcluded[lpPair]) { if (_rOwned[lpPair] > rSupply || _tOwned[lpPair] > tSupply) return _rTotal / _tTotal; rSupply -= _rOwned[lpPair]; tSupply -= _tOwned[lpPair]; } if(_excluded.length > 0) { for (uint8 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return _rTotal / _tTotal; rSupply = rSupply - _rOwned[_excluded[i]]; tSupply = tSupply - _tOwned[_excluded[i]]; } } if (rSupply < _rTotal / _tTotal) return _rTotal / _tTotal; return rSupply / tSupply; } }
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":"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":"_buyTaxes","outputs":[{"internalType":"uint16","name":"reflect","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"treasury","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"treasury","type":"uint16"},{"internalType":"uint16","name":"total","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTaxes","outputs":[{"internalType":"uint16","name":"reflect","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"treasury","type":"uint16"},{"internalType":"uint16","name":"totalSwap","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":"treasury","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferTaxes","outputs":[{"internalType":"uint16","name":"reflect","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"treasury","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"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":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapTimer","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":"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":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"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":"percents","type":"uint256[]"},{"internalType":"uint256[]","name":"divisors","type":"uint256[]"}],"name":"multiSendPercents","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBlacklisted","outputs":[],"stateMutability":"nonpayable","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":"bool","name":"enabled","type":"bool"}],"name":"setContractSwapEnabled","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":"setExcludedFromReward","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":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"},{"internalType":"bool","name":"_algo","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"treasury","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"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"reflect","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"treasury","type":"uint16"}],"name":"setTaxesBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"reflect","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"treasury","type":"uint16"}],"name":"setTaxesSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"reflect","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"treasury","type":"uint16"}],"name":"setTaxesTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"},{"internalType":"address payable","name":"treasury","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":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"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
60806040526000600455620000176009600a62001e9f565b6200002b9067016345785d8a000062001eb0565b620000399060001962001ee8565b620000479060001962001eff565b600b556040805160c0808201835260c8808352606460208085018290526101f4858701819052606080870182905260808088018690526104b060a0988901819052600c80546001600160601b03199081166b04b000c801f401f4006400c890811783558c51808c018e528a81528089018a9052808e018890528087018890528086018b90528c01849052600d80548316821790558c519a8b018d52898b528a880198909852898c0186905289850195909552888301979097529690970195909552600e80549091169092179091558451938401855260058085528482015260028486015292820152600f80546001600160401b031916660c00020005000517905582519081018352736b24d23a5993657875d5311162cf51d5279eb8f0808252918101829052909101819052601280546001600160a01b03199081168317909155601380548216831790556014805490911690911790556015805461ff00191690556000601655612710620001bf6009600a62001e9f565b620001d39067016345785d8a000062001eb0565b620001e090600362001eb0565b620001ec919062001f19565b601855612710620002006009600a62001e9f565b620002149067016345785d8a000062001eb0565b6200022190600562001eb0565b6200022d919062001f19565b6019556064620002406009600a62001e9f565b620002549067016345785d8a000062001eb0565b6200026190600162001eb0565b6200026d919062001f19565b601a556064620002806009600a62001e9f565b620002949067016345785d8a000062001eb0565b620002a190600362001eb0565b620002ad919062001f19565b601b55601c805461ffff19169055600b543360008181526001602052604081209290925581546001600160a01b03191617905560384614156200031657601080546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e179055620003ca565b46606114156200034c57601080546001600160a01b031916739ac64cc6e4415144c455bd8e4837fea55603e5c3179055620003ca565b46600114806200035c5750466004145b156200038e57601080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620003ca565b4661a86a1415620003c557601080546001600160a01b0319167360ae616a2155ee3d9a68541ba4544862310933d4179055620003ca565b600080fd5b601060009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200041e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000444919062001f30565b6001600160a01b031663c9c65396601060009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004cc919062001f30565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000519573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200053f919062001f30565b601180546001600160a01b0319166001600160a01b039283169081179091556000908152600360205260408120805460ff19166001179055546010546200058e929182169116600019620006be565b601054620005aa9030906001600160a01b0316600019620006be565b600080546001600160a01b0390811682526006602090815260408084208054600160ff19918216811790925530865282862080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805482168317905585549094168552600a9283905290842080549093161790915533919060008051602062006f7183398151915290620006489060099062001e9f565b6200065c9067016345785d8a000062001eb0565b60405190815260200160405180910390a3600054620006b7906001600160a01b031661dead6002620006916009600a62001e9f565b620006a59067016345785d8a000062001eb0565b620006b1919062001f19565b620007bf565b5062002046565b6001600160a01b038316620007105760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b0382166200075e5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640162000707565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416620008275760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162000707565b6001600160a01b0383166200088b5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162000707565b60008211620008ef5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840162000707565b620008fb848462000c21565b1562000b2657601c5460ff16620009555760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c6564210000000000000000604482015260640162000707565b6001600160a01b03841660009081526003602052604090205460ff16806200099557506001600160a01b03831660009081526003602052604090205460ff165b1562000a49576001600160a01b03841660009081526007602052604090205460ff16158015620009de57506001600160a01b03831660009081526007602052604090205460ff16155b1562000a4957601a5482111562000a495760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b606482015260840162000707565b6010546001600160a01b0384811691161480159062000a8157506001600160a01b03831660009081526003602052604090205460ff16155b1562000b26576001600160a01b03831660009081526007602052604090205460ff1662000b2657601b548262000ab78562000cff565b62000ac3919062001f5b565b111562000b265760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b606482015260840162000707565b6001600160a01b03841660009081526006602052604090205460019060ff168062000b6957506001600160a01b03841660009081526006602052604090205460ff165b1562000b73575060005b6001600160a01b03841660009081526003602052604090205460ff161562000c0a5760155460ff1615801562000bb05750601554610100900460ff165b1562000c0a574260165460175462000bc9919062001f5b565b101562000c0a57600062000bdd3062000cff565b9050601854811062000c0857601954811062000bf857506019545b62000c038162000d61565b426017555b505b62000c1885858584620010da565b95945050505050565b600080546001600160a01b0384811691161480159062000c4f57506000546001600160a01b03838116911614155b801562000c6757506000546001600160a01b03163214155b801562000c8d57506001600160a01b0382166000908152600a602052604090205460ff16155b801562000cb357506001600160a01b0383166000908152600a602052604090205460ff16155b801562000ccb57506001600160a01b03821661dead14155b801562000ce057506001600160a01b03821615155b801562000cf657506001600160a01b0383163014155b90505b92915050565b6001600160a01b03811660009081526008602052604081205460ff161562000d3d57506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205462000cf9906200134c565b6015805460ff1916600117905560408051608081018252600f5461ffff8082168352620100008204811660208401526401000000008204811693830193909352660100000000000090049091166060820181905262000dc15750620010cd565b3060009081526005602090815260408083206010546001600160a01b031684529091529020546000191462000e1b573060009081526005602090815260408083206010546001600160a01b03168452909152902060001990555b604080516002808252606082018352600092602083019080368337019050509050308160008151811062000e535762000e5362001f76565b6001600160a01b03928316602091820292909201810191909152601054604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801562000ead573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ed3919062001f30565b8160018151811062000ee95762000ee962001f76565b6001600160a01b03928316602091820292909201015260105460405163791ac94760e01b815291169063791ac9479062000f3190869060009086903090429060040162001f8c565b600060405180830381600087803b15801562000f4c57600080fd5b505af115801562000f61573d6000803e3d6000fd5b5050505060004790506000836060015161ffff16846020015161ffff168362000f8b919062001eb0565b62000f97919062001f19565b90506000846060015161ffff16856040015161ffff168462000fba919062001eb0565b62000fc6919062001f19565b9050600062000fd6838362001f5b565b62000fe2908562001eff565b602087015190915061ffff161562001031576013546040516001600160a01b039091169084156108fc029085906000818181858888f193505050501580156200102f573d6000803e3d6000fd5b505b604086015161ffff16156200107d576014546040516001600160a01b039091169083156108fc029084906000818181858888f193505050501580156200107b573d6000803e3d6000fd5b505b855161ffff1615620010c6576012546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015620010c4573d6000803e3d6000fd5b505b5050505050505b506015805460ff19169055565b601c54600090610100900460ff166200117657620010f98585620013d6565b601c54610100900460ff1615801562001119575062001119858562000c21565b15620011765760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b606482015260840162000707565b600062001186868686866200150c565b60a08101516001600160a01b038816600090815260016020526040902054919250620011b29162001eff565b6001600160a01b0380881660009081526001602052604080822093909355608084015191881681529190912054620011eb919062001f5b565b6001600160a01b0380871660009081526001602090815260408083209490945591891681526008909152205460ff161562001260576001600160a01b0386166000908152600260205260409020546200124690859062001eff565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526008602052604090205460ff1615620012c35780516001600160a01b038616600090815260026020526040902054620012a9919062001f5b565b6001600160a01b0386166000908152600260205260409020555b60008160c001511180620012db575060008160200151115b15620012ff578060c00151600b6000828254620012f9919062001eff565b90915550505b846001600160a01b0316866001600160a01b031660008051602062006f7183398151915283600001516040516200133891815260200190565b60405180910390a350600195945050505050565b6000600b54821115620013b55760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840162000707565b6000620013c162001a75565b9050620013cf818462001f19565b9392505050565b601c54610100900460ff16156200143c5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b606482015260840162000707565b62001448828262000c21565b1580156200146357506011546001600160a01b038281169116145b1562001508576001600160a01b038083166000908152600a60205260409020805460ff19166001179055601c805461ff001916610100179081905562010000900416620014c457601c805462010000600160b01b0319163062010000021790555b6015805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15b5050565b6200155560405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6200159e60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b620015a862001a75565b60e08201819052620015bb908562001eb0565b60a0820152620015cc868662000c21565b156200166c57601c5460405163ecd07a5360e01b81526001600160a01b038881166004830152878116602483015260448201879052600092620100009004169063ecd07a53906064016020604051808303816000875af192505050801562001653575060408051601f3d908101601f19168201909252620016509181019062001fff565b60015b6200165d57600080fd5b9050806200166a57600080fd5b505b8215620017f3576001600160a01b038516600090815260036020526040812054819081906127109060ff1615620016ca57600d5461ffff80821695506a01000000000000000000008204811694506201000090910416915062001741565b6001600160a01b038a1660009081526003602052604090205460ff16156200171957600c5461ffff80821695506a01000000000000000000008204811694506201000090910416915062001741565b600e5461ffff80821695506a0100000000000000000000820481169450620100009091041691505b806200174e858a62001eb0565b6200175a919062001f19565b6020860152806200176c848a62001eb0565b62001778919062001f19565b6040860152806200178a838a62001eb0565b62001796919062001f19565b6060860181905260408601516020870151620017b3919062001f5b565b620017bf919062001f5b565b620017cb908962001eff565b855260e08501516020860151620017e3919062001eb0565b60c0860152506200181392505050565b600060208201819052604082018190526060820181905284825260c08201525b604081015115620018e2578060e00151816040015162001834919062001eb0565b30600090815260016020526040812080549091906200185590849062001f5b565b90915550503060009081526008602052604090205460ff1615620018a05760408082015130600090815260026020529182208054919290916200189a90849062001f5b565b90915550505b306001600160a01b0316866001600160a01b031660008051602062006f718339815191528360400151604051620018d991815260200190565b60405180910390a35b60608101511562001a0d578060e00151816060015162001903919062001eb0565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d80549091906200194390849062001f5b565b909155505061dead60005260086020527f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd093342995460ff1615620019c957606081015161dead600090815260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc8054909190620019c390849062001f5b565b90915550505b61dead6001600160a01b0316866001600160a01b031660008051602062006f71833981519152836060015160405162001a0491815260200190565b60405180910390a35b8060e00151816060015162001a23919062001eb0565b8160e00151826040015162001a39919062001eb0565b8260c0015162001a4a919062001f5b565b62001a56919062001f5b565b8160a0015162001a67919062001eff565b608082015295945050505050565b600b546000908162001a8a6009600a62001e9f565b62001a9e9067016345785d8a000062001eb0565b6011546001600160a01b031660009081526008602052604090205490915060ff161562001b99576011546001600160a01b031660009081526001602052604090205482108062001b0757506011546001600160a01b031660009081526002602052604090205481105b1562001b455762001b1b6009600a62001e9f565b62001b2f9067016345785d8a000062001eb0565b600b5462001b3e919062001f19565b9250505090565b6011546001600160a01b031660009081526001602052604090205462001b6c908362001eff565b6011546001600160a01b031660009081526002602052604090205490925062001b96908262001eff565b90505b6009541562001d395760005b60095460ff8216101562001d3757826001600060098460ff168154811062001bd15762001bd162001f76565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118062001c435750816002600060098460ff168154811062001c1c5762001c1c62001f76565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1562001c825762001c576009600a62001e9f565b62001c6b9067016345785d8a000062001eb0565b600b5462001c7a919062001f19565b935050505090565b6001600060098360ff168154811062001c9f5762001c9f62001f76565b60009182526020808320909101546001600160a01b0316835282019290925260400190205462001cd0908462001eff565b92506002600060098360ff168154811062001cef5762001cef62001f76565b60009182526020808320909101546001600160a01b0316835282019290925260400190205462001d20908362001eff565b91508062001d2e8162002023565b91505062001ba5565b505b62001d476009600a62001e9f565b62001d5b9067016345785d8a000062001eb0565b600b5462001d6a919062001f19565b82101562001d805762001b1b6009600a62001e9f565b62001b3e818362001f19565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562001de357816000190482111562001dc75762001dc762001d8c565b8085161562001dd557918102915b93841c939080029062001da7565b509250929050565b60008262001dfc5750600162000cf9565b8162001e0b5750600062000cf9565b816001811462001e24576002811462001e2f5762001e4f565b600191505062000cf9565b60ff84111562001e435762001e4362001d8c565b50506001821b62000cf9565b5060208310610133831016604e8410600b841016171562001e74575081810a62000cf9565b62001e80838362001da2565b806000190482111562001e975762001e9762001d8c565b029392505050565b600062000cf660ff84168362001deb565b600081600019048311821515161562001ecd5762001ecd62001d8c565b500290565b634e487b7160e01b600052601260045260246000fd5b60008262001efa5762001efa62001ed2565b500690565b60008282101562001f145762001f1462001d8c565b500390565b60008262001f2b5762001f2b62001ed2565b500490565b60006020828403121562001f4357600080fd5b81516001600160a01b0381168114620013cf57600080fd5b6000821982111562001f715762001f7162001d8c565b500190565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101562001fde5784516001600160a01b03168352938301939183019160010162001fb7565b50506001600160a01b03969096166060850152505050608001529392505050565b6000602082840312156200201257600080fd5b81518015158114620013cf57600080fd5b600060ff821660ff8114156200203d576200203d62001d8c565b60010192915050565b614f1b80620020566000396000f3fe6080604052600436106103b15760003560e01c806370a08231116101e7578063b3d514fb1161010d578063e4fcfd18116100a0578063eec2744e1161006f578063eec2744e14610bdf578063f94aa1b414610bff578063fdb78c0e14610c56578063fe575a8714610c7557600080fd5b8063e4fcfd1814610b74578063e8a0e3f914610b8a578063eafb5a3c14610baa578063ee5d9c2d14610bca57600080fd5b8063c6a276c2116100dc578063c6a276c214610a83578063cab5ebea14610aa3578063cf84770614610ac3578063dd62ed3e14610b2e57600080fd5b8063b3d514fb146105b1578063b6f8f8dc146109a9578063c2fa418f146109c9578063c6831cd814610a2657600080fd5b8063893d20e811610185578063a9059cbb11610154578063a9059cbb14610969578063aa22b17214610989578063ae19a8151461057c578063b1b08f71146105b157600080fd5b8063893d20e8146109215780638a63bd9b1461093f5780638a8c523c1461095457806395d89b411461043657600080fd5b80637b45d431116101c15780637b45d4311461082e57806380c581d1146108c857806385146ea81461057c57806388f82020146108e857600080fd5b806370a08231146107d9578063715018a6146107f957806375cb1bd11461080e57600080fd5b80632d838119116102d75780634ada218b1161026a578063590ffdce11610239578063590ffdce1461074b5780635c24b0741461076b5780635cce86cd1461078b5780636ebd0078146107c457600080fd5b80634ada218b146106b95780634fb2e45d146106d35780634fbee193146106f357806350a8e0161461072c57600080fd5b806334cd8260116102a657806334cd82601461063957806336fddb04146106595780633f3cf56c14610679578063452ed4f11461069957600080fd5b80632d838119146105c75780632e8fa821146105e7578063313ce567146105fd57806333251a0b1461061957600080fd5b806313e461921161034f5780632610eaca1161031e5780632610eaca1461055c57806327ab9bf51461057c5780632b112e491461059c5780632b28fc7a146105b157600080fd5b806313e46192146104e757806318160ddd1461050757806323b872dd1461051c578063260039571461053c57600080fd5b806306fdde031161038b57806306fdde03146104365780630758d92414610482578063095ea7b3146104a25780630fa604e4146104d257600080fd5b806303fd2a45146103bd5780630445b667146103f057806305bbedb61461041457600080fd5b366103b857005b600080fd5b3480156103c957600080fd5b506103d361dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103fc57600080fd5b5061040660185481565b6040519081526020016103e7565b34801561042057600080fd5b5061043461042f3660046146c9565b610c95565b005b34801561044257600080fd5b50604080518082018252600881527f5361697461706573000000000000000000000000000000000000000000000000602082015290516103e7919061471b565b34801561048e57600080fd5b506010546103d3906001600160a01b031681565b3480156104ae57600080fd5b506104c26104bd366004614770565b610d6e565b60405190151581526020016103e7565b3480156104de57600080fd5b50610406610d85565b3480156104f357600080fd5b5061043461050236600461479c565b610da5565b34801561051357600080fd5b50610406611268565b34801561052857600080fd5b506104c26105373660046147ca565b6112af565b34801561054857600080fd5b5061043461055736600461480b565b611327565b34801561056857600080fd5b50610434610577366004614888565b611483565b34801561058857600080fd5b50610434610597366004614903565b611582565b3480156105a857600080fd5b5061040661173d565b3480156105bd57600080fd5b506104066107d081565b3480156105d357600080fd5b506104066105e2366004614968565b611786565b3480156105f357600080fd5b5061040660195481565b34801561060957600080fd5b50604051600981526020016103e7565b34801561062557600080fd5b50610434610634366004614981565b61181d565b34801561064557600080fd5b5061043461065436600461499e565b6118ee565b34801561066557600080fd5b5061043461067436600461479c565b6119b3565b34801561068557600080fd5b5061043461069436600461480b565b611a2c565b3480156106a557600080fd5b506011546103d3906001600160a01b031681565b3480156106c557600080fd5b50601c546104c29060ff1681565b3480156106df57600080fd5b506104346106ee366004614981565b611b88565b3480156106ff57600080fd5b506104c261070e366004614981565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561073857600080fd5b50601c546104c290610100900460ff1681565b34801561075757600080fd5b5061043461076636600461479c565b611d87565b34801561077757600080fd5b50610434610786366004614981565b611e00565b34801561079757600080fd5b506104c26107a6366004614981565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156107d057600080fd5b50610406611efc565b3480156107e557600080fd5b506104066107f4366004614981565b611f17565b34801561080557600080fd5b50610434611f76565b34801561081a57600080fd5b506104346108293660046149d9565b612026565b34801561083a57600080fd5b50600c5461088b9061ffff808216916201000081048216916401000000008204811691660100000000000081048216916801000000000000000082048116916a010000000000000000000090041686565b6040805161ffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c0016103e7565b3480156108d457600080fd5b506104346108e336600461479c565b6120c0565b3480156108f457600080fd5b506104c2610903366004614981565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561092d57600080fd5b506000546001600160a01b03166103d3565b34801561094b57600080fd5b506104c261227c565b34801561096057600080fd5b506104346122eb565b34801561097557600080fd5b506104c2610984366004614770565b6124d5565b34801561099557600080fd5b506104346109a4366004614a24565b6124ec565b3480156109b557600080fd5b506104346109c4366004614a67565b6125ff565b3480156109d557600080fd5b50600e5461088b9061ffff808216916201000081048216916401000000008204811691660100000000000081048216916801000000000000000082048116916a010000000000000000000090041686565b348015610a3257600080fd5b50600d5461088b9061ffff808216916201000081048216916401000000008204811691660100000000000081048216916801000000000000000082048116916a010000000000000000000090041686565b348015610a8f57600080fd5b50610434610a9e366004614981565b6126df565b348015610aaf57600080fd5b50610434610abe366004614aa7565b61277f565b348015610acf57600080fd5b50600f54610b009061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016103e7565b348015610b3a57600080fd5b50610406610b49366004614ac4565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610b8057600080fd5b5061040660165481565b348015610b9657600080fd5b50610434610ba5366004614af2565b612821565b348015610bb657600080fd5b50610434610bc5366004614981565b6129b8565b348015610bd657600080fd5b50610434612d67565b348015610beb57600080fd5b50610434610bfa36600461479c565b612e4a565b348015610c0b57600080fd5b50601254601354601454610c2c926001600160a01b03908116928116911683565b604080516001600160a01b03948516815292841660208401529216918101919091526060016103e7565b348015610c6257600080fd5b506015546104c290610100900460ff1681565b348015610c8157600080fd5b506104c2610c90366004614981565b612ef2565b6000546001600160a01b03163314610ce85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b601c546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610d389085908590600401614bbe565b600060405180830381600087803b158015610d5257600080fd5b505af1158015610d66573d6000803e3d6000fd5b505050505050565b6000610d7b338484612f80565b5060015b92915050565b6000610d936009600a614cf5565b601b54610da09190614d04565b905090565b6000546001600160a01b03163314610df35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b8015610f48576001600160a01b03821660009081526008602052604090205460ff1615610e625760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c7265616479206578636c756465642e000000006044820152606401610cdf565b6001600160a01b03821660009081526001602052604090205415610ebc576001600160a01b038216600090815260016020526040902054610ea290611786565b6001600160a01b0383166000908152600260205260409020555b6001600160a01b038083166000818152600860205260409020805460ff1916600117905560115490911614610f4457600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384161790555b5050565b80610f44576001600160a01b03821660009081526008602052604090205460ff16610fb55760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c726561647920696e636c756465642e000000006044820152606401610cdf565b6011546001600160a01b038381169116141561103057610fd361308d565b6001600160a01b038316600090815260026020526040902054610ff69190614d3f565b6001600160a01b038316600090815260016020908152604080832093909355600281528282208290556008905220805460ff191690555050565b600954600114156110e05761104361308d565b6001600160a01b0383166000908152600260205260409020546110669190614d3f565b6001600160a01b038316600090815260016020908152604080832093909355600281528282208290556008905220805460ff1916905560098054806110ad576110ad614d5e565b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff191690550190555050565b60005b60095481101561126357826001600160a01b03166009828154811061110a5761110a614d8d565b6000918252602090912001546001600160a01b03161415611251576009805461113590600190614dbc565b8154811061114557611145614d8d565b600091825260209091200154600980546001600160a01b03909216918390811061117157611171614d8d565b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039485161790559185168152600290915260408120556111bd61308d565b6001600160a01b0384166000908152600260205260409020546111e09190614d3f565b6001600160a01b0384166000908152600160209081526040808320939093556008905220805460ff19169055600980548061121d5761121d614d5e565b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff19169055019055505050565b8061125b81614dd3565b9150506110e3565b505050565b60006112766009600a614cf5565b6112889067016345785d8a0000614d3f565b61129157600080fd5b61129d6009600a614cf5565b610da09067016345785d8a0000614d3f565b6001600160a01b038316600090815260056020908152604080832033845290915281205460001914611314576001600160a01b03841660009081526005602090815260408083203384529091528120805484929061130e908490614dbc565b90915550505b61131f84848461336b565b949350505050565b6000546001600160a01b031633146113755760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b6103e86113846009600a614cf5565b6113969067016345785d8a0000614d3f565b6113a09190614d04565b81836113ae6009600a614cf5565b6113c09067016345785d8a0000614d3f565b6113ca9190614d3f565b6113d49190614d04565b10156114485760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610cdf565b80826114566009600a614cf5565b6114689067016345785d8a0000614d3f565b6114729190614d3f565b61147c9190614d04565b601b555050565b80518251146114d45760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610cdf565b60005b82518160ff16101561126357818160ff16815181106114f8576114f8614d8d565b602002602001015161150933611f17565b101561151457600080fd5b61156f33848360ff168151811061152d5761152d614d8d565b60200260200101516009600a6115439190614cf5565b858560ff168151811061155857611558614d8d565b602002602001015161156a9190614d3f565b61336b565b508061157a81614dee565b9150506114d7565b6000546001600160a01b031633146115d05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b60008183856115df888a614e0e565b6115e99190614e0e565b6115f39190614e0e565b6115fd9190614e0e565b90506107d08161ffff16111561161257600080fd5b600c805461ffff8881167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909216919091176201000088831602177fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff16640100000000878316027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff1617660100000000000086831602177fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff1668010000000000000000918516919091021790556116e98587614e0e565b6116f39082614e34565b600c805461ffff929092166a0100000000000000000000027fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff909216919091179055505050505050565b60006117496000611f17565b61175461dead611f17565b61175e9190614e57565b61176a6009600a614cf5565b61177c9067016345785d8a0000614d3f565b610da09190614dbc565b6000600b548211156118005760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e73000000000000000000000000000000000000000000006064820152608401610cdf565b600061180a61308d565b90506118168184614d04565b9392505050565b6000546001600160a01b0316331461186b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b601c546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b906024015b600060405180830381600087803b1580156118d357600080fd5b505af11580156118e7573d6000803e3d6000fd5b5050505050565b6000546001600160a01b0316331461193c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b838561194a6009600a614cf5565b61195c9067016345785d8a0000614d3f565b6119669190614d3f565b6119709190614d04565b60185581836119816009600a614cf5565b6119939067016345785d8a0000614d3f565b61199d9190614d3f565b6119a79190614d04565b60195560165550505050565b6000546001600160a01b03163314611a015760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a7a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b6103e8611a896009600a614cf5565b611a9b9067016345785d8a0000614d3f565b611aa59190614d04565b8183611ab36009600a614cf5565b611ac59067016345785d8a0000614d3f565b611acf9190614d3f565b611ad99190614d04565b1015611b4d5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610cdf565b8082611b5b6009600a614cf5565b611b6d9067016345785d8a0000614d3f565b611b779190614d3f565b611b819190614d04565b601a555050565b6000546001600160a01b03163314611bd65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b6001600160a01b038116611c525760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610cdf565b6001600160a01b03811661dead1415611cd35760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610cdf565b60008054611cec916001600160a01b0390911690611d87565b611cf7816001611d87565b60008054611d0d906001600160a01b0316611f17565b1115611d2f57600054611d2d906001600160a01b03168261156a82611f17565b505b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b03163314611dd55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611e4e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b601c54610100900460ff1615611e6357600080fd5b6001600160a01b038116301415611ebc5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610cdf565b601c80546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000611f0a6009600a614cf5565b601a54610da09190614d04565b6001600160a01b03811660009081526008602052604081205460ff1615611f5457506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610d7f90611786565b6000546001600160a01b03163314611fc45760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b60008054611fdd916001600160a01b0390911690611d87565b6000805473ffffffffffffffffffffffffffffffffffffffff1916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146120745760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b601280546001600160a01b0394851673ffffffffffffffffffffffffffffffffffffffff1991821617909155601380549385169382169390931790925560148054919093169116179055565b6000546001600160a01b0316331461210e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b8061219a576001600160a01b03828116600081815260036020526040808220805460ff19169055601c5490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610d5257600080fd5b60045415612201576203f480600454426121b49190614dbc565b116122015760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610cdf565b6001600160a01b0382811660008181526003602052604090819020805460ff19166001908117909155426004908155601c5492517f80c581d1000000000000000000000000000000000000000000000000000000008152908101939093526024830152620100009004909116906380c581d190604401610d38565b600080546001600160a01b031633146122cb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b6010546122e59030906001600160a01b0316600019612f80565b50600190565b6000546001600160a01b031633146123395760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b601c5460ff161561238c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610cdf565b601c54610100900460ff166123e35760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610cdf565b601c546201000090046001600160a01b031661242957601c80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601c546011546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156124b457600080fd5b505af19250505080156124c5575060015b50601c805460ff19166001179055565b60006124e233848461336b565b5060019392505050565b6000546001600160a01b0316331461253a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b600f805461ffff838116640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff86831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909416928816929092179290921716179055806125b28385614e0e565b6125bc9190614e0e565b600f805461ffff929092166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff909216919091179055505050565b6000546001600160a01b0316331461264d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b601c546040517f6a34b758000000000000000000000000000000000000000000000000000000008152841515600482015283151560248201528215156044820152620100009091046001600160a01b031690636a34b75890606401600060405180830381600087803b1580156126c257600080fd5b505af11580156126d6573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b0316331461272d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b601c546040517fc6a276c20000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152620100009092049091169063c6a276c2906024016118b9565b6000546001600160a01b031633146127cd5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b601580548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579061281690831515815260200190565b60405180910390a150565b81518351148015612833575080518251145b61287f5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610cdf565b60005b83518160ff1610156129b257818160ff16815181106128a3576128a3614d8d565b6020026020010151838260ff16815181106128c0576128c0614d8d565b60200260200101516009600a6128d69190614cf5565b6128e89067016345785d8a0000614d3f565b6128f29190614d3f565b6128fc9190614d04565b61290533611f17565b101561291057600080fd5b61299f33858360ff168151811061292957612929614d8d565b6020026020010151848460ff168151811061294657612946614d8d565b6020026020010151868560ff168151811061296357612963614d8d565b60200260200101516009600a6129799190614cf5565b61298b9067016345785d8a0000614d3f565b6129959190614d3f565b61156a9190614d04565b50806129aa81614dee565b915050612882565b50505050565b6000546001600160a01b03163314612a065760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6f9190614e6f565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612abc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae09190614e6f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612b43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b679190614e6f565b90506001600160a01b038116612d0557816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bd99190614e6f565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c4a9190614e6f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd39190614e6f565b6011805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055612d2e565b6011805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b6010805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416908117909155611263903090600019612f80565b6000546001600160a01b03163314612db55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b601c54610100900460ff1615612e0d5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610cdf565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015612e47573d6000803e3d6000fd5b50565b6000546001600160a01b03163314612e985760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b601c546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610d38565b601c546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015612f5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7f9190614e8c565b6001600160a01b038316612fd65760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610cdf565b6001600160a01b03821661302c5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610cdf565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600b54600090816130a06009600a614cf5565b6130b29067016345785d8a0000614d3f565b6011546001600160a01b031660009081526008602052604090205490915060ff16156131a0576011546001600160a01b031660009081526001602052604090205482108061311957506011546001600160a01b031660009081526002602052604090205481105b156131505761312a6009600a614cf5565b61313c9067016345785d8a0000614d3f565b600b546131499190614d04565b9250505090565b6011546001600160a01b03166000908152600160205260409020546131759083614dbc565b6011546001600160a01b031660009081526002602052604090205490925061319d9082614dbc565b90505b600954156133235760005b60095460ff8216101561332157826001600060098460ff16815481106131d3576131d3614d8d565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806132415750816002600060098460ff168154811061321a5761321a614d8d565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15613279576132526009600a614cf5565b6132649067016345785d8a0000614d3f565b600b546132719190614d04565b935050505090565b6001600060098360ff168154811061329357613293614d8d565b60009182526020808320909101546001600160a01b031683528201929092526040019020546132c29084614dbc565b92506002600060098360ff16815481106132de576132de614d8d565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461330d9083614dbc565b91508061331981614dee565b9150506131ab565b505b61332f6009600a614cf5565b6133419067016345785d8a0000614d3f565b600b5461334e9190614d04565b8210156133615761312a6009600a614cf5565b6131498183614d04565b60006001600160a01b0384166133e95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610cdf565b6001600160a01b0383166134655760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610cdf565b600082116134db5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610cdf565b6134e58484613811565b1561372657601c5460ff1661353c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610cdf565b6001600160a01b03841660009081526003602052604090205460ff168061357b57506001600160a01b03831660009081526003602052604090205460ff165b1561363f576001600160a01b03841660009081526007602052604090205460ff161580156135c257506001600160a01b03831660009081526007602052604090205460ff16155b1561363f57601a5482111561363f5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610cdf565b6010546001600160a01b0384811691161480159061367657506001600160a01b03831660009081526003602052604090205460ff16155b15613726576001600160a01b03831660009081526007602052604090205460ff1661372657601b54826136a885611f17565b6136b29190614e57565b11156137265760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610cdf565b6001600160a01b03841660009081526006602052604090205460019060ff168061376857506001600160a01b03841660009081526006602052604090205460ff165b15613771575060005b6001600160a01b03841660009081526003602052604090205460ff16156137fc5760155460ff161580156137ac5750601554610100900460ff165b156137fc57426016546017546137c29190614e57565b10156137fc5760006137d330611f17565b905060185481106137fa5760195481106137ec57506019545b6137f5816138e5565b426017555b505b61380885858584613c6e565b95945050505050565b600080546001600160a01b0384811691161480159061383e57506000546001600160a01b03838116911614155b801561385557506000546001600160a01b03163214155b801561387a57506001600160a01b0382166000908152600a602052604090205460ff16155b801561389f57506001600160a01b0383166000908152600a602052604090205460ff16155b80156138b657506001600160a01b03821661dead14155b80156138ca57506001600160a01b03821615155b801561181657506001600160a01b0383163014159392505050565b6015805460ff1916600117905560408051608081018252600f5461ffff808216835262010000820481166020840152640100000000820481169383019390935266010000000000009004909116606082018190526139435750613c61565b3060009081526005602090815260408083206010546001600160a01b031684529091529020546000191461399c573060009081526005602090815260408083206010546001600160a01b03168452909152902060001990555b60408051600280825260608201835260009260208301908036833701905050905030816000815181106139d1576139d1614d8d565b6001600160a01b03928316602091820292909201810191909152601054604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015613a43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a679190614e6f565b81600181518110613a7a57613a7a614d8d565b6001600160a01b0392831660209182029290920101526010546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790613ad9908690600090869030904290600401614ea9565b600060405180830381600087803b158015613af357600080fd5b505af1158015613b07573d6000803e3d6000fd5b5050505060004790506000836060015161ffff16846020015161ffff1683613b2f9190614d3f565b613b399190614d04565b90506000846060015161ffff16856040015161ffff1684613b5a9190614d3f565b613b649190614d04565b90506000613b728383614e57565b613b7c9085614dbc565b602087015190915061ffff1615613bc9576013546040516001600160a01b039091169084156108fc029085906000818181858888f19350505050158015613bc7573d6000803e3d6000fd5b505b604086015161ffff1615613c13576014546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015613c11573d6000803e3d6000fd5b505b855161ffff1615613c5a576012546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015613c58573d6000803e3d6000fd5b505b5050505050505b506015805460ff19169055565b601c54600090610100900460ff16613d1a57613c8a8585613ef0565b601c54610100900460ff16158015613ca75750613ca78585613811565b15613d1a5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610cdf565b6000613d288686868661404e565b60a08101516001600160a01b038816600090815260016020526040902054919250613d5291614dbc565b6001600160a01b0380881660009081526001602052604080822093909355608084015191881681529190912054613d899190614e57565b6001600160a01b0380871660009081526001602090815260408083209490945591891681526008909152205460ff1615613dfb576001600160a01b038616600090815260026020526040902054613de1908590614dbc565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526008602052604090205460ff1615613e5b5780516001600160a01b038616600090815260026020526040902054613e419190614e57565b6001600160a01b0386166000908152600260205260409020555b60008160c001511180613e72575060008160200151115b15613e93578060c00151600b6000828254613e8d9190614dbc565b90915550505b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360000151604051613edc91815260200190565b60405180910390a350600195945050505050565b601c54610100900460ff1615613f6e5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610cdf565b613f788282613811565b158015613f9257506011546001600160a01b038281169116145b15610f44576001600160a01b038083166000908152600a60205260409020805460ff19166001179055601c805461ff00191661010017908190556201000090041661400757601c80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6015805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b61409660405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6140de60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6140e661308d565b60e082018190526140f79085614d3f565b60a08201526141068686613811565b156141b957601c546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152878116602483015260448201879052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156141a2575060408051601f3d908101601f1916820190925261419f91810190614e8c565b60015b6141ab57600080fd5b9050806141b757600080fd5b505b8215614326576001600160a01b038516600090815260036020526040812054819081906127109060ff161561421457600d5461ffff80821695506a010000000000000000000082048116945062010000909104169150614289565b6001600160a01b038a1660009081526003602052604090205460ff161561426157600c5461ffff80821695506a010000000000000000000082048116945062010000909104169150614289565b600e5461ffff80821695506a0100000000000000000000820481169450620100009091041691505b80614294858a614d3f565b61429e9190614d04565b6020860152806142ae848a614d3f565b6142b89190614d04565b6040860152806142c8838a614d3f565b6142d29190614d04565b60608601819052604086015160208701516142ed9190614e57565b6142f79190614e57565b6143019089614dbc565b855260e085015160208601516143179190614d3f565b60c08601525061434692505050565b600060208201819052604082018190526060820181905284825260c08201525b60408101511561441d578060e0015181604001516143649190614d3f565b3060009081526001602052604081208054909190614383908490614e57565b90915550503060009081526008602052604090205460ff16156143cb5760408082015130600090815260026020529182208054919290916143c5908490614e57565b90915550505b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040015160405161441491815260200190565b60405180910390a35b606081015115614550578060e00151816060015161443b9190614d3f565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d8054909190614479908490614e57565b909155505061dead60005260086020527f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd093342995460ff16156144fc57606081015161dead600090815260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc80549091906144f6908490614e57565b90915550505b61dead6001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836060015160405161454791815260200190565b60405180910390a35b8060e0015181606001516145649190614d3f565b8160e0015182604001516145789190614d3f565b8260c001516145879190614e57565b6145919190614e57565b8160a001516145a09190614dbc565b608082015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614606576146066145ae565b604052919050565b600067ffffffffffffffff821115614628576146286145ae565b5060051b60200190565b6001600160a01b0381168114612e4757600080fd5b600082601f83011261465857600080fd5b8135602061466d6146688361460e565b6145dd565b82815260059290921b8401810191818101908684111561468c57600080fd5b8286015b848110156146b05780356146a381614632565b8352918301918301614690565b509695505050505050565b8015158114612e4757600080fd5b600080604083850312156146dc57600080fd5b823567ffffffffffffffff8111156146f357600080fd5b6146ff85828601614647565b9250506020830135614710816146bb565b809150509250929050565b600060208083528351808285015260005b818110156147485785810183015185820160400152820161472c565b8181111561475a576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561478357600080fd5b823561478e81614632565b946020939093013593505050565b600080604083850312156147af57600080fd5b82356147ba81614632565b91506020830135614710816146bb565b6000806000606084860312156147df57600080fd5b83356147ea81614632565b925060208401356147fa81614632565b929592945050506040919091013590565b6000806040838503121561481e57600080fd5b50508035926020909101359150565b600082601f83011261483e57600080fd5b8135602061484e6146688361460e565b82815260059290921b8401810191818101908684111561486d57600080fd5b8286015b848110156146b05780358352918301918301614871565b6000806040838503121561489b57600080fd5b823567ffffffffffffffff808211156148b357600080fd5b6148bf86838701614647565b935060208501359150808211156148d557600080fd5b506148e28582860161482d565b9150509250929050565b803561ffff811681146148fe57600080fd5b919050565b600080600080600060a0868803121561491b57600080fd5b614924866148ec565b9450614932602087016148ec565b9350614940604087016148ec565b925061494e606087016148ec565b915061495c608087016148ec565b90509295509295909350565b60006020828403121561497a57600080fd5b5035919050565b60006020828403121561499357600080fd5b813561181681614632565b600080600080600060a086880312156149b657600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806000606084860312156149ee57600080fd5b83356149f981614632565b92506020840135614a0981614632565b91506040840135614a1981614632565b809150509250925092565b600080600060608486031215614a3957600080fd5b614a42846148ec565b9250614a50602085016148ec565b9150614a5e604085016148ec565b90509250925092565b600080600060608486031215614a7c57600080fd5b8335614a87816146bb565b92506020840135614a97816146bb565b91506040840135614a19816146bb565b600060208284031215614ab957600080fd5b8135611816816146bb565b60008060408385031215614ad757600080fd5b8235614ae281614632565b9150602083013561471081614632565b600080600060608486031215614b0757600080fd5b833567ffffffffffffffff80821115614b1f57600080fd5b614b2b87838801614647565b94506020860135915080821115614b4157600080fd5b614b4d8783880161482d565b93506040860135915080821115614b6357600080fd5b50614b708682870161482d565b9150509250925092565b600081518084526020808501945080840160005b83811015614bb35781516001600160a01b031687529582019590820190600101614b8e565b509495945050505050565b604081526000614bd16040830185614b7a565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115614c4c578160001904821115614c3257614c32614be2565b80851615614c3f57918102915b93841c9390800290614c16565b509250929050565b600082614c6357506001610d7f565b81614c7057506000610d7f565b8160018114614c865760028114614c9057614cac565b6001915050610d7f565b60ff841115614ca157614ca1614be2565b50506001821b610d7f565b5060208310610133831016604e8410600b8410161715614ccf575081810a610d7f565b614cd98383614c11565b8060001904821115614ced57614ced614be2565b029392505050565b600061181660ff841683614c54565b600082614d3a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000816000190483118215151615614d5957614d59614be2565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082821015614dce57614dce614be2565b500390565b6000600019821415614de757614de7614be2565b5060010190565b600060ff821660ff811415614e0557614e05614be2565b60010192915050565b600061ffff808316818516808303821115614e2b57614e2b614be2565b01949350505050565b600061ffff83811690831681811015614e4f57614e4f614be2565b039392505050565b60008219821115614e6a57614e6a614be2565b500190565b600060208284031215614e8157600080fd5b815161181681614632565b600060208284031215614e9e57600080fd5b8151611816816146bb565b85815284602082015260a060408201526000614ec860a0830186614b7a565b6001600160a01b039490941660608301525060800152939250505056fea264697066735822122070a6cf15fcc647bb1f44739079f8cb68381afe0dd80d3029567359e763c0051764736f6c634300080b0033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
Deployed Bytecode
0x6080604052600436106103b15760003560e01c806370a08231116101e7578063b3d514fb1161010d578063e4fcfd18116100a0578063eec2744e1161006f578063eec2744e14610bdf578063f94aa1b414610bff578063fdb78c0e14610c56578063fe575a8714610c7557600080fd5b8063e4fcfd1814610b74578063e8a0e3f914610b8a578063eafb5a3c14610baa578063ee5d9c2d14610bca57600080fd5b8063c6a276c2116100dc578063c6a276c214610a83578063cab5ebea14610aa3578063cf84770614610ac3578063dd62ed3e14610b2e57600080fd5b8063b3d514fb146105b1578063b6f8f8dc146109a9578063c2fa418f146109c9578063c6831cd814610a2657600080fd5b8063893d20e811610185578063a9059cbb11610154578063a9059cbb14610969578063aa22b17214610989578063ae19a8151461057c578063b1b08f71146105b157600080fd5b8063893d20e8146109215780638a63bd9b1461093f5780638a8c523c1461095457806395d89b411461043657600080fd5b80637b45d431116101c15780637b45d4311461082e57806380c581d1146108c857806385146ea81461057c57806388f82020146108e857600080fd5b806370a08231146107d9578063715018a6146107f957806375cb1bd11461080e57600080fd5b80632d838119116102d75780634ada218b1161026a578063590ffdce11610239578063590ffdce1461074b5780635c24b0741461076b5780635cce86cd1461078b5780636ebd0078146107c457600080fd5b80634ada218b146106b95780634fb2e45d146106d35780634fbee193146106f357806350a8e0161461072c57600080fd5b806334cd8260116102a657806334cd82601461063957806336fddb04146106595780633f3cf56c14610679578063452ed4f11461069957600080fd5b80632d838119146105c75780632e8fa821146105e7578063313ce567146105fd57806333251a0b1461061957600080fd5b806313e461921161034f5780632610eaca1161031e5780632610eaca1461055c57806327ab9bf51461057c5780632b112e491461059c5780632b28fc7a146105b157600080fd5b806313e46192146104e757806318160ddd1461050757806323b872dd1461051c578063260039571461053c57600080fd5b806306fdde031161038b57806306fdde03146104365780630758d92414610482578063095ea7b3146104a25780630fa604e4146104d257600080fd5b806303fd2a45146103bd5780630445b667146103f057806305bbedb61461041457600080fd5b366103b857005b600080fd5b3480156103c957600080fd5b506103d361dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103fc57600080fd5b5061040660185481565b6040519081526020016103e7565b34801561042057600080fd5b5061043461042f3660046146c9565b610c95565b005b34801561044257600080fd5b50604080518082018252600881527f5361697461706573000000000000000000000000000000000000000000000000602082015290516103e7919061471b565b34801561048e57600080fd5b506010546103d3906001600160a01b031681565b3480156104ae57600080fd5b506104c26104bd366004614770565b610d6e565b60405190151581526020016103e7565b3480156104de57600080fd5b50610406610d85565b3480156104f357600080fd5b5061043461050236600461479c565b610da5565b34801561051357600080fd5b50610406611268565b34801561052857600080fd5b506104c26105373660046147ca565b6112af565b34801561054857600080fd5b5061043461055736600461480b565b611327565b34801561056857600080fd5b50610434610577366004614888565b611483565b34801561058857600080fd5b50610434610597366004614903565b611582565b3480156105a857600080fd5b5061040661173d565b3480156105bd57600080fd5b506104066107d081565b3480156105d357600080fd5b506104066105e2366004614968565b611786565b3480156105f357600080fd5b5061040660195481565b34801561060957600080fd5b50604051600981526020016103e7565b34801561062557600080fd5b50610434610634366004614981565b61181d565b34801561064557600080fd5b5061043461065436600461499e565b6118ee565b34801561066557600080fd5b5061043461067436600461479c565b6119b3565b34801561068557600080fd5b5061043461069436600461480b565b611a2c565b3480156106a557600080fd5b506011546103d3906001600160a01b031681565b3480156106c557600080fd5b50601c546104c29060ff1681565b3480156106df57600080fd5b506104346106ee366004614981565b611b88565b3480156106ff57600080fd5b506104c261070e366004614981565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561073857600080fd5b50601c546104c290610100900460ff1681565b34801561075757600080fd5b5061043461076636600461479c565b611d87565b34801561077757600080fd5b50610434610786366004614981565b611e00565b34801561079757600080fd5b506104c26107a6366004614981565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156107d057600080fd5b50610406611efc565b3480156107e557600080fd5b506104066107f4366004614981565b611f17565b34801561080557600080fd5b50610434611f76565b34801561081a57600080fd5b506104346108293660046149d9565b612026565b34801561083a57600080fd5b50600c5461088b9061ffff808216916201000081048216916401000000008204811691660100000000000081048216916801000000000000000082048116916a010000000000000000000090041686565b6040805161ffff978816815295871660208701529386169385019390935290841660608401528316608083015290911660a082015260c0016103e7565b3480156108d457600080fd5b506104346108e336600461479c565b6120c0565b3480156108f457600080fd5b506104c2610903366004614981565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561092d57600080fd5b506000546001600160a01b03166103d3565b34801561094b57600080fd5b506104c261227c565b34801561096057600080fd5b506104346122eb565b34801561097557600080fd5b506104c2610984366004614770565b6124d5565b34801561099557600080fd5b506104346109a4366004614a24565b6124ec565b3480156109b557600080fd5b506104346109c4366004614a67565b6125ff565b3480156109d557600080fd5b50600e5461088b9061ffff808216916201000081048216916401000000008204811691660100000000000081048216916801000000000000000082048116916a010000000000000000000090041686565b348015610a3257600080fd5b50600d5461088b9061ffff808216916201000081048216916401000000008204811691660100000000000081048216916801000000000000000082048116916a010000000000000000000090041686565b348015610a8f57600080fd5b50610434610a9e366004614981565b6126df565b348015610aaf57600080fd5b50610434610abe366004614aa7565b61277f565b348015610acf57600080fd5b50600f54610b009061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016103e7565b348015610b3a57600080fd5b50610406610b49366004614ac4565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610b8057600080fd5b5061040660165481565b348015610b9657600080fd5b50610434610ba5366004614af2565b612821565b348015610bb657600080fd5b50610434610bc5366004614981565b6129b8565b348015610bd657600080fd5b50610434612d67565b348015610beb57600080fd5b50610434610bfa36600461479c565b612e4a565b348015610c0b57600080fd5b50601254601354601454610c2c926001600160a01b03908116928116911683565b604080516001600160a01b03948516815292841660208401529216918101919091526060016103e7565b348015610c6257600080fd5b506015546104c290610100900460ff1681565b348015610c8157600080fd5b506104c2610c90366004614981565b612ef2565b6000546001600160a01b03163314610ce85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b601c546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610d389085908590600401614bbe565b600060405180830381600087803b158015610d5257600080fd5b505af1158015610d66573d6000803e3d6000fd5b505050505050565b6000610d7b338484612f80565b5060015b92915050565b6000610d936009600a614cf5565b601b54610da09190614d04565b905090565b6000546001600160a01b03163314610df35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b8015610f48576001600160a01b03821660009081526008602052604090205460ff1615610e625760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c7265616479206578636c756465642e000000006044820152606401610cdf565b6001600160a01b03821660009081526001602052604090205415610ebc576001600160a01b038216600090815260016020526040902054610ea290611786565b6001600160a01b0383166000908152600260205260409020555b6001600160a01b038083166000818152600860205260409020805460ff1916600117905560115490911614610f4457600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384161790555b5050565b80610f44576001600160a01b03821660009081526008602052604090205460ff16610fb55760405162461bcd60e51b815260206004820152601c60248201527f4163636f756e7420697320616c726561647920696e636c756465642e000000006044820152606401610cdf565b6011546001600160a01b038381169116141561103057610fd361308d565b6001600160a01b038316600090815260026020526040902054610ff69190614d3f565b6001600160a01b038316600090815260016020908152604080832093909355600281528282208290556008905220805460ff191690555050565b600954600114156110e05761104361308d565b6001600160a01b0383166000908152600260205260409020546110669190614d3f565b6001600160a01b038316600090815260016020908152604080832093909355600281528282208290556008905220805460ff1916905560098054806110ad576110ad614d5e565b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff191690550190555050565b60005b60095481101561126357826001600160a01b03166009828154811061110a5761110a614d8d565b6000918252602090912001546001600160a01b03161415611251576009805461113590600190614dbc565b8154811061114557611145614d8d565b600091825260209091200154600980546001600160a01b03909216918390811061117157611171614d8d565b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039485161790559185168152600290915260408120556111bd61308d565b6001600160a01b0384166000908152600260205260409020546111e09190614d3f565b6001600160a01b0384166000908152600160209081526040808320939093556008905220805460ff19169055600980548061121d5761121d614d5e565b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff19169055019055505050565b8061125b81614dd3565b9150506110e3565b505050565b60006112766009600a614cf5565b6112889067016345785d8a0000614d3f565b61129157600080fd5b61129d6009600a614cf5565b610da09067016345785d8a0000614d3f565b6001600160a01b038316600090815260056020908152604080832033845290915281205460001914611314576001600160a01b03841660009081526005602090815260408083203384529091528120805484929061130e908490614dbc565b90915550505b61131f84848461336b565b949350505050565b6000546001600160a01b031633146113755760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b6103e86113846009600a614cf5565b6113969067016345785d8a0000614d3f565b6113a09190614d04565b81836113ae6009600a614cf5565b6113c09067016345785d8a0000614d3f565b6113ca9190614d3f565b6113d49190614d04565b10156114485760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610cdf565b80826114566009600a614cf5565b6114689067016345785d8a0000614d3f565b6114729190614d3f565b61147c9190614d04565b601b555050565b80518251146114d45760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610cdf565b60005b82518160ff16101561126357818160ff16815181106114f8576114f8614d8d565b602002602001015161150933611f17565b101561151457600080fd5b61156f33848360ff168151811061152d5761152d614d8d565b60200260200101516009600a6115439190614cf5565b858560ff168151811061155857611558614d8d565b602002602001015161156a9190614d3f565b61336b565b508061157a81614dee565b9150506114d7565b6000546001600160a01b031633146115d05760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b60008183856115df888a614e0e565b6115e99190614e0e565b6115f39190614e0e565b6115fd9190614e0e565b90506107d08161ffff16111561161257600080fd5b600c805461ffff8881167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909216919091176201000088831602177fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff16640100000000878316027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff1617660100000000000086831602177fffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffff1668010000000000000000918516919091021790556116e98587614e0e565b6116f39082614e34565b600c805461ffff929092166a0100000000000000000000027fffffffffffffffffffffffffffffffffffffffff0000ffffffffffffffffffff909216919091179055505050505050565b60006117496000611f17565b61175461dead611f17565b61175e9190614e57565b61176a6009600a614cf5565b61177c9067016345785d8a0000614d3f565b610da09190614dbc565b6000600b548211156118005760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e73000000000000000000000000000000000000000000006064820152608401610cdf565b600061180a61308d565b90506118168184614d04565b9392505050565b6000546001600160a01b0316331461186b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b601c546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b906024015b600060405180830381600087803b1580156118d357600080fd5b505af11580156118e7573d6000803e3d6000fd5b5050505050565b6000546001600160a01b0316331461193c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b838561194a6009600a614cf5565b61195c9067016345785d8a0000614d3f565b6119669190614d3f565b6119709190614d04565b60185581836119816009600a614cf5565b6119939067016345785d8a0000614d3f565b61199d9190614d3f565b6119a79190614d04565b60195560165550505050565b6000546001600160a01b03163314611a015760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a7a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b6103e8611a896009600a614cf5565b611a9b9067016345785d8a0000614d3f565b611aa59190614d04565b8183611ab36009600a614cf5565b611ac59067016345785d8a0000614d3f565b611acf9190614d3f565b611ad99190614d04565b1015611b4d5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610cdf565b8082611b5b6009600a614cf5565b611b6d9067016345785d8a0000614d3f565b611b779190614d3f565b611b819190614d04565b601a555050565b6000546001600160a01b03163314611bd65760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b6001600160a01b038116611c525760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610cdf565b6001600160a01b03811661dead1415611cd35760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610cdf565b60008054611cec916001600160a01b0390911690611d87565b611cf7816001611d87565b60008054611d0d906001600160a01b0316611f17565b1115611d2f57600054611d2d906001600160a01b03168261156a82611f17565b505b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b03163314611dd55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611e4e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b601c54610100900460ff1615611e6357600080fd5b6001600160a01b038116301415611ebc5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610cdf565b601c80546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b6000611f0a6009600a614cf5565b601a54610da09190614d04565b6001600160a01b03811660009081526008602052604081205460ff1615611f5457506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610d7f90611786565b6000546001600160a01b03163314611fc45760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b60008054611fdd916001600160a01b0390911690611d87565b6000805473ffffffffffffffffffffffffffffffffffffffff1916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146120745760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b601280546001600160a01b0394851673ffffffffffffffffffffffffffffffffffffffff1991821617909155601380549385169382169390931790925560148054919093169116179055565b6000546001600160a01b0316331461210e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b8061219a576001600160a01b03828116600081815260036020526040808220805460ff19169055601c5490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610d5257600080fd5b60045415612201576203f480600454426121b49190614dbc565b116122015760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610cdf565b6001600160a01b0382811660008181526003602052604090819020805460ff19166001908117909155426004908155601c5492517f80c581d1000000000000000000000000000000000000000000000000000000008152908101939093526024830152620100009004909116906380c581d190604401610d38565b600080546001600160a01b031633146122cb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b6010546122e59030906001600160a01b0316600019612f80565b50600190565b6000546001600160a01b031633146123395760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b601c5460ff161561238c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610cdf565b601c54610100900460ff166123e35760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610cdf565b601c546201000090046001600160a01b031661242957601c80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601c546011546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156124b457600080fd5b505af19250505080156124c5575060015b50601c805460ff19166001179055565b60006124e233848461336b565b5060019392505050565b6000546001600160a01b0316331461253a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b600f805461ffff838116640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff86831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909416928816929092179290921716179055806125b28385614e0e565b6125bc9190614e0e565b600f805461ffff929092166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff909216919091179055505050565b6000546001600160a01b0316331461264d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b601c546040517f6a34b758000000000000000000000000000000000000000000000000000000008152841515600482015283151560248201528215156044820152620100009091046001600160a01b031690636a34b75890606401600060405180830381600087803b1580156126c257600080fd5b505af11580156126d6573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b0316331461272d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b601c546040517fc6a276c20000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152620100009092049091169063c6a276c2906024016118b9565b6000546001600160a01b031633146127cd5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b601580548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579061281690831515815260200190565b60405180910390a150565b81518351148015612833575080518251145b61287f5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610cdf565b60005b83518160ff1610156129b257818160ff16815181106128a3576128a3614d8d565b6020026020010151838260ff16815181106128c0576128c0614d8d565b60200260200101516009600a6128d69190614cf5565b6128e89067016345785d8a0000614d3f565b6128f29190614d3f565b6128fc9190614d04565b61290533611f17565b101561291057600080fd5b61299f33858360ff168151811061292957612929614d8d565b6020026020010151848460ff168151811061294657612946614d8d565b6020026020010151868560ff168151811061296357612963614d8d565b60200260200101516009600a6129799190614cf5565b61298b9067016345785d8a0000614d3f565b6129959190614d3f565b61156a9190614d04565b50806129aa81614dee565b915050612882565b50505050565b6000546001600160a01b03163314612a065760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6f9190614e6f565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612abc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae09190614e6f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612b43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b679190614e6f565b90506001600160a01b038116612d0557816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bd99190614e6f565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c4a9190614e6f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd39190614e6f565b6011805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055612d2e565b6011805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b6010805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038416908117909155611263903090600019612f80565b6000546001600160a01b03163314612db55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b601c54610100900460ff1615612e0d5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610cdf565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015612e47573d6000803e3d6000fd5b50565b6000546001600160a01b03163314612e985760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610cdf565b601c546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610d38565b601c546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015612f5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7f9190614e8c565b6001600160a01b038316612fd65760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610cdf565b6001600160a01b03821661302c5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610cdf565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600b54600090816130a06009600a614cf5565b6130b29067016345785d8a0000614d3f565b6011546001600160a01b031660009081526008602052604090205490915060ff16156131a0576011546001600160a01b031660009081526001602052604090205482108061311957506011546001600160a01b031660009081526002602052604090205481105b156131505761312a6009600a614cf5565b61313c9067016345785d8a0000614d3f565b600b546131499190614d04565b9250505090565b6011546001600160a01b03166000908152600160205260409020546131759083614dbc565b6011546001600160a01b031660009081526002602052604090205490925061319d9082614dbc565b90505b600954156133235760005b60095460ff8216101561332157826001600060098460ff16815481106131d3576131d3614d8d565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806132415750816002600060098460ff168154811061321a5761321a614d8d565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15613279576132526009600a614cf5565b6132649067016345785d8a0000614d3f565b600b546132719190614d04565b935050505090565b6001600060098360ff168154811061329357613293614d8d565b60009182526020808320909101546001600160a01b031683528201929092526040019020546132c29084614dbc565b92506002600060098360ff16815481106132de576132de614d8d565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461330d9083614dbc565b91508061331981614dee565b9150506131ab565b505b61332f6009600a614cf5565b6133419067016345785d8a0000614d3f565b600b5461334e9190614d04565b8210156133615761312a6009600a614cf5565b6131498183614d04565b60006001600160a01b0384166133e95760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610cdf565b6001600160a01b0383166134655760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610cdf565b600082116134db5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610cdf565b6134e58484613811565b1561372657601c5460ff1661353c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610cdf565b6001600160a01b03841660009081526003602052604090205460ff168061357b57506001600160a01b03831660009081526003602052604090205460ff165b1561363f576001600160a01b03841660009081526007602052604090205460ff161580156135c257506001600160a01b03831660009081526007602052604090205460ff16155b1561363f57601a5482111561363f5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610cdf565b6010546001600160a01b0384811691161480159061367657506001600160a01b03831660009081526003602052604090205460ff16155b15613726576001600160a01b03831660009081526007602052604090205460ff1661372657601b54826136a885611f17565b6136b29190614e57565b11156137265760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610cdf565b6001600160a01b03841660009081526006602052604090205460019060ff168061376857506001600160a01b03841660009081526006602052604090205460ff165b15613771575060005b6001600160a01b03841660009081526003602052604090205460ff16156137fc5760155460ff161580156137ac5750601554610100900460ff165b156137fc57426016546017546137c29190614e57565b10156137fc5760006137d330611f17565b905060185481106137fa5760195481106137ec57506019545b6137f5816138e5565b426017555b505b61380885858584613c6e565b95945050505050565b600080546001600160a01b0384811691161480159061383e57506000546001600160a01b03838116911614155b801561385557506000546001600160a01b03163214155b801561387a57506001600160a01b0382166000908152600a602052604090205460ff16155b801561389f57506001600160a01b0383166000908152600a602052604090205460ff16155b80156138b657506001600160a01b03821661dead14155b80156138ca57506001600160a01b03821615155b801561181657506001600160a01b0383163014159392505050565b6015805460ff1916600117905560408051608081018252600f5461ffff808216835262010000820481166020840152640100000000820481169383019390935266010000000000009004909116606082018190526139435750613c61565b3060009081526005602090815260408083206010546001600160a01b031684529091529020546000191461399c573060009081526005602090815260408083206010546001600160a01b03168452909152902060001990555b60408051600280825260608201835260009260208301908036833701905050905030816000815181106139d1576139d1614d8d565b6001600160a01b03928316602091820292909201810191909152601054604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015613a43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a679190614e6f565b81600181518110613a7a57613a7a614d8d565b6001600160a01b0392831660209182029290920101526010546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790613ad9908690600090869030904290600401614ea9565b600060405180830381600087803b158015613af357600080fd5b505af1158015613b07573d6000803e3d6000fd5b5050505060004790506000836060015161ffff16846020015161ffff1683613b2f9190614d3f565b613b399190614d04565b90506000846060015161ffff16856040015161ffff1684613b5a9190614d3f565b613b649190614d04565b90506000613b728383614e57565b613b7c9085614dbc565b602087015190915061ffff1615613bc9576013546040516001600160a01b039091169084156108fc029085906000818181858888f19350505050158015613bc7573d6000803e3d6000fd5b505b604086015161ffff1615613c13576014546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015613c11573d6000803e3d6000fd5b505b855161ffff1615613c5a576012546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015613c58573d6000803e3d6000fd5b505b5050505050505b506015805460ff19169055565b601c54600090610100900460ff16613d1a57613c8a8585613ef0565b601c54610100900460ff16158015613ca75750613ca78585613811565b15613d1a5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610cdf565b6000613d288686868661404e565b60a08101516001600160a01b038816600090815260016020526040902054919250613d5291614dbc565b6001600160a01b0380881660009081526001602052604080822093909355608084015191881681529190912054613d899190614e57565b6001600160a01b0380871660009081526001602090815260408083209490945591891681526008909152205460ff1615613dfb576001600160a01b038616600090815260026020526040902054613de1908590614dbc565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526008602052604090205460ff1615613e5b5780516001600160a01b038616600090815260026020526040902054613e419190614e57565b6001600160a01b0386166000908152600260205260409020555b60008160c001511180613e72575060008160200151115b15613e93578060c00151600b6000828254613e8d9190614dbc565b90915550505b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360000151604051613edc91815260200190565b60405180910390a350600195945050505050565b601c54610100900460ff1615613f6e5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610cdf565b613f788282613811565b158015613f9257506011546001600160a01b038281169116145b15610f44576001600160a01b038083166000908152600a60205260409020805460ff19166001179055601c805461ff00191661010017908190556201000090041661400757601c80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b6015805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b61409660405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6140de60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6140e661308d565b60e082018190526140f79085614d3f565b60a08201526141068686613811565b156141b957601c546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152878116602483015260448201879052600092620100009004169063ecd07a53906064016020604051808303816000875af19250505080156141a2575060408051601f3d908101601f1916820190925261419f91810190614e8c565b60015b6141ab57600080fd5b9050806141b757600080fd5b505b8215614326576001600160a01b038516600090815260036020526040812054819081906127109060ff161561421457600d5461ffff80821695506a010000000000000000000082048116945062010000909104169150614289565b6001600160a01b038a1660009081526003602052604090205460ff161561426157600c5461ffff80821695506a010000000000000000000082048116945062010000909104169150614289565b600e5461ffff80821695506a0100000000000000000000820481169450620100009091041691505b80614294858a614d3f565b61429e9190614d04565b6020860152806142ae848a614d3f565b6142b89190614d04565b6040860152806142c8838a614d3f565b6142d29190614d04565b60608601819052604086015160208701516142ed9190614e57565b6142f79190614e57565b6143019089614dbc565b855260e085015160208601516143179190614d3f565b60c08601525061434692505050565b600060208201819052604082018190526060820181905284825260c08201525b60408101511561441d578060e0015181604001516143649190614d3f565b3060009081526001602052604081208054909190614383908490614e57565b90915550503060009081526008602052604090205460ff16156143cb5760408082015130600090815260026020529182208054919290916143c5908490614e57565b90915550505b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040015160405161441491815260200190565b60405180910390a35b606081015115614550578060e00151816060015161443b9190614d3f565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d8054909190614479908490614e57565b909155505061dead60005260086020527f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd093342995460ff16156144fc57606081015161dead600090815260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc80549091906144f6908490614e57565b90915550505b61dead6001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836060015160405161454791815260200190565b60405180910390a35b8060e0015181606001516145649190614d3f565b8160e0015182604001516145789190614d3f565b8260c001516145879190614e57565b6145919190614e57565b8160a001516145a09190614dbc565b608082015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614606576146066145ae565b604052919050565b600067ffffffffffffffff821115614628576146286145ae565b5060051b60200190565b6001600160a01b0381168114612e4757600080fd5b600082601f83011261465857600080fd5b8135602061466d6146688361460e565b6145dd565b82815260059290921b8401810191818101908684111561468c57600080fd5b8286015b848110156146b05780356146a381614632565b8352918301918301614690565b509695505050505050565b8015158114612e4757600080fd5b600080604083850312156146dc57600080fd5b823567ffffffffffffffff8111156146f357600080fd5b6146ff85828601614647565b9250506020830135614710816146bb565b809150509250929050565b600060208083528351808285015260005b818110156147485785810183015185820160400152820161472c565b8181111561475a576000604083870101525b50601f01601f1916929092016040019392505050565b6000806040838503121561478357600080fd5b823561478e81614632565b946020939093013593505050565b600080604083850312156147af57600080fd5b82356147ba81614632565b91506020830135614710816146bb565b6000806000606084860312156147df57600080fd5b83356147ea81614632565b925060208401356147fa81614632565b929592945050506040919091013590565b6000806040838503121561481e57600080fd5b50508035926020909101359150565b600082601f83011261483e57600080fd5b8135602061484e6146688361460e565b82815260059290921b8401810191818101908684111561486d57600080fd5b8286015b848110156146b05780358352918301918301614871565b6000806040838503121561489b57600080fd5b823567ffffffffffffffff808211156148b357600080fd5b6148bf86838701614647565b935060208501359150808211156148d557600080fd5b506148e28582860161482d565b9150509250929050565b803561ffff811681146148fe57600080fd5b919050565b600080600080600060a0868803121561491b57600080fd5b614924866148ec565b9450614932602087016148ec565b9350614940604087016148ec565b925061494e606087016148ec565b915061495c608087016148ec565b90509295509295909350565b60006020828403121561497a57600080fd5b5035919050565b60006020828403121561499357600080fd5b813561181681614632565b600080600080600060a086880312156149b657600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806000606084860312156149ee57600080fd5b83356149f981614632565b92506020840135614a0981614632565b91506040840135614a1981614632565b809150509250925092565b600080600060608486031215614a3957600080fd5b614a42846148ec565b9250614a50602085016148ec565b9150614a5e604085016148ec565b90509250925092565b600080600060608486031215614a7c57600080fd5b8335614a87816146bb565b92506020840135614a97816146bb565b91506040840135614a19816146bb565b600060208284031215614ab957600080fd5b8135611816816146bb565b60008060408385031215614ad757600080fd5b8235614ae281614632565b9150602083013561471081614632565b600080600060608486031215614b0757600080fd5b833567ffffffffffffffff80821115614b1f57600080fd5b614b2b87838801614647565b94506020860135915080821115614b4157600080fd5b614b4d8783880161482d565b93506040860135915080821115614b6357600080fd5b50614b708682870161482d565b9150509250925092565b600081518084526020808501945080840160005b83811015614bb35781516001600160a01b031687529582019590820190600101614b8e565b509495945050505050565b604081526000614bd16040830185614b7a565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115614c4c578160001904821115614c3257614c32614be2565b80851615614c3f57918102915b93841c9390800290614c16565b509250929050565b600082614c6357506001610d7f565b81614c7057506000610d7f565b8160018114614c865760028114614c9057614cac565b6001915050610d7f565b60ff841115614ca157614ca1614be2565b50506001821b610d7f565b5060208310610133831016604e8410600b8410161715614ccf575081810a610d7f565b614cd98383614c11565b8060001904821115614ced57614ced614be2565b029392505050565b600061181660ff841683614c54565b600082614d3a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000816000190483118215151615614d5957614d59614be2565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082821015614dce57614dce614be2565b500390565b6000600019821415614de757614de7614be2565b5060010190565b600060ff821660ff811415614e0557614e05614be2565b60010192915050565b600061ffff808316818516808303821115614e2b57614e2b614be2565b01949350505050565b600061ffff83811690831681811015614e4f57614e4f614be2565b039392505050565b60008219821115614e6a57614e6a614be2565b500190565b600060208284031215614e8157600080fd5b815161181681614632565b600060208284031215614e9e57600080fd5b8151611816816146bb565b85815284602082015260a060408201526000614ec860a0830186614b7a565b6001600160a01b039490941660608301525060800152939250505056fea264697066735822122070a6cf15fcc647bb1f44739079f8cb68381afe0dd80d3029567359e763c0051764736f6c634300080b0033
Deployed Bytecode Sourcemap
6133:27224:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8505:73;;;;;;;;;;;;8536:42;8505:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;8505:73:0;;;;;;;;9164:52;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;9164:52:0;245:177:1;18398:172:0;;;;;;;;;;-1:-1:-1;18398:172:0;;;;;:::i;:::-;;:::i;:::-;;13229:80;;;;;;;;;;-1:-1:-1;13301:5:0;;;;;;;;;;;;;;;;13229:80;;;;13301:5;13229:80;:::i;8444:26::-;;;;;;;;;;-1:-1:-1;8444:26:0;;;;-1:-1:-1;;;;;8444:26:0;;;13920:159;;;;;;;;;;-1:-1:-1;13920:159:0;;;;;:::i;:::-;;:::i;:::-;;;4043:14:1;;4036:22;4018:41;;4006:2;3991:18;13920:159:0;3878:187:1;22192:112:0;;;;;;;;;;;;;:::i;16232:1519::-;;;;;;;;;;-1:-1:-1;16232:1519:0;;;;;:::i;:::-;;:::i;12932:115::-;;;;;;;;;;;;;:::i;14585:306::-;;;;;;;;;;-1:-1:-1;14585:306:0;;;;;:::i;:::-;;:::i;21242:267::-;;;;;;;;;;-1:-1:-1;21242:267:0;;;;;:::i;:::-;;:::i;27820:373::-;;;;;;;;;;-1:-1:-1;27820:373:0;;;;;:::i;:::-;;:::i;19643:505::-;;;;;;;;;;-1:-1:-1;19643:505:0;;;;;:::i;:::-;;:::i;15955:141::-;;;;;;;;;;;;;:::i;8241:42::-;;;;;;;;;;;;8279:4;8241:42;;17759:250;;;;;;;;;;-1:-1:-1;17759:250:0;;;;;:::i;:::-;;:::i;9223:49::-;;;;;;;;;;;;;;;;13053:80;;;;;;;;;;-1:-1:-1;13053:80:0;;7000:1;7408:36:1;;7396:2;7381:18;13053:80:0;7266:184:1;18837:108:0;;;;;;;;;;-1:-1:-1;18837:108:0;;;;;:::i;:::-;;:::i;22312:338::-;;;;;;;;;;-1:-1:-1;22312:338:0;;;;;:::i;:::-;;:::i;21517:140::-;;;;;;;;;;-1:-1:-1;21517:140:0;;;;;:::i;:::-;;:::i;20965:269::-;;;;;;;;;;-1:-1:-1;20965:269:0;;;;;:::i;:::-;;:::i;8477:21::-;;;;;;;;;;-1:-1:-1;8477:21:0;;;;-1:-1:-1;;;;;8477:21:0;;;9403:34;;;;;;;;;;-1:-1:-1;9403:34:0;;;;;;;;11790:588;;;;;;;;;;-1:-1:-1;11790:588:0;;;;;:::i;:::-;;:::i;21803:125::-;;;;;;;;;;-1:-1:-1;21803:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;21892:28:0;21868:4;21892:28;;;:19;:28;;;;;;;;;21803:125;9444:36;;;;;;;;;;-1:-1:-1;9444:36:0;;;;;;;;;;;21936:134;;;;;;;;;;-1:-1:-1;21936:134:0;;;;;:::i;:::-;;:::i;18017:220::-;;;;;;;;;;-1:-1:-1;18017:220:0;;;;;:::i;:::-;;:::i;21665:130::-;;;;;;;;;;-1:-1:-1;21665:130:0;;;;;:::i;:::-;-1:-1:-1;;;;;21757:30:0;21733:4;21757:30;;;:21;:30;;;;;;;;;21665:130;22078:106;;;;;;;;;;;;;:::i;13541:198::-;;;;;;;;;;-1:-1:-1;13541:198:0;;;;;:::i;:::-;;:::i;12386:193::-;;;;;;;;;;;;;:::i;22658:290::-;;;;;;;;;;-1:-1:-1;22658:290:0;;;;;:::i;:::-;;:::i;7508:186::-;;;;;;;;;;-1:-1:-1;7508:186:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9009:6:1;9042:15;;;9024:34;;9094:15;;;9089:2;9074:18;;9067:43;9146:15;;;9126:18;;;9119:43;;;;9198:15;;;9193:2;9178:18;;9171:43;9251:15;;9245:3;9230:19;;9223:44;9304:15;;;9298:3;9283:19;;9276:44;8986:3;8971:19;7508:186:0;8724:602:1;15447:500:0;;;;;;;;;;-1:-1:-1;15447:500:0;;;;;:::i;:::-;;:::i;16104:120::-;;;;;;;;;;-1:-1:-1;16104:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;16196:20:0;16172:4;16196:20;;;:11;:20;;;;;;;;;16104:120;13315:79;;;;;;;;;;-1:-1:-1;13367:7:0;13385:6;-1:-1:-1;;;;;13385:6:0;13315:79;;14404:173;;;;;;;;;;;;;:::i;27193:429::-;;;;;;;;;;;;;:::i;13747:165::-;;;;;;;;;;-1:-1:-1;13747:165:0;;;;;:::i;:::-;;:::i;20673:284::-;;;;;;;;;;-1:-1:-1;20673:284:0;;;;;:::i;:::-;;:::i;18953:170::-;;;;;;;;;;-1:-1:-1;18953:170:0;;;;;:::i;:::-;;:::i;7899:191::-;;;;;;;;;;-1:-1:-1;7899:191:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7703:187;;;;;;;;;;-1:-1:-1;7703:187:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18578:118;;;;;;;;;;-1:-1:-1;18578:118:0;;;;;:::i;:::-;;:::i;22956:164::-;;;;;;;;;;-1:-1:-1;22956:164:0;;;;;:::i;:::-;;:::i;8099:133::-;;;;;;;;;;-1:-1:-1;8099:133:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10659:6:1;10692:15;;;10674:34;;10744:15;;;10739:2;10724:18;;10717:43;10796:15;;;10776:18;;;10769:43;;;;10848:15;;;10843:2;10828:18;;10821:43;10636:3;10621:19;8099:133:0;10426:444:1;13400:133:0;;;;;;;;;;-1:-1:-1;13400:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;13502:19:0;;;13484:7;13502:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;13400:133;9082:44;;;;;;;;;;;;;;;;28201:482;;;;;;;;;;-1:-1:-1;28201:482:0;;;;;:::i;:::-;;:::i;14899:540::-;;;;;;;;;;-1:-1:-1;14899:540:0;;;;;:::i;:::-;;:::i;27630:182::-;;;;;;;;;;;;;:::i;18245:145::-;;;;;;;;;;-1:-1:-1;18245:145:0;;;;;:::i;:::-;;:::i;8730:275::-;;;;;;;;;;-1:-1:-1;8730:275:0;;;;;;;;-1:-1:-1;;;;;8730:275:0;;;;;;;;;;;;;;-1:-1:-1;;;;;12423:15:1;;;12405:34;;12475:15;;;12470:2;12455:18;;12448:43;12527:15;;12507:18;;;12500:43;;;;12332:2;12317:18;8730:275:0;12094:455:1;9036:39:0;;;;;;;;;;-1:-1:-1;9036:39:0;;;;;;;;;;;18704:125;;;;;;;;;;-1:-1:-1;18704:125:0;;;;;:::i;:::-;;:::i;18398:172::-;9872:6;;-1:-1:-1;;;;;9872:6:0;9882:10;9872:20;9864:50;;;;-1:-1:-1;;;9864:50:0;;12756:2:1;9864:50:0;;;12738:21:1;12795:2;12775:18;;;12768:30;-1:-1:-1;;;12814:18:1;;;12807:47;12871:18;;9864:50:0;;;;;;;;;18506:9:::1;::::0;:56:::1;::::0;;;;:9;;;::::1;-1:-1:-1::0;;;;;18506:9:0::1;::::0;:37:::1;::::0;:56:::1;::::0;18544:8;;18554:7;;18506:56:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18398:172:::0;;:::o;13920:159::-;13995:4;14012:37;14021:10;14033:7;14042:6;14012:8;:37::i;:::-;-1:-1:-1;14067:4:0;13920:159;;;;;:::o;22192:112::-;22237:7;22282:13;7000:1;22282:2;:13;:::i;:::-;22264:14;;:32;;;;:::i;:::-;22257:39;;22192:112;:::o;16232:1519::-;9872:6;;-1:-1:-1;;;;;9872:6:0;9882:10;9872:20;9864:50;;;;-1:-1:-1;;;9864:50:0;;12756:2:1;9864:50:0;;;12738:21:1;12795:2;12775:18;;;12768:30;-1:-1:-1;;;12814:18:1;;;12807:47;12871:18;;9864:50:0;12554:341:1;9864:50:0;16326:7:::1;16322:1422;;;-1:-1:-1::0;;;;;16359:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;16358:21;16350:62;;;::::0;-1:-1:-1;;;16350:62:0;;15909:2:1;16350:62:0::1;::::0;::::1;15891:21:1::0;15948:2;15928:18;;;15921:30;15987;15967:18;;;15960:58;16035:18;;16350:62:0::1;15707:352:1::0;16350:62:0::1;-1:-1:-1::0;;;;;16430:16:0;::::1;16449:1;16430:16:::0;;;:7:::1;:16;::::0;;;;;:20;16427:116:::1;;-1:-1:-1::0;;;;;16510:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;16490:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;16471:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;16427:116:::1;-1:-1:-1::0;;;;;16557:20:0;;::::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;16557:27:0::1;16580:4;16557:27;::::0;;16613:6:::1;::::0;;;::::1;16602:17;16599:79;;16639:9;:23:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;16639:23:0;;;;;::::1;::::0;;-1:-1:-1;;16639:23:0::1;-1:-1:-1::0;;;;;16639:23:0;::::1;;::::0;;16599:79:::1;16232:1519:::0;;:::o;16322:1422::-:1;16700:7;16695:1049;;-1:-1:-1::0;;;;;16732:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;16724:61;;;::::0;-1:-1:-1;;;16724:61:0;;16266:2:1;16724:61:0::1;::::0;::::1;16248:21:1::0;16305:2;16285:18;;;16278:30;16344;16324:18;;;16317:58;16392:18;;16724:61:0::1;16064:352:1::0;16724:61:0::1;16815:6;::::0;-1:-1:-1;;;;;16804:17:0;;::::1;16815:6:::0;::::1;16804:17;16800:933;;;16880:10;:8;:10::i;:::-;-1:-1:-1::0;;;;;16861:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;:29:::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;;;;;16842:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:48;;;;16909:7:::1;:16:::0;;;;;:20;;;16948:11:::1;:20:::0;;;:28;;-1:-1:-1;;16948:28:0::1;::::0;;16232:1519;;:::o;16800:933::-:1;17001:9;:16:::0;17021:1:::1;17001:21;16998:735;;;17081:10;:8;:10::i;:::-;-1:-1:-1::0;;;;;17062:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;:29:::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;;;;;17043:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:48;;;;17110:7:::1;:16:::0;;;;;:20;;;17149:11:::1;:20:::0;;;:28;;-1:-1:-1;;17149:28:0::1;::::0;;17196:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;17196:15:0;;;;;-1:-1:-1;;17196:15:0::1;::::0;;;;;16232:1519;;:::o;16998:735::-:1;17257:9;17252:466;17276:9;:16:::0;17272:20;::::1;17252:466;;;17342:7;-1:-1:-1::0;;;;;17326:23:0::1;:9;17336:1;17326:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;17326:12:0::1;:23;17322:377;;;17393:9;17403:16:::0;;:20:::1;::::0;17422:1:::1;::::0;17403:20:::1;:::i;:::-;17393:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;17378:9:::1;:12:::0;;-1:-1:-1;;;;;17393:31:0;;::::1;::::0;17388:1;;17378:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;17378:46:0::1;-1:-1:-1::0;;;;;17378:46:0;;::::1;;::::0;;17451:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;17536:10:::1;:8;:10::i;:::-;-1:-1:-1::0;;;;;17517:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;:29:::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;;;;;17498:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:48;;;;17573:11:::1;:20:::0;;;:28;;-1:-1:-1;;17573:28:0::1;::::0;;17628:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;17628:15:0;;;;;-1:-1:-1;;17628:15:0::1;::::0;;;;;17252:466:::1;16232:1519:::0;;:::o;17322:377::-:1;17294:3:::0;::::1;::::0;::::1;:::i;:::-;;;;17252:466;;;;16232:1519:::0;;:::o;12932:115::-;12987:7;7062:13;7000:1;7062:2;:13;:::i;:::-;7045:30;;6833:23;7045:30;:::i;:::-;12998:31;;13018:8;;;12998:31;7062:13;7000:1;7062:2;:13;:::i;:::-;7045:30;;6833:23;7045:30;:::i;14585:306::-;-1:-1:-1;;;;;14706:19:0;;14685:4;14706:19;;;:11;:19;;;;;;;;14726:10;14706:31;;;;;;;;-1:-1:-1;;14706:52:0;14702:126;;-1:-1:-1;;;;;14775:19:0;;;;;;:11;:19;;;;;;;;14795:10;14775:31;;;;;;;:41;;14810:6;;14775:19;:41;;14810:6;;14775:41;:::i;:::-;;;;-1:-1:-1;;14702:126:0;14847:36;14857:6;14865:9;14876:6;14847:9;:36::i;:::-;14840:43;14585:306;-1:-1:-1;;;;14585:306:0:o;21242:267::-;9872:6;;-1:-1:-1;;;;;9872:6:0;9882:10;9872:20;9864:50;;;;-1:-1:-1;;;9864:50:0;;12756:2:1;9864:50:0;;;12738:21:1;12795:2;12775:18;;;12768:30;-1:-1:-1;;;12814:18:1;;;12807:47;12871:18;;9864:50:0;12554:341:1;9864:50:0;21384:4:::1;7062:13;7000:1;7062:2;:13;:::i;:::-;7045:30;::::0;6833:23:::1;7045:30;:::i;:::-;21374:14;;;;:::i;:::-;21362:7:::0;21351;7062:13:::1;7000:1;7062:2;:13;:::i;:::-;7045:30;::::0;6833:23:::1;7045:30;:::i;:::-;21341:17;;;;:::i;:::-;21340:29;;;;:::i;:::-;:49;;21332:112;;;::::0;-1:-1:-1;;;21332:112:0;;17564:2:1;21332:112:0::1;::::0;::::1;17546:21:1::0;17603:2;17583:18;;;17576:30;17642:34;17622:18;;;17615:62;17713:20;17693:18;;;17686:48;17751:19;;21332:112:0::1;17362:414:1::0;21332:112:0::1;21494:7:::0;21483;7062:13:::1;7000:1;7062:2;:13;:::i;:::-;7045:30;::::0;6833:23:::1;7045:30;:::i;:::-;21473:17;;;;:::i;:::-;21472:29;;;;:::i;:::-;21455:14;:46:::0;-1:-1:-1;;21242:267:0:o;27820:373::-;27945:7;:14;27926:8;:15;:33;27918:67;;;;-1:-1:-1;;;27918:67:0;;17983:2:1;27918:67:0;;;17965:21:1;18022:2;18002:18;;;17995:30;18061:23;18041:18;;;18034:51;18102:18;;27918:67:0;17781:345:1;27918:67:0;28001:7;27996:190;28018:8;:15;28014:1;:19;;;27996:190;;;28088:7;28096:1;28088:10;;;;;;;;;;:::i;:::-;;;;;;;28063:21;28073:10;28063:9;:21::i;:::-;:35;;28055:44;;;;;;28114:60;28124:10;28136:8;28145:1;28136:11;;;;;;;;;;:::i;:::-;;;;;;;7000:1;28160:2;:13;;;;:::i;:::-;28149:7;28157:1;28149:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;28114:9;:60::i;:::-;-1:-1:-1;28035:3:0;;;;:::i;:::-;;;;27996:190;;19643:505;9872:6;;-1:-1:-1;;;;;9872:6:0;9882:10;9872:20;9864:50;;;;-1:-1:-1;;;9864:50:0;;12756:2:1;9864:50:0;;;12738:21:1;12795:2;12775:18;;;12768:30;-1:-1:-1;;;12814:18:1;;;12807:47;12871:18;;9864:50:0;12554:341:1;9864:50:0;19779:12:::1;19837:8:::0;19823:11;19811:9;19794:14:::1;19804:4:::0;19794:7;:14:::1;:::i;:::-;:26;;;;:::i;:::-;:40;;;;:::i;:::-;:51;;;;:::i;:::-;19779:66;;8279:4;19864:5;:20;;;;19856:29;;;::::0;::::1;;19896:9;:27:::0;;::::1;::::0;;::::1;19934:21:::0;;;;;;;;;;;::::1;;;20008:35:::0;;19966:31;;;::::1;;20008:35:::0;;;;;;::::1;;;20054:29:::0;::::1;::::0;;;::::1;::::0;;;::::1;;::::0;;20125:14:::1;19934:21:::0;19896:27;20125:14:::1;:::i;:::-;20116:24;::::0;:5;:24:::1;:::i;:::-;20094:9;:46:::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;;;19643:505:0:o;15955:141::-;16008:7;16065:21;16083:1;16065:9;:21::i;:::-;16047:15;8536:42;16047:9;:15::i;:::-;:39;;;;:::i;:::-;7062:13;7000:1;7062:2;:13;:::i;:::-;7045:30;;6833:23;7045:30;:::i;:::-;16036:51;;;;:::i;17759:250::-;17825:7;17864;;17853;:18;;17845:73;;;;-1:-1:-1;;;17845:73:0;;19097:2:1;17845:73:0;;;19079:21:1;19136:2;19116:18;;;19109:30;19175:34;19155:18;;;19148:62;19246:12;19226:18;;;19219:40;19276:19;;17845:73:0;18895:406:1;17845:73:0;17929:19;17952:10;:8;:10::i;:::-;17929:33;-1:-1:-1;17980:21:0;17929:33;17980:7;:21;:::i;:::-;17973:28;17759:250;-1:-1:-1;;;17759:250:0:o;18837:108::-;9872:6;;-1:-1:-1;;;;;9872:6:0;9882:10;9872:20;9864:50;;;;-1:-1:-1;;;9864:50:0;;12756:2:1;9864:50:0;;;12738:21:1;12795:2;12775:18;;;12768:30;-1:-1:-1;;;12814:18:1;;;12807:47;12871:18;;9864:50:0;12554:341:1;9864:50:0;18906:9:::1;::::0;:31:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;18906:31:0::1;::::0;::::1;160:74:1::0;18906:9:0;;;::::1;::::0;;::::1;::::0;:22:::1;::::0;133:18:1;;18906:31:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18837:108:::0;:::o;22312:338::-;9872:6;;-1:-1:-1;;;;;9872:6:0;9882:10;9872:20;9864:50;;;;-1:-1:-1;;;9864:50:0;;12756:2:1;9864:50:0;;;12738:21:1;12795:2;12775:18;;;12768:30;-1:-1:-1;;;12814:18:1;;;12807:47;12871:18;;9864:50:0;12554:341:1;9864:50:0;22526:16;22506;7062:13:::1;7000:1;7062:2;:13;:::i;:::-;7045:30;::::0;6833:23:::1;7045:30;:::i;:::-;22496:26;;;;:::i;:::-;22495:47;;;;:::i;:::-;22479:13;:63:::0;22594:13;22577;7062::::1;7000:1;7062:2;:13;:::i;:::-;7045:30;::::0;6833:23:::1;7045:30;:::i;:::-;22567:23;;;;:::i;:::-;22566:41;;;;:::i;:::-;22553:10;:54:::0;22618:17:::1;:24:::0;-1:-1:-1;;;;22312:338:0:o;21517:140::-;9872:6;;-1:-1:-1;;;;;9872:6:0;9882:10;9872:20;9864:50;;;;-1:-1:-1;;;9864:50:0;;12756:2:1;9864:50:0;;;12738:21:1;12795:2;12775:18;;;12768:30;-1:-1:-1;;;12814:18:1;;;12807:47;12871:18;;9864:50:0;12554:341:1;9864:50:0;-1:-1:-1;;;;;21609:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;21609:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21517:140::o;20965:269::-;9872:6;;-1:-1:-1;;;;;9872:6:0;9882:10;9872:20;9864:50;;;;-1:-1:-1;;;9864:50:0;;12756:2:1;9864:50:0;;;12738:21:1;12795:2;12775:18;;;12768:30;-1:-1:-1;;;12814:18:1;;;12807:47;12871:18;;9864:50:0;12554:341:1;9864:50:0;21106:4:::1;7062:13;7000:1;7062:2;:13;:::i;:::-;7045:30;::::0;6833:23:::1;7045:30;:::i;:::-;21096:14;;;;:::i;:::-;21084:7:::0;21073;7062:13:::1;7000:1;7062:2;:13;:::i;:::-;7045:30;::::0;6833:23:::1;7045:30;:::i;:::-;21063:17;;;;:::i;:::-;21062:29;;;;:::i;:::-;:49;;21054:117;;;::::0;-1:-1:-1;;;21054:117:0;;19508:2:1;21054:117:0::1;::::0;::::1;19490:21:1::0;19547:2;19527:18;;;19520:30;19586:34;19566:18;;;19559:62;19657:25;19637:18;;;19630:53;19700:19;;21054:117:0::1;19306:419:1::0;21054:117:0::1;21219:7:::0;21208;7062:13:::1;7000:1;7062:2;:13;:::i;:::-;7045:30;::::0;6833:23:::1;7045:30;:::i;:::-;21198:17;;;;:::i;:::-;21197:29;;;;:::i;:::-;21182:12;:44:::0;-1:-1:-1;;20965:269:0:o;11790:588::-;9872:6;;-1:-1:-1;;;;;9872:6:0;9882:10;9872:20;9864:50;;;;-1:-1:-1;;;9864:50:0;;12756:2:1;9864:50:0;;;12738:21:1;12795:2;12775:18;;;12768:30;-1:-1:-1;;;12814:18:1;;;12807:47;12871:18;;9864:50:0;12554:341:1;9864:50:0;-1:-1:-1;;;;;11869:22:0;::::1;11861:96;;;::::0;-1:-1:-1;;;11861:96:0;;19932:2:1;11861:96:0::1;::::0;::::1;19914:21:1::0;19971:2;19951:18;;;19944:30;20010:34;19990:18;;;19983:62;20081:31;20061:18;;;20054:59;20130:19;;11861:96:0::1;19730:425:1::0;11861:96:0::1;-1:-1:-1::0;;;;;11976:16:0;::::1;8536:42;11976:16;;11968:90;;;::::0;-1:-1:-1;;;11968:90:0;;19932:2:1;11968:90:0::1;::::0;::::1;19914:21:1::0;19971:2;19951:18;;;19944:30;20010:34;19990:18;;;19983:62;20081:31;20061:18;;;20054:59;20130:19;;11968:90:0::1;19730:425:1::0;11968:90:0::1;12089:6;::::0;;12069:34:::1;::::0;-1:-1:-1;;;;;12089:6:0;;::::1;::::0;12069:19:::1;:34::i;:::-;12114:35;12134:8;12144:4;12114:19;:35::i;:::-;12193:1;12183:6:::0;;12173:17:::1;::::0;-1:-1:-1;;;;;12183:6:0::1;12173:9;:17::i;:::-;:21;12170:99;;;12221:6;::::0;12211:46:::1;::::0;-1:-1:-1;;;;;12221:6:0::1;12229:8:::0;12239:17:::1;12221:6:::0;12239:9:::1;:17::i;12211:46::-;;12170:99;12289:6;:17:::0;;-1:-1:-1;;12289:17:0::1;-1:-1:-1::0;;;;;12289:17:0;::::1;::::0;;::::1;::::0;;12322:38:::1;::::0;12289:17;;;;12322:38:::1;::::0;12289:6;12322:38:::1;11790:588:::0;:::o;21936:134::-;9872:6;;-1:-1:-1;;;;;9872:6:0;9882:10;9872:20;9864:50;;;;-1:-1:-1;;;9864:50:0;;12756:2:1;9864:50:0;;;12738:21:1;12795:2;12775:18;;;12768:30;-1:-1:-1;;;12814:18:1;;;12807:47;12871:18;;9864:50:0;12554:341:1;9864:50:0;-1:-1:-1;;;;;22024:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;22024:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21936:134::o;18017:220::-;9872:6;;-1:-1:-1;;;;;9872:6:0;9882:10;9872:20;9864:50;;;;-1:-1:-1;;;9864:50:0;;12756:2:1;9864:50:0;;;12738:21:1;12795:2;12775:18;;;12768:30;-1:-1:-1;;;12814:18:1;;;12807:47;12871:18;;9864:50:0;12554:341:1;9864:50:0;18101:16:::1;::::0;::::1;::::0;::::1;;;18100:17;18092:26;;;::::0;::::1;;-1:-1:-1::0;;;;;18137:28:0;::::1;18160:4;18137:28;;18129:55;;;::::0;-1:-1:-1;;;18129:55:0;;20362:2:1;18129:55:0::1;::::0;::::1;20344:21:1::0;20401:2;20381:18;;;20374:30;20440:16;20420:18;;;20413:44;20474:18;;18129:55:0::1;20160:338:1::0;18129:55:0::1;18195:9;:34:::0;;-1:-1:-1;;;;;18195:34:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;18017:220::o;22078:106::-;22119:7;22162:13;7000:1;22162:2;:13;:::i;:::-;22146:12;;:30;;;;:::i;13541:198::-;-1:-1:-1;;;;;13631:20:0;;13607:7;13631:20;;;:11;:20;;;;;;;;13627:49;;;-1:-1:-1;;;;;;13660:16:0;;;;;:7;:16;;;;;;;13541:198::o;13627:49::-;-1:-1:-1;;;;;13714:16:0;;;;;;:7;:16;;;;;;13694:37;;:19;:37::i;12386:193::-;9872:6;;-1:-1:-1;;;;;9872:6:0;9882:10;9872:20;9864:50;;;;-1:-1:-1;;;9864:50:0;;12756:2:1;9864:50:0;;;12738:21:1;12795:2;12775:18;;;12768:30;-1:-1:-1;;;12814:18:1;;;12807:47;12871:18;;9864:50:0;12554:341:1;9864:50:0;12471:6:::1;::::0;;12451:34:::1;::::0;-1:-1:-1;;;;;12471:6:0;;::::1;::::0;12451:19:::1;:34::i;:::-;12513:1;12496:19:::0;;-1:-1:-1;;12496:19:0::1;::::0;;12531:40:::1;::::0;12513:1;;12531:40:::1;::::0;12513:1;;12531:40:::1;12386:193::o:0;22658:290::-;9872:6;;-1:-1:-1;;;;;9872:6:0;9882:10;9872:20;9864:50;;;;-1:-1:-1;;;9864:50:0;;12756:2:1;9864:50:0;;;12738:21:1;12795:2;12775:18;;;12768:30;-1:-1:-1;;;12814:18:1;;;12807:47;12871:18;;9864:50:0;12554:341:1;9864:50:0;22790:11:::1;:42:::0;;-1:-1:-1;;;;;22790:42:0;;::::1;-1:-1:-1::0;;22790:42:0;;::::1;;::::0;;;22843:23;:46;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;22900:20;:40;;;;;::::1;::::0;::::1;;::::0;;22658:290::o;15447:500::-;9872:6;;-1:-1:-1;;;;;9872:6:0;9882:10;9872:20;9864:50;;;;-1:-1:-1;;;9864:50:0;;12756:2:1;9864:50:0;;;12738:21:1;12795:2;12775:18;;;12768:30;-1:-1:-1;;;12814:18:1;;;12807:47;12871:18;;9864:50:0;12554:341:1;9864:50:0;15528:16;15524:416:::1;;-1:-1:-1::0;;;;;15561:13:0;;::::1;15577:5;15561:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;15561:21:0::1;::::0;;15597:9:::1;::::0;:32;;;;;::::1;::::0;::::1;20671:74:1::0;;;;20761:18;;;20754:50;;;;15597:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;20644:18:1;;15597:32:0::1;;;;;;;;;;;;;;;;;::::0;::::1;15524:416;15666:17;::::0;:22;15662:136:::1;;15755:6;15735:17;;15717:15;:35;;;;:::i;:::-;:44;15709:73;;;::::0;-1:-1:-1;;;15709:73:0;;21017:2:1;15709:73:0::1;::::0;::::1;20999:21:1::0;21056:2;21036:18;;;21029:30;21095:18;21075;;;21068:46;21131:18;;15709:73:0::1;20815:340:1::0;15709:73:0::1;-1:-1:-1::0;;;;;15812:13:0;;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;:20;;-1:-1:-1;;15812:20:0::1;15828:4;15812:20:::0;;::::1;::::0;;;15867:15:::1;15847:17;:35:::0;;;15897:9:::1;::::0;:31;;;;;;;::::1;20671:74:1::0;;;;20761:18;;;20754:50;15897:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;20644:18:1;;15897:31:0::1;20503:307:1::0;14404:173:0;14468:4;9872:6;;-1:-1:-1;;;;;9872:6:0;9882:10;9872:20;9864:50;;;;-1:-1:-1;;;9864:50:0;;12756:2:1;9864:50:0;;;12738:21:1;12795:2;12775:18;;;12768:30;-1:-1:-1;;;12814:18:1;;;12807:47;12871:18;;9864:50:0;12554:341:1;9864:50:0;14517:9:::1;::::0;14485:62:::1;::::0;14502:4:::1;::::0;-1:-1:-1;;;;;14517:9:0::1;-1:-1:-1::0;;14485:8:0::1;:62::i;:::-;-1:-1:-1::0;14565:4:0::1;14404:173:::0;:::o;27193:429::-;9872:6;;-1:-1:-1;;;;;9872:6:0;9882:10;9872:20;9864:50;;;;-1:-1:-1;;;9864:50:0;;12756:2:1;9864:50:0;;;12738:21:1;12795:2;12775:18;;;12768:30;-1:-1:-1;;;12814:18:1;;;12807:47;12871:18;;9864:50:0;12554:341:1;9864:50:0;27255:14:::1;::::0;::::1;;27254:15;27246:52;;;::::0;-1:-1:-1;;;27246:52:0;;21362:2:1;27246:52:0::1;::::0;::::1;21344:21:1::0;21401:2;21381:18;;;21374:30;21440:26;21420:18;;;21413:54;21484:18;;27246:52:0::1;21160:348:1::0;27246:52:0::1;27317:16;::::0;::::1;::::0;::::1;;;27309:53;;;::::0;-1:-1:-1;;;27309:53:0;;21715:2:1;27309:53:0::1;::::0;::::1;21697:21:1::0;21754:2;21734:18;;;21727:30;21793:26;21773:18;;;21766:54;21837:18;;27309:53:0::1;21513:348:1::0;27309:53:0::1;27384:9;::::0;;;::::1;-1:-1:-1::0;;;;;27384:9:0::1;27373:99;;27424:9;:36:::0;;;::::1;27454:4;27424:36:::0;::::1;;::::0;;27373:99:::1;27486:9;::::0;27506:6:::1;::::0;27486:85:::1;::::0;;;;-1:-1:-1;;;;;27506:6:0;;::::1;27486:85;::::0;::::1;22089:74:1::0;22211:10;27521:12:0::1;22199:23:1::0;22179:18;;;22172:51;22271:18;27543:15:0::1;22259:31:1::0;22239:18;;;22232:59;7000:1:0::1;22307:18:1::0;;;22300:45;27486:9:0;;;::::1;;::::0;:19:::1;::::0;22061::1;;27486:85:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;27482:101:::0;27593:14:::1;:21:::0;;-1:-1:-1;;27593:21:0::1;27610:4;27593:21;::::0;;27193:429::o;13747:165::-;13825:4;13842:40;13852:10;13864:9;13875:6;13842:9;:40::i;:::-;-1:-1:-1;13900:4:0;;13747:165;-1:-1:-1;;;13747:165:0:o;20673:284::-;9872:6;;-1:-1:-1;;;;;9872:6:0;9882:10;9872:20;9864:50;;;;-1:-1:-1;;;9864:50:0;;12756:2:1;9864:50:0;;;12738:21:1;12795:2;12775:18;;;12768:30;-1:-1:-1;;;12814:18:1;;;12807:47;12871:18;;9864:50:0;12554:341:1;9864:50:0;20777:7:::1;:29:::0;;::::1;20861:27:::0;;::::1;::::0;::::1;::::0;20817:33;;::::1;::::0;::::1;::::0;;;;20777:29;;::::1;20817:33:::0;;;;;;;::::1;20861:27;;::::0;;20880:8;20915:23:::1;20839:11:::0;20797:9;20915:23:::1;:::i;:::-;:34;;;;:::i;:::-;20899:7;:50:::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;20673:284:0:o;18953:170::-;9872:6;;-1:-1:-1;;;;;9872:6:0;9882:10;9872:20;9864:50;;;;-1:-1:-1;;;9864:50:0;;12756:2:1;9864:50:0;;;12738:21:1;12795:2;12775:18;;;12768:30;-1:-1:-1;;;12814:18:1;;;12807:47;12871:18;;9864:50:0;12554:341:1;9864:50:0;19060:9:::1;::::0;:55:::1;::::0;;;;22565:14:1;;22558:22;19060:55:0::1;::::0;::::1;22540:41:1::0;22624:14;;22617:22;22597:18;;;22590:50;22683:14;;22676:22;22656:18;;;22649:50;19060:9:0;;;::::1;-1:-1:-1::0;;;;;19060:9:0::1;::::0;:24:::1;::::0;22513:18:1;;19060:55:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18953:170:::0;;;:::o;18578:118::-;9872:6;;-1:-1:-1;;;;;9872:6:0;9882:10;9872:20;9864:50;;;;-1:-1:-1;;;9864:50:0;;12756:2:1;9864:50:0;;;12738:21:1;12795:2;12775:18;;;12768:30;-1:-1:-1;;;12814:18:1;;;12807:47;12871:18;;9864:50:0;12554:341:1;9864:50:0;18652:9:::1;::::0;:36:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;18652:36:0::1;::::0;::::1;160:74:1::0;18652:9:0;;;::::1;::::0;;::::1;::::0;:27:::1;::::0;133:18:1;;18652:36:0::1;14:226:1::0;22956:164:0;9872:6;;-1:-1:-1;;;;;9872:6:0;9882:10;9872:20;9864:50;;;;-1:-1:-1;;;9864:50:0;;12756:2:1;9864:50:0;;;12738:21:1;12795:2;12775:18;;;12768:30;-1:-1:-1;;;12814:18:1;;;12807:47;12871:18;;9864:50:0;12554:341:1;9864:50:0;23032:19:::1;:29:::0;;;::::1;;;;-1:-1:-1::0;;23032:29:0;;::::1;;::::0;;23077:35:::1;::::0;::::1;::::0;::::1;::::0;23054:7;4043:14:1;4036:22;4018:41;;4006:2;3991:18;;3878:187;23077:35:0::1;;;;;;;;22956:164:::0;:::o;28201:482::-;28356:8;:15;28337:8;:15;:34;:72;;;;;28394:8;:15;28375:8;:15;:34;28337:72;28329:106;;;;-1:-1:-1;;;28329:106:0;;17983:2:1;28329:106:0;;;17965:21:1;18022:2;18002:18;;;17995:30;18061:23;18041:18;;;18034:51;18102:18;;28329:106:0;17781:345:1;28329:106:0;28451:7;28446:230;28468:8;:15;28464:1;:19;;;28446:230;;;28564:8;28573:1;28564:11;;;;;;;;;;:::i;:::-;;;;;;;28549:8;28558:1;28549:11;;;;;;;;;;:::i;:::-;;;;;;;7000:1;7062:2;:13;;;;:::i;:::-;7045:30;;6833:23;7045:30;:::i;:::-;28539:21;;;;:::i;:::-;28538:37;;;;:::i;:::-;28513:21;28523:10;28513:9;:21::i;:::-;:62;;28505:71;;;;;;28591:73;28601:10;28613:8;28622:1;28613:11;;;;;;;;;;:::i;:::-;;;;;;;28652:8;28661:1;28652:11;;;;;;;;;;:::i;:::-;;;;;;;28637:8;28646:1;28637:11;;;;;;;;;;:::i;:::-;;;;;;;7000:1;7062:2;:13;;;;:::i;:::-;7045:30;;6833:23;7045:30;:::i;:::-;28627:21;;;;:::i;:::-;28626:37;;;;:::i;28591:73::-;-1:-1:-1;28485:3:0;;;;:::i;:::-;;;;28446:230;;;;28201:482;;;:::o;14899:540::-;9872:6;;-1:-1:-1;;;;;9872:6:0;9882:10;9872:20;9864:50;;;;-1:-1:-1;;;9864:50:0;;12756:2:1;9864:50:0;;;12738:21:1;12795:2;12775:18;;;12768:30;-1:-1:-1;;;12814:18:1;;;12807:47;12871:18;;9864:50:0;12554:341:1;9864:50:0;14968:20:::1;15001:9;14968:43;;15022:16;15052:10;-1:-1:-1::0;;;;;15052:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15041:40:0::1;;15090:4;15097:10;-1:-1:-1::0;;;;;15097:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15041:74;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;23219:15:1;;;15041:74:0::1;::::0;::::1;23201:34:1::0;23271:15;;23251:18;;;23244:43;23113:18;;15041:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15022:93:::0;-1:-1:-1;;;;;;15130:22:0;::::1;15126:200;;15189:10;-1:-1:-1::0;;;;;15189:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15178:43:0::1;;15230:4;15237:10;-1:-1:-1::0;;;;;15237:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15178:77;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;23219:15:1;;;15178:77:0::1;::::0;::::1;23201:34:1::0;23271:15;;23251:18;;;23244:43;23113:18;;15178:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15169:6;:86:::0;;-1:-1:-1;;15169:86:0::1;-1:-1:-1::0;;;;;15169:86:0;;;::::1;::::0;;;::::1;::::0;;15126:200:::1;;;15297:6;:17:::0;;-1:-1:-1;;15297:17:0::1;-1:-1:-1::0;;;;;15297:17:0;::::1;;::::0;;15126:200:::1;15336:9;:22:::0;;-1:-1:-1;;15336:22:0::1;-1:-1:-1::0;;;;;15336:22:0;::::1;::::0;;::::1;::::0;;;15369:62:::1;::::0;15386:4:::1;::::0;-1:-1:-1;;15369:8:0::1;:62::i;27630:182::-:0;9872:6;;-1:-1:-1;;;;;9872:6:0;9882:10;9872:20;9864:50;;;;-1:-1:-1;;;9864:50:0;;12756:2:1;9864:50:0;;;12738:21:1;12795:2;12775:18;;;12768:30;-1:-1:-1;;;12814:18:1;;;12807:47;12871:18;;9864:50:0;12554:341:1;9864:50:0;27697:16:::1;::::0;::::1;::::0;::::1;;;27696:17;27688:58;;;::::0;-1:-1:-1;;;27688:58:0;;23500:2:1;27688:58:0::1;::::0;::::1;23482:21:1::0;23539:2;23519:18;;;23512:30;23578;23558:18;;;23551:58;23626:18;;27688:58:0::1;23298:352:1::0;27688:58:0::1;27765:6;::::0;;27757:47:::1;::::0;-1:-1:-1;;;;;27765:6:0;;::::1;::::0;27782:21:::1;27757:47:::0;::::1;;;::::0;27782:21;;27757:47;27765:6;27757:47;27782:21;27765:6;27757:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;27630:182::o:0;18245:145::-;9872:6;;-1:-1:-1;;;;;9872:6:0;9882:10;9872:20;9864:50;;;;-1:-1:-1;;;9864:50:0;;12756:2:1;9864:50:0;;;12738:21:1;12795:2;12775:18;;;12768:30;-1:-1:-1;;;12814:18:1;;;12807:47;12871:18;;9864:50:0;12554:341:1;9864:50:0;18335:9:::1;::::0;:47:::1;::::0;;;;-1:-1:-1;;;;;20689:55:1;;;18335:47:0::1;::::0;::::1;20671:74:1::0;20788:14;;20781:22;20761:18;;;20754:50;18335:9:0;;;::::1;::::0;;::::1;::::0;:29:::1;::::0;20644:18:1;;18335:47:0::1;20503:307:1::0;18704:125:0;18789:9;;:32;;;;;-1:-1:-1;;;;;178:55:1;;;18789:32:0;;;160:74:1;18765:4:0;;18789:9;;;;;:23;;133:18:1;;18789:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14087:309::-;-1:-1:-1;;;;;14181:20:0;;14173:52;;;;-1:-1:-1;;;14173:52:0;;24107:2:1;14173:52:0;;;24089:21:1;24146:2;24126:18;;;24119:30;24185:21;24165:18;;;24158:49;24224:18;;14173:52:0;23905:343:1;14173:52:0;-1:-1:-1;;;;;14244:21:0;;14236:53;;;;-1:-1:-1;;;14236:53:0;;24107:2:1;14236:53:0;;;24089:21:1;24146:2;24126:18;;;24119:30;24185:21;24165:18;;;24158:49;24224:18;;14236:53:0;23905:343:1;14236:53:0;-1:-1:-1;;;;;14302:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;14355:33;;391:25:1;;;14355:33:0;;364:18:1;14355:33:0;;;;;;;14087:309;;;:::o;32536:818::-;32616:7;;32578;;;7062:13;7000:1;7062:2;:13;:::i;:::-;7045:30;;6833:23;7045:30;:::i;:::-;32685:6;;-1:-1:-1;;;;;32685:6:0;32673:19;;;;:11;:19;;;;;;32634:25;;-1:-1:-1;32673:19:0;;32670:217;;;32721:6;;-1:-1:-1;;;;;32721:6:0;32713:15;;;;:7;:15;;;;;;:25;-1:-1:-1;32713:25:0;:54;;-1:-1:-1;32750:6:0;;-1:-1:-1;;;;;32750:6:0;32742:15;;;;:7;:15;;;;;;:25;-1:-1:-1;32713:54:0;32709:84;;;7062:13;7000:1;7062:2;:13;:::i;:::-;7045:30;;6833:23;7045:30;:::i;:::-;32776:7;;:17;;;;:::i;:::-;32769:24;;;;32536:818;:::o;32709:84::-;32827:6;;-1:-1:-1;;;;;32827:6:0;32819:15;;;;:7;:15;;;;;;32808:26;;;;:::i;:::-;32868:6;;-1:-1:-1;;;;;32868:6:0;32860:15;;;;:7;:15;;;;;;32808:26;;-1:-1:-1;32849:26:0;;;;:::i;:::-;;;32670:217;32900:9;:16;:20;32897:347;;32942:7;32937:296;32959:9;:16;32955:20;;;;32937:296;;;33029:7;33005;:21;33013:9;33023:1;33013:12;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33013:12:0;33005:21;;;;;;;;;;;;;:31;;:66;;;33064:7;33040;:21;33048:9;33058:1;33048:12;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33048:12:0;33040:21;;;;;;;;;;;;;:31;33005:66;33001:96;;;7062:13;7000:1;7062:2;:13;:::i;:::-;7045:30;;6833:23;7045:30;:::i;:::-;33080:7;;:17;;;;:::i;:::-;33073:24;;;;;32536:818;:::o;33001:96::-;33136:7;:21;33144:9;33154:1;33144:12;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33144:12:0;33136:21;;;;;;;;;;;;;33126:31;;:7;:31;:::i;:::-;33116:41;;33196:7;:21;33204:9;33214:1;33204:12;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33204:12:0;33196:21;;;;;;;;;;;;;33186:31;;:7;:31;:::i;:::-;33176:41;-1:-1:-1;32977:3:0;;;;:::i;:::-;;;;32937:296;;;;32897:347;7062:13;7000:1;7062:2;:13;:::i;:::-;7045:30;;6833:23;7045:30;:::i;:::-;33268:7;;:17;;;;:::i;:::-;33258:7;:27;33254:57;;;7062:13;7000:1;7062:2;:13;:::i;33254:57::-;33329:17;33339:7;33329;:17;:::i;23493:1818::-;23572:4;-1:-1:-1;;;;;23597:18:0;;23589:68;;;;-1:-1:-1;;;23589:68:0;;24455:2:1;23589:68:0;;;24437:21:1;24494:2;24474:18;;;24467:30;24533:34;24513:18;;;24506:62;24604:7;24584:18;;;24577:35;24629:19;;23589:68:0;24253:401:1;23589:68:0;-1:-1:-1;;;;;23676:16:0;;23668:64;;;;-1:-1:-1;;;23668:64:0;;24861:2:1;23668:64:0;;;24843:21:1;24900:2;24880:18;;;24873:30;24939:34;24919:18;;;24912:62;25010:5;24990:18;;;24983:33;25033:19;;23668:64:0;24659:399:1;23668:64:0;23760:1;23751:6;:10;23743:64;;;;-1:-1:-1;;;23743:64:0;;25265:2:1;23743:64:0;;;25247:21:1;25304:2;25284:18;;;25277:30;25343:34;25323:18;;;25316:62;25414:11;25394:18;;;25387:39;25443:19;;23743:64:0;25063:405:1;23743:64:0;23821:20;23832:4;23838:2;23821:10;:20::i;:::-;23818:665;;;23862:14;;;;23858:89;;23897:34;;-1:-1:-1;;;23897:34:0;;25675:2:1;23897:34:0;;;25657:21:1;25714:2;25694:18;;;25687:30;25753:26;25733:18;;;25726:54;25797:18;;23897:34:0;25473:348:1;23858:89:0;-1:-1:-1;;;;;23964:13:0;;;;;;:7;:13;;;;;;;;;:28;;-1:-1:-1;;;;;;23981:11:0;;;;;;:7;:11;;;;;;;;23964:28;23961:248;;;-1:-1:-1;;;;;24017:27:0;;;;;;:21;:27;;;;;;;;24016:28;:58;;;;-1:-1:-1;;;;;;24049:25:0;;;;;;:21;:25;;;;;;;;24048:26;24016:58;24012:182;;;24117:12;;24107:6;:22;;24099:75;;;;-1:-1:-1;;;24099:75:0;;26028:2:1;24099:75:0;;;26010:21:1;26067:2;26047:18;;;26040:30;26106:34;26086:18;;;26079:62;26177:10;26157:18;;;26150:38;26205:19;;24099:75:0;25826:404:1;24099:75:0;24240:9;;-1:-1:-1;;;;;24226:24:0;;;24240:9;;24226:24;;;;:40;;-1:-1:-1;;;;;;24255:11:0;;;;;;:7;:11;;;;;;;;24254:12;24226:40;24223:249;;;-1:-1:-1;;;;;24292:25:0;;;;;;:21;:25;;;;;;;;24287:170;;24376:14;;24366:6;24350:13;24360:2;24350:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;24342:95;;;;-1:-1:-1;;;24342:95:0;;26437:2:1;24342:95:0;;;26419:21:1;26476:2;26456:18;;;26449:30;26515:34;26495:18;;;26488:62;26586:12;26566:18;;;26559:40;26616:19;;24342:95:0;26235:406:1;24342:95:0;-1:-1:-1;;;;;24528:25:0;;24495:12;24528:25;;;:19;:25;;;;;;24510:4;;24528:25;;;:52;;-1:-1:-1;;;;;;24557:23:0;;;;;;:19;:23;;;;;;;;24528:52;24525:98;;;-1:-1:-1;24606:5:0;24525:98;-1:-1:-1;;;;;24639:11:0;;;;;;:7;:11;;;;;;;;24635:606;;;24672:6;;;;24671:7;:47;;;;-1:-1:-1;24699:19:0;;;;;;;24671:47;24667:557;;;24788:15;24768:17;;24757:8;;:28;;;;:::i;:::-;:46;24753:456;;;24828:28;24859:24;24877:4;24859:9;:24::i;:::-;24828:55;;24934:13;;24910:20;:37;24906:284;;25003:10;;24979:20;:34;24976:77;;-1:-1:-1;25040:10:0;;24976:77;25079:34;25092:20;25079:12;:34::i;:::-;25151:15;25140:8;:26;24906:284;24805:404;24753:456;25259:44;25277:4;25283:2;25287:6;25295:7;25259:17;:44::i;:::-;25252:51;23493:1818;-1:-1:-1;;;;;23493:1818:0:o;23128:357::-;23196:4;23228:6;;-1:-1:-1;;;;;23220:14:0;;;23228:6;;23220:14;;;;:43;;-1:-1:-1;23257:6:0;;-1:-1:-1;;;;;23251:12:0;;;23257:6;;23251:12;;23220:43;:79;;;;-1:-1:-1;23293:6:0;;-1:-1:-1;;;;;23293:6:0;23280:9;:19;;23220:79;:118;;;;-1:-1:-1;;;;;;23317:21:0;;;;;;:17;:21;;;;;;;;23316:22;23220:118;:159;;;;-1:-1:-1;;;;;;23356:23:0;;;;;;:17;:23;;;;;;;;23355:24;23220:159;:186;;;;-1:-1:-1;;;;;;23396:10:0;;8536:42;23396:10;;23220:186;:219;;;;-1:-1:-1;;;;;;23423:16:0;;;;23220:219;:257;;;;-1:-1:-1;;;;;;23456:21:0;;23472:4;23456:21;;23213:264;23128:357;-1:-1:-1;;;23128:357:0:o;25319:1350::-;9766:6;:13;;-1:-1:-1;;9766:13:0;9775:4;9766:13;;;25402:30:::1;::::0;;::::1;::::0;::::1;::::0;;25425:7:::1;25402:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;;::::1;::::0;;;;;;25443:56:::1;;25481:7;;;25443:56;25534:4;25514:26;::::0;;;:11:::1;:26;::::0;;;;;;;25549:9:::1;::::0;-1:-1:-1;;;;;25549:9:0::1;25514:46:::0;;;;;;;;-1:-1:-1;;25514:67:0::1;25511:165;;25618:4;25598:26;::::0;;;:11:::1;:26;::::0;;;;;;;25633:9:::1;::::0;-1:-1:-1;;;;;25633:9:0::1;25598:46:::0;;;;;;;-1:-1:-1;;25598:66:0;;25511:165:::1;25712:16;::::0;;25726:1:::1;25712:16:::0;;;;;::::1;::::0;;25688:21:::1;::::0;25712:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;25712:16:0::1;25688:40;;25757:4;25739;25744:1;25739:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25739:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;25783:9:::1;::::0;:16:::1;::::0;;;;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;25739:7;;25783:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25773:4;25778:1;25773:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25773:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;25812:9:::1;::::0;:199:::1;::::0;;;;:9;::::1;::::0;:60:::1;::::0;:199:::1;::::0;25887:20;;25812:9:::1;::::0;25938:4;;25965::::1;::::0;25985:15:::1;::::0;25812:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26024:18;26045:21;26024:42;;26077:26;26142:6;:12;;;26106:48;;26120:6;:18;;;26107:31;;:10;:31;;;;:::i;:::-;26106:48;;;;:::i;:::-;26077:77;;26165:23;26224:6;:12;;;26191:45;;26205:6;:15;;;26192:28;;:10;:28;;;;:::i;:::-;26191:45;;;;:::i;:::-;26165:71:::0;-1:-1:-1;26247:24:0::1;26288:36;26306:18:::0;26165:71;26288:36:::1;:::i;:::-;26274:51;::::0;:10;:51:::1;:::i;:::-;26340:18;::::0;::::1;::::0;26247:78;;-1:-1:-1;26340:22:0::1;;::::0;26336:107:::1;;26379:23:::0;;:52:::1;::::0;-1:-1:-1;;;;;26379:23:0;;::::1;::::0;:52;::::1;;;::::0;26412:18;;26379:23:::1;:52:::0;:23;:52;26412:18;26379:23;:52;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;26336:107;26457:15;::::0;::::1;::::0;:19:::1;;::::0;26453:98:::1;;26493:20:::0;;:46:::1;::::0;-1:-1:-1;;;;;26493:20:0;;::::1;::::0;:46;::::1;;;::::0;26523:15;;26493:20:::1;:46:::0;:20;:46;26523:15;26493:20;:46;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;26453:98;26565:16:::0;;:20:::1;;::::0;26561:101:::1;;26602:11;:21:::0;:48:::1;::::0;-1:-1:-1;;;;;26602:21:0;;::::1;::::0;:48;::::1;;;::::0;26633:16;;26602:21:::1;:48:::0;:21;:48;26633:16;26602:21;:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;26561:101;25391:1278;;;;;;9790:1;-1:-1:-1::0;9802:6:0;:14;;-1:-1:-1;;9802:14:0;;;25319:1350::o;28948:939::-;29071:16;;29049:4;;29071:16;;;;;29066:221;;29104:28;29123:4;29129:2;29104:18;:28::i;:::-;29152:16;;;;;;;29151:17;:41;;;;;29172:20;29183:4;29189:2;29172:10;:20::i;:::-;29147:129;;;29213:47;;-1:-1:-1;;;29213:47:0;;27458:2:1;29213:47:0;;;27440:21:1;27497:2;27477:18;;;27470:30;27536:34;27516:18;;;27509:62;27607:7;27587:18;;;27580:35;27632:19;;29213:47:0;27256:401:1;29147:129:0;29299:25;29327:38;29338:4;29344:2;29348:7;29357;29327:10;:38::i;:::-;29410:14;;;;-1:-1:-1;;;;;29394:13:0;;;;;;:7;:13;;;;;;29299:66;;-1:-1:-1;29394:30:0;;;:::i;:::-;-1:-1:-1;;;;;29378:13:0;;;;;;;:7;:13;;;;;;:46;;;;29463:22;;;;29449:11;;;;;;;;;;:36;;29463:22;29449:36;:::i;:::-;-1:-1:-1;;;;;29435:11:0;;;;;;;:7;:11;;;;;;;;:50;;;;29502:17;;;;;:11;:17;;;;;;;29498:89;;;-1:-1:-1;;;;;29552:13:0;;;;;;:7;:13;;;;;;:23;;29568:7;;29552:23;:::i;:::-;-1:-1:-1;;;;;29536:13:0;;;;;;:7;:13;;;;;:39;29498:89;-1:-1:-1;;;;;29601:15:0;;;;;;:11;:15;;;;;;;;29597:100;;;29661:22;;-1:-1:-1;;;;;29647:11:0;;29661:22;29647:11;;;:7;:11;;;;;;:36;;29661:22;29647:36;:::i;:::-;-1:-1:-1;;;;;29633:11:0;;;;;;:7;:11;;;;;:50;29597:100;29727:1;29713:6;:11;;;:15;:34;;;;29746:1;29732:6;:11;;;:15;29713:34;29709:89;;;29775:6;:11;;;29764:7;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;29709:89:0;29830:2;-1:-1:-1;;;;;29815:42:0;29824:4;-1:-1:-1;;;;;29815:42:0;;29834:6;:22;;;29815:42;;;;391:25:1;;379:2;364:18;;245:177;29815:42:0;;;;;;;;-1:-1:-1;29875:4:0;;28948:939;-1:-1:-1;;;;;28948:939:0:o;26677:508::-;26759:16;;;;;;;26758:17;26750:65;;;;-1:-1:-1;;;26750:65:0;;27864:2:1;26750:65:0;;;27846:21:1;27903:2;27883:18;;;27876:30;27942:34;27922:18;;;27915:62;28013:5;27993:18;;;27986:33;28036:19;;26750:65:0;27662:399:1;26750:65:0;26831:20;26842:4;26848:2;26831:10;:20::i;:::-;26830:21;:37;;;;-1:-1:-1;26861:6:0;;-1:-1:-1;;;;;26855:12:0;;;26861:6;;26855:12;26830:37;26826:352;;;-1:-1:-1;;;;;26884:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;26884:30:0;26910:4;26884:30;;;26929:16;:23;;-1:-1:-1;;26929:23:0;26884:30;26929:23;;;;;26978:9;;;;26967:107;;27022:9;:36;;;;27052:4;27022:36;;;;;26967:107;27088:19;:26;;-1:-1:-1;;27088:26:0;;;;;27134:32;;-1:-1:-1;4018:41:1;;27134:32:0;;4006:2:1;3991:18;27134:32:0;;;;;;;26677:508;;:::o;29895:2633::-;29989:18;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29989:18:0;30020:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30020:25:0;30077:10;:8;:10::i;:::-;30056:18;;;:31;;;30117:28;;:7;:28;:::i;:::-;30100:14;;;:45;30162:20;30173:4;30179:2;30162:10;:20::i;:::-;30158:315;;;30230:9;;:38;;;;;-1:-1:-1;;;;;28347:15:1;;;30230:38:0;;;28329:34:1;28399:15;;;28379:18;;;28372:43;28431:18;;;28424:34;;;30199:12:0;;30230:9;;;;;:19;;28241:18:1;;30230:38:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;30230:38:0;;;;;;;;-1:-1:-1;;30230:38:0;;;;;;;;;;;;:::i;:::-;;;30226:164;;30366:8;;;30226:164;30319:5;-1:-1:-1;30410:7:0;30406:56;;30438:8;;;30406:56;30184:289;30158:315;30488:7;30485:1302;;;-1:-1:-1;;;;;30672:11:0;;30512:22;30672:11;;;:7;:11;;;;;;30512:22;;;;8430:5;;30672:11;;30668:570;;;30721:10;:18;;;;;;-1:-1:-1;30820:20:0;;;;;;-1:-1:-1;30772:15:0;;;;;;-1:-1:-1;30668:570:0;;;-1:-1:-1;;;;;30866:13:0;;;;;;:7;:13;;;;;;;;30862:376;;;30917:9;:17;;;;;;-1:-1:-1;31014:19:0;;;;;;-1:-1:-1;30967:14:0;;;;;;-1:-1:-1;30862:376:0;;;31091:14;:22;;;;;;-1:-1:-1;31198:24:0;;;;;;-1:-1:-1;31146:19:0;;;;;;-1:-1:-1;30862:376:0;31297:7;31269:24;31279:14;31269:7;:24;:::i;:::-;31268:36;;;;:::i;:::-;31254:11;;;:50;31360:7;31335:21;31345:11;31335:7;:21;:::i;:::-;31334:33;;;;:::i;:::-;31319:12;;;:48;31423:7;31398:21;31408:11;31398:7;:21;:::i;:::-;31397:33;;;;:::i;:::-;31382:12;;;:48;;;31495:12;;;;31481:11;;;;:26;;31495:12;31481:26;:::i;:::-;:41;;;;:::i;:::-;31470:53;;:7;:53;:::i;:::-;31445:78;;31568:18;;;;31554:11;;;;:32;;31568:18;31554:32;:::i;:::-;31540:11;;;:46;-1:-1:-1;30485:1302:0;;-1:-1:-1;;;30485:1302:0;;31633:1;31619:11;;;:15;;;31649:12;;;:16;;;31680:12;;;:16;;;31711:32;;;31760:11;;;:15;30485:1302;31803:12;;;;:16;31799:289;;31877:6;:18;;;31862:6;:12;;;:33;;;;:::i;:::-;31852:4;31836:22;;;;:7;:22;;;;;:59;;:22;;;:59;;;;;:::i;:::-;;;;-1:-1:-1;;31933:4:0;31913:26;;;;:11;:26;;;;;;;;31910:104;;;31986:12;;;;;31976:4;31960:22;;;;:7;:22;;;;;:38;;31986:12;;31960:22;;:38;;31986:12;;31960:38;:::i;:::-;;;;-1:-1:-1;;31910:104:0;32056:4;-1:-1:-1;;;;;32033:43:0;32042:4;-1:-1:-1;;;;;32033:43:0;;32063:6;:12;;;32033:43;;;;391:25:1;;379:2;364:18;;245:177;32033:43:0;;;;;;;;31799:289;32104:12;;;;:16;32100:253;;32169:6;:18;;;32154:6;:12;;;:33;;;;:::i;:::-;8536:42;32137:13;;;;:7;:13;;;:50;;:13;;;:50;;;;;:::i;:::-;;;;-1:-1:-1;;8536:42:0;32205:17;;:11;:17;;;;;;32202:86;;;32260:12;;;;8536:42;32243:13;;;;:7;:13;;;:29;;:13;;;:29;;32260:12;;32243:29;:::i;:::-;;;;-1:-1:-1;;32202:86:0;8536:42;-1:-1:-1;;;;;32307:34:0;32316:4;-1:-1:-1;;;;;32307:34:0;;32328:6;:12;;;32307:34;;;;391:25:1;;379:2;364:18;;245:177;32307:34:0;;;;;;;;32100:253;32476:6;:18;;;32461:6;:12;;;:33;;;;:::i;:::-;32438:6;:18;;;32423:6;:12;;;:33;;;;:::i;:::-;32408:6;:11;;;:49;;;;:::i;:::-;:87;;;;:::i;:::-;32390:6;:14;;;:106;;;;:::i;:::-;32365:22;;;:131;:22;29895:2633;-1:-1:-1;;;;;29895:2633:0:o;427:184:1:-;479:77;476:1;469:88;576:4;573:1;566:15;600:4;597:1;590:15;616:334;687:2;681:9;743:2;733:13;;-1:-1:-1;;729:86:1;717:99;;846:18;831:34;;867:22;;;828:62;825:88;;;893:18;;:::i;:::-;929:2;922:22;616:334;;-1:-1:-1;616:334:1:o;955:183::-;1015:4;1048:18;1040:6;1037:30;1034:56;;;1070:18;;:::i;:::-;-1:-1:-1;1115:1:1;1111:14;1127:4;1107:25;;955:183::o;1143:154::-;-1:-1:-1;;;;;1222:5:1;1218:54;1211:5;1208:65;1198:93;;1287:1;1284;1277:12;1302:737;1356:5;1409:3;1402:4;1394:6;1390:17;1386:27;1376:55;;1427:1;1424;1417:12;1376:55;1463:6;1450:20;1489:4;1513:60;1529:43;1569:2;1529:43;:::i;:::-;1513:60;:::i;:::-;1607:15;;;1693:1;1689:10;;;;1677:23;;1673:32;;;1638:12;;;;1717:15;;;1714:35;;;1745:1;1742;1735:12;1714:35;1781:2;1773:6;1769:15;1793:217;1809:6;1804:3;1801:15;1793:217;;;1889:3;1876:17;1906:31;1931:5;1906:31;:::i;:::-;1950:18;;1988:12;;;;1826;;1793:217;;;-1:-1:-1;2028:5:1;1302:737;-1:-1:-1;;;;;;1302:737:1:o;2044:118::-;2130:5;2123:13;2116:21;2109:5;2106:32;2096:60;;2152:1;2149;2142:12;2167:477;2257:6;2265;2318:2;2306:9;2297:7;2293:23;2289:32;2286:52;;;2334:1;2331;2324:12;2286:52;2374:9;2361:23;2407:18;2399:6;2396:30;2393:50;;;2439:1;2436;2429:12;2393:50;2462:61;2515:7;2506:6;2495:9;2491:22;2462:61;:::i;:::-;2452:71;;;2573:2;2562:9;2558:18;2545:32;2586:28;2608:5;2586:28;:::i;:::-;2633:5;2623:15;;;2167:477;;;;;:::o;2649:656::-;2761:4;2790:2;2819;2808:9;2801:21;2851:6;2845:13;2894:6;2889:2;2878:9;2874:18;2867:34;2919:1;2929:140;2943:6;2940:1;2937:13;2929:140;;;3038:14;;;3034:23;;3028:30;3004:17;;;3023:2;3000:26;2993:66;2958:10;;2929:140;;;3087:6;3084:1;3081:13;3078:91;;;3157:1;3152:2;3143:6;3132:9;3128:22;3124:31;3117:42;3078:91;-1:-1:-1;3221:2:1;3209:15;-1:-1:-1;;3205:88:1;3190:104;;;;3296:2;3186:113;;2649:656;-1:-1:-1;;;2649:656:1:o;3558:315::-;3626:6;3634;3687:2;3675:9;3666:7;3662:23;3658:32;3655:52;;;3703:1;3700;3693:12;3655:52;3742:9;3729:23;3761:31;3786:5;3761:31;:::i;:::-;3811:5;3863:2;3848:18;;;;3835:32;;-1:-1:-1;;;3558:315:1:o;4070:382::-;4135:6;4143;4196:2;4184:9;4175:7;4171:23;4167:32;4164:52;;;4212:1;4209;4202:12;4164:52;4251:9;4238:23;4270:31;4295:5;4270:31;:::i;:::-;4320:5;-1:-1:-1;4377:2:1;4362:18;;4349:32;4390:30;4349:32;4390:30;:::i;4457:456::-;4534:6;4542;4550;4603:2;4591:9;4582:7;4578:23;4574:32;4571:52;;;4619:1;4616;4609:12;4571:52;4658:9;4645:23;4677:31;4702:5;4677:31;:::i;:::-;4727:5;-1:-1:-1;4784:2:1;4769:18;;4756:32;4797:33;4756:32;4797:33;:::i;:::-;4457:456;;4849:7;;-1:-1:-1;;;4903:2:1;4888:18;;;;4875:32;;4457:456::o;4918:248::-;4986:6;4994;5047:2;5035:9;5026:7;5022:23;5018:32;5015:52;;;5063:1;5060;5053:12;5015:52;-1:-1:-1;;5086:23:1;;;5156:2;5141:18;;;5128:32;;-1:-1:-1;4918:248:1:o;5171:662::-;5225:5;5278:3;5271:4;5263:6;5259:17;5255:27;5245:55;;5296:1;5293;5286:12;5245:55;5332:6;5319:20;5358:4;5382:60;5398:43;5438:2;5398:43;:::i;5382:60::-;5476:15;;;5562:1;5558:10;;;;5546:23;;5542:32;;;5507:12;;;;5586:15;;;5583:35;;;5614:1;5611;5604:12;5583:35;5650:2;5642:6;5638:15;5662:142;5678:6;5673:3;5670:15;5662:142;;;5744:17;;5732:30;;5782:12;;;;5695;;5662:142;;5838:595;5956:6;5964;6017:2;6005:9;5996:7;5992:23;5988:32;5985:52;;;6033:1;6030;6023:12;5985:52;6073:9;6060:23;6102:18;6143:2;6135:6;6132:14;6129:34;;;6159:1;6156;6149:12;6129:34;6182:61;6235:7;6226:6;6215:9;6211:22;6182:61;:::i;:::-;6172:71;;6296:2;6285:9;6281:18;6268:32;6252:48;;6325:2;6315:8;6312:16;6309:36;;;6341:1;6338;6331:12;6309:36;;6364:63;6419:7;6408:8;6397:9;6393:24;6364:63;:::i;:::-;6354:73;;;5838:595;;;;;:::o;6438:159::-;6505:20;;6565:6;6554:18;;6544:29;;6534:57;;6587:1;6584;6577:12;6534:57;6438:159;;;:::o;6602:474::-;6692:6;6700;6708;6716;6724;6777:3;6765:9;6756:7;6752:23;6748:33;6745:53;;;6794:1;6791;6784:12;6745:53;6817:28;6835:9;6817:28;:::i;:::-;6807:38;;6864:37;6897:2;6886:9;6882:18;6864:37;:::i;:::-;6854:47;;6920:37;6953:2;6942:9;6938:18;6920:37;:::i;:::-;6910:47;;6976:37;7009:2;6998:9;6994:18;6976:37;:::i;:::-;6966:47;;7032:38;7065:3;7054:9;7050:19;7032:38;:::i;:::-;7022:48;;6602:474;;;;;;;;:::o;7081:180::-;7140:6;7193:2;7181:9;7172:7;7168:23;7164:32;7161:52;;;7209:1;7206;7199:12;7161:52;-1:-1:-1;7232:23:1;;7081:180;-1:-1:-1;7081:180:1:o;7455:247::-;7514:6;7567:2;7555:9;7546:7;7542:23;7538:32;7535:52;;;7583:1;7580;7573:12;7535:52;7622:9;7609:23;7641:31;7666:5;7641:31;:::i;7707:454::-;7802:6;7810;7818;7826;7834;7887:3;7875:9;7866:7;7862:23;7858:33;7855:53;;;7904:1;7901;7894:12;7855:53;-1:-1:-1;;7927:23:1;;;7997:2;7982:18;;7969:32;;-1:-1:-1;8048:2:1;8033:18;;8020:32;;8099:2;8084:18;;8071:32;;-1:-1:-1;8150:3:1;8135:19;8122:33;;-1:-1:-1;7707:454:1;-1:-1:-1;7707:454:1:o;8166:553::-;8267:6;8275;8283;8336:2;8324:9;8315:7;8311:23;8307:32;8304:52;;;8352:1;8349;8342:12;8304:52;8391:9;8378:23;8410:31;8435:5;8410:31;:::i;:::-;8460:5;-1:-1:-1;8517:2:1;8502:18;;8489:32;8530:33;8489:32;8530:33;:::i;:::-;8582:7;-1:-1:-1;8641:2:1;8626:18;;8613:32;8654:33;8613:32;8654:33;:::i;:::-;8706:7;8696:17;;;8166:553;;;;;:::o;9331:328::-;9405:6;9413;9421;9474:2;9462:9;9453:7;9449:23;9445:32;9442:52;;;9490:1;9487;9480:12;9442:52;9513:28;9531:9;9513:28;:::i;:::-;9503:38;;9560:37;9593:2;9582:9;9578:18;9560:37;:::i;:::-;9550:47;;9616:37;9649:2;9638:9;9634:18;9616:37;:::i;:::-;9606:47;;9331:328;;;;;:::o;9664:511::-;9732:6;9740;9748;9801:2;9789:9;9780:7;9776:23;9772:32;9769:52;;;9817:1;9814;9807:12;9769:52;9856:9;9843:23;9875:28;9897:5;9875:28;:::i;:::-;9922:5;-1:-1:-1;9979:2:1;9964:18;;9951:32;9992:30;9951:32;9992:30;:::i;:::-;10041:7;-1:-1:-1;10100:2:1;10085:18;;10072:32;10113:30;10072:32;10113:30;:::i;10180:241::-;10236:6;10289:2;10277:9;10268:7;10264:23;10260:32;10257:52;;;10305:1;10302;10295:12;10257:52;10344:9;10331:23;10363:28;10385:5;10363:28;:::i;10875:388::-;10943:6;10951;11004:2;10992:9;10983:7;10979:23;10975:32;10972:52;;;11020:1;11017;11010:12;10972:52;11059:9;11046:23;11078:31;11103:5;11078:31;:::i;:::-;11128:5;-1:-1:-1;11185:2:1;11170:18;;11157:32;11198:33;11157:32;11198:33;:::i;11268:821::-;11420:6;11428;11436;11489:2;11477:9;11468:7;11464:23;11460:32;11457:52;;;11505:1;11502;11495:12;11457:52;11545:9;11532:23;11574:18;11615:2;11607:6;11604:14;11601:34;;;11631:1;11628;11621:12;11601:34;11654:61;11707:7;11698:6;11687:9;11683:22;11654:61;:::i;:::-;11644:71;;11768:2;11757:9;11753:18;11740:32;11724:48;;11797:2;11787:8;11784:16;11781:36;;;11813:1;11810;11803:12;11781:36;11836:63;11891:7;11880:8;11869:9;11865:24;11836:63;:::i;:::-;11826:73;;11952:2;11941:9;11937:18;11924:32;11908:48;;11981:2;11971:8;11968:16;11965:36;;;11997:1;11994;11987:12;11965:36;;12020:63;12075:7;12064:8;12053:9;12049:24;12020:63;:::i;:::-;12010:73;;;11268:821;;;;;:::o;12900:484::-;12953:3;12991:5;12985:12;13018:6;13013:3;13006:19;13044:4;13073:2;13068:3;13064:12;13057:19;;13110:2;13103:5;13099:14;13131:1;13141:218;13155:6;13152:1;13149:13;13141:218;;;13220:13;;-1:-1:-1;;;;;13216:62:1;13204:75;;13299:12;;;;13334:15;;;;13177:1;13170:9;13141:218;;;-1:-1:-1;13375:3:1;;12900:484;-1:-1:-1;;;;;12900:484:1:o;13389:342::-;13590:2;13579:9;13572:21;13553:4;13610:56;13662:2;13651:9;13647:18;13639:6;13610:56;:::i;:::-;13602:64;;13716:6;13709:14;13702:22;13697:2;13686:9;13682:18;13675:50;13389:342;;;;;:::o;13736:184::-;13788:77;13785:1;13778:88;13885:4;13882:1;13875:15;13909:4;13906:1;13899:15;13925:482;14014:1;14057:5;14014:1;14071:330;14092:7;14082:8;14079:21;14071:330;;;14211:4;-1:-1:-1;;14139:77:1;14133:4;14130:87;14127:113;;;14220:18;;:::i;:::-;14270:7;14260:8;14256:22;14253:55;;;14290:16;;;;14253:55;14369:22;;;;14329:15;;;;14071:330;;;14075:3;13925:482;;;;;:::o;14412:866::-;14461:5;14491:8;14481:80;;-1:-1:-1;14532:1:1;14546:5;;14481:80;14580:4;14570:76;;-1:-1:-1;14617:1:1;14631:5;;14570:76;14662:4;14680:1;14675:59;;;;14748:1;14743:130;;;;14655:218;;14675:59;14705:1;14696:10;;14719:5;;;14743:130;14780:3;14770:8;14767:17;14764:43;;;14787:18;;:::i;:::-;-1:-1:-1;;14843:1:1;14829:16;;14858:5;;14655:218;;14957:2;14947:8;14944:16;14938:3;14932:4;14929:13;14925:36;14919:2;14909:8;14906:16;14901:2;14895:4;14892:12;14888:35;14885:77;14882:159;;;-1:-1:-1;14994:19:1;;;15026:5;;14882:159;15073:34;15098:8;15092:4;15073:34;:::i;:::-;15203:6;-1:-1:-1;;15131:79:1;15122:7;15119:92;15116:118;;;15214:18;;:::i;:::-;15252:20;;14412:866;-1:-1:-1;;;14412:866:1:o;15283:140::-;15341:5;15370:47;15411:4;15401:8;15397:19;15391:4;15370:47;:::i;15428:274::-;15468:1;15494;15484:189;;15529:77;15526:1;15519:88;15630:4;15627:1;15620:15;15658:4;15655:1;15648:15;15484:189;-1:-1:-1;15687:9:1;;15428:274::o;16421:228::-;16461:7;16587:1;-1:-1:-1;;16515:74:1;16512:1;16509:81;16504:1;16497:9;16490:17;16486:105;16483:131;;;16594:18;;:::i;:::-;-1:-1:-1;16634:9:1;;16421:228::o;16654:184::-;16706:77;16703:1;16696:88;16803:4;16800:1;16793:15;16827:4;16824:1;16817:15;16843:184;16895:77;16892:1;16885:88;16992:4;16989:1;16982:15;17016:4;17013:1;17006:15;17032:125;17072:4;17100:1;17097;17094:8;17091:34;;;17105:18;;:::i;:::-;-1:-1:-1;17142:9:1;;17032:125::o;17162:195::-;17201:3;-1:-1:-1;;17225:5:1;17222:77;17219:103;;;17302:18;;:::i;:::-;-1:-1:-1;17349:1:1;17338:13;;17162:195::o;18131:175::-;18168:3;18212:4;18205:5;18201:16;18241:4;18232:7;18229:17;18226:43;;;18249:18;;:::i;:::-;18298:1;18285:15;;18131:175;-1:-1:-1;;18131:175:1:o;18311:224::-;18350:3;18378:6;18411:2;18408:1;18404:10;18441:2;18438:1;18434:10;18472:3;18468:2;18464:12;18459:3;18456:21;18453:47;;;18480:18;;:::i;:::-;18516:13;;18311:224;-1:-1:-1;;;;18311:224:1:o;18540:217::-;18579:4;18608:6;18664:10;;;;18634;;18686:12;;;18683:38;;;18701:18;;:::i;:::-;18738:13;;18540:217;-1:-1:-1;;;18540:217:1:o;18762:128::-;18802:3;18833:1;18829:6;18826:1;18823:13;18820:39;;;18839:18;;:::i;:::-;-1:-1:-1;18875:9:1;;18762:128::o;22710:251::-;22780:6;22833:2;22821:9;22812:7;22808:23;22804:32;22801:52;;;22849:1;22846;22839:12;22801:52;22881:9;22875:16;22900:31;22925:5;22900:31;:::i;23655:245::-;23722:6;23775:2;23763:9;23754:7;23750:23;23746:32;23743:52;;;23791:1;23788;23781:12;23743:52;23823:9;23817:16;23842:28;23864:5;23842:28;:::i;26646:605::-;26945:6;26934:9;26927:25;26988:6;26983:2;26972:9;26968:18;26961:34;27031:3;27026:2;27015:9;27011:18;27004:31;26908:4;27052:57;27104:3;27093:9;27089:19;27081:6;27052:57;:::i;:::-;-1:-1:-1;;;;;27145:55:1;;;;27140:2;27125:18;;27118:83;-1:-1:-1;27232:3:1;27217:19;27210:35;27044:65;26646:605;-1:-1:-1;;;26646:605:1:o
Swarm Source
ipfs://70a6cf15fcc647bb1f44739079f8cb68381afe0dd80d3029567359e763c00517
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.