ERC-20
Overview
Max Total Supply
1,000,000,000,000 OKAMI
Holders
198
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.829782109 OKAMIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
OkamiInu
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-06-12 */ /** ▓▓▓▓▓▓ ▓▓▓▓▓▓ ████████████ ████████████ ██████▓▓██████░░ ░░██████▓▓██████ ████░░ ████████ ████████ ░░████ ████ ▒▒██████▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░ ▓▓██████▒▒ ████ ████ ██ ████████████████████████████████████████████████ ██ ████ ████ ████ ██▒▒████████████████████████████████████████▒▒██ ████ ████ ████ ████████▒▒▒▒██████▒▒▒▒▒▒████████████▒▒▒▒▒▒██████▒▒▒▒████████ ████ ████████████████▒▒▒▒▒▒▒▒▒▒▒▒██▒▒▒▒████████▒▒▒▒██▒▒▒▒▒▒▒▒▒▒▒▒████████████████ ████▒▒▒▒██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓████████▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██████▒▒▒▒████ ████▒▒▒▒▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒████████████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▒▒▒▒████ ████▓▓▒▒▒▒▒▒▒▒▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓████████████▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▒▒▒▒▒▒▒▒▓▓████ ████████▒▒████▒▒▒▒▒▒▒▒▒▒████████████████████████████▒▒▒▒▒▒▒▒▒▒████▒▒████████ ░░██████▓▓██▒▒▒▒▒▒▒▒▓▓▓▓████████████████████████████▓▓▓▓▒▒▒▒▒▒▒▒██▓▓██████ ██████████▒▒▒▒▒▒▒▒██▒▒▒▒▒▒▒▒▒▒████████████████▒▒▒▒▒▒▒▒▒▒██▒▒▒▒▒▒▒▒██████████ ██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒████████████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██████ ██████▒▒▒▒▒▒▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒████████████▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▒▒▒▒▒▒▒▒██████ ▓▓████▒▒▒▒▒▒▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒████████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▒▒▒▒▒▒████▓▓ ████▒▒▒▒▒▒▓▓██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒████████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██▓▓▒▒▒▒▒▒████ ░░████▒▒▒▒▓▓████▒▒▒▒▒▒░░░░░░░░▒▒░░▒▒████████▒▒░░▒▒░░░░░░░░▒▒▒▒▒▒████▓▓▒▒▒▒████▓▓ ██████▒▒▒▒████▒▒▒▒▒▒▒▒ ▒▒████████▒▒ ▒▒▒▒▒▒▓▓████▒▒▒▒██████ ░░████▒▒▒▒▒▒████▒▒▒▒░░ ▓▓▓▓▓▓▓▓▒▒ ████████ ▓▓▓▓▓▓▓▓▓▓ ░░▒▒▒▒████▒▒▒▒▒▒██████ ██████▒▒▒▒▒▒████▒▒▒▒ ██████████▒▒ ████████ ▒▒██████████ ▒▒▒▒████▒▒▒▒▒▒██████ ██████▒▒▒▒▒▒████▓▓▒▒ ░░▒▒████▓▓▓▓██ ████████ ██▒▒▓▓████▒▒░░ ▒▒▓▓████▒▒▒▒▒▒██████ ████████▒▒▒▒████████ ████████ ████████ ████████ ████████▒▒▒▒████████ ██████▒▒▒▒▒▒██████░░ ░░░░████ ████████ ████░░░░ ░░██████▒▒▒▒▒▒██████░░ ████████▒▒▒▒▒▒████████ ██ ████████ ██ ████████▒▒▒▒▒▒████████ ████████████████████████ ██ ████████ ██ ████████████████████████ ██████████████████▒▒████▓▓ ██ ████ ██ ▓▓████▒▒██████████████████ ██ ████████▒▒████▒▒▒▒██████ ████████ ██████▒▒▒▒████▒▒████████ ██ ██████▓▓▒▒████▒▒▒▒████ ████ ████▒▒▒▒████▒▒▓▓██████ ████████▓▓████▒▒▒▒████ ░░████░░ ████▒▒▒▒████▓▓████████ ████████████████▒▒████ ████ ████▒▒████████████████ ██ ██████████████ ██████████████ ██ ▓▓ ██████████████ ▓▓▓▓▓▓▓▓▓▓▓▓ ██████████████ ▓▓ ██ ████████ ████████████ ████████ ██ ▓▓ ██████ ██▒▒████▒▒██ ██████ ▓▓ ████████ ████████ ████████ ██████▓▓ ░░░░░░░░ ▓▓██████░░ ████████████████████████ ████████████████████ ░░░░████████████░░ https://t.me/OkamiInu https://twitter.com/OkamiInuCoin https://www.okamiinucoin.com/ */ // SPDX-License-Identifier: MIT pragma solidity 0.8.19; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;} function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;} function mul(uint256 a, uint256 b) internal pure returns (uint256) {return a * b;} function div(uint256 a, uint256 b) internal pure returns (uint256) {return a / b;} function mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;} function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked {uint256 c = a + b; if(c < a) return(false, 0); return(true, c);}} function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked {if(b > a) return(false, 0); return(true, a - b);}} function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked {if (a == 0) return(true, 0); uint256 c = a * b; if(c / a != b) return(false, 0); return(true, c);}} function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked {if(b == 0) return(false, 0); return(true, a / b);}} function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked {if(b == 0) return(false, 0); return(true, a % b);}} function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked{require(b <= a, errorMessage); return a - b;}} function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked{require(b > 0, errorMessage); return a / b;}} function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked{require(b > 0, errorMessage); return a % b;}}} interface IERC20 { function totalSupply() external view returns (uint256); function circulatingSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value);} abstract contract Ownable { address internal owner; constructor(address _owner) {owner = _owner;} modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;} function isOwner(address account) public view returns (bool) {return account == owner;} function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);} event OwnershipTransferred(address owner); } interface AIVolumizer { function tokenVolumeTransaction(address _contract) external; function tokenManualVolumeTransaction(address _contract, uint256 maxAmount, uint256 volumePercentage) external; function setTokenMaxVolumeAmount(address _contract, uint256 maxAmount) external; function setTokenMaxVolumePercent(address _contract, uint256 volumePercentage, uint256 denominator) external; function rescueHubERC20(address token, address receiver, uint256 amount) external; function tokenVaryETHVolumeTransaction(address _contract, uint256 amountAdd, address receiver, bool send) external; function viewProjectTokenParameters(address _contract) external view returns (uint256, uint256, uint256); function veiwVolumeStats(address _contract) external view returns (uint256 totalPurchased, uint256 totalETH, uint256 totalVolume, uint256 lastTXAmount, uint256 lastTXTime); function viewLastVolumeBlock(address _contract) external view returns (uint256); function viewTotalTokenPurchased(address _contract) external view returns (uint256); function viewTotalETHPurchased(address _contract) external view returns (uint256); function viewLastETHPurchased(address _contract) external view returns (uint256); function viewLastTokensPurchased(address _contract) external view returns (uint256); function viewTotalTokenVolume(address _contract) external view returns (uint256); function viewLastTokenVolume(address _contract) external view returns (uint256); function viewLastVolumeTimestamp(address _contract) external view returns (uint256); function viewNumberTokenVolumeTxs(address _contract) external view returns (uint256); function viewNumberETHVolumeTxs(address _contract) external view returns (uint256); } interface stakeIntegration { function stakingWithdraw(address depositor, uint256 _amount) external; function stakingDeposit(address depositor, uint256 _amount) external; function stakingClaimToCompound(address sender, address recipient) external; } interface tokenStaking { function deposit(uint256 amount) external; function withdraw(uint256 amount) external; function compound() external; } interface IFactory{ function createPair(address tokenA, address tokenB) external returns (address pair); function getPair(address tokenA, address tokenB) external view returns (address pair); } interface IRouter { 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 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; } contract OkamiInu is IERC20, tokenStaking, Ownable { using SafeMath for uint256; string private constant _name = 'Okami Inu'; string private constant _symbol = 'OKAMI'; uint8 private constant _decimals = 9; uint256 private _totalSupply = 1000000000000 * (10 ** _decimals); uint256 public _maxTxAmount = ( _totalSupply * 100 ) / 10000; uint256 public _maxWalletToken = ( _totalSupply * 100 ) / 10000; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping(address => bool) public isFeeExempt; IRouter router; address public pair; uint256 private liquidityFee = 0; uint256 private marketingFee = 400; uint256 private developmentFee = 1000; uint256 private buybackFee = 400; uint256 private tairyoFee = 100; uint256 private volumeFee = 100; uint256 private stakingFee = 0; uint256 private totalFee = 2000; uint256 private sellFee = 6000; uint256 private transferFee = 6000; uint256 private denominator = 10000; bool private swapEnabled = true; bool private tradingAllowed = false; bool public volumeToken = true; bool private volumeTx; uint256 public txGas = 500000; uint256 public swapVolumeTimes; uint256 private swapTimes; bool private swapping; uint256 private swapVolumeAmount = 3; uint256 private swapAmount = 1; uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000; uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000; uint256 private minVolumeTokenAmount = ( _totalSupply * 10 ) / 100000; modifier lockTheSwap {swapping = true; _; swapping = false;} mapping(address => bool) public isDevAllowed; mapping(address => bool) public cexPair; mapping(address => uint256) public amountStaked; uint256 public totalStaked; bool public manualVolumeAllowed = false; stakeIntegration internal stakingContract; AIVolumizer volumizer; bool public buybackSend; bool public stakedVolume = true; uint256 public buybackAddAmount; uint256 public amountTokensFunded; uint256 public amountETHBuyback; address internal constant DEAD = 0x000000000000000000000000000000000000dEaD; address internal development_receiver = 0x71bB329B978D99A13236f8776a9c5F8C1895d113; address internal marketing_receiver = 0xCF5A4FF2918D186c19F47242B7fd0D92AbdAE289; address internal liquidity_receiver = 0x71bB329B978D99A13236f8776a9c5F8C1895d113; address internal staking_receiver = 0x71bB329B978D99A13236f8776a9c5F8C1895d113; address internal buyback_receiver = 0x71bB329B978D99A13236f8776a9c5F8C1895d113; address internal tairyo_receiver = 0x063541d35981c74F72bE5bd3a0Fafe1b824A1cbb; constructor() Ownable(msg.sender) { IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); volumizer = AIVolumizer(0xE818B4aFf32625ca4620623Ac4AEccf7CBccc260); address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH()); buybackAddAmount = uint256(50000000000000000); router = _router; pair = _pair; isDevAllowed[msg.sender] = true; isFeeExempt[address(this)] = true; isFeeExempt[liquidity_receiver] = true; isFeeExempt[marketing_receiver] = true; isFeeExempt[development_receiver] = true; isFeeExempt[address(DEAD)] = true; isFeeExempt[msg.sender] = true; isFeeExempt[address(volumizer)] = true; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable {} function name() public pure returns (string memory) {return _name;} function symbol() public pure returns (string memory) {return _symbol;} function decimals() public pure returns (uint8) {return _decimals;} function getOwner() external view override returns (address) { return owner; } function totalSupply() public view override returns (uint256) {return _totalSupply;} function balanceOf(address account) public view override returns (uint256) {return _balances[account];} function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;} function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];} function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;} function availableBalance(address wallet) public view returns (uint256) {return _balances[wallet].sub(amountStaked[wallet]);} function circulatingSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));} function preTxCheck(address sender, address recipient, uint256 amount) internal view { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount <= balanceOf(sender),"ERC20: below available balance threshold"); } function _transfer(address sender, address recipient, uint256 amount) private { preTxCheck(sender, recipient, amount); checkTradingAllowed(sender, recipient); checkTxLimit(sender, recipient, amount); checkMaxWallet(sender, recipient, amount); swapbackCounters(sender, recipient, amount); swapBack(sender, recipient); swapVolume(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount); uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); emit Transfer(sender, recipient, amountReceived); } function checkTradingAllowed(address sender, address recipient) internal view { if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "ERC20: Trading is not allowed");} } function checkMaxWallet(address sender, address recipient, uint256 amount) internal view { if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD) && !volumeTx){ require((_balances[recipient].add(amount)) <= _maxWalletToken, "ERC20: exceeds maximum wallet amount.");} } function swapbackCounters(address sender, address recipient, uint256 amount) internal { if((recipient == address(pair) || cexPair[recipient]) && !isFeeExempt[sender] && amount >= minTokenAmount && !swapping && !volumeTx){swapTimes += uint256(1);} } function checkTxLimit(address sender, address recipient, uint256 amount) internal view { if(amountStaked[sender] > uint256(0)){require((amount.add(amountStaked[sender])) <= _balances[sender], "ERC20: exceeds maximum allowed not currently staked.");} if(!volumeTx){require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "ERC20: tx limit exceeded");} } function swapAndLiquify(uint256 tokens) private lockTheSwap { uint256 _denominator = (totalFee).add(1).mul(2); uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator); uint256 toSwap = tokens.sub(tokensToAddLiquidityWith); uint256 initialBalance = address(this).balance; swapTokensForETH(toSwap); uint256 deltaBalance = address(this).balance.sub(initialBalance); uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee)); uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee); if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith, liquidity_receiver); } uint256 marketingAmount = unitBalance.mul(2).mul(marketingFee); if(marketingAmount > uint256(0)){payable(marketing_receiver).transfer(marketingAmount);} uint256 tairyoAmount = unitBalance.mul(2).mul(tairyoFee); if(tairyoAmount > uint256(0)){payable(address(tairyo_receiver)).transfer(tairyoAmount);} uint256 buybackAmount = unitBalance.mul(2).mul(buybackFee); if(buybackAmount > uint256(0)){amountETHBuyback = amountETHBuyback.add(buybackAmount);} uint256 eAmount = address(this).balance.sub(amountETHBuyback); if(eAmount > uint256(0)){payable(development_receiver).transfer(eAmount);} } function addLiquidity(uint256 tokenAmount, uint256 ETHAmount, address receiver) private { _approve(address(this), address(router), tokenAmount); router.addLiquidityETH{value: ETHAmount}( address(this), tokenAmount, 0, 0, address(receiver), block.timestamp); } function swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp); } function shouldSwapBack(address sender, address recipient) internal view returns (bool) { bool aboveThreshold = balanceOf(address(this)) >= swapThreshold; bool isPair = (recipient == address(pair) || cexPair[recipient]); return !swapping && swapEnabled && tradingAllowed && !isFeeExempt[sender] && isPair && swapTimes >= swapAmount && aboveThreshold && !volumeTx; } function swapBack(address sender, address recipient) internal { if(shouldSwapBack(sender, recipient)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);} } function volumizing() external onlyOwner { tradingAllowed = true; } function _claimStakingDividends() external { stakingContract.stakingClaimToCompound(msg.sender, msg.sender); } function deposit(uint256 amount) override external { require(amount <= _balances[msg.sender].sub(amountStaked[msg.sender]), "ERC20: Cannot stake more than available balance"); stakingContract.stakingDeposit(msg.sender, amount); amountStaked[msg.sender] = amountStaked[msg.sender].add(amount); totalStaked = totalStaked.add(amount); if(stakedVolume){ volumeTx = true; volumizer.tokenVolumeTransaction{gas: txGas}(address(this)); volumeTx = false;} } function withdraw(uint256 amount) override external { require(amount <= amountStaked[msg.sender], "ERC20: Cannot unstake more than amount staked"); stakingContract.stakingWithdraw(msg.sender, amount); amountStaked[msg.sender] = amountStaked[msg.sender].sub(amount); totalStaked = totalStaked.sub(amount); if(stakedVolume){ volumeTx = true; volumizer.tokenVolumeTransaction{gas: txGas}(address(this)); volumeTx = false;} } function compound() override external { require(amountStaked[msg.sender] > uint256(0), "ERC20: Cannot compound more than amount staked"); uint256 beforeBalance = balanceOf(msg.sender); stakingContract.stakingClaimToCompound(msg.sender, msg.sender); uint256 afterBalance = balanceOf(msg.sender).sub(beforeBalance); stakingContract.stakingDeposit(msg.sender, afterBalance); amountStaked[msg.sender] = amountStaked[msg.sender].add(afterBalance); totalStaked = totalStaked.add(afterBalance); if(stakedVolume){ volumeTx = true; volumizer.tokenVolumeTransaction{gas: txGas}(address(this)); volumeTx = false;} } function setStakingAddress(address _staking) external onlyOwner { stakingContract = stakeIntegration(_staking); isFeeExempt[_staking] = true; } function setisCEXPair(address _pair, bool enable) external onlyOwner { cexPair[_pair] = enable; } function setStructure(uint256 _liquidity, uint256 _marketing, uint256 _development, uint256 _tairyo, uint256 _volume, uint256 _buyback, uint256 _staking, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner { liquidityFee = _liquidity; marketingFee = _marketing; developmentFee = _development; volumeFee = _volume; tairyoFee = _tairyo; buybackFee = _buyback; stakingFee = _staking; totalFee = _total; sellFee = _sell; transferFee = _trans; require(totalFee <= denominator && sellFee <= denominator && transferFee <= denominator, "ERC20: invalid total entry%"); } function setInternalAddresses(address _marketing, address _liquidity, address _development, address _buyback, address _staking) external onlyOwner { marketing_receiver = _marketing; liquidity_receiver = _liquidity; development_receiver = _development; buyback_receiver = _buyback; staking_receiver = _staking; isFeeExempt[_marketing] = true; isFeeExempt[_liquidity] = true; isFeeExempt[_development] = true; isFeeExempt[_buyback] = true; isFeeExempt[_staking] = true; } function setisExempt(address _address, bool _enabled) external onlyOwner { isFeeExempt[_address] = _enabled; } function setSwapbackSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner { swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000)); minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000)); } function setParameters(uint256 _buy, uint256 _wallet) external onlyOwner { uint256 newTx = totalSupply().mul(_buy).div(uint256(10000)); uint256 newWallet = totalSupply().mul(_wallet).div(uint256(10000)); uint256 limit = totalSupply().mul(5).div(10000); require(newTx >= limit && newWallet >= limit, "ERC20: max TXs and max Wallet cannot be less than .5%"); _maxTxAmount = newTx; _maxWalletToken = newWallet; } function rescueERC20(address _address, uint256 _amount) external onlyOwner { IERC20(_address).transfer(development_receiver, _amount); } function toggleVolume(bool token, bool manual, bool staked) external onlyOwner { volumeToken = token; manualVolumeAllowed = manual; stakedVolume = staked; } function SetVolumeParameters(uint256 _volumePercentage, uint256 _maxAmount) external onlyOwner { uint256 newAmount = totalSupply().mul(_maxAmount).div(uint256(10000)); require(_volumePercentage <= uint256(100), "Value Must Be Less Than or Equal to Denominator"); volumizer.setTokenMaxVolumeAmount(address(this), newAmount); volumizer.setTokenMaxVolumePercent(address(this), _volumePercentage, uint256(100)); } function setminVolumeToken(uint256 amount) external onlyOwner { minVolumeTokenAmount = amount; } function setVolumeGasPerTx(uint256 gas) external onlyOwner { txGas = gas; } function setVolumizerContract(address _contract) external onlyOwner { volumizer = AIVolumizer(_contract); isFeeExempt[_contract] = true; } function UserFundVolumizerContract(uint256 amount) external { uint256 amountTokens = amount.mul(10 ** _decimals); IERC20(address(this)).transferFrom(msg.sender, address(volumizer), amountTokens); amountTokensFunded = amountTokensFunded.add(amountTokens); } function RescueVolumizerTokensPercent(uint256 percent) external onlyOwner { uint256 amount = IERC20(address(this)).balanceOf(address(volumizer)).mul(percent).div(denominator); volumizer.rescueHubERC20(address(this), msg.sender, amount); } function RescueVolumizerTokens(uint256 amount) external onlyOwner { uint256 tokenAmount = amount.mul(10 ** _decimals); volumizer.rescueHubERC20(address(this), msg.sender, tokenAmount); } function setVolumizerBuyback(uint256 _ethAdd, address receiver, bool tokenSend) external onlyOwner { buyback_receiver = receiver; buybackAddAmount = _ethAdd; buybackSend = tokenSend; } function swapVolume(address sender, address recipient, uint256 amount) internal { if(tradingAllowed && !isFeeExempt[sender] && (recipient == address(pair) || cexPair[recipient]) && amount >= minVolumeTokenAmount && !swapping && !volumeTx){swapVolumeTimes += uint256(1);} if(tradingAllowed && volumeToken && balanceOf(address(volumizer)) > uint256(0) && !isFeeExempt[sender] && (recipient == address(pair) || cexPair[recipient]) && !swapping && !volumeTx){ if(amountETHBuyback >= buybackAddAmount && address(this).balance >= buybackAddAmount && swapVolumeTimes >= swapVolumeAmount){ performVolumizerBuyback();} else{performVolumizer();}} } function performVolumizer() internal { volumeTx = true; try volumizer.tokenVolumeTransaction{gas: txGas}(address(this)) {} catch {} volumeTx = false; } function performVolumizerBuyback() internal { (bool sending,) = payable(address(volumizer)).call{value: buybackAddAmount}(""); sending = false; amountETHBuyback = amountETHBuyback.sub(buybackAddAmount); volumeTx = true; try volumizer.tokenVaryETHVolumeTransaction{gas: txGas}(address(this), buybackAddAmount, buyback_receiver, buybackSend) {} catch {} volumeTx = false; swapVolumeTimes = uint256(0); } function PerformVolumizer() external { require(manualVolumeAllowed); volumeTx = true; volumizer.tokenVolumeTransaction{gas: txGas}(address(this)); volumeTx = false; } function manualVolumizer(uint256 maxAmount, uint256 volumePercentage) external onlyOwner { uint256 newAmount = totalSupply().mul(maxAmount).div(uint256(10000)); volumeTx = true; volumizer.tokenManualVolumeTransaction{gas: txGas}(address(this), newAmount, volumePercentage); volumeTx = false; } function manualVolumizerBuybackContract(uint256 amountETH, address _receiver, bool send) external onlyOwner { require(amountETH <= amountETHBuyback && amountETH <= address(this).balance, "Balance Below Inputed Value"); payable(address(volumizer)).transfer(amountETH); amountETHBuyback = amountETHBuyback.sub(amountETH); volumeTx = true; try volumizer.tokenVaryETHVolumeTransaction{gas: txGas}(address(this), amountETH, _receiver, send) {} catch {} swapVolumeTimes = uint256(0); volumeTx = false; } function setETHBuybackAmount(uint256 amount) external onlyOwner { amountETHBuyback = amount; } function manualFundETHBuyback() external payable { amountETHBuyback = amountETHBuyback.add(msg.value); } function shouldTakeFee(address sender, address recipient) internal view returns (bool) { return !isFeeExempt[sender] && !isFeeExempt[recipient] && !volumeTx; } function getTotalFee(address sender, address recipient) internal view returns (uint256) { if((recipient == address(pair) || cexPair[recipient]) && sellFee > uint256(0)){return sellFee;} if((sender == address(pair) || cexPair[sender]) && totalFee > uint256(0)){return totalFee;} return transferFee; } function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) { if(getTotalFee(sender, recipient) > 0 && !volumeTx){ uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient)); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); if(volumeFee > uint256(0)){_transfer(address(this), address(volumizer), amount.div(denominator).mul(volumeFee));} if(stakingFee > uint256(0)){_transfer(address(this), address(staking_receiver), amount.div(denominator).mul(stakingFee));} return amount.sub(feeAmount);} return amount; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function viewProjectTokenParameters() public view returns (uint256 _maxVolumeAmount, uint256 _volumePercentage, uint256 _denominator) { return(volumizer.viewProjectTokenParameters(address(this))); } function veiwFullVolumeStats() external view returns (uint256 totalPurchased, uint256 totalETH, uint256 totalVolume, uint256 lastTXAmount, uint256 lastTXTime) { return(volumizer.viewTotalTokenPurchased(address(this)), volumizer.viewTotalETHPurchased(address(this)), volumizer.viewTotalTokenVolume(address(this)), volumizer.viewLastTokenVolume(address(this)), volumizer.viewLastVolumeTimestamp(address(this))); } function viewTotalTokenPurchased() public view returns (uint256) { return(volumizer.viewTotalTokenPurchased(address(this))); } function viewTotalETHPurchased() public view returns (uint256) { return(volumizer.viewTotalETHPurchased(address(this))); } function viewLastETHPurchased() public view returns (uint256) { return(volumizer.viewLastETHPurchased(address(this))); } function viewLastTokensPurchased() public view returns (uint256) { return(volumizer.viewLastTokensPurchased(address(this))); } function viewTotalTokenVolume() public view returns (uint256) { return(volumizer.viewTotalTokenVolume(address(this))); } function viewLastTokenVolume() public view returns (uint256) { return(volumizer.viewLastTokenVolume(address(this))); } function viewLastVolumeTimestamp() public view returns (uint256) { return(volumizer.viewLastVolumeTimestamp(address(this))); } function viewNumberTokenVolumeTxs() public view returns (uint256) { return(volumizer.viewNumberTokenVolumeTxs(address(this))); } function viewTokenBalanceVolumizer() public view returns (uint256) { return(IERC20(address(this)).balanceOf(address(volumizer))); } function viewLastVolumizerBlock() public view returns (uint256) { return(volumizer.viewLastVolumeBlock(address(this))); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","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":"PerformVolumizer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RescueVolumizerTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"RescueVolumizerTokensPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_volumePercentage","type":"uint256"},{"internalType":"uint256","name":"_maxAmount","type":"uint256"}],"name":"SetVolumeParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"UserFundVolumizerContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_claimStakingDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amountETHBuyback","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"amountStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amountTokensFunded","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"availableBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackAddAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackSend","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"cexPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"compound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDevAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualFundETHBuyback","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"manualVolumeAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxAmount","type":"uint256"},{"internalType":"uint256","name":"volumePercentage","type":"uint256"}],"name":"manualVolumizer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"bool","name":"send","type":"bool"}],"name":"manualVolumizerBuybackContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setETHBuybackAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_development","type":"address"},{"internalType":"address","name":"_buyback","type":"address"},{"internalType":"address","name":"_staking","type":"address"}],"name":"setInternalAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_staking","type":"address"}],"name":"setStakingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_tairyo","type":"uint256"},{"internalType":"uint256","name":"_volume","type":"uint256"},{"internalType":"uint256","name":"_buyback","type":"uint256"},{"internalType":"uint256","name":"_staking","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setVolumeGasPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_ethAdd","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"bool","name":"tokenSend","type":"bool"}],"name":"setVolumizerBuyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"setVolumizerContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setisCEXPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setminVolumeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakedVolume","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapVolumeTimes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"token","type":"bool"},{"internalType":"bool","name":"manual","type":"bool"},{"internalType":"bool","name":"staked","type":"bool"}],"name":"toggleVolume","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"txGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"veiwFullVolumeStats","outputs":[{"internalType":"uint256","name":"totalPurchased","type":"uint256"},{"internalType":"uint256","name":"totalETH","type":"uint256"},{"internalType":"uint256","name":"totalVolume","type":"uint256"},{"internalType":"uint256","name":"lastTXAmount","type":"uint256"},{"internalType":"uint256","name":"lastTXTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewLastETHPurchased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewLastTokenVolume","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewLastTokensPurchased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewLastVolumeTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewLastVolumizerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewNumberTokenVolumeTxs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewProjectTokenParameters","outputs":[{"internalType":"uint256","name":"_maxVolumeAmount","type":"uint256"},{"internalType":"uint256","name":"_volumePercentage","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewTokenBalanceVolumizer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewTotalETHPurchased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewTotalTokenPurchased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewTotalTokenVolume","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"volumeToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"volumizing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052620000126009600a620005db565b620000239064e8d4a51000620005f3565b60015561271060015460646200003a9190620005f3565b6200004691906200060d565b60025561271060015460646200005d9190620005f3565b6200006991906200060d565b600390815560006009819055610190600a8190556103e8600b819055600c919091556064600d819055600e55600f919091556107d060105561177060118190556012556127106013556014805462ffffff1916620100011790556207a1206015556019919091556001601a81905554620186a091620000e99190620005f3565b620000f591906200060d565b601b55620186a0600154600a6200010d9190620005f3565b6200011991906200060d565b601c55620186a0600154600a620001319190620005f3565b6200013d91906200060d565b601d556022805460ff191690556023805460ff60a81b1916600160a81b179055602780546001600160a01b03199081167371bb329b978d99a13236f8776a9c5f8c1895d11390811790925560288054821673cf5a4ff2918d186c19f47242b7fd0d92abdae28917905560298054821683179055602a8054821683179055602b80548216909217909155602c805490911673063541d35981c74f72be5bd3a0fafe1b824a1cbb179055348015620001f257600080fd5b50600080546001600160a01b0319908116331782556023805490911673e818b4aff32625ca4620623ac4aeccf7cbccc2601790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa1580156200027b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a1919062000630565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000315919062000630565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000389919062000630565b66b1a2bc2ec50000602455600780546001600160a01b038581166001600160a01b031992831617909255600880548484169216919091179055336000818152601e60209081526040808320805460ff1990811660019081179092553085526006845282852080548216831790556029548716855282852080548216831790556028548716855282852080548216831790556027548716855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805482168317905585855282852080548216831790556023549096168452818420805490961681179095559354838352600482528483208190559351938452939450909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350506200065b565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200051d578160001904821115620005015762000501620004c6565b808516156200050f57918102915b93841c9390800290620004e1565b509250929050565b6000826200053657506001620005d5565b816200054557506000620005d5565b81600181146200055e5760028114620005695762000589565b6001915050620005d5565b60ff8411156200057d576200057d620004c6565b50506001821b620005d5565b5060208310610133831016604e8410600b8410161715620005ae575081810a620005d5565b620005ba8383620004dc565b8060001904821115620005d157620005d1620004c6565b0290505b92915050565b6000620005ec60ff84168362000525565b9392505050565b8082028115828204841417620005d557620005d5620004c6565b6000826200062b57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200064357600080fd5b81516001600160a01b0381168114620005ec57600080fd5b613e00806200066b6000396000f3fe6080604052600436106104095760003560e01c806378002f8411610213578063a8aa1b3111610123578063cce32a46116100ab578063e94dd17c1161007a578063e94dd17c14610c12578063ef40a67014610c32578063f2fde38b14610c5e578063f4e0d9ac14610c7e578063f69e204614610c9e57600080fd5b8063cce32a4614610b67578063d100a8e114610b97578063dbf3693614610bb7578063dd62ed3e14610bcc57600080fd5b8063b2161bcd116100f2578063b2161bcd14610ad8578063b57dcc9114610aed578063b6b55f2514610b07578063b87fcd5814610b27578063c1cfe27e14610b4757600080fd5b8063a8aa1b3114610a6e578063a9059cbb14610a8e578063ad9d9e4c14610aae578063b15bf83714610ac357600080fd5b80638a91e0d9116101a657806395d89b411161017557806395d89b41146109ca578063979d5050146109f85780639fb05d3714610a0e578063a0821be314610a2e578063a18e781f14610a4e57600080fd5b80638a91e0d9146109555780638b3dc018146109755780638cd4426d146109955780639358928b146109b557600080fd5b8063800c5433116101e2578063800c5433146108d8578063817b1cd2146108ed578063884870c714610903578063893d20e81461092357600080fd5b806378002f841461087757806378109e541461088c57806378c7dcd6146108a25780637d1db4a5146108c257600080fd5b80632f54bf6e11610319578063489a581e116102a15780635cdbdd97116102705780635cdbdd97146107d2578063643a1ed8146107e75780636b0f0de21461080757806370a082311461083757806373ca05771461085757600080fd5b8063489a581e1461074b57806348ff2b8b1461076c5780634a5013921461078c5780635927c434146107bc57600080fd5b8063367471f6116102e8578063367471f6146106b15780633cf241e9146106c65780633d17e575146106e65780633e9cc841146106fb5780633f4218e01461071b57600080fd5b80632f54bf6e146106135780633095214814610642578063313ce5671461067f57806334eead481461069b57600080fd5b80631501a3b91161039c5780631e9522901161036b5780631e952290146105a05780631fadf020146105b657806323b872dd146105cb57806325a06a02146105eb5780632e1a7d4d146105f357600080fd5b80631501a3b91461054b57806318160ddd146105605780631ced7505146105755780631deff6551461058a57600080fd5b8063095ea7b3116103d8578063095ea7b3146104cb5780630acf3acc146104eb5780630cf273c81461050b5780630dc6e50e1461052b57600080fd5b806304077f621461041557806306fdde031461044b578063076b20d61461048657806307f74873146104a957600080fd5b3661041057005b600080fd5b34801561042157600080fd5b5060235461043690600160a81b900460ff1681565b60405190151581526020015b60405180910390f35b34801561045757600080fd5b506040805180820190915260098152684f6b616d6920496e7560b81b60208201525b60405161044291906137fe565b34801561049257600080fd5b5061049b610cb3565b604051908152602001610442565b3480156104b557600080fd5b506104c96104c436600461384c565b610d28565b005b3480156104d757600080fd5b506104366104e636600461387a565b610d60565b3480156104f757600080fd5b506104c961050636600461384c565b610d77565b34801561051757600080fd5b506104c96105263660046138b4565b610e22565b34801561053757600080fd5b506104c96105463660046138f6565b610e92565b34801561055757600080fd5b5061049b610f6c565b34801561056c57600080fd5b5060015461049b565b34801561058157600080fd5b5061049b610f9d565b34801561059657600080fd5b5061049b60265481565b3480156105ac57600080fd5b5061049b60165481565b3480156105c257600080fd5b5061049b610fce565b3480156105d757600080fd5b506104366105e636600461395e565b610fff565b6104c9611069565b3480156105ff57600080fd5b506104c961060e36600461384c565b61107b565b34801561061f57600080fd5b5061043661062e36600461399f565b6000546001600160a01b0391821691161490565b34801561064e57600080fd5b50610657611228565b604080519586526020860194909452928401919091526060830152608082015260a001610442565b34801561068b57600080fd5b5060405160098152602001610442565b3480156106a757600080fd5b5061049b60155481565b3480156106bd57600080fd5b5061049b61145e565b3480156106d257600080fd5b506104c96106e136600461384c565b61148f565b3480156106f257600080fd5b5061049b6114b9565b34801561070757600080fd5b506014546104369062010000900460ff1681565b34801561072757600080fd5b5061043661073636600461399f565b60066020526000908152604090205460ff1681565b34801561075757600080fd5b5060235461043690600160a01b900460ff1681565b34801561077857600080fd5b506104c96107873660046139bc565b6114ea565b34801561079857600080fd5b506104366107a736600461399f565b601e6020526000908152604090205460ff1681565b3480156107c857600080fd5b5061049b60245481565b3480156107de57600080fd5b5061049b61153f565b3480156107f357600080fd5b506104c961080236600461384c565b611570565b34801561081357600080fd5b5061043661082236600461399f565b601f6020526000908152604090205460ff1681565b34801561084357600080fd5b5061049b61085236600461399f565b611692565b34801561086357600080fd5b506104c96108723660046139f5565b6116ad565b34801561088357600080fd5b506104c961182b565b34801561089857600080fd5b5061049b60035481565b3480156108ae57600080fd5b506104c96108bd36600461384c565b6118be565b3480156108ce57600080fd5b5061049b60025481565b3480156108e457600080fd5b506104c96118ed565b3480156108f957600080fd5b5061049b60215481565b34801561090f57600080fd5b506104c961091e3660046139f5565b611928565b34801561092f57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610442565b34801561096157600080fd5b506104c96109703660046139f5565b611a20565b34801561098157600080fd5b506104c961099036600461399f565b611af7565b3480156109a157600080fd5b506104c96109b036600461387a565b611b5b565b3480156109c157600080fd5b5061049b611c01565b3480156109d657600080fd5b506040805180820190915260058152644f4b414d4960d81b6020820152610479565b348015610a0457600080fd5b5061049b60255481565b348015610a1a57600080fd5b506104c9610a29366004613a17565b611c2d565b348015610a3a57600080fd5b5061049b610a4936600461399f565b611d0a565b348015610a5a57600080fd5b506104c9610a693660046138b4565b611d35565b348015610a7a57600080fd5b5060085461093d906001600160a01b031681565b348015610a9a57600080fd5b50610436610aa936600461387a565b611ea5565b348015610aba57600080fd5b5061049b611eb2565b348015610acf57600080fd5b5061049b611ee3565b348015610ae457600080fd5b5061049b611f14565b348015610af957600080fd5b506022546104369060ff1681565b348015610b1357600080fd5b506104c9610b2236600461384c565b611f45565b348015610b3357600080fd5b506104c9610b423660046139bc565b61206d565b348015610b5357600080fd5b506104c9610b62366004613a88565b6120c2565b348015610b7357600080fd5b50610b7c612138565b60408051938452602084019290925290820152606001610442565b348015610ba357600080fd5b506104c9610bb236600461384c565b6121b4565b348015610bc357600080fd5b506104c96121ef565b348015610bd857600080fd5b5061049b610be7366004613ab8565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610c1e57600080fd5b506104c9610c2d366004613ae6565b612259565b348015610c3e57600080fd5b5061049b610c4d36600461399f565b602080526000908152604090205481565b348015610c6a57600080fd5b506104c9610c7936600461399f565b6122bf565b348015610c8a57600080fd5b506104c9610c9936600461399f565b61233d565b348015610caa57600080fd5b506104c96123a6565b6023546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a08231906024015b602060405180830381865afa158015610cff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d239190613b12565b905090565b6000546001600160a01b03163314610d5b5760405162461bcd60e51b8152600401610d5290613b2b565b60405180910390fd5b601555565b6000610d6d3384846125d8565b5060015b92915050565b6000610d8f610d886009600a613c45565b83906126fc565b6023546040516323b872dd60e01b81523360048201526001600160a01b0390911660248201526044810182905290915030906323b872dd906064016020604051808303816000875af1158015610de9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0d9190613c54565b50602554610e1b9082612708565b6025555050565b6000546001600160a01b03163314610e4c5760405162461bcd60e51b8152600401610d5290613b2b565b602b80546001600160a01b039093166001600160a01b03199093169290921790915560249190915560238054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610ebc5760405162461bcd60e51b8152600401610d5290613b2b565b60098a9055600a899055600b889055600e869055600d879055600c859055600f8490556010839055601182905560128190556013548311801590610f04575060135460115411155b8015610f14575060135460125411155b610f605760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e76616c696420746f74616c20656e7472792500000000006044820152606401610d52565b50505050505050505050565b60235460405163045f25d360e51b81523060048201526000916001600160a01b031690638be4ba6090602401610ce2565b60235460405163bffa330f60e01b81523060048201526000916001600160a01b03169063bffa330f90602401610ce2565b602354604051639c40846f60e01b81523060048201526000916001600160a01b031690639c40846f90602401610ce2565b600061100c848484612714565b61105e843361105985604051806060016040528060288152602001613da3602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190612845565b6125d8565b5060015b9392505050565b6026546110769034612708565b602655565b3360009081526020805260409020548111156110ef5760405162461bcd60e51b815260206004820152602d60248201527f45524332303a2043616e6e6f7420756e7374616b65206d6f7265207468616e2060448201526c185b5bdd5b9d081cdd185ad959609a1b6064820152608401610d52565b60225460405163d8a9bf2960e01b8152336004820152602481018390526101009091046001600160a01b03169063d8a9bf2990604401600060405180830381600087803b15801561113f57600080fd5b505af1158015611153573d6000803e3d6000fd5b50503360009081526020805260409020546111719250905082612871565b33600090815260208052604090205560215461118d9082612871565b602155602354600160a81b900460ff1615611225576014805463ff0000001916630100000017905560235460155460405163170864a160e11b81523060048201526001600160a01b0390921691632e10c9429190602401600060405180830381600088803b1580156111fe57600080fd5b5087f1158015611212573d6000803e3d6000fd5b50506014805463ff000000191690555050505b50565b6023546040516331fcaf6960e11b815230600482015260009182918291829182916001600160a01b0316906363f95ed290602401602060405180830381865afa158015611279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129d9190613b12565b602354604051633f8223f360e01b81523060048201526001600160a01b0390911690633f8223f390602401602060405180830381865afa1580156112e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113099190613b12565b60235460405163045f25d360e51b81523060048201526001600160a01b0390911690638be4ba6090602401602060405180830381865afa158015611351573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113759190613b12565b602354604051633255a03560e11b81523060048201526001600160a01b03909116906364ab406a90602401602060405180830381865afa1580156113bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e19190613b12565b60235460405163fea4456560e01b81523060048201526001600160a01b039091169063fea4456590602401602060405180830381865afa158015611429573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144d9190613b12565b945094509450945094509091929394565b6023546040516307df467b60e21b81523060048201526000916001600160a01b031690631f7d19ec90602401610ce2565b6000546001600160a01b031633146110765760405162461bcd60e51b8152600401610d5290613b2b565b6023546040516331fcaf6960e11b81523060048201526000916001600160a01b0316906363f95ed290602401610ce2565b6000546001600160a01b031633146115145760405162461bcd60e51b8152600401610d5290613b2b565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b602354604051631ea2804760e11b81523060048201526000916001600160a01b031690633d45008e90602401610ce2565b6000546001600160a01b0316331461159a5760405162461bcd60e51b8152600401610d5290613b2b565b6013546023546040516370a0823160e01b81526001600160a01b0390911660048201526000916116229161161c90859030906370a0823190602401602060405180830381865afa1580156115f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116169190613b12565b906126fc565b9061287d565b60235460405163360b0fcd60e01b8152306004820152336024820152604481018390529192506001600160a01b03169063360b0fcd906064015b600060405180830381600087803b15801561167657600080fd5b505af115801561168a573d6000803e3d6000fd5b505050505050565b6001600160a01b031660009081526004602052604090205490565b6000546001600160a01b031633146116d75760405162461bcd60e51b8152600401610d5290613b2b565b60006116ec61271061161c8461161660015490565b905060648311156117575760405162461bcd60e51b815260206004820152602f60248201527f56616c7565204d757374204265204c657373205468616e206f7220457175616c60448201526e103a37902232b737b6b4b730ba37b960891b6064820152608401610d52565b60235460405163e00e029f60e01b8152306004820152602481018390526001600160a01b039091169063e00e029f90604401600060405180830381600087803b1580156117a357600080fd5b505af11580156117b7573d6000803e3d6000fd5b5050602354604051637e31b16760e11b8152306004820152602481018790526064604482018190526001600160a01b03909216935063fc6362ce925001600060405180830381600087803b15801561180e57600080fd5b505af1158015611822573d6000803e3d6000fd5b50505050505050565b60225460ff1661183a57600080fd5b6014805463ff0000001916630100000017905560235460155460405163170864a160e11b81523060048201526001600160a01b0390921691632e10c9429190602401600060405180830381600088803b15801561189657600080fd5b5087f11580156118aa573d6000803e3d6000fd5b50506014805463ff00000019169055505050565b6000546001600160a01b031633146118e85760405162461bcd60e51b8152600401610d5290613b2b565b601d55565b6000546001600160a01b031633146119175760405162461bcd60e51b8152600401610d5290613b2b565b6014805461ff001916610100179055565b6000546001600160a01b031633146119525760405162461bcd60e51b8152600401610d5290613b2b565b600061196761271061161c8561161660015490565b9050600061197e61271061161c8561161660015490565b9050600061199661271061161c600561161660015490565b90508083101580156119a85750808210155b611a125760405162461bcd60e51b815260206004820152603560248201527f45524332303a206d61782054587320616e64206d61782057616c6c65742063616044820152746e6e6f74206265206c657373207468616e202e352560581b6064820152608401610d52565b506002919091556003555050565b6000546001600160a01b03163314611a4a5760405162461bcd60e51b8152600401610d5290613b2b565b6000611a5f61271061161c8561161660015490565b6014805463ff0000001916630100000017905560235460155460405163037cf82960e61b815230600482015260248101849052604481018690529293506001600160a01b039091169163df3e0a409190606401600060405180830381600088803b158015611acc57600080fd5b5087f1158015611ae0573d6000803e3d6000fd5b50506014805463ff00000019169055505050505050565b6000546001600160a01b03163314611b215760405162461bcd60e51b8152600401610d5290613b2b565b602380546001600160a01b039092166001600160a01b0319909216821790556000908152600660205260409020805460ff19166001179055565b6000546001600160a01b03163314611b855760405162461bcd60e51b8152600401610d5290613b2b565b60275460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015611bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfc9190613c54565b505050565b6000610d23611c106000611692565b611c27611c1e61dead611692565b60015490612871565b90612871565b6000546001600160a01b03163314611c575760405162461bcd60e51b8152600401610d5290613b2b565b602880546001600160a01b039687166001600160a01b0319918216811790925560298054968816968216871790556027805495881695821686179055602b805494881694821685179055602a80549390971692168217909555600094855260066020526040808620805460ff199081166001908117909255958752818720805487168217905593865280862080548616851790559185528185208054851684179055845290922080549091169091179055565b6001600160a01b038116600090815260208080526040808320546004909252822054610d7191612871565b6000546001600160a01b03163314611d5f5760405162461bcd60e51b8152600401610d5290613b2b565b6026548311158015611d715750478311155b611dbd5760405162461bcd60e51b815260206004820152601b60248201527f42616c616e63652042656c6f7720496e70757465642056616c756500000000006044820152606401610d52565b6023546040516001600160a01b039091169084156108fc029085906000818181858888f19350505050158015611df7573d6000803e3d6000fd5b50602654611e059084612871565b6026556014805463ff0000001916630100000017905560235460155460405163192f452760e31b8152306004820152602481018690526001600160a01b03858116604483015284151560648301529092169163c97a29389190608401600060405180830381600088803b158015611e7b57600080fd5b5087f193505050508015611e8d575060015b5050506000601655506014805463ff00000019169055565b6000610d6d338484612714565b602354604051633255a03560e11b81523060048201526000916001600160a01b0316906364ab406a90602401610ce2565b602354604051633f8223f360e01b81523060048201526000916001600160a01b031690633f8223f390602401610ce2565b60235460405163fea4456560e01b81523060048201526000916001600160a01b03169063fea4456590602401610ce2565b3360009081526020808052604080832054600490925290912054611f6891612871565b811115611fcf5760405162461bcd60e51b815260206004820152602f60248201527f45524332303a2043616e6e6f74207374616b65206d6f7265207468616e20617660448201526e61696c61626c652062616c616e636560881b6064820152608401610d52565b60225460405163773a0f0960e01b8152336004820152602481018390526101009091046001600160a01b03169063773a0f0990604401600060405180830381600087803b15801561201f57600080fd5b505af1158015612033573d6000803e3d6000fd5b50503360009081526020805260409020546120519250905082612708565b33600090815260208052604090205560215461118d9082612708565b6000546001600160a01b031633146120975760405162461bcd60e51b8152600401610d5290613b2b565b6001600160a01b03919091166000908152601f60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146120ec5760405162461bcd60e51b8152600401610d5290613b2b565b60148054931515620100000262ff000019909416939093179092556022805491151560ff1990921691909117905560238054911515600160a81b0260ff60a81b19909216919091179055565b6023546040516330800a4560e21b8152306004820152600091829182916001600160a01b03169063c200291490602401606060405180830381865afa158015612185573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a99190613c71565b925092509250909192565b6000546001600160a01b031633146121de5760405162461bcd60e51b8152600401610d5290613b2b565b6000611622610d886009600a613c45565b6022546040516334c5cbab60e11b8152336004820181905260248201526101009091046001600160a01b03169063698b975690604401600060405180830381600087803b15801561223f57600080fd5b505af1158015612253573d6000803e3d6000fd5b50505050565b6000546001600160a01b031633146122835760405162461bcd60e51b8152600401610d5290613b2b565b601a83905560015461229e90620186a09061161c90856126fc565b601b556001546122b790620186a09061161c90846126fc565b601c55505050565b6000546001600160a01b031633146122e95760405162461bcd60e51b8152600401610d5290613b2b565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b031633146123675760405162461bcd60e51b8152600401610d5290613b2b565b60228054610100600160a81b0319166101006001600160a01b03939093169283021790556000908152600660205260409020805460ff19166001179055565b3360009081526020805260409020546124185760405162461bcd60e51b815260206004820152602e60248201527f45524332303a2043616e6e6f7420636f6d706f756e64206d6f7265207468616e60448201526d08185b5bdd5b9d081cdd185ad95960921b6064820152608401610d52565b600061242333611692565b6022546040516334c5cbab60e11b81523360048201819052602482015291925061010090046001600160a01b03169063698b975690604401600060405180830381600087803b15801561247557600080fd5b505af1158015612489573d6000803e3d6000fd5b50505050600061249c82611c2733611692565b60225460405163773a0f0960e01b81523360048201526024810183905291925061010090046001600160a01b03169063773a0f0990604401600060405180830381600087803b1580156124ee57600080fd5b505af1158015612502573d6000803e3d6000fd5b50503360009081526020805260409020546125209250905082612708565b33600090815260208052604090205560215461253c9082612708565b602155602354600160a81b900460ff16156125d4576014805463ff0000001916630100000017905560235460155460405163170864a160e11b81523060048201526001600160a01b0390921691632e10c9429190602401600060405180830381600088803b1580156125ad57600080fd5b5087f11580156125c1573d6000803e3d6000fd5b50506014805463ff000000191690555050505b5050565b6001600160a01b03831661263a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d52565b6001600160a01b03821661269b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d52565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006110628284613c9f565b60006110628284613cb6565b61271f838383612889565b61272983836129b8565b612734838383612a56565b61273f838383612bb5565b61274a838383612cc5565b6127548383612d73565b61275f838383612d96565b6001600160a01b0383166000908152600460205260409020546127829082612871565b6001600160a01b0384166000908152600460205260408120919091556127a88484612f57565b6127b257816127bd565b6127bd848484612fb5565b6001600160a01b0384166000908152600460205260409020549091506127e39082612708565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906128379085815260200190565b60405180910390a350505050565b600081848411156128695760405162461bcd60e51b8152600401610d5291906137fe565b505050900390565b60006110628284613cc9565b60006110628284613cdc565b6001600160a01b0383166128ed5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d52565b6001600160a01b03821661294f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d52565b61295883611692565b811115611bfc5760405162461bcd60e51b815260206004820152602860248201527f45524332303a2062656c6f7720617661696c61626c652062616c616e636520746044820152671a1c995cda1bdb1960c21b6064820152608401610d52565b6001600160a01b03821660009081526006602052604090205460ff161580156129fa57506001600160a01b03811660009081526006602052604090205460ff16155b156125d457601454610100900460ff166125d45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f7420616c6c6f7765640000006044820152606401610d52565b6001600160a01b038316600090815260208052604090205415612b0c576001600160a01b03831660009081526004602090815260408083205491805290912054612aa1908390612708565b1115612b0c5760405162461bcd60e51b815260206004820152603460248201527f45524332303a2065786365656473206d6178696d756d20616c6c6f776564206e60448201527337ba1031bab93932b73a363c9039ba30b5b2b21760611b6064820152608401610d52565b6014546301000000900460ff16611bfc5760025481111580612b4657506001600160a01b03831660009081526006602052604090205460ff165b80612b6957506001600160a01b03821660009081526006602052604090205460ff165b611bfc5760405162461bcd60e51b815260206004820152601860248201527f45524332303a207478206c696d697420657863656564656400000000000000006044820152606401610d52565b6001600160a01b03831660009081526006602052604090205460ff16158015612bf757506001600160a01b03821660009081526006602052604090205460ff16155b8015612c1157506008546001600160a01b03838116911614155b8015612c2857506001600160a01b03821661dead14155b8015612c3e57506014546301000000900460ff16155b15611bfc576003546001600160a01b038316600090815260046020526040902054612c699083612708565b1115611bfc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2065786365656473206d6178696d756d2077616c6c657420616d60448201526437bab73a1760d91b6064820152608401610d52565b6008546001600160a01b0383811691161480612cf957506001600160a01b0382166000908152601f602052604090205460ff165b8015612d1e57506001600160a01b03831660009081526006602052604090205460ff16155b8015612d2c5750601c548110155b8015612d3b575060185460ff16155b8015612d5157506014546301000000900460ff16155b15611bfc57600160176000828254612d699190613cb6565b9091555050505050565b612d7d82826130f5565b156125d457612d8d601b546131d1565b60006017555050565b601454610100900460ff168015612dc657506001600160a01b03831660009081526006602052604090205460ff16155b8015612e0157506008546001600160a01b0383811691161480612e0157506001600160a01b0382166000908152601f602052604090205460ff165b8015612e0f5750601d548110155b8015612e1e575060185460ff16155b8015612e3457506014546301000000900460ff16155b15612e5257600160166000828254612e4c9190613cb6565b90915550505b601454610100900460ff168015612e71575060145462010000900460ff165b8015612e925750602354600090612e90906001600160a01b0316611692565b115b8015612eb757506001600160a01b03831660009081526006602052604090205460ff16155b8015612ef257506008546001600160a01b0383811691161480612ef257506001600160a01b0382166000908152601f602052604090205460ff165b8015612f01575060185460ff16155b8015612f1757506014546301000000900460ff16155b15611bfc5760245460265410158015612f3257506024544710155b8015612f42575060195460165410155b15612f4f57611bfc6133eb565b611bfc613504565b6001600160a01b03821660009081526006602052604081205460ff16158015612f9957506001600160a01b03821660009081526006602052604090205460ff16155b80156110625750506014546301000000900460ff161592915050565b600080612fc28585613582565b118015612fd957506014546301000000900460ff16155b156130ee576000612ffb612fed8686613582565b60135461161690869061287d565b306000908152600460205260409020549091506130189082612708565b30600081815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906130699085815260200190565b60405180910390a3600e54156130a957602354600e546013546130a99230926001600160a01b03909116916130a4919061161690899061287d565b612714565b600f54156130dc57602a54600f546013546130dc9230926001600160a01b03909116916130a4919061161690899061287d565b6130e68382612871565b915050611062565b5092915050565b600080601b5461310430611692565b60085491111591506000906001600160a01b038581169116148061314057506001600160a01b0384166000908152601f602052604090205460ff165b60185490915060ff16158015613158575060145460ff165b801561316b5750601454610100900460ff165b801561319057506001600160a01b03851660009081526006602052604090205460ff16155b80156131995750805b80156131a95750601a5460175410155b80156131b25750815b80156131c857506014546301000000900460ff16155b95945050505050565b6018805460ff191660019081179091556010546000916131f8916002916116169190612708565b905060006132158261161c600954866126fc90919063ffffffff16565b905060006132238483612871565b90504761322f8261362f565b600061323b4783612871565b9050600061325e6132576009548861287190919063ffffffff16565b839061287d565b90506000613277600954836126fc90919063ffffffff16565b905080156132985760295461329890879083906001600160a01b0316613753565b600a546000906132ad906116168560026126fc565b905080156132f1576028546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156132ef573d6000803e3d6000fd5b505b600d54600090613306906116168660026126fc565b9050801561334a57602c546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015613348573d6000803e3d6000fd5b505b600c5460009061335f906116168760026126fc565b90508015613378576026546133749082612708565b6026555b600061338f6026544761287190919063ffffffff16565b905080156133d3576027546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156133d1573d6000803e3d6000fd5b505b50506018805460ff1916905550505050505050505050565b6023546024546040516000926001600160a01b031691908381818185875af1925050503d806000811461343a576040519150601f19603f3d011682016040523d82523d6000602084013e61343f565b606091505b505060245460265460009350613456925090612871565b6026556014805463ff0000001916630100000017905560235460155460248054602b5460405163192f452760e31b8152306004820152928301919091526001600160a01b039081166044830152600160a01b840460ff16151560648301529092169163c97a29389190608401600060405180830381600088803b1580156134dc57600080fd5b5087f1935050505080156134ee575060015b50506014805463ff000000191690556000601655565b6014805463ff0000001916630100000017905560235460155460405163170864a160e11b81523060048201526001600160a01b0390921691632e10c9429190602401600060405180830381600088803b15801561356057600080fd5b5087f193505050508015613572575060015b506014805463ff00000019169055565b6008546000906001600160a01b03838116911614806135b957506001600160a01b0382166000908152601f602052604090205460ff165b80156135c757506000601154115b156135d55750601154610d71565b6008546001600160a01b038481169116148061360957506001600160a01b0383166000908152601f602052604090205460ff165b801561361757506000601054115b156136255750601054610d71565b5060125492915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061366457613664613cfe565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156136bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136e19190613d14565b816001815181106136f4576136f4613cfe565b6001600160a01b03928316602091820292909201015260075461371a91309116846125d8565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac9479061165c908590600090869030904290600401613d31565b60075461376b9030906001600160a01b0316856125d8565b60075460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990849060c40160606040518083038185885af11580156137d9573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061168a9190613c71565b600060208083528351808285015260005b8181101561382b5785810183015185820160400152820161380f565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561385e57600080fd5b5035919050565b6001600160a01b038116811461122557600080fd5b6000806040838503121561388d57600080fd5b823561389881613865565b946020939093013593505050565b801515811461122557600080fd5b6000806000606084860312156138c957600080fd5b8335925060208401356138db81613865565b915060408401356138eb816138a6565b809150509250925092565b6000806000806000806000806000806101408b8d03121561391657600080fd5b505088359a60208a01359a5060408a013599606081013599506080810135985060a0810135975060c0810135965060e081013595506101008101359450610120013592509050565b60008060006060848603121561397357600080fd5b833561397e81613865565b9250602084013561398e81613865565b929592945050506040919091013590565b6000602082840312156139b157600080fd5b813561106281613865565b600080604083850312156139cf57600080fd5b82356139da81613865565b915060208301356139ea816138a6565b809150509250929050565b60008060408385031215613a0857600080fd5b50508035926020909101359150565b600080600080600060a08688031215613a2f57600080fd5b8535613a3a81613865565b94506020860135613a4a81613865565b93506040860135613a5a81613865565b92506060860135613a6a81613865565b91506080860135613a7a81613865565b809150509295509295909350565b600080600060608486031215613a9d57600080fd5b8335613aa8816138a6565b925060208401356138db816138a6565b60008060408385031215613acb57600080fd5b8235613ad681613865565b915060208301356139ea81613865565b600080600060608486031215613afb57600080fd5b505081359360208301359350604090920135919050565b600060208284031215613b2457600080fd5b5051919050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613b9c578160001904821115613b8257613b82613b4b565b80851615613b8f57918102915b93841c9390800290613b66565b509250929050565b600082613bb357506001610d71565b81613bc057506000610d71565b8160018114613bd65760028114613be057613bfc565b6001915050610d71565b60ff841115613bf157613bf1613b4b565b50506001821b610d71565b5060208310610133831016604e8410600b8410161715613c1f575081810a610d71565b613c298383613b61565b8060001904821115613c3d57613c3d613b4b565b029392505050565b600061106260ff841683613ba4565b600060208284031215613c6657600080fd5b8151611062816138a6565b600080600060608486031215613c8657600080fd5b8351925060208401519150604084015190509250925092565b8082028115828204841417610d7157610d71613b4b565b80820180821115610d7157610d71613b4b565b81810381811115610d7157610d71613b4b565b600082613cf957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215613d2657600080fd5b815161106281613865565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613d815784516001600160a01b031683529383019391830191600101613d5c565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122083a2e18eddfde72d8b55bd3438a2ae2e09fa6dc9e92f36100f879af0bacd048064736f6c63430008130033
Deployed Bytecode
0x6080604052600436106104095760003560e01c806378002f8411610213578063a8aa1b3111610123578063cce32a46116100ab578063e94dd17c1161007a578063e94dd17c14610c12578063ef40a67014610c32578063f2fde38b14610c5e578063f4e0d9ac14610c7e578063f69e204614610c9e57600080fd5b8063cce32a4614610b67578063d100a8e114610b97578063dbf3693614610bb7578063dd62ed3e14610bcc57600080fd5b8063b2161bcd116100f2578063b2161bcd14610ad8578063b57dcc9114610aed578063b6b55f2514610b07578063b87fcd5814610b27578063c1cfe27e14610b4757600080fd5b8063a8aa1b3114610a6e578063a9059cbb14610a8e578063ad9d9e4c14610aae578063b15bf83714610ac357600080fd5b80638a91e0d9116101a657806395d89b411161017557806395d89b41146109ca578063979d5050146109f85780639fb05d3714610a0e578063a0821be314610a2e578063a18e781f14610a4e57600080fd5b80638a91e0d9146109555780638b3dc018146109755780638cd4426d146109955780639358928b146109b557600080fd5b8063800c5433116101e2578063800c5433146108d8578063817b1cd2146108ed578063884870c714610903578063893d20e81461092357600080fd5b806378002f841461087757806378109e541461088c57806378c7dcd6146108a25780637d1db4a5146108c257600080fd5b80632f54bf6e11610319578063489a581e116102a15780635cdbdd97116102705780635cdbdd97146107d2578063643a1ed8146107e75780636b0f0de21461080757806370a082311461083757806373ca05771461085757600080fd5b8063489a581e1461074b57806348ff2b8b1461076c5780634a5013921461078c5780635927c434146107bc57600080fd5b8063367471f6116102e8578063367471f6146106b15780633cf241e9146106c65780633d17e575146106e65780633e9cc841146106fb5780633f4218e01461071b57600080fd5b80632f54bf6e146106135780633095214814610642578063313ce5671461067f57806334eead481461069b57600080fd5b80631501a3b91161039c5780631e9522901161036b5780631e952290146105a05780631fadf020146105b657806323b872dd146105cb57806325a06a02146105eb5780632e1a7d4d146105f357600080fd5b80631501a3b91461054b57806318160ddd146105605780631ced7505146105755780631deff6551461058a57600080fd5b8063095ea7b3116103d8578063095ea7b3146104cb5780630acf3acc146104eb5780630cf273c81461050b5780630dc6e50e1461052b57600080fd5b806304077f621461041557806306fdde031461044b578063076b20d61461048657806307f74873146104a957600080fd5b3661041057005b600080fd5b34801561042157600080fd5b5060235461043690600160a81b900460ff1681565b60405190151581526020015b60405180910390f35b34801561045757600080fd5b506040805180820190915260098152684f6b616d6920496e7560b81b60208201525b60405161044291906137fe565b34801561049257600080fd5b5061049b610cb3565b604051908152602001610442565b3480156104b557600080fd5b506104c96104c436600461384c565b610d28565b005b3480156104d757600080fd5b506104366104e636600461387a565b610d60565b3480156104f757600080fd5b506104c961050636600461384c565b610d77565b34801561051757600080fd5b506104c96105263660046138b4565b610e22565b34801561053757600080fd5b506104c96105463660046138f6565b610e92565b34801561055757600080fd5b5061049b610f6c565b34801561056c57600080fd5b5060015461049b565b34801561058157600080fd5b5061049b610f9d565b34801561059657600080fd5b5061049b60265481565b3480156105ac57600080fd5b5061049b60165481565b3480156105c257600080fd5b5061049b610fce565b3480156105d757600080fd5b506104366105e636600461395e565b610fff565b6104c9611069565b3480156105ff57600080fd5b506104c961060e36600461384c565b61107b565b34801561061f57600080fd5b5061043661062e36600461399f565b6000546001600160a01b0391821691161490565b34801561064e57600080fd5b50610657611228565b604080519586526020860194909452928401919091526060830152608082015260a001610442565b34801561068b57600080fd5b5060405160098152602001610442565b3480156106a757600080fd5b5061049b60155481565b3480156106bd57600080fd5b5061049b61145e565b3480156106d257600080fd5b506104c96106e136600461384c565b61148f565b3480156106f257600080fd5b5061049b6114b9565b34801561070757600080fd5b506014546104369062010000900460ff1681565b34801561072757600080fd5b5061043661073636600461399f565b60066020526000908152604090205460ff1681565b34801561075757600080fd5b5060235461043690600160a01b900460ff1681565b34801561077857600080fd5b506104c96107873660046139bc565b6114ea565b34801561079857600080fd5b506104366107a736600461399f565b601e6020526000908152604090205460ff1681565b3480156107c857600080fd5b5061049b60245481565b3480156107de57600080fd5b5061049b61153f565b3480156107f357600080fd5b506104c961080236600461384c565b611570565b34801561081357600080fd5b5061043661082236600461399f565b601f6020526000908152604090205460ff1681565b34801561084357600080fd5b5061049b61085236600461399f565b611692565b34801561086357600080fd5b506104c96108723660046139f5565b6116ad565b34801561088357600080fd5b506104c961182b565b34801561089857600080fd5b5061049b60035481565b3480156108ae57600080fd5b506104c96108bd36600461384c565b6118be565b3480156108ce57600080fd5b5061049b60025481565b3480156108e457600080fd5b506104c96118ed565b3480156108f957600080fd5b5061049b60215481565b34801561090f57600080fd5b506104c961091e3660046139f5565b611928565b34801561092f57600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610442565b34801561096157600080fd5b506104c96109703660046139f5565b611a20565b34801561098157600080fd5b506104c961099036600461399f565b611af7565b3480156109a157600080fd5b506104c96109b036600461387a565b611b5b565b3480156109c157600080fd5b5061049b611c01565b3480156109d657600080fd5b506040805180820190915260058152644f4b414d4960d81b6020820152610479565b348015610a0457600080fd5b5061049b60255481565b348015610a1a57600080fd5b506104c9610a29366004613a17565b611c2d565b348015610a3a57600080fd5b5061049b610a4936600461399f565b611d0a565b348015610a5a57600080fd5b506104c9610a693660046138b4565b611d35565b348015610a7a57600080fd5b5060085461093d906001600160a01b031681565b348015610a9a57600080fd5b50610436610aa936600461387a565b611ea5565b348015610aba57600080fd5b5061049b611eb2565b348015610acf57600080fd5b5061049b611ee3565b348015610ae457600080fd5b5061049b611f14565b348015610af957600080fd5b506022546104369060ff1681565b348015610b1357600080fd5b506104c9610b2236600461384c565b611f45565b348015610b3357600080fd5b506104c9610b423660046139bc565b61206d565b348015610b5357600080fd5b506104c9610b62366004613a88565b6120c2565b348015610b7357600080fd5b50610b7c612138565b60408051938452602084019290925290820152606001610442565b348015610ba357600080fd5b506104c9610bb236600461384c565b6121b4565b348015610bc357600080fd5b506104c96121ef565b348015610bd857600080fd5b5061049b610be7366004613ab8565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610c1e57600080fd5b506104c9610c2d366004613ae6565b612259565b348015610c3e57600080fd5b5061049b610c4d36600461399f565b602080526000908152604090205481565b348015610c6a57600080fd5b506104c9610c7936600461399f565b6122bf565b348015610c8a57600080fd5b506104c9610c9936600461399f565b61233d565b348015610caa57600080fd5b506104c96123a6565b6023546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a08231906024015b602060405180830381865afa158015610cff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d239190613b12565b905090565b6000546001600160a01b03163314610d5b5760405162461bcd60e51b8152600401610d5290613b2b565b60405180910390fd5b601555565b6000610d6d3384846125d8565b5060015b92915050565b6000610d8f610d886009600a613c45565b83906126fc565b6023546040516323b872dd60e01b81523360048201526001600160a01b0390911660248201526044810182905290915030906323b872dd906064016020604051808303816000875af1158015610de9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0d9190613c54565b50602554610e1b9082612708565b6025555050565b6000546001600160a01b03163314610e4c5760405162461bcd60e51b8152600401610d5290613b2b565b602b80546001600160a01b039093166001600160a01b03199093169290921790915560249190915560238054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610ebc5760405162461bcd60e51b8152600401610d5290613b2b565b60098a9055600a899055600b889055600e869055600d879055600c859055600f8490556010839055601182905560128190556013548311801590610f04575060135460115411155b8015610f14575060135460125411155b610f605760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e76616c696420746f74616c20656e7472792500000000006044820152606401610d52565b50505050505050505050565b60235460405163045f25d360e51b81523060048201526000916001600160a01b031690638be4ba6090602401610ce2565b60235460405163bffa330f60e01b81523060048201526000916001600160a01b03169063bffa330f90602401610ce2565b602354604051639c40846f60e01b81523060048201526000916001600160a01b031690639c40846f90602401610ce2565b600061100c848484612714565b61105e843361105985604051806060016040528060288152602001613da3602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190612845565b6125d8565b5060015b9392505050565b6026546110769034612708565b602655565b3360009081526020805260409020548111156110ef5760405162461bcd60e51b815260206004820152602d60248201527f45524332303a2043616e6e6f7420756e7374616b65206d6f7265207468616e2060448201526c185b5bdd5b9d081cdd185ad959609a1b6064820152608401610d52565b60225460405163d8a9bf2960e01b8152336004820152602481018390526101009091046001600160a01b03169063d8a9bf2990604401600060405180830381600087803b15801561113f57600080fd5b505af1158015611153573d6000803e3d6000fd5b50503360009081526020805260409020546111719250905082612871565b33600090815260208052604090205560215461118d9082612871565b602155602354600160a81b900460ff1615611225576014805463ff0000001916630100000017905560235460155460405163170864a160e11b81523060048201526001600160a01b0390921691632e10c9429190602401600060405180830381600088803b1580156111fe57600080fd5b5087f1158015611212573d6000803e3d6000fd5b50506014805463ff000000191690555050505b50565b6023546040516331fcaf6960e11b815230600482015260009182918291829182916001600160a01b0316906363f95ed290602401602060405180830381865afa158015611279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129d9190613b12565b602354604051633f8223f360e01b81523060048201526001600160a01b0390911690633f8223f390602401602060405180830381865afa1580156112e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113099190613b12565b60235460405163045f25d360e51b81523060048201526001600160a01b0390911690638be4ba6090602401602060405180830381865afa158015611351573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113759190613b12565b602354604051633255a03560e11b81523060048201526001600160a01b03909116906364ab406a90602401602060405180830381865afa1580156113bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e19190613b12565b60235460405163fea4456560e01b81523060048201526001600160a01b039091169063fea4456590602401602060405180830381865afa158015611429573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144d9190613b12565b945094509450945094509091929394565b6023546040516307df467b60e21b81523060048201526000916001600160a01b031690631f7d19ec90602401610ce2565b6000546001600160a01b031633146110765760405162461bcd60e51b8152600401610d5290613b2b565b6023546040516331fcaf6960e11b81523060048201526000916001600160a01b0316906363f95ed290602401610ce2565b6000546001600160a01b031633146115145760405162461bcd60e51b8152600401610d5290613b2b565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b602354604051631ea2804760e11b81523060048201526000916001600160a01b031690633d45008e90602401610ce2565b6000546001600160a01b0316331461159a5760405162461bcd60e51b8152600401610d5290613b2b565b6013546023546040516370a0823160e01b81526001600160a01b0390911660048201526000916116229161161c90859030906370a0823190602401602060405180830381865afa1580156115f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116169190613b12565b906126fc565b9061287d565b60235460405163360b0fcd60e01b8152306004820152336024820152604481018390529192506001600160a01b03169063360b0fcd906064015b600060405180830381600087803b15801561167657600080fd5b505af115801561168a573d6000803e3d6000fd5b505050505050565b6001600160a01b031660009081526004602052604090205490565b6000546001600160a01b031633146116d75760405162461bcd60e51b8152600401610d5290613b2b565b60006116ec61271061161c8461161660015490565b905060648311156117575760405162461bcd60e51b815260206004820152602f60248201527f56616c7565204d757374204265204c657373205468616e206f7220457175616c60448201526e103a37902232b737b6b4b730ba37b960891b6064820152608401610d52565b60235460405163e00e029f60e01b8152306004820152602481018390526001600160a01b039091169063e00e029f90604401600060405180830381600087803b1580156117a357600080fd5b505af11580156117b7573d6000803e3d6000fd5b5050602354604051637e31b16760e11b8152306004820152602481018790526064604482018190526001600160a01b03909216935063fc6362ce925001600060405180830381600087803b15801561180e57600080fd5b505af1158015611822573d6000803e3d6000fd5b50505050505050565b60225460ff1661183a57600080fd5b6014805463ff0000001916630100000017905560235460155460405163170864a160e11b81523060048201526001600160a01b0390921691632e10c9429190602401600060405180830381600088803b15801561189657600080fd5b5087f11580156118aa573d6000803e3d6000fd5b50506014805463ff00000019169055505050565b6000546001600160a01b031633146118e85760405162461bcd60e51b8152600401610d5290613b2b565b601d55565b6000546001600160a01b031633146119175760405162461bcd60e51b8152600401610d5290613b2b565b6014805461ff001916610100179055565b6000546001600160a01b031633146119525760405162461bcd60e51b8152600401610d5290613b2b565b600061196761271061161c8561161660015490565b9050600061197e61271061161c8561161660015490565b9050600061199661271061161c600561161660015490565b90508083101580156119a85750808210155b611a125760405162461bcd60e51b815260206004820152603560248201527f45524332303a206d61782054587320616e64206d61782057616c6c65742063616044820152746e6e6f74206265206c657373207468616e202e352560581b6064820152608401610d52565b506002919091556003555050565b6000546001600160a01b03163314611a4a5760405162461bcd60e51b8152600401610d5290613b2b565b6000611a5f61271061161c8561161660015490565b6014805463ff0000001916630100000017905560235460155460405163037cf82960e61b815230600482015260248101849052604481018690529293506001600160a01b039091169163df3e0a409190606401600060405180830381600088803b158015611acc57600080fd5b5087f1158015611ae0573d6000803e3d6000fd5b50506014805463ff00000019169055505050505050565b6000546001600160a01b03163314611b215760405162461bcd60e51b8152600401610d5290613b2b565b602380546001600160a01b039092166001600160a01b0319909216821790556000908152600660205260409020805460ff19166001179055565b6000546001600160a01b03163314611b855760405162461bcd60e51b8152600401610d5290613b2b565b60275460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015611bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfc9190613c54565b505050565b6000610d23611c106000611692565b611c27611c1e61dead611692565b60015490612871565b90612871565b6000546001600160a01b03163314611c575760405162461bcd60e51b8152600401610d5290613b2b565b602880546001600160a01b039687166001600160a01b0319918216811790925560298054968816968216871790556027805495881695821686179055602b805494881694821685179055602a80549390971692168217909555600094855260066020526040808620805460ff199081166001908117909255958752818720805487168217905593865280862080548616851790559185528185208054851684179055845290922080549091169091179055565b6001600160a01b038116600090815260208080526040808320546004909252822054610d7191612871565b6000546001600160a01b03163314611d5f5760405162461bcd60e51b8152600401610d5290613b2b565b6026548311158015611d715750478311155b611dbd5760405162461bcd60e51b815260206004820152601b60248201527f42616c616e63652042656c6f7720496e70757465642056616c756500000000006044820152606401610d52565b6023546040516001600160a01b039091169084156108fc029085906000818181858888f19350505050158015611df7573d6000803e3d6000fd5b50602654611e059084612871565b6026556014805463ff0000001916630100000017905560235460155460405163192f452760e31b8152306004820152602481018690526001600160a01b03858116604483015284151560648301529092169163c97a29389190608401600060405180830381600088803b158015611e7b57600080fd5b5087f193505050508015611e8d575060015b5050506000601655506014805463ff00000019169055565b6000610d6d338484612714565b602354604051633255a03560e11b81523060048201526000916001600160a01b0316906364ab406a90602401610ce2565b602354604051633f8223f360e01b81523060048201526000916001600160a01b031690633f8223f390602401610ce2565b60235460405163fea4456560e01b81523060048201526000916001600160a01b03169063fea4456590602401610ce2565b3360009081526020808052604080832054600490925290912054611f6891612871565b811115611fcf5760405162461bcd60e51b815260206004820152602f60248201527f45524332303a2043616e6e6f74207374616b65206d6f7265207468616e20617660448201526e61696c61626c652062616c616e636560881b6064820152608401610d52565b60225460405163773a0f0960e01b8152336004820152602481018390526101009091046001600160a01b03169063773a0f0990604401600060405180830381600087803b15801561201f57600080fd5b505af1158015612033573d6000803e3d6000fd5b50503360009081526020805260409020546120519250905082612708565b33600090815260208052604090205560215461118d9082612708565b6000546001600160a01b031633146120975760405162461bcd60e51b8152600401610d5290613b2b565b6001600160a01b03919091166000908152601f60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146120ec5760405162461bcd60e51b8152600401610d5290613b2b565b60148054931515620100000262ff000019909416939093179092556022805491151560ff1990921691909117905560238054911515600160a81b0260ff60a81b19909216919091179055565b6023546040516330800a4560e21b8152306004820152600091829182916001600160a01b03169063c200291490602401606060405180830381865afa158015612185573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a99190613c71565b925092509250909192565b6000546001600160a01b031633146121de5760405162461bcd60e51b8152600401610d5290613b2b565b6000611622610d886009600a613c45565b6022546040516334c5cbab60e11b8152336004820181905260248201526101009091046001600160a01b03169063698b975690604401600060405180830381600087803b15801561223f57600080fd5b505af1158015612253573d6000803e3d6000fd5b50505050565b6000546001600160a01b031633146122835760405162461bcd60e51b8152600401610d5290613b2b565b601a83905560015461229e90620186a09061161c90856126fc565b601b556001546122b790620186a09061161c90846126fc565b601c55505050565b6000546001600160a01b031633146122e95760405162461bcd60e51b8152600401610d5290613b2b565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b031633146123675760405162461bcd60e51b8152600401610d5290613b2b565b60228054610100600160a81b0319166101006001600160a01b03939093169283021790556000908152600660205260409020805460ff19166001179055565b3360009081526020805260409020546124185760405162461bcd60e51b815260206004820152602e60248201527f45524332303a2043616e6e6f7420636f6d706f756e64206d6f7265207468616e60448201526d08185b5bdd5b9d081cdd185ad95960921b6064820152608401610d52565b600061242333611692565b6022546040516334c5cbab60e11b81523360048201819052602482015291925061010090046001600160a01b03169063698b975690604401600060405180830381600087803b15801561247557600080fd5b505af1158015612489573d6000803e3d6000fd5b50505050600061249c82611c2733611692565b60225460405163773a0f0960e01b81523360048201526024810183905291925061010090046001600160a01b03169063773a0f0990604401600060405180830381600087803b1580156124ee57600080fd5b505af1158015612502573d6000803e3d6000fd5b50503360009081526020805260409020546125209250905082612708565b33600090815260208052604090205560215461253c9082612708565b602155602354600160a81b900460ff16156125d4576014805463ff0000001916630100000017905560235460155460405163170864a160e11b81523060048201526001600160a01b0390921691632e10c9429190602401600060405180830381600088803b1580156125ad57600080fd5b5087f11580156125c1573d6000803e3d6000fd5b50506014805463ff000000191690555050505b5050565b6001600160a01b03831661263a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d52565b6001600160a01b03821661269b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d52565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006110628284613c9f565b60006110628284613cb6565b61271f838383612889565b61272983836129b8565b612734838383612a56565b61273f838383612bb5565b61274a838383612cc5565b6127548383612d73565b61275f838383612d96565b6001600160a01b0383166000908152600460205260409020546127829082612871565b6001600160a01b0384166000908152600460205260408120919091556127a88484612f57565b6127b257816127bd565b6127bd848484612fb5565b6001600160a01b0384166000908152600460205260409020549091506127e39082612708565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906128379085815260200190565b60405180910390a350505050565b600081848411156128695760405162461bcd60e51b8152600401610d5291906137fe565b505050900390565b60006110628284613cc9565b60006110628284613cdc565b6001600160a01b0383166128ed5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610d52565b6001600160a01b03821661294f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610d52565b61295883611692565b811115611bfc5760405162461bcd60e51b815260206004820152602860248201527f45524332303a2062656c6f7720617661696c61626c652062616c616e636520746044820152671a1c995cda1bdb1960c21b6064820152608401610d52565b6001600160a01b03821660009081526006602052604090205460ff161580156129fa57506001600160a01b03811660009081526006602052604090205460ff16155b156125d457601454610100900460ff166125d45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f7420616c6c6f7765640000006044820152606401610d52565b6001600160a01b038316600090815260208052604090205415612b0c576001600160a01b03831660009081526004602090815260408083205491805290912054612aa1908390612708565b1115612b0c5760405162461bcd60e51b815260206004820152603460248201527f45524332303a2065786365656473206d6178696d756d20616c6c6f776564206e60448201527337ba1031bab93932b73a363c9039ba30b5b2b21760611b6064820152608401610d52565b6014546301000000900460ff16611bfc5760025481111580612b4657506001600160a01b03831660009081526006602052604090205460ff165b80612b6957506001600160a01b03821660009081526006602052604090205460ff165b611bfc5760405162461bcd60e51b815260206004820152601860248201527f45524332303a207478206c696d697420657863656564656400000000000000006044820152606401610d52565b6001600160a01b03831660009081526006602052604090205460ff16158015612bf757506001600160a01b03821660009081526006602052604090205460ff16155b8015612c1157506008546001600160a01b03838116911614155b8015612c2857506001600160a01b03821661dead14155b8015612c3e57506014546301000000900460ff16155b15611bfc576003546001600160a01b038316600090815260046020526040902054612c699083612708565b1115611bfc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2065786365656473206d6178696d756d2077616c6c657420616d60448201526437bab73a1760d91b6064820152608401610d52565b6008546001600160a01b0383811691161480612cf957506001600160a01b0382166000908152601f602052604090205460ff165b8015612d1e57506001600160a01b03831660009081526006602052604090205460ff16155b8015612d2c5750601c548110155b8015612d3b575060185460ff16155b8015612d5157506014546301000000900460ff16155b15611bfc57600160176000828254612d699190613cb6565b9091555050505050565b612d7d82826130f5565b156125d457612d8d601b546131d1565b60006017555050565b601454610100900460ff168015612dc657506001600160a01b03831660009081526006602052604090205460ff16155b8015612e0157506008546001600160a01b0383811691161480612e0157506001600160a01b0382166000908152601f602052604090205460ff165b8015612e0f5750601d548110155b8015612e1e575060185460ff16155b8015612e3457506014546301000000900460ff16155b15612e5257600160166000828254612e4c9190613cb6565b90915550505b601454610100900460ff168015612e71575060145462010000900460ff165b8015612e925750602354600090612e90906001600160a01b0316611692565b115b8015612eb757506001600160a01b03831660009081526006602052604090205460ff16155b8015612ef257506008546001600160a01b0383811691161480612ef257506001600160a01b0382166000908152601f602052604090205460ff165b8015612f01575060185460ff16155b8015612f1757506014546301000000900460ff16155b15611bfc5760245460265410158015612f3257506024544710155b8015612f42575060195460165410155b15612f4f57611bfc6133eb565b611bfc613504565b6001600160a01b03821660009081526006602052604081205460ff16158015612f9957506001600160a01b03821660009081526006602052604090205460ff16155b80156110625750506014546301000000900460ff161592915050565b600080612fc28585613582565b118015612fd957506014546301000000900460ff16155b156130ee576000612ffb612fed8686613582565b60135461161690869061287d565b306000908152600460205260409020549091506130189082612708565b30600081815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906130699085815260200190565b60405180910390a3600e54156130a957602354600e546013546130a99230926001600160a01b03909116916130a4919061161690899061287d565b612714565b600f54156130dc57602a54600f546013546130dc9230926001600160a01b03909116916130a4919061161690899061287d565b6130e68382612871565b915050611062565b5092915050565b600080601b5461310430611692565b60085491111591506000906001600160a01b038581169116148061314057506001600160a01b0384166000908152601f602052604090205460ff165b60185490915060ff16158015613158575060145460ff165b801561316b5750601454610100900460ff165b801561319057506001600160a01b03851660009081526006602052604090205460ff16155b80156131995750805b80156131a95750601a5460175410155b80156131b25750815b80156131c857506014546301000000900460ff16155b95945050505050565b6018805460ff191660019081179091556010546000916131f8916002916116169190612708565b905060006132158261161c600954866126fc90919063ffffffff16565b905060006132238483612871565b90504761322f8261362f565b600061323b4783612871565b9050600061325e6132576009548861287190919063ffffffff16565b839061287d565b90506000613277600954836126fc90919063ffffffff16565b905080156132985760295461329890879083906001600160a01b0316613753565b600a546000906132ad906116168560026126fc565b905080156132f1576028546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156132ef573d6000803e3d6000fd5b505b600d54600090613306906116168660026126fc565b9050801561334a57602c546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015613348573d6000803e3d6000fd5b505b600c5460009061335f906116168760026126fc565b90508015613378576026546133749082612708565b6026555b600061338f6026544761287190919063ffffffff16565b905080156133d3576027546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156133d1573d6000803e3d6000fd5b505b50506018805460ff1916905550505050505050505050565b6023546024546040516000926001600160a01b031691908381818185875af1925050503d806000811461343a576040519150601f19603f3d011682016040523d82523d6000602084013e61343f565b606091505b505060245460265460009350613456925090612871565b6026556014805463ff0000001916630100000017905560235460155460248054602b5460405163192f452760e31b8152306004820152928301919091526001600160a01b039081166044830152600160a01b840460ff16151560648301529092169163c97a29389190608401600060405180830381600088803b1580156134dc57600080fd5b5087f1935050505080156134ee575060015b50506014805463ff000000191690556000601655565b6014805463ff0000001916630100000017905560235460155460405163170864a160e11b81523060048201526001600160a01b0390921691632e10c9429190602401600060405180830381600088803b15801561356057600080fd5b5087f193505050508015613572575060015b506014805463ff00000019169055565b6008546000906001600160a01b03838116911614806135b957506001600160a01b0382166000908152601f602052604090205460ff165b80156135c757506000601154115b156135d55750601154610d71565b6008546001600160a01b038481169116148061360957506001600160a01b0383166000908152601f602052604090205460ff165b801561361757506000601054115b156136255750601054610d71565b5060125492915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061366457613664613cfe565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156136bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136e19190613d14565b816001815181106136f4576136f4613cfe565b6001600160a01b03928316602091820292909201015260075461371a91309116846125d8565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac9479061165c908590600090869030904290600401613d31565b60075461376b9030906001600160a01b0316856125d8565b60075460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990849060c40160606040518083038185885af11580156137d9573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061168a9190613c71565b600060208083528351808285015260005b8181101561382b5785810183015185820160400152820161380f565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561385e57600080fd5b5035919050565b6001600160a01b038116811461122557600080fd5b6000806040838503121561388d57600080fd5b823561389881613865565b946020939093013593505050565b801515811461122557600080fd5b6000806000606084860312156138c957600080fd5b8335925060208401356138db81613865565b915060408401356138eb816138a6565b809150509250925092565b6000806000806000806000806000806101408b8d03121561391657600080fd5b505088359a60208a01359a5060408a013599606081013599506080810135985060a0810135975060c0810135965060e081013595506101008101359450610120013592509050565b60008060006060848603121561397357600080fd5b833561397e81613865565b9250602084013561398e81613865565b929592945050506040919091013590565b6000602082840312156139b157600080fd5b813561106281613865565b600080604083850312156139cf57600080fd5b82356139da81613865565b915060208301356139ea816138a6565b809150509250929050565b60008060408385031215613a0857600080fd5b50508035926020909101359150565b600080600080600060a08688031215613a2f57600080fd5b8535613a3a81613865565b94506020860135613a4a81613865565b93506040860135613a5a81613865565b92506060860135613a6a81613865565b91506080860135613a7a81613865565b809150509295509295909350565b600080600060608486031215613a9d57600080fd5b8335613aa8816138a6565b925060208401356138db816138a6565b60008060408385031215613acb57600080fd5b8235613ad681613865565b915060208301356139ea81613865565b600080600060608486031215613afb57600080fd5b505081359360208301359350604090920135919050565b600060208284031215613b2457600080fd5b5051919050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613b9c578160001904821115613b8257613b82613b4b565b80851615613b8f57918102915b93841c9390800290613b66565b509250929050565b600082613bb357506001610d71565b81613bc057506000610d71565b8160018114613bd65760028114613be057613bfc565b6001915050610d71565b60ff841115613bf157613bf1613b4b565b50506001821b610d71565b5060208310610133831016604e8410600b8410161715613c1f575081810a610d71565b613c298383613b61565b8060001904821115613c3d57613c3d613b4b565b029392505050565b600061106260ff841683613ba4565b600060208284031215613c6657600080fd5b8151611062816138a6565b600080600060608486031215613c8657600080fd5b8351925060208401519150604084015190509250925092565b8082028115828204841417610d7157610d71613b4b565b80820180821115610d7157610d71613b4b565b81810381811115610d7157610d71613b4b565b600082613cf957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215613d2657600080fd5b815161106281613865565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613d815784516001600160a01b031683529383019391830191600101613d5c565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122083a2e18eddfde72d8b55bd3438a2ae2e09fa6dc9e92f36100f879af0bacd048064736f6c63430008130033
Deployed Bytecode Sourcemap
14962:23351:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17021:31;;;;;;;;;;-1:-1:-1;17021:31:0;;;;-1:-1:-1;;;17021:31:0;;;;;;;;;179:14:1;;172:22;154:41;;142:2;127:18;17021:31:0;;;;;;;;18690:67;;;;;;;;;;-1:-1:-1;18750:5:0;;;;;;;;;;;;-1:-1:-1;;;18750:5:0;;;;18690:67;;;;;;;:::i;38022:145::-;;;;;;;;;;;;;:::i;:::-;;;905:25:1;;;893:2;878:18;38022:145:0;759:177:1;30233:89:0;;;;;;;;;;-1:-1:-1;30233:89:0;;;;;:::i;:::-;;:::i;:::-;;19474:133;;;;;;;;;;-1:-1:-1;19474:133:0;;;;;:::i;:::-;;:::i;30490:289::-;;;;;;;;;;-1:-1:-1;30490:289:0;;;;;:::i;:::-;;:::i;31273:198::-;;;;;;;;;;-1:-1:-1;31273:198:0;;;;;:::i;:::-;;:::i;27303:607::-;;;;;;;;;;-1:-1:-1;27303:607:0;;;;;:::i;:::-;;:::i;37438:134::-;;;;;;;;;;;;;:::i;18997:84::-;;;;;;;;;;-1:-1:-1;19067:12:0;;18997:84;;37148:134;;;;;;;;;;;;;:::i;17127:31::-;;;;;;;;;;;;;;;;16235:30;;;;;;;;;;;;;;;;38175:135;;;;;;;;;;;;;:::i;35497:309::-;;;;;;;;;;-1:-1:-1;35497:309:0;;;;;:::i;:::-;;:::i;34143:118::-;;;:::i;25797:498::-;;;;;;;;;;-1:-1:-1;25797:498:0;;;;;:::i;:::-;;:::i;11426:87::-;;;;;;;;;;-1:-1:-1;11426:87:0;;;;;:::i;:::-;11481:4;11506:5;-1:-1:-1;;;;;11495:16:0;;;11506:5;;11495:16;;11426:87;36377:467;;;;;;;;;;;;;:::i;:::-;;;;3936:25:1;;;3992:2;3977:18;;3970:34;;;;4020:18;;;4013:34;;;;4078:2;4063:18;;4056:34;4121:3;4106:19;;4099:35;3923:3;3908:19;36377:467:0;3677:463:1;18840:67:0;;;;;;;;;;-1:-1:-1;18840:67:0;;15186:1;4287:36:1;;4275:2;4260:18;18840:67:0;4145:184:1;16199:29:0;;;;;;;;;;;;;;;;37290:140;;;;;;;;;;;;;:::i;34027:108::-;;;;;;;;;;-1:-1:-1;34027:108:0;;;;;:::i;:::-;;:::i;36856:140::-;;;;;;;;;;;;;:::i;16134:30::-;;;;;;;;;;-1:-1:-1;16134:30:0;;;;;;;;;;;15523:43;;;;;;;;;;-1:-1:-1;15523:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16991:23;;;;;;;;;;-1:-1:-1;16991:23:0;;;;-1:-1:-1;;;16991:23:0;;;;;;28418:124;;;;;;;;;;-1:-1:-1;28418:124:0;;;;;:::i;:::-;;:::i;16695:44::-;;;;;;;;;;-1:-1:-1;16695:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17054:31;;;;;;;;;;;;;;;;37872:142;;;;;;;;;;;;;:::i;30787:261::-;;;;;;;;;;-1:-1:-1;30787:261:0;;;;;:::i;:::-;;:::i;16746:39::-;;;;;;;;;;-1:-1:-1;16746:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19087:103;;;;;;;;;;-1:-1:-1;19087:103:0;;;;;:::i;:::-;;:::i;29657:450::-;;;;;;;;;;-1:-1:-1;29657:450:0;;;;;:::i;:::-;;:::i;32897:207::-;;;;;;;;;;;;;:::i;15332:63::-;;;;;;;;;;;;;;;;30115:110;;;;;;;;;;-1:-1:-1;30115:110:0;;;;;:::i;:::-;;:::i;15265:60::-;;;;;;;;;;;;;;;;25043:81;;;;;;;;;;;;;:::i;16846:26::-;;;;;;;;;;;;;;;;28863:450;;;;;;;;;;-1:-1:-1;28863:450:0;;;;;:::i;:::-;;:::i;18913:78::-;;;;;;;;;;-1:-1:-1;18965:7:0;18983:5;-1:-1:-1;;;;;18983:5:0;18913:78;;;-1:-1:-1;;;;;5138:32:1;;;5120:51;;5108:2;5093:18;18913:78:0;4974:203:1;33112:334:0;;;;;;;;;;-1:-1:-1;33112:334:0;;;;;:::i;:::-;;:::i;30330:152::-;;;;;;;;;;-1:-1:-1;30330:152:0;;;;;:::i;:::-;;:::i;29321:150::-;;;;;;;;;;-1:-1:-1;29321:150:0;;;;;:::i;:::-;;:::i;19744:138::-;;;;;;;;;;;;;:::i;18763:71::-;;;;;;;;;;-1:-1:-1;18825:7:0;;;;;;;;;;;;-1:-1:-1;;;18825:7:0;;;;18763:71;;17092:33;;;;;;;;;;;;;;;;27918:492;;;;;;;;;;-1:-1:-1;27918:492:0;;;;;:::i;:::-;;:::i;19613:125::-;;;;;;;;;;-1:-1:-1;19613:125:0;;;;;:::i;:::-;;:::i;33454:565::-;;;;;;;;;;-1:-1:-1;33454:565:0;;;;;:::i;:::-;;:::i;15594:19::-;;;;;;;;;;-1:-1:-1;15594:19:0;;;;-1:-1:-1;;;;;15594:19:0;;;19196:139;;;;;;;;;;-1:-1:-1;19196:139:0;;;;;:::i;:::-;;:::i;37584:132::-;;;;;;;;;;;;;:::i;37004:136::-;;;;;;;;;;;;;:::i;37724:140::-;;;;;;;;;;;;;:::i;16874:39::-;;;;;;;;;;-1:-1:-1;16874:39:0;;;;;;;;25264:525;;;;;;;;;;-1:-1:-1;25264:525:0;;;;;:::i;:::-;;:::i;27184:111::-;;;;;;;;;;-1:-1:-1;27184:111:0;;;;;:::i;:::-;;:::i;29479:170::-;;;;;;;;;;-1:-1:-1;29479:170:0;;;;;:::i;:::-;;:::i;36157:212::-;;;;;;;;;;;;;:::i;:::-;;;;6718:25:1;;;6774:2;6759:18;;6752:34;;;;6802:18;;;6795:34;6706:2;6691:18;36157:212:0;6516:319:1;31056:209:0;;;;;;;;;;-1:-1:-1;31056:209:0;;;;;:::i;:::-;;:::i;25132:124::-;;;;;;;;;;;;;:::i;19341:127::-;;;;;;;;;;-1:-1:-1;19341:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;19439:18:0;;;19422:7;19439:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19341:127;28550:305;;;;;;;;;;-1:-1:-1;28550:305:0;;;;;:::i;:::-;;:::i;16792:47::-;;;;;;;;;;-1:-1:-1;16792:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;11519:111;;;;;;;;;;-1:-1:-1;11519:111:0;;;;;:::i;:::-;;:::i;27019:157::-;;;;;;;;;;-1:-1:-1;27019:157:0;;;;;:::i;:::-;;:::i;26303:708::-;;;;;;;;;;;;;:::i;38022:145::-;38147:9;;38107:51;;-1:-1:-1;;;38107:51:0;;-1:-1:-1;;;;;38147:9:0;;;38107:51;;;5120::1;38080:7:0;;38122:4;;38107:31;;5093:18:1;;38107:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38100:59;;38022:145;:::o;30233:89::-;11481:4;11506:5;-1:-1:-1;;;;;11506:5:0;11393:10;11495:16;11377:38;;;;-1:-1:-1;;;11377:38:0;;;;;;;:::i;:::-;;;;;;;;;30303:5:::1;:11:::0;30233:89::o;19474:133::-;19549:4;19556:37;19565:10;19577:7;19586:6;19556:8;:37::i;:::-;-1:-1:-1;19601:4:0;19474:133;;;;;:::o;30490:289::-;30561:20;30584:27;30595:15;15186:1;30595:2;:15;:::i;:::-;30584:6;;:10;:27::i;:::-;30678:9;;30623:80;;-1:-1:-1;;;30623:80:0;;30658:10;30623:80;;;10092:34:1;-1:-1:-1;;;;;30678:9:0;;;10142:18:1;;;10135:43;10194:18;;;10187:34;;;30561:50:0;;-1:-1:-1;30638:4:0;;30623:34;;10027:18:1;;30623:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;30735:18:0;;:36;;30758:12;30735:22;:36::i;:::-;30714:18;:57;-1:-1:-1;;30490:289:0:o;31273:198::-;11481:4;11506:5;-1:-1:-1;;;;;11506:5:0;11393:10;11495:16;11377:38;;;;-1:-1:-1;;;11377:38:0;;;;;;;:::i;:::-;31383:16:::1;:27:::0;;-1:-1:-1;;;;;31383:27:0;;::::1;-1:-1:-1::0;;;;;;31383:27:0;;::::1;::::0;;;::::1;::::0;;;31412:16:::1;:26:::0;;;;31440:11:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;31440:23:0::1;-1:-1:-1::0;;;;31440:23:0;;::::1;::::0;;;::::1;::::0;;31273:198::o;27303:607::-;11481:4;11506:5;-1:-1:-1;;;;;11506:5:0;11393:10;11495:16;11377:38;;;;-1:-1:-1;;;11377:38:0;;;;;;;:::i;:::-;27534:12:::1;:25:::0;;;27561:12:::1;:25:::0;;;27588:14:::1;:29:::0;;;27619:9:::1;:19:::0;;;27640:9:::1;:19:::0;;;27661:10:::1;:21:::0;;;27684:10:::1;:21:::0;;;27716:8:::1;:17:::0;;;27735:7:::1;:15:::0;;;27752:11:::1;:20:::0;;;27803:11:::1;::::0;27791:23;::::1;::::0;::::1;::::0;:49:::1;;;27829:11;;27818:7;;:22;;27791:49;:79;;;;;27859:11;;27844;;:26;;27791:79;27783:119;;;::::0;-1:-1:-1;;;27783:119:0;;10684:2:1;27783:119:0::1;::::0;::::1;10666:21:1::0;10723:2;10703:18;;;10696:30;10762:29;10742:18;;;10735:57;10809:18;;27783:119:0::1;10482:351:1::0;27783:119:0::1;27303:607:::0;;;;;;;;;;:::o;37438:134::-;37518:9;;:45;;-1:-1:-1;;;37518:45:0;;37557:4;37518:45;;;5120:51:1;37491:7:0;;-1:-1:-1;;;;;37518:9:0;;:30;;5093:18:1;;37518:45:0;4974:203:1;37148:134:0;37228:9;;:45;;-1:-1:-1;;;37228:45:0;;37267:4;37228:45;;;5120:51:1;37201:7:0;;-1:-1:-1;;;;;37228:9:0;;:30;;5093:18:1;;37228:45:0;4974:203:1;38175:135:0;38257:9;;:44;;-1:-1:-1;;;38257:44:0;;38295:4;38257:44;;;5120:51:1;38230:7:0;;-1:-1:-1;;;;;38257:9:0;;:29;;5093:18:1;;38257:44:0;4974:203:1;35497:309:0;35595:4;35612:36;35622:6;35630:9;35641:6;35612:9;:36::i;:::-;35659:117;35668:6;35676:10;35688:87;35724:6;35688:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;35688:19:0;;;;;;:11;:19;;;;;;;;35708:10;35688:31;;;;;;;;;:87;:35;:87::i;:::-;35659:8;:117::i;:::-;-1:-1:-1;35794:4:0;35497:309;;;;;;:::o;34143:118::-;34222:16;;:31;;34243:9;34222:20;:31::i;:::-;34203:16;:50;34143:118::o;25797:498::-;25891:10;25878:24;;;;:12;:24;;;;;;25868:34;;;25860:92;;;;-1:-1:-1;;;25860:92:0;;11040:2:1;25860:92:0;;;11022:21:1;11079:2;11059:18;;;11052:30;11118:34;11098:18;;;11091:62;-1:-1:-1;;;11169:18:1;;;11162:43;11222:19;;25860:92:0;10838:409:1;25860:92:0;25963:15;;:51;;-1:-1:-1;;;25963:51:0;;25995:10;25963:51;;;11426::1;11493:18;;;11486:34;;;25963:15:0;;;;-1:-1:-1;;;;;25963:15:0;;:31;;11399:18:1;;25963:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26065:10:0;26052:24;;;;:12;:24;;;;;;:36;;-1:-1:-1;26052:24:0;-1:-1:-1;26081:6:0;26052:28;:36::i;:::-;26038:10;26025:24;;;;:12;:24;;;;;:63;26113:11;;:23;;26129:6;26113:15;:23::i;:::-;26099:11;:37;26150:12;;-1:-1:-1;;;26150:12:0;;;;26147:141;;;26174:8;:15;;-1:-1:-1;;26174:15:0;;;;;26200:9;;26238:5;;26200:59;;-1:-1:-1;;;26200:59:0;;26253:4;26200:59;;;5120:51:1;-1:-1:-1;;;;;26200:9:0;;;;:32;;26238:5;5093:18:1;;26200:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26270:8:0;:16;;-1:-1:-1;;26270:16:0;;;-1:-1:-1;;;26147:141:0;25797:498;:::o;36377:467::-;36564:9;;:48;;-1:-1:-1;;;36564:48:0;;36606:4;36564:48;;;5120:51:1;36431:22:0;;;;;;;;;;-1:-1:-1;;;;;36564:9:0;;:33;;5093:18:1;;36564:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36614:9;;:46;;-1:-1:-1;;;36614:46:0;;36654:4;36614:46;;;5120:51:1;-1:-1:-1;;;;;36614:9:0;;;;:31;;5093:18:1;;36614:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36676:9;;:45;;-1:-1:-1;;;36676:45:0;;36715:4;36676:45;;;5120:51:1;-1:-1:-1;;;;;36676:9:0;;;;:30;;5093:18:1;;36676:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36723:9;;:44;;-1:-1:-1;;;36723:44:0;;36761:4;36723:44;;;5120:51:1;-1:-1:-1;;;;;36723:9:0;;;;:29;;5093:18:1;;36723:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36787:9;;:48;;-1:-1:-1;;;36787:48:0;;36829:4;36787:48;;;5120:51:1;-1:-1:-1;;;;;36787:9:0;;;;:33;;5093:18:1;;36787:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36557:279;;;;;;;;;;36377:467;;;;;:::o;37290:140::-;37373:9;;:48;;-1:-1:-1;;;37373:48:0;;37415:4;37373:48;;;5120:51:1;37346:7:0;;-1:-1:-1;;;;;37373:9:0;;:33;;5093:18:1;;37373:48:0;4974:203:1;34027:108:0;11481:4;11506:5;-1:-1:-1;;;;;11506:5:0;11393:10;11495:16;11377:38;;;;-1:-1:-1;;;11377:38:0;;;;;;;:::i;36856:140::-;36939:9;;:48;;-1:-1:-1;;;36939:48:0;;36981:4;36939:48;;;5120:51:1;36912:7:0;;-1:-1:-1;;;;;36939:9:0;;:33;;5093:18:1;;36939:48:0;4974:203:1;28418:124:0;11481:4;11506:5;-1:-1:-1;;;;;11506:5:0;11393:10;11495:16;11377:38;;;;-1:-1:-1;;;11377:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;28502:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;28502:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28418:124::o;37872:142::-;37956:9;;:49;;-1:-1:-1;;;37956:49:0;;37999:4;37956:49;;;5120:51:1;37929:7:0;;-1:-1:-1;;;;;37956:9:0;;:34;;5093:18:1;;37956:49:0;4974:203:1;30787:261:0;11481:4;11506:5;-1:-1:-1;;;;;11506:5:0;11393:10;11495:16;11377:38;;;;-1:-1:-1;;;11377:38:0;;;;;;;:::i;:::-;30958:11:::1;::::0;30929:9:::1;::::0;30889:51:::1;::::0;-1:-1:-1;;;30889:51:0;;-1:-1:-1;;;;;30929:9:0;;::::1;30889:51;::::0;::::1;5120::1::0;30872:14:0::1;::::0;30889:81:::1;::::0;:64:::1;::::0;30945:7;;30904:4:::1;::::0;30889:31:::1;::::0;5093:18:1;;30889:51:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:55:::0;::::1;:64::i;:::-;:68:::0;::::1;:81::i;:::-;30981:9;::::0;:59:::1;::::0;-1:-1:-1;;;30981:59:0;;31014:4:::1;30981:59;::::0;::::1;10092:34:1::0;31021:10:0::1;10142:18:1::0;;;10135:43;10194:18;;;10187:34;;;30872:98:0;;-1:-1:-1;;;;;;30981:9:0::1;::::0;:24:::1;::::0;10027:18:1;;30981:59:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;30861:187;30787:261:::0;:::o;19087:103::-;-1:-1:-1;;;;;19170:18:0;19153:7;19170:18;;;:9;:18;;;;;;;19087:103::o;29657:450::-;11481:4;11506:5;-1:-1:-1;;;;;11506:5:0;11393:10;11495:16;11377:38;;;;-1:-1:-1;;;11377:38:0;;;;;;;:::i;:::-;29763:17:::1;29783:49;29825:5;29783:29;29801:10;29783:13;19067:12:::0;;;18997:84;29783:49:::1;29763:69;;29880:3;29851:17;:33;;29843:93;;;::::0;-1:-1:-1;;;29843:93:0;;11733:2:1;29843:93:0::1;::::0;::::1;11715:21:1::0;11772:2;11752:18;;;11745:30;11811:34;11791:18;;;11784:62;-1:-1:-1;;;11862:18:1;;;11855:45;11917:19;;29843:93:0::1;11531:411:1::0;29843:93:0::1;29947:9;::::0;:59:::1;::::0;-1:-1:-1;;;29947:59:0;;29989:4:::1;29947:59;::::0;::::1;11426:51:1::0;11493:18;;;11486:34;;;-1:-1:-1;;;;;29947:9:0;;::::1;::::0;:33:::1;::::0;11399:18:1;;29947:59:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;30017:9:0::1;::::0;:82:::1;::::0;-1:-1:-1;;;30017:82:0;;30060:4:::1;30017:82;::::0;::::1;12149:51:1::0;12216:18;;;12209:34;;;30094:3:0::1;12259:18:1::0;;;12252:34;;;-1:-1:-1;;;;;30017:9:0;;::::1;::::0;-1:-1:-1;30017:34:0::1;::::0;-1:-1:-1;12122:18:1;30017:82:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;29752:355;29657:450:::0;;:::o;32897:207::-;32953:19;;;;32945:28;;;;;;32984:8;:15;;-1:-1:-1;;32984:15:0;;;;;33010:9;;33048:5;;33010:59;;-1:-1:-1;;;33010:59:0;;33063:4;33010:59;;;5120:51:1;-1:-1:-1;;;;;33010:9:0;;;;:32;;33048:5;5093:18:1;;33010:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;33080:8:0;:16;;-1:-1:-1;;33080:16:0;;;-1:-1:-1;;;32897:207:0:o;30115:110::-;11481:4;11506:5;-1:-1:-1;;;;;11506:5:0;11393:10;11495:16;11377:38;;;;-1:-1:-1;;;11377:38:0;;;;;;;:::i;:::-;30188:20:::1;:29:::0;30115:110::o;25043:81::-;11481:4;11506:5;-1:-1:-1;;;;;11506:5:0;11393:10;11495:16;11377:38;;;;-1:-1:-1;;;11377:38:0;;;;;;;:::i;:::-;25095:14:::1;:21:::0;;-1:-1:-1;;25095:21:0::1;;;::::0;;25043:81::o;28863:450::-;11481:4;11506:5;-1:-1:-1;;;;;11506:5:0;11393:10;11495:16;11377:38;;;;-1:-1:-1;;;11377:38:0;;;;;;;:::i;:::-;28947:13:::1;28963:43;28999:5;28963:23;28981:4;28963:13;19067:12:::0;;;18997:84;28963:43:::1;28947:59;;29017:17;29037:46;29076:5;29037:26;29055:7;29037:13;19067:12:::0;;;18997:84;29037:46:::1;29017:66;;29085:13;29101:31;29126:5;29101:20;29119:1;29101:13;19067:12:::0;;;18997:84;29101:31:::1;29085:47;;29160:5;29151;:14;;:36;;;;;29182:5;29169:9;:18;;29151:36;29143:102;;;::::0;-1:-1:-1;;;29143:102:0;;12499:2:1;29143:102:0::1;::::0;::::1;12481:21:1::0;12538:2;12518:18;;;12511:30;12577:34;12557:18;;;12550:62;-1:-1:-1;;;12628:18:1;;;12621:51;12689:19;;29143:102:0::1;12297:417:1::0;29143:102:0::1;-1:-1:-1::0;29256:12:0::1;:20:::0;;;;29278:15:::1;:27:::0;-1:-1:-1;;28863:450:0:o;33112:334::-;11481:4;11506:5;-1:-1:-1;;;;;11506:5:0;11393:10;11495:16;11377:38;;;;-1:-1:-1;;;11377:38:0;;;;;;;:::i;:::-;33212:17:::1;33232:48;33273:5;33232:28;33250:9;33232:13;19067:12:::0;;;18997:84;33232:48:::1;33291:8;:15:::0;;-1:-1:-1;;33291:15:0::1;::::0;::::1;::::0;;33317:9:::1;::::0;33361:5:::1;::::0;33317:94:::1;::::0;-1:-1:-1;;;33317:94:0;;33376:4:::1;33317:94;::::0;::::1;12149:51:1::0;12216:18;;;12209:34;;;12259:18;;;12252:34;;;12209;;-1:-1:-1;;;;;;33317:9:0;;::::1;::::0;:38:::1;::::0;33361:5;12122:18:1;;33317:94:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;33422:8:0::1;:16:::0;;-1:-1:-1;;33422:16:0::1;::::0;;-1:-1:-1;;;;;;33112:334:0:o;30330:152::-;11481:4;11506:5;-1:-1:-1;;;;;11506:5:0;11393:10;11495:16;11377:38;;;;-1:-1:-1;;;11377:38:0;;;;;;;:::i;:::-;30409:9:::1;:34:::0;;-1:-1:-1;;;;;30409:34:0;;::::1;-1:-1:-1::0;;;;;;30409:34:0;;::::1;::::0;::::1;::::0;;:9:::1;30445:22:::0;;;:11:::1;:22;::::0;;;;:29;;-1:-1:-1;;30445:29:0::1;30409:34:::0;30445:29:::1;::::0;;30330:152::o;29321:150::-;11481:4;11506:5;-1:-1:-1;;;;;11506:5:0;11393:10;11495:16;11377:38;;;;-1:-1:-1;;;11377:38:0;;;;;;;:::i;:::-;29433:20:::1;::::0;29407:56:::1;::::0;-1:-1:-1;;;29407:56:0;;-1:-1:-1;;;;;29433:20:0;;::::1;29407:56;::::0;::::1;11426:51:1::0;11493:18;;;11486:34;;;29407:25:0;;::::1;::::0;::::1;::::0;11399:18:1;;29407:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;29321:150:::0;;:::o;19744:138::-;19803:7;19820:60;19858:21;19876:1;19858:9;:21::i;:::-;19820:33;19837:15;17198:42;19837:9;:15::i;:::-;19820:12;;;:16;:33::i;:::-;:37;;:60::i;27918:492::-;11481:4;11506:5;-1:-1:-1;;;;;11506:5:0;11393:10;11495:16;11377:38;;;;-1:-1:-1;;;11377:38:0;;;;;;;:::i;:::-;28076:18:::1;:31:::0;;-1:-1:-1;;;;;28076:31:0;;::::1;-1:-1:-1::0;;;;;;28076:31:0;;::::1;::::0;::::1;::::0;;;28109:18:::1;:31:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;28142:20:::1;:35:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;28179:16:::1;:27:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;28208:16:::1;:27:::0;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;28076:18:::1;28246:23:::0;;;:11:::1;:23;::::0;;;;;:30;;-1:-1:-1;;28246:30:0;;::::1;28076:31:::0;28246:30;;::::1;::::0;;;28278:23;;;;;;:30;;;::::1;::::0;::::1;::::0;;28310:25;;;;;;:32;;;::::1;::::0;::::1;::::0;;28344:21;;;;;;:28;;;::::1;::::0;::::1;::::0;;28374:21;;;;;:28;;;;::::1;::::0;;::::1;::::0;;27918:492::o;19613:125::-;-1:-1:-1;;;;;19715:20:0;;19676:7;19715:20;;;:12;:20;;;;;;;;19693:9;:17;;;;;;:43;;:21;:43::i;33454:565::-;11481:4;11506:5;-1:-1:-1;;;;;11506:5:0;11393:10;11495:16;11377:38;;;;-1:-1:-1;;;11377:38:0;;;;;;;:::i;:::-;33594:16:::1;;33581:9;:29;;:67;;;;;33627:21;33614:9;:34;;33581:67;33573:107;;;::::0;-1:-1:-1;;;33573:107:0;;12921:2:1;33573:107:0::1;::::0;::::1;12903:21:1::0;12960:2;12940:18;;;12933:30;12999:29;12979:18;;;12972:57;13046:18;;33573:107:0::1;12719:351:1::0;33573:107:0::1;33707:9;::::0;33691:47:::1;::::0;-1:-1:-1;;;;;33707:9:0;;::::1;::::0;33691:47;::::1;;;::::0;33728:9;;33707::::1;33691:47:::0;33707:9;33691:47;33728:9;33707;33691:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;33768:16:0::1;::::0;:31:::1;::::0;33789:9;33768:20:::1;:31::i;:::-;33749:16;:50:::0;33810:8:::1;:15:::0;;-1:-1:-1;;33810:15:0::1;::::0;::::1;::::0;;33840:9:::1;::::0;33885:5:::1;::::0;33840:94:::1;::::0;-1:-1:-1;;;33840:94:0;;33900:4:::1;33840:94;::::0;::::1;13338:34:1::0;13388:18;;;13381:34;;;-1:-1:-1;;;;;13451:15:1;;;13431:18;;;13424:43;13510:14;;13503:22;13483:18;;;13476:50;33840:9:0;;::::1;::::0;:39:::1;::::0;33885:5;13272:19:1;;33840:94:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;33836:110:::0;-1:-1:-1;;33982:1:0::1;33956:15;:28:::0;-1:-1:-1;33995:8:0::1;:16:::0;;-1:-1:-1;;33995:16:0::1;::::0;;33454:565::o;19196:139::-;19274:4;19281:40;19291:10;19303:9;19314:6;19281:9;:40::i;37584:132::-;37663:9;;:44;;-1:-1:-1;;;37663:44:0;;37701:4;37663:44;;;5120:51:1;37636:7:0;;-1:-1:-1;;;;;37663:9:0;;:29;;5093:18:1;;37663:44:0;4974:203:1;37004:136:0;37085:9;;:46;;-1:-1:-1;;;37085:46:0;;37125:4;37085:46;;;5120:51:1;37058:7:0;;-1:-1:-1;;;;;37085:9:0;;:31;;5093:18:1;;37085:46:0;4974:203:1;37724:140:0;37807:9;;:48;;-1:-1:-1;;;37807:48:0;;37849:4;37807:48;;;5120:51:1;37780:7:0;;-1:-1:-1;;;;;37807:9:0;;:33;;5093:18:1;;37807:48:0;4974:203:1;25264:525:0;25383:10;25370:24;;;;:12;:24;;;;;;;;25344:9;:21;;;;;;;:51;;:25;:51::i;:::-;25334:6;:61;;25326:121;;;;-1:-1:-1;;;25326:121:0;;13739:2:1;25326:121:0;;;13721:21:1;13778:2;13758:18;;;13751:30;13817:34;13797:18;;;13790:62;-1:-1:-1;;;13868:18:1;;;13861:45;13923:19;;25326:121:0;13537:411:1;25326:121:0;25458:15;;:50;;-1:-1:-1;;;25458:50:0;;25489:10;25458:50;;;11426:51:1;11493:18;;;11486:34;;;25458:15:0;;;;-1:-1:-1;;;;;25458:15:0;;:30;;11399:18:1;;25458:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;25559:10:0;25546:24;;;;:12;:24;;;;;;:36;;-1:-1:-1;25546:24:0;-1:-1:-1;25575:6:0;25546:28;:36::i;:::-;25532:10;25519:24;;;;:12;:24;;;;;:63;25607:11;;:23;;25623:6;25607:15;:23::i;27184:111::-;11481:4;11506:5;-1:-1:-1;;;;;11506:5:0;11393:10;11495:16;11377:38;;;;-1:-1:-1;;;11377:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27264:14:0;;;::::1;;::::0;;;:7:::1;:14;::::0;;;;:23;;-1:-1:-1;;27264:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27184:111::o;29479:170::-;11481:4;11506:5;-1:-1:-1;;;;;11506:5:0;11393:10;11495:16;11377:38;;;;-1:-1:-1;;;11377:38:0;;;;;;;:::i;:::-;29569:11:::1;:19:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;29569:19:0;;::::1;::::0;;;::::1;::::0;;;29590::::1;:28:::0;;;::::1;;-1:-1:-1::0;;29590:28:0;;::::1;::::0;;;::::1;::::0;;29620:12:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;29620:21:0::1;-1:-1:-1::0;;;;29620:21:0;;::::1;::::0;;;::::1;::::0;;29479:170::o;36157:212::-;36309:9;;:51;;-1:-1:-1;;;36309:51:0;;36354:4;36309:51;;;5120::1;36216:24:0;;;;;;-1:-1:-1;;;;;36309:9:0;;:36;;5093:18:1;;36309:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36302:59;;;;;;36157:212;;;:::o;31056:209::-;11481:4;11506:5;-1:-1:-1;;;;;11506:5:0;11393:10;11495:16;11377:38;;;;-1:-1:-1;;;11377:38:0;;;;;;;:::i;:::-;31133:19:::1;31155:27;31166:15;15186:1;31166:2;:15;:::i;25132:124::-:0;25186:15;;:62;;-1:-1:-1;;;25186:62:0;;25225:10;25186:62;;;14476:34:1;;;14526:18;;;14519:43;25186:15:0;;;;-1:-1:-1;;;;;25186:15:0;;:38;;14411:18:1;;25186:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25132:124::o;28550:305::-;11481:4;11506:5;-1:-1:-1;;;;;11506:5:0;11393:10;11495:16;11377:38;;;;-1:-1:-1;;;11377:38:0;;;;;;;:::i;:::-;28679:10:::1;:24:::0;;;28721:12:::1;::::0;:53:::1;::::0;28766:6:::1;::::0;28721:32:::1;::::0;28738:14;28721:16:::1;:32::i;:53::-;28705:13;:69:::0;28793:12:::1;::::0;:54:::1;::::0;28839:6:::1;::::0;28793:33:::1;::::0;28810:15;28793:16:::1;:33::i;:54::-;28776:14;:71:::0;-1:-1:-1;;;28550:305:0:o;11519:111::-;11481:4;11506:5;-1:-1:-1;;;;;11506:5:0;11393:10;11495:16;11377:38;;;;-1:-1:-1;;;11377:38:0;;;;;;;:::i;:::-;11585:5:::1;:11:::0;;-1:-1:-1;;;;;;11585:11:0::1;-1:-1:-1::0;;;;;11585:11:0;::::1;::::0;;::::1;::::0;;;11603:25:::1;::::0;5120:51:1;;;11603:25:0::1;::::0;5108:2:1;5093:18;11603:25:0::1;;;;;;;11519:111:::0;:::o;27019:157::-;11481:4;11506:5;-1:-1:-1;;;;;11506:5:0;11393:10;11495:16;11377:38;;;;-1:-1:-1;;;11377:38:0;;;;;;;:::i;:::-;27094:15:::1;:44:::0;;-1:-1:-1;;;;;;27094:44:0::1;;-1:-1:-1::0;;;;;27094:44:0;;;::::1;::::0;;::::1;;::::0;;-1:-1:-1;27140:21:0;;;:11:::1;:21;::::0;;;;:28;;-1:-1:-1;;27140:28:0::1;-1:-1:-1::0;27140:28:0::1;::::0;;27019:157::o;26303:708::-;26373:10;26395:1;26360:24;;;:12;:24;;;;;;26352:96;;;;-1:-1:-1;;;26352:96:0;;14991:2:1;26352:96:0;;;14973:21:1;15030:2;15010:18;;;15003:30;15069:34;15049:18;;;15042:62;-1:-1:-1;;;15120:18:1;;;15113:44;15174:19;;26352:96:0;14789:410:1;26352:96:0;26459:21;26483;26493:10;26483:9;:21::i;:::-;26515:15;;:62;;-1:-1:-1;;;26515:62:0;;26554:10;26515:62;;;14476:34:1;;;14526:18;;;14519:43;26459:45:0;;-1:-1:-1;26515:15:0;;;-1:-1:-1;;;;;26515:15:0;;:38;;14411:18:1;;26515:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26588:20;26611:40;26637:13;26611:21;26621:10;26611:9;:21::i;:40::-;26662:15;;:56;;-1:-1:-1;;;26662:56:0;;26693:10;26662:56;;;11426:51:1;11493:18;;;11486:34;;;26588:63:0;;-1:-1:-1;26662:15:0;;;-1:-1:-1;;;;;26662:15:0;;:30;;11399:18:1;;26662:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26769:10:0;26756:24;;;;:12;:24;;;;;;:42;;-1:-1:-1;26756:24:0;-1:-1:-1;26785:12:0;26756:28;:42::i;:::-;26742:10;26729:24;;;;:12;:24;;;;;:69;26823:11;;:29;;26839:12;26823:15;:29::i;:::-;26809:11;:43;26866:12;;-1:-1:-1;;;26866:12:0;;;;26863:141;;;26890:8;:15;;-1:-1:-1;;26890:15:0;;;;;26916:9;;26954:5;;26916:59;;-1:-1:-1;;;26916:59:0;;26969:4;26916:59;;;5120:51:1;-1:-1:-1;;;;;26916:9:0;;;;:32;;26954:5;5093:18:1;;26916:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;26986:8:0;:16;;-1:-1:-1;;26986:16:0;;;-1:-1:-1;;;26863:141:0;26341:670;;26303:708::o;35814:335::-;-1:-1:-1;;;;;35907:19:0;;35899:68;;;;-1:-1:-1;;;35899:68:0;;15406:2:1;35899:68:0;;;15388:21:1;15445:2;15425:18;;;15418:30;15484:34;15464:18;;;15457:62;-1:-1:-1;;;15535:18:1;;;15528:34;15579:19;;35899:68:0;15204:400:1;35899:68:0;-1:-1:-1;;;;;35986:21:0;;35978:68;;;;-1:-1:-1;;;35978:68:0;;15811:2:1;35978:68:0;;;15793:21:1;15850:2;15830:18;;;15823:30;15889:34;15869:18;;;15862:62;-1:-1:-1;;;15940:18:1;;;15933:32;15982:19;;35978:68:0;15609:398:1;35978:68:0;-1:-1:-1;;;;;36057:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;36109:32;;905:25:1;;;36109:32:0;;878:18:1;36109:32:0;;;;;;;35814:335;;;:::o;8633:82::-;8691:7;8708:5;8712:1;8708;:5;:::i;8457:82::-;8515:7;8532:5;8536:1;8532;:5;:::i;20244:732::-;20333:37;20344:6;20352:9;20363:6;20333:10;:37::i;:::-;20381:38;20401:6;20409:9;20381:19;:38::i;:::-;20430:39;20443:6;20451:9;20462:6;20430:12;:39::i;:::-;20480:41;20495:6;20503:9;20514:6;20480:14;:41::i;:::-;20532:43;20549:6;20557:9;20568:6;20532:16;:43::i;:::-;20586:27;20595:6;20603:9;20586:8;:27::i;:::-;20624:37;20635:6;20643:9;20654:6;20624:10;:37::i;:::-;-1:-1:-1;;;;;20692:17:0;;;;;;:9;:17;;;;;;:29;;20714:6;20692:21;:29::i;:::-;-1:-1:-1;;;;;20672:17:0;;;;;;:9;:17;;;;;:49;;;;20757:32;20682:6;20779:9;20757:13;:32::i;:::-;:78;;20829:6;20757:78;;;20792:34;20800:6;20808:9;20819:6;20792:7;:34::i;:::-;-1:-1:-1;;;;;20869:20:0;;;;;;:9;:20;;;;;;20732:103;;-1:-1:-1;20869:40:0;;20732:103;20869:24;:40::i;:::-;-1:-1:-1;;;;;20846:20:0;;;;;;;:9;:20;;;;;;;:63;;;;20925:43;;;;;;;;;;20953:14;905:25:1;;893:2;878:18;;759:177;20925:43:0;;;;;;;;20322:654;20244:732;;;:::o;9758:162::-;9844:7;9890:12;9882:6;;;;9874:29;;;;-1:-1:-1;;;9874:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;9912:5:0;;;9758:162::o;8545:82::-;8603:7;8620:5;8624:1;8620;:5;:::i;8721:82::-;8779:7;8796:5;8800:1;8796;:5;:::i;19890:346::-;-1:-1:-1;;;;;19994:20:0;;19986:70;;;;-1:-1:-1;;;19986:70:0;;16872:2:1;19986:70:0;;;16854:21:1;16911:2;16891:18;;;16884:30;16950:34;16930:18;;;16923:62;-1:-1:-1;;;17001:18:1;;;16994:35;17046:19;;19986:70:0;16670:401:1;19986:70:0;-1:-1:-1;;;;;20075:23:0;;20067:71;;;;-1:-1:-1;;;20067:71:0;;17278:2:1;20067:71:0;;;17260:21:1;17317:2;17297:18;;;17290:30;17356:34;17336:18;;;17329:62;-1:-1:-1;;;17407:18:1;;;17400:33;17450:19;;20067:71:0;17076:399:1;20067:71:0;20167:17;20177:6;20167:9;:17::i;:::-;20157:6;:27;;20149:79;;;;-1:-1:-1;;;20149:79:0;;17682:2:1;20149:79:0;;;17664:21:1;17721:2;17701:18;;;17694:30;17760:34;17740:18;;;17733:62;-1:-1:-1;;;17811:18:1;;;17804:38;17859:19;;20149:79:0;17480:404:1;20984:206:0;-1:-1:-1;;;;;21077:19:0;;;;;;:11;:19;;;;;;;;21076:20;:47;;;;-1:-1:-1;;;;;;21101:22:0;;;;;;:11;:22;;;;;;;;21100:23;21076:47;21073:110;;;21133:14;;;;;;;21125:56;;;;-1:-1:-1;;;21125:56:0;;18091:2:1;21125:56:0;;;18073:21:1;18130:2;18110:18;;;18103:30;18169:31;18149:18;;;18142:59;18218:18;;21125:56:0;17889:353:1;21827:399:0;-1:-1:-1;;;;;21928:20:0;;21959:1;21928:20;;;:12;:20;;;;;;:33;21925:160;;-1:-1:-1;;;;;22009:17:0;;;;;;:9;:17;;;;;;;;;21983:20;;;;;;;21972:32;;:6;;:10;:32::i;:::-;21971:55;;21963:120;;;;-1:-1:-1;;;21963:120:0;;18449:2:1;21963:120:0;;;18431:21:1;18488:2;18468:18;;;18461:30;18527:34;18507:18;;;18500:62;-1:-1:-1;;;18578:18:1;;;18571:50;18638:19;;21963:120:0;18247:416:1;21963:120:0;22099:8;;;;;;;22095:124;;22127:12;;22117:6;:22;;:45;;;-1:-1:-1;;;;;;22143:19:0;;;;;;:11;:19;;;;;;;;22117:45;:71;;;-1:-1:-1;;;;;;22166:22:0;;;;;;:11;:22;;;;;;;;22117:71;22109:108;;;;-1:-1:-1;;;22109:108:0;;18870:2:1;22109:108:0;;;18852:21:1;18909:2;18889:18;;;18882:30;18948:26;18928:18;;;18921:54;18992:18;;22109:108:0;18668:348:1;21198:351:0;-1:-1:-1;;;;;21302:19:0;;;;;;:11;:19;;;;;;;;21301:20;:47;;;;-1:-1:-1;;;;;;21326:22:0;;;;;;:11;:22;;;;;;;;21325:23;21301:47;:77;;;;-1:-1:-1;21373:4:0;;-1:-1:-1;;;;;21352:26:0;;;21373:4;;21352:26;;21301:77;:107;;;;-1:-1:-1;;;;;;21382:26:0;;17198:42;21382:26;;21301:107;:120;;;;-1:-1:-1;21413:8:0;;;;;;;21412:9;21301:120;21298:244;;;21483:15;;-1:-1:-1;;;;;21446:20:0;;;;;;:9;:20;;;;;;:32;;21471:6;21446:24;:32::i;:::-;21445:53;;21437:103;;;;-1:-1:-1;;;21437:103:0;;19223:2:1;21437:103:0;;;19205:21:1;19262:2;19242:18;;;19235:30;19301:34;19281:18;;;19274:62;-1:-1:-1;;;19352:18:1;;;19345:35;19397:19;;21437:103:0;19021:401:1;21557:262:0;21679:4;;-1:-1:-1;;;;;21658:26:0;;;21679:4;;21658:26;;:48;;-1:-1:-1;;;;;;21688:18:0;;;;;;:7;:18;;;;;;;;21658:48;21657:74;;;;-1:-1:-1;;;;;;21712:19:0;;;;;;:11;:19;;;;;;;;21711:20;21657:74;:102;;;;;21745:14;;21735:6;:24;;21657:102;:115;;;;-1:-1:-1;21764:8:0;;;;21763:9;21657:115;:128;;;;-1:-1:-1;21777:8:0;;;;;;;21776:9;21657:128;21654:158;;;21808:1;21787:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;21557:262:0;;;:::o;24858:173::-;24934:33;24949:6;24957:9;24934:14;:33::i;:::-;24931:93;;;24969:29;24984:13;;24969:14;:29::i;:::-;25020:1;25000:9;:22;24858:173;;:::o;31479:742::-;31573:14;;;;;;;:38;;;;-1:-1:-1;;;;;;31592:19:0;;;;;;:11;:19;;;;;;;;31591:20;31573:38;:92;;;;-1:-1:-1;31637:4:0;;-1:-1:-1;;;;;31616:26:0;;;31637:4;;31616:26;;:48;;-1:-1:-1;;;;;;31646:18:0;;;;;;:7;:18;;;;;;;;31616:48;31573:126;;;;;31679:20;;31669:6;:30;;31573:126;:152;;;;-1:-1:-1;31717:8:0;;;;31716:9;31573:152;:165;;;;-1:-1:-1;31730:8:0;;;;;;;31729:9;31573:165;31570:201;;;31767:1;31740:15;;:29;;;;;;;:::i;:::-;;;;-1:-1:-1;;31570:201:0;31784:14;;;;;;;:29;;;;-1:-1:-1;31802:11:0;;;;;;;31784:29;:75;;;;-1:-1:-1;31835:9:0;;31857:1;;31817:29;;-1:-1:-1;;;;;31835:9:0;31817;:29::i;:::-;:42;31784:75;:99;;;;-1:-1:-1;;;;;;31864:19:0;;;;;;:11;:19;;;;;;;;31863:20;31784:99;:153;;;;-1:-1:-1;31909:4:0;;-1:-1:-1;;;;;31888:26:0;;;31909:4;;31888:26;;:48;;-1:-1:-1;;;;;;31918:18:0;;;;;;:7;:18;;;;;;;;31888:48;31784:179;;;;-1:-1:-1;31955:8:0;;;;31954:9;31784:179;:192;;;;-1:-1:-1;31968:8:0;;;;;;;31967:9;31784:192;31781:433;;;32019:16;;31999;;:36;;:81;;;;;32064:16;;32039:21;:41;;31999:81;:120;;;;;32103:16;;32084:15;;:35;;31999:120;31996:217;;;32143:25;:23;:25::i;31996:217::-;32193:18;:16;:18::i;34269:173::-;-1:-1:-1;;;;;34375:19:0;;34350:4;34375:19;;;:11;:19;;;;;;;;34374:20;:47;;;;-1:-1:-1;;;;;;34399:22:0;;;;;;:11;:22;;;;;;;;34398:23;34374:47;:60;;;;-1:-1:-1;;34426:8:0;;;;;;;34425:9;;34269:173;-1:-1:-1;;34269:173:0:o;34789:700::-;34875:7;34931:1;34898:30;34910:6;34918:9;34898:11;:30::i;:::-;:34;:47;;;;-1:-1:-1;34937:8:0;;;;;;;34936:9;34898:47;34895:572;;;34957:17;34977:59;35005:30;35017:6;35025:9;35005:11;:30::i;:::-;34988:11;;34977:23;;:6;;:10;:23::i;:59::-;35092:4;35074:24;;;;:9;:24;;;;;;34957:79;;-1:-1:-1;35074:39:0;;34957:79;35074:28;:39::i;:::-;35065:4;35047:24;;;;:9;:24;;;;;;;:66;;;;35129:42;;-1:-1:-1;;;;;35129:42:0;;;;;;;35161:9;905:25:1;;893:2;878:18;;759:177;35129:42:0;;;;;;;;35185:9;;:22;35182:113;;35242:9;;35282;;35265:11;;35209:84;;35227:4;;-1:-1:-1;;;;;35242:9:0;;;;35254:38;;35282:9;35254:23;;:6;;:10;:23::i;:38::-;35209:9;:84::i;:::-;35308:10;;:23;35305:122;;35366:16;;35413:10;;35396:11;;35333:92;;35351:4;;-1:-1:-1;;;;;35366:16:0;;;;35385:39;;35413:10;35385:23;;:6;;:10;:23::i;35333:92::-;35444:21;:6;35455:9;35444:10;:21::i;:::-;35437:28;;;;;34895:572;-1:-1:-1;35475:6:0;34789:700;-1:-1:-1;;34789:700:0:o;24440:410::-;24522:4;24539:19;24589:13;;24561:24;24579:4;24561:9;:24::i;:::-;24649:4;;24561:41;-1:-1:-1;24561:41:0;;-1:-1:-1;24613:11:0;;-1:-1:-1;;;;;24628:26:0;;;24649:4;;24628:26;;:48;;-1:-1:-1;;;;;;24658:18:0;;;;;;:7;:18;;;;;;;;24628:48;24696:8;;24613:64;;-1:-1:-1;24696:8:0;;24695:9;:24;;;;-1:-1:-1;24708:11:0;;;;24695:24;:42;;;;-1:-1:-1;24723:14:0;;;;;;;24695:42;:66;;;;-1:-1:-1;;;;;;24742:19:0;;;;;;:11;:19;;;;;;;;24741:20;24695:66;:89;;;;;24778:6;24695:89;:116;;;;;24801:10;;24788:9;;:23;;24695:116;:134;;;;;24815:14;24695:134;:147;;;;-1:-1:-1;24834:8:0;;;;;;;24833:9;24695:147;24688:154;24440:410;-1:-1:-1;;;;;24440:410:0:o;22234:1388::-;16651:8;:15;;-1:-1:-1;;16651:15:0;16662:4;16651:15;;;;;;22329:8:::1;::::0;16651;;22328:24:::1;::::0;22350:1:::1;::::0;22328:17:::1;::::0;22329:8;22328:14:::1;:17::i;:24::-;22305:47;;22363:32;22398:42;22427:12;22398:24;22409:12;;22398:6;:10;;:24;;;;:::i;:42::-;22363:77:::0;-1:-1:-1;22451:14:0::1;22468:36;:6:::0;22363:77;22468:10:::1;:36::i;:::-;22451:53:::0;-1:-1:-1;22540:21:0::1;22572:24;22451:53:::0;22572:16:::1;:24::i;:::-;22607:20;22630:41;:21;22656:14:::0;22630:25:::1;:41::i;:::-;22607:64;;22682:19;22703:48;22720:30;22737:12;;22720;:16;;:30;;;;:::i;:::-;22703:12:::0;;:16:::1;:48::i;:::-;22682:69;;22762:29;22794;22810:12;;22794:11;:15;;:29;;;;:::i;:::-;22762:61:::0;-1:-1:-1;22837:34:0;;22834:123:::1;;22935:18;::::0;22873:81:::1;::::0;22886:24;;22912:21;;-1:-1:-1;;;;;22935:18:0::1;22873:12;:81::i;:::-;23016:12;::::0;22967:23:::1;::::0;22993:36:::1;::::0;:18:::1;:11:::0;23009:1:::1;22993:15;:18::i;:36::-;22967:62:::0;-1:-1:-1;23043:28:0;;23040:88:::1;;23081:18;::::0;23073:53:::1;::::0;-1:-1:-1;;;;;23081:18:0;;::::1;::::0;23073:53;::::1;;;::::0;23110:15;;23081:18:::1;23073:53:::0;23081:18;23073:53;23110:15;23081:18;23073:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23040:88;23184:9;::::0;23138:20:::1;::::0;23161:33:::1;::::0;:18:::1;:11:::0;23177:1:::1;23161:15;:18::i;:33::-;23138:56:::0;-1:-1:-1;23208:25:0;;23205:88:::1;;23251:15;::::0;23235:56:::1;::::0;-1:-1:-1;;;;;23251:15:0;;::::1;::::0;23235:56;::::1;;;::::0;23278:12;;23251:15:::1;23235:56:::0;23251:15;23235:56;23278:12;23251:15;23235:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23205:88;23350:10;::::0;23303:21:::1;::::0;23327:34:::1;::::0;:18:::1;:11:::0;23343:1:::1;23327:15;:18::i;:34::-;23303:58:::0;-1:-1:-1;23375:26:0;;23372:87:::1;;23422:16;::::0;:35:::1;::::0;23443:13;23422:20:::1;:35::i;:::-;23403:16;:54:::0;23372:87:::1;23469:15;23487:43;23513:16;;23487:21;:25;;:43;;;;:::i;:::-;23469:61:::0;-1:-1:-1;23544:20:0;;23541:74:::1;;23574:20;::::0;23566:47:::1;::::0;-1:-1:-1;;;;;23574:20:0;;::::1;::::0;23566:47;::::1;;;::::0;23605:7;;23574:20:::1;23566:47:::0;23574:20;23566:47;23605:7;23574:20;23566:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23541:74;-1:-1:-1::0;;16671:8:0;:16;;-1:-1:-1;;16671:16:0;;;-1:-1:-1;;;;;;;;;;22234:1388:0:o;32420:469::-;32509:9;;32533:16;;32493:61;;32476:12;;-1:-1:-1;;;;;32509:9:0;;32533:16;32476:12;32493:61;32476:12;32493:61;32533:16;32509:9;32493:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32631:16:0;;32610;;32575:5;;-1:-1:-1;32610:38:0;;-1:-1:-1;32610:16:0;:20;:38::i;:::-;32591:16;:57;32659:8;:15;;-1:-1:-1;;32659:15:0;;;;;32689:9;;32734:5;;32756:16;;;32774;;32689:115;;-1:-1:-1;;;32689:115:0;;32749:4;32689:115;;;13338:34:1;13388:18;;;13381:34;;;;-1:-1:-1;;;;;32774:16:0;;;13431:18:1;;;13424:43;-1:-1:-1;;;32792:11:0;;32659:15;32792:11;13510:14:1;13503:22;13483:18;;;13476:50;32689:9:0;;;;:39;;32734:5;13272:19:1;;32689:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32685:131;-1:-1:-1;32826:8:0;:16;;-1:-1:-1;;32826:16:0;;;32837:5;32853:15;:28;32420:469::o;32229:183::-;32277:8;:15;;-1:-1:-1;;32277:15:0;;;;;32307:9;;32345:5;;32307:59;;-1:-1:-1;;;32307:59:0;;32360:4;32307:59;;;5120:51:1;-1:-1:-1;;;;;32307:9:0;;;;:32;;32345:5;5093:18:1;;32307:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32303:75;32388:8;:16;;-1:-1:-1;;32388:16:0;;;32229:183::o;34450:331::-;34574:4;;34529:7;;-1:-1:-1;;;;;34553:26:0;;;34574:4;;34553:26;;:48;;-1:-1:-1;;;;;;34583:18:0;;;;;;:7;:18;;;;;;;;34553:48;34552:74;;;;;34624:1;34606:7;;:20;34552:74;34549:95;;;-1:-1:-1;34635:7:0;;34628:14;;34549:95;34676:4;;-1:-1:-1;;;;;34658:23:0;;;34676:4;;34658:23;;:42;;-1:-1:-1;;;;;;34685:15:0;;;;;;:7;:15;;;;;;;;34658:42;34657:69;;;;;34724:1;34705:8;;:21;34657:69;34654:91;;;-1:-1:-1;34735:8:0;;34728:15;;34654:91;-1:-1:-1;34762:11:0;;34450:331;;;;:::o;23998:434::-;24088:16;;;24102:1;24088:16;;;;;;;;24064:21;;24088:16;;;;;;;;;;-1:-1:-1;24088:16:0;24064:40;;24133:4;24115;24120:1;24115:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24115:23:0;;;:7;;;;;;;;;;:23;;;;24159:6;;:13;;;-1:-1:-1;;;24159:13:0;;;;:6;;;;;:11;;:13;;;;;24115:7;;24159:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24149:4;24154:1;24149:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24149:23:0;;;:7;;;;;;;;;:23;24215:6;;24183:53;;24200:4;;24215:6;24224:11;24183:8;:53::i;:::-;24247:6;;:177;;-1:-1:-1;;;24247:177:0;;-1:-1:-1;;;;;24247:6:0;;;;:57;;:177;;24319:11;;24247:6;;24361:4;;24388;;24408:15;;24247:177;;;:::i;23630:360::-;23761:6;;23729:53;;23746:4;;-1:-1:-1;;;;;23761:6:0;23770:11;23729:8;:53::i;:::-;23793:6;;:189;;-1:-1:-1;;;23793:189:0;;23856:4;23793:189;;;21483:34:1;21533:18;;;21526:34;;;23793:6:0;21576:18:1;;;21569:34;;;21619:18;;;21612:34;-1:-1:-1;;;;;21683:15:1;;;21662:19;;;21655:44;23966:15:0;21715:19:1;;;21708:35;23793:6:0;;;;:22;;23823:9;;21417:19:1;;23793:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;206:548:1:-;318:4;347:2;376;365:9;358:21;408:6;402:13;451:6;446:2;435:9;431:18;424:34;476:1;486:140;500:6;497:1;494:13;486:140;;;595:14;;;591:23;;585:30;561:17;;;580:2;557:26;550:66;515:10;;486:140;;;490:3;675:1;670:2;661:6;650:9;646:22;642:31;635:42;745:2;738;734:7;729:2;721:6;717:15;713:29;702:9;698:45;694:54;686:62;;;;206:548;;;;:::o;941:180::-;1000:6;1053:2;1041:9;1032:7;1028:23;1024:32;1021:52;;;1069:1;1066;1059:12;1021:52;-1:-1:-1;1092:23:1;;941:180;-1:-1:-1;941:180:1:o;1126:131::-;-1:-1:-1;;;;;1201:31:1;;1191:42;;1181:70;;1247:1;1244;1237:12;1262:315;1330:6;1338;1391:2;1379:9;1370:7;1366:23;1362:32;1359:52;;;1407:1;1404;1397:12;1359:52;1446:9;1433:23;1465:31;1490:5;1465:31;:::i;:::-;1515:5;1567:2;1552:18;;;;1539:32;;-1:-1:-1;;;1262:315:1:o;1582:118::-;1668:5;1661:13;1654:21;1647:5;1644:32;1634:60;;1690:1;1687;1680:12;1705:450;1779:6;1787;1795;1848:2;1836:9;1827:7;1823:23;1819:32;1816:52;;;1864:1;1861;1854:12;1816:52;1900:9;1887:23;1877:33;;1960:2;1949:9;1945:18;1932:32;1973:31;1998:5;1973:31;:::i;:::-;2023:5;-1:-1:-1;2080:2:1;2065:18;;2052:32;2093:30;2052:32;2093:30;:::i;:::-;2142:7;2132:17;;;1705:450;;;;;:::o;2160:799::-;2300:6;2308;2316;2324;2332;2340;2348;2356;2364;2372;2425:3;2413:9;2404:7;2400:23;2396:33;2393:53;;;2442:1;2439;2432:12;2393:53;-1:-1:-1;;2465:23:1;;;2535:2;2520:18;;2507:32;;-1:-1:-1;2586:2:1;2571:18;;2558:32;;2637:2;2622:18;;2609:32;;-1:-1:-1;2688:3:1;2673:19;;2660:33;;-1:-1:-1;2740:3:1;2725:19;;2712:33;;-1:-1:-1;2792:3:1;2777:19;;2764:33;;-1:-1:-1;2844:3:1;2829:19;;2816:33;;-1:-1:-1;2896:3:1;2881:19;;2868:33;;-1:-1:-1;2948:3:1;2933:19;2920:33;;-1:-1:-1;2160:799:1;-1:-1:-1;2160:799:1:o;2964:456::-;3041:6;3049;3057;3110:2;3098:9;3089:7;3085:23;3081:32;3078:52;;;3126:1;3123;3116:12;3078:52;3165:9;3152:23;3184:31;3209:5;3184:31;:::i;:::-;3234:5;-1:-1:-1;3291:2:1;3276:18;;3263:32;3304:33;3263:32;3304:33;:::i;:::-;2964:456;;3356:7;;-1:-1:-1;;;3410:2:1;3395:18;;;;3382:32;;2964:456::o;3425:247::-;3484:6;3537:2;3525:9;3516:7;3512:23;3508:32;3505:52;;;3553:1;3550;3543:12;3505:52;3592:9;3579:23;3611:31;3636:5;3611:31;:::i;4334:382::-;4399:6;4407;4460:2;4448:9;4439:7;4435:23;4431:32;4428:52;;;4476:1;4473;4466:12;4428:52;4515:9;4502:23;4534:31;4559:5;4534:31;:::i;:::-;4584:5;-1:-1:-1;4641:2:1;4626:18;;4613:32;4654:30;4613:32;4654:30;:::i;:::-;4703:7;4693:17;;;4334:382;;;;;:::o;4721:248::-;4789:6;4797;4850:2;4838:9;4829:7;4825:23;4821:32;4818:52;;;4866:1;4863;4856:12;4818:52;-1:-1:-1;;4889:23:1;;;4959:2;4944:18;;;4931:32;;-1:-1:-1;4721:248:1:o;5182:813::-;5277:6;5285;5293;5301;5309;5362:3;5350:9;5341:7;5337:23;5333:33;5330:53;;;5379:1;5376;5369:12;5330:53;5418:9;5405:23;5437:31;5462:5;5437:31;:::i;:::-;5487:5;-1:-1:-1;5544:2:1;5529:18;;5516:32;5557:33;5516:32;5557:33;:::i;:::-;5609:7;-1:-1:-1;5668:2:1;5653:18;;5640:32;5681:33;5640:32;5681:33;:::i;:::-;5733:7;-1:-1:-1;5792:2:1;5777:18;;5764:32;5805:33;5764:32;5805:33;:::i;:::-;5857:7;-1:-1:-1;5916:3:1;5901:19;;5888:33;5930;5888;5930;:::i;:::-;5982:7;5972:17;;;5182:813;;;;;;;;:::o;6000:511::-;6068:6;6076;6084;6137:2;6125:9;6116:7;6112:23;6108:32;6105:52;;;6153:1;6150;6143:12;6105:52;6192:9;6179:23;6211:28;6233:5;6211:28;:::i;:::-;6258:5;-1:-1:-1;6315:2:1;6300:18;;6287:32;6328:30;6287:32;6328:30;:::i;6840:388::-;6908:6;6916;6969:2;6957:9;6948:7;6944:23;6940:32;6937:52;;;6985:1;6982;6975:12;6937:52;7024:9;7011:23;7043:31;7068:5;7043:31;:::i;:::-;7093:5;-1:-1:-1;7150:2:1;7135:18;;7122:32;7163:33;7122:32;7163:33;:::i;7233:316::-;7310:6;7318;7326;7379:2;7367:9;7358:7;7354:23;7350:32;7347:52;;;7395:1;7392;7385:12;7347:52;-1:-1:-1;;7418:23:1;;;7488:2;7473:18;;7460:32;;-1:-1:-1;7539:2:1;7524:18;;;7511:32;;7233:316;-1:-1:-1;7233:316:1:o;7814:184::-;7884:6;7937:2;7925:9;7916:7;7912:23;7908:32;7905:52;;;7953:1;7950;7943:12;7905:52;-1:-1:-1;7976:16:1;;7814:184;-1:-1:-1;7814:184:1:o;8003:329::-;8205:2;8187:21;;;8244:1;8224:18;;;8217:29;-1:-1:-1;;;8277:2:1;8262:18;;8255:36;8323:2;8308:18;;8003:329::o;8337:127::-;8398:10;8393:3;8389:20;8386:1;8379:31;8429:4;8426:1;8419:15;8453:4;8450:1;8443:15;8469:422;8558:1;8601:5;8558:1;8615:270;8636:7;8626:8;8623:21;8615:270;;;8695:4;8691:1;8687:6;8683:17;8677:4;8674:27;8671:53;;;8704:18;;:::i;:::-;8754:7;8744:8;8740:22;8737:55;;;8774:16;;;;8737:55;8853:22;;;;8813:15;;;;8615:270;;;8619:3;8469:422;;;;;:::o;8896:806::-;8945:5;8975:8;8965:80;;-1:-1:-1;9016:1:1;9030:5;;8965:80;9064:4;9054:76;;-1:-1:-1;9101:1:1;9115:5;;9054:76;9146:4;9164:1;9159:59;;;;9232:1;9227:130;;;;9139:218;;9159:59;9189:1;9180:10;;9203:5;;;9227:130;9264:3;9254:8;9251:17;9248:43;;;9271:18;;:::i;:::-;-1:-1:-1;;9327:1:1;9313:16;;9342:5;;9139:218;;9441:2;9431:8;9428:16;9422:3;9416:4;9413:13;9409:36;9403:2;9393:8;9390:16;9385:2;9379:4;9376:12;9372:35;9369:77;9366:159;;;-1:-1:-1;9478:19:1;;;9510:5;;9366:159;9557:34;9582:8;9576:4;9557:34;:::i;:::-;9627:6;9623:1;9619:6;9615:19;9606:7;9603:32;9600:58;;;9638:18;;:::i;:::-;9676:20;;8896:806;-1:-1:-1;;;8896:806:1:o;9707:140::-;9765:5;9794:47;9835:4;9825:8;9821:19;9815:4;9794:47;:::i;10232:245::-;10299:6;10352:2;10340:9;10331:7;10327:23;10323:32;10320:52;;;10368:1;10365;10358:12;10320:52;10400:9;10394:16;10419:28;10441:5;10419:28;:::i;13953:306::-;14041:6;14049;14057;14110:2;14098:9;14089:7;14085:23;14081:32;14078:52;;;14126:1;14123;14116:12;14078:52;14155:9;14149:16;14139:26;;14205:2;14194:9;14190:18;14184:25;14174:35;;14249:2;14238:9;14234:18;14228:25;14218:35;;13953:306;;;;;:::o;16012:168::-;16085:9;;;16116;;16133:15;;;16127:22;;16113:37;16103:71;;16154:18;;:::i;16185:125::-;16250:9;;;16271:10;;;16268:36;;;16284:18;;:::i;16315:128::-;16382:9;;;16403:11;;;16400:37;;;16417:18;;:::i;16448:217::-;16488:1;16514;16504:132;;16558:10;16553:3;16549:20;16546:1;16539:31;16593:4;16590:1;16583:15;16621:4;16618:1;16611:15;16504:132;-1:-1:-1;16650:9:1;;16448:217::o;19769:127::-;19830:10;19825:3;19821:20;19818:1;19811:31;19861:4;19858:1;19851:15;19885:4;19882:1;19875:15;19901:251;19971:6;20024:2;20012:9;20003:7;19999:23;19995:32;19992:52;;;20040:1;20037;20030:12;19992:52;20072:9;20066:16;20091:31;20116:5;20091:31;:::i;20157:980::-;20419:4;20467:3;20456:9;20452:19;20498:6;20487:9;20480:25;20524:2;20562:6;20557:2;20546:9;20542:18;20535:34;20605:3;20600:2;20589:9;20585:18;20578:31;20629:6;20664;20658:13;20695:6;20687;20680:22;20733:3;20722:9;20718:19;20711:26;;20772:2;20764:6;20760:15;20746:29;;20793:1;20803:195;20817:6;20814:1;20811:13;20803:195;;;20882:13;;-1:-1:-1;;;;;20878:39:1;20866:52;;20973:15;;;;20938:12;;;;20914:1;20832:9;20803:195;;;-1:-1:-1;;;;;;;21054:32:1;;;;21049:2;21034:18;;21027:60;-1:-1:-1;;;21118:3:1;21103:19;21096:35;21015:3;20157:980;-1:-1:-1;;;20157:980:1:o
Swarm Source
ipfs://83a2e18eddfde72d8b55bd3438a2ae2e09fa6dc9e92f36100f879af0bacd0480
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.