More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 444 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 17951954 | 80 days ago | IN | 0 CRO | 0.151294 | ||||
Approve | 5837287 | 872 days ago | IN | 0 CRO | 0.11323827 | ||||
Approve | 4117166 | 985 days ago | IN | 0 CRO | 0.21990652 | ||||
Approve | 3954032 | 996 days ago | IN | 0 CRO | 0.32838193 | ||||
Approve | 2932911 | 1063 days ago | IN | 0 CRO | 0.22212885 | ||||
Approve | 2910383 | 1065 days ago | IN | 0 CRO | 0.22209663 | ||||
Approve | 2708547 | 1078 days ago | IN | 0 CRO | 0.222395 | ||||
Approve | 2543734 | 1090 days ago | IN | 0 CRO | 0.222395 | ||||
Approve | 2521420 | 1091 days ago | IN | 0 CRO | 0.311353 | ||||
Approve | 2480911 | 1094 days ago | IN | 0 CRO | 0.222395 | ||||
Approve | 2424233 | 1098 days ago | IN | 0 CRO | 0.222395 | ||||
Approve | 2393868 | 1101 days ago | IN | 0 CRO | 0.222395 | ||||
Approve | 2386954 | 1101 days ago | IN | 0 CRO | 0.222395 | ||||
Approve | 2386201 | 1101 days ago | IN | 0 CRO | 0.222395 | ||||
Approve | 2368930 | 1102 days ago | IN | 0 CRO | 0.222395 | ||||
Approve | 2332717 | 1105 days ago | IN | 0 CRO | 0.222395 | ||||
Approve | 2314674 | 1106 days ago | IN | 0 CRO | 0.222395 | ||||
Approve | 2311125 | 1106 days ago | IN | 0 CRO | 0.311353 | ||||
Approve | 2311074 | 1106 days ago | IN | 0 CRO | 0.311353 | ||||
Approve | 2310849 | 1107 days ago | IN | 0 CRO | 0.222395 | ||||
Approve | 2310832 | 1107 days ago | IN | 0 CRO | 0.222395 | ||||
Approve | 2310683 | 1107 days ago | IN | 0 CRO | 0.222395 | ||||
Approve | 2294100 | 1108 days ago | IN | 0 CRO | 0.222395 | ||||
Approve | 2292503 | 1108 days ago | IN | 0 CRO | 0.222395 | ||||
Approve | 2287974 | 1108 days ago | IN | 0 CRO | 0.222395 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
3954033 | 996 days ago | 0.4506941 CRO | ||||
3954033 | 996 days ago | 0.00095158 CRO | ||||
3954033 | 996 days ago | 1.51612752 CRO | ||||
3954033 | 996 days ago | 3.03225504 CRO | ||||
3954033 | 996 days ago | 4.54838256 CRO | ||||
3212443 | 1045 days ago | 0.44974251 CRO | ||||
3212443 | 1045 days ago | 0.00110277 CRO | ||||
3212443 | 1045 days ago | 1.59670478 CRO | ||||
3212443 | 1045 days ago | 3.19340956 CRO | ||||
3212443 | 1045 days ago | 4.79011435 CRO | ||||
2958775 | 1062 days ago | 0.44863973 CRO | ||||
2958775 | 1062 days ago | 0.00113036 CRO | ||||
2958775 | 1062 days ago | 1.60963899 CRO | ||||
2958775 | 1062 days ago | 3.21927799 CRO | ||||
2958775 | 1062 days ago | 4.82891698 CRO | ||||
2932931 | 1063 days ago | 0.44750936 CRO | ||||
2932931 | 1063 days ago | 0.00158625 CRO | ||||
2932931 | 1063 days ago | 1.83262723 CRO | ||||
2932931 | 1063 days ago | 3.66525446 CRO | ||||
2932931 | 1063 days ago | 5.49788169 CRO | ||||
2910404 | 1065 days ago | 0.44592311 CRO | ||||
2910404 | 1065 days ago | 0.00166652 CRO | ||||
2910404 | 1065 days ago | 1.86773024 CRO | ||||
2910404 | 1065 days ago | 3.73546048 CRO | ||||
2910404 | 1065 days ago | 5.60319073 CRO |
Loading...
Loading
Contract Name:
CROBNOBI
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at cronoscan.com on 2022-03-30 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.9; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IUniswapV2Router { 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 swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDividendDistributor { function setDistributionCriteria( uint256 _minPeriod, uint256 _minDistribution ) external; function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function process(uint256 gas) external; } abstract contract Ownable { address private _owner; mapping(address => bool) private authorized; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = msg.sender; _owner = msgSender; authorized[msgSender] = true; emit OwnershipTransferred(address(0), msgSender); } function owner() public view virtual returns (address) { return _owner; } function authorize(address account, bool _authorize) public onlyOwner{ authorized[account] = _authorize; } modifier onlyOwner() { require(owner() == msg.sender, "Ownable: caller is not the owner"); _; } modifier onlyAuthorized() { require(authorized[msg.sender], "Ownable: caller is not authorized"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract ERC20 is IERC20 { mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; constructor (string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; _decimals = 18; } function name() public view virtual returns (string memory) { return _name; } function symbol() public view virtual returns (string memory) { return _symbol; } function decimals() public view virtual returns (uint8) { return _decimals; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(msg.sender, spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, msg.sender, _allowances[sender][msg.sender] - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender] - subtractedValue); return true; } function _transfer(address sender, address recipient, uint256 amount) internal virtual { _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender] - amount; _balances[recipient] = _balances[recipient] + amount; emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply + amount; _balances[account] = _balances[account] + amount; emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account] - amount; _totalSupply = _totalSupply - amount; emit Transfer(account, address(0), amount); } function _approve(address owner, address spender, uint256 amount) internal virtual { 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 _setupDecimals(uint8 decimals_) internal virtual { _decimals = decimals_; } function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } } contract ZuckDividendDistributor is IDividendDistributor { address _token; address public _owner; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } // BSC Polkadot-PEG IERC20 REWARD = IERC20(0x7083609fCE4d1d8Dc0C979AAb8c869Ea2C873402); IUniswapV2Router _uniswapV2Router; address[] shareholders; mapping(address => uint256) shareholderIndexes; mapping(address => uint256) shareholderClaims; mapping(address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed; uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10**36; uint256 public minPeriod = 60 * 60; uint256 public minDistribution = 1 * (10**3); uint256 currentIndex; bool initialized; modifier initialization() { require(!initialized); _; initialized = true; } modifier onlyToken() { require(msg.sender == _token || msg.sender == _owner); _; } constructor(address _router, address owner_) { _uniswapV2Router = IUniswapV2Router(_router); _token = msg.sender; _owner = owner_; } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken { minPeriod = _minPeriod; minDistribution = _minDistribution; } function setShare(address shareholder, uint256 amount) external override onlyToken { if (shares[shareholder].amount > 0) { distributeDividend(shareholder); } if (amount > 0 && shares[shareholder].amount == 0) { addShareholder(shareholder); } else if (amount == 0 && shares[shareholder].amount > 0) { removeShareholder(shareholder); } totalShares = totalShares - shares[shareholder].amount + amount; shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends( shares[shareholder].amount ); } function deposit() public payable { address[] memory path = new address[](2); path[0] = _uniswapV2Router.WETH(); path[1] = address(REWARD); _uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}( 0, path, address(this), block.timestamp ); uint256 newBalance = REWARD.balanceOf(address(this)); totalDividends = totalDividends + newBalance; dividendsPerShare = dividendsPerShare + dividendsPerShareAccuracyFactor * newBalance / totalShares; } receive() external payable { this.deposit{value: msg.value}(); } function process(uint256 gas) external override { uint256 shareholderCount = shareholders.length; if (shareholderCount == 0) { return; } uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; while (gasUsed < gas && iterations < shareholderCount) { if (currentIndex >= shareholderCount) { currentIndex = 0; } if (shouldDistribute(shareholders[currentIndex])) { distributeDividend(shareholders[currentIndex]); } gasUsed = gasUsed + (gasLeft - gasleft()); gasLeft = gasleft(); currentIndex++; iterations++; } } function shouldDistribute(address shareholder) internal view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution; } function distributeDividend(address shareholder) internal { if (shares[shareholder].amount == 0) { return; } uint256 amount = getUnpaidEarnings(shareholder); if (amount > 0) { totalDistributed = totalDistributed + amount; //(bool success, ) = shareholder.call{value: amount, gas: 3000}(""); success; //Handle REWARD.transfer(shareholder, amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder] .totalRealised + amount; shares[shareholder].totalExcluded = getCumulativeDividends( shares[shareholder].amount); } } function claimDividend() external { distributeDividend(msg.sender); } function getUnpaidEarnings(address shareholder) public view returns (uint256) { if (shares[shareholder].amount == 0) { return 0; } uint256 shareholderTotalDividends = getCumulativeDividends( shares[shareholder].amount ); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if (shareholderTotalDividends <= shareholderTotalExcluded) { return 0; } return shareholderTotalDividends - shareholderTotalExcluded; } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share * dividendsPerShare / dividendsPerShareAccuracyFactor; } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[ shareholders.length - 1 ]; shareholderIndexes[ shareholders[shareholders.length - 1] ] = shareholderIndexes[shareholder]; shareholders.pop(); } } contract CROBNOBI is ERC20, Ownable { IUniswapV2Router public uniswapV2Router; address public immutable uniswapV2Pair; ZuckDividendDistributor public dividendDistributor; address public deadAddress = address(0x0000000000000000000000000000000000000000); address public marketingAddress; uint256 private constant TOTAL_SUPPLY = 1e12; // 1 T tokens uint256 private constant DECIMALS = 1e18; uint256 public maxTx = 5 * TOTAL_SUPPLY / 1000 * (DECIMALS); // 0.5% of total supply, 5 B tokens uint256 public swapTokensAtAmount = 5 * TOTAL_SUPPLY / 1e4 * (DECIMALS); // 0.05% of total supply, 500 M tokens uint256 public maxWallet = 20 * TOTAL_SUPPLY / 1000 * (DECIMALS); // 2.0% of total supply, 20 B tokens uint256 public rewardsFee; uint256 public liquidityFee; uint256 public marketingFee; uint256 public sellFeeIncrease; uint256 public totalFees; bool private swapping; uint256 private nAntiBotBlocks; uint256 private antiBotDuration; uint256 private launchBlock; uint256 private tradeCooldown; bool private antiBotActive = false; mapping (address => uint256) timeLastTrade; mapping (address => bool) launchSniper; bool private tradingIsEnabled = false; bool private hasLaunched = false; bool public intensify = false; bool public shouldBurnFee = false; uint256 public intensifyDuration; uint256 public intensifyStart; uint256 public burnAmount = 0; bool public accumulatingForBurn = false; bool private inBurn = false; // use by default 400,000 gas to process auto-claiming dividends uint256 public gasForProcessing = 4e5; mapping (address => bool) public isExcludedFromFees; mapping (address => bool) public isExcludedFromDividends; mapping (address => bool) public isPair; event Launch(uint256 indexed nAntiBotBlocks); event SetFees(uint256 indexed FTMRewardsFee, uint256 indexed marketingFee, uint256 indexed liquidityFee); event SetTradeRestrictions(uint256 indexed maxTx, uint256 indexed maxWallet); event SetSwapTokensAtAmount(uint256 indexed swapTokensAtAmount); event UpdateDividendDistributor(address indexed newAddress, address indexed oldAddress); event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event ExcludeFromDividends(address indexed account, bool indexed shouldExclude); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event LiquidityWalletUpdated(address indexed newLiquidityWallet, address indexed oldLiquidityWallet); event GasForProcessingUpdated(uint256 indexed newValue, uint256 indexed oldValue); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived ); event SendDividends( uint256 FTMRewards ); event ProcessedDividendDistributor( uint256 iterations, uint256 claims, uint256 lastProcessedIndex, bool indexed automatic, uint256 gas, address indexed processor ); constructor() ERC20("CROBNOBI", "$CRINJA") { uint256 _rewardsFee = 0; uint256 _liquidityFee = 2; uint256 _marketingFee = 2; uint256 _sellFeeIncrease = 4; rewardsFee = _rewardsFee; liquidityFee = _liquidityFee; marketingFee = _marketingFee; sellFeeIncrease = _sellFeeIncrease; totalFees = _rewardsFee + _liquidityFee + _marketingFee; // CRO MAINNET MMFinace IUniswapV2Router _uniswapV2Router = IUniswapV2Router(0x145677FC4d9b8F19B5D56d1820c48e0443049a30); address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = _uniswapV2Pair; dividendDistributor = new ZuckDividendDistributor(address(_uniswapV2Router), owner()); marketingAddress = address(0xCA4eA7B1523Bd1368caDb56192F1329435c7B262); _setAutomatedMarketMakerPair(_uniswapV2Pair, true); excludeFromDividends(address(this), true); excludeFromDividends(address(dividendDistributor), true); excludeFromDividends(address(_uniswapV2Router), true); excludeFromFees(deadAddress, true); excludeFromFees(address(this), true); excludeFromFees(owner(), true); /* _mint is an internal function in that is only called here, and CANNOT be called ever again. */ _mint(owner(), TOTAL_SUPPLY * (DECIMALS)); } modifier inSwap { swapping = true; _; swapping = false; } modifier inburn{ inBurn = true; _; inBurn = false; } function initiateAntiBot(uint256 _antiBotDuration) public onlyOwner{ require(!tradingIsEnabled, "Project already launched."); antiBotDuration = _antiBotDuration; antiBotActive = true; tradingIsEnabled = true; } function launch(uint256 _nAntiBotBlocks,uint256 _tradeCooldown) public onlyOwner{ require(!hasLaunched, "Project already launched."); nAntiBotBlocks = _nAntiBotBlocks; launchBlock = block.number; tradeCooldown = _tradeCooldown; hasLaunched = true; emit Launch(_tradeCooldown); } function updateDividendDistributor(address newAddress) public onlyOwner { require(newAddress != address(dividendDistributor), "Zuck: The dividend distributor already has that address"); ZuckDividendDistributor newDividendDistributor = ZuckDividendDistributor(payable(newAddress)); require(newDividendDistributor._owner() == address(this), "Zuck: The new dividend distributor must be owned by the Test token contract"); excludeFromDividends(address(newDividendDistributor), true); excludeFromDividends(address(this), true); excludeFromDividends(address(uniswapV2Router), true); emit UpdateDividendDistributor(newAddress, address(dividendDistributor)); dividendDistributor = newDividendDistributor; } function updateUniswapV2Router(address newAddress) public onlyOwner { require(newAddress != address(uniswapV2Router), "Test: The router already has that address"); emit UpdateUniswapV2Router(newAddress, address(uniswapV2Router)); uniswapV2Router = IUniswapV2Router(newAddress); } function excludeFromFees(address account, bool excluded) public onlyOwner { require(isExcludedFromFees[account] != excluded, "Test: Account is already the value of 'excluded'"); isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function excludeFromDividends(address account, bool shouldExclude) public onlyOwner { isExcludedFromDividends[account] = shouldExclude; emit ExcludeFromDividends(account, shouldExclude); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "Test: The PancakeSwap pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { require(isPair[pair] != value, "Test: Automated market maker pair is already set to that value"); isPair[pair] = value; if(value) { excludeFromDividends(pair, true); } emit SetAutomatedMarketMakerPair(pair, value); } function updateGasForProcessing(uint256 newValue) public onlyOwner { require(newValue >= 200000 && newValue <= 800000, "Test: gasForProcessing must be between 200,000 and 800,000"); require(newValue != gasForProcessing, "Test: Cannot update gasForProcessing to same value"); emit GasForProcessingUpdated(newValue, gasForProcessing); gasForProcessing = newValue; } function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) public onlyOwner{ dividendDistributor.setDistributionCriteria(_minPeriod, _minDistribution); } function getClaimWait() external view returns(uint256) { return dividendDistributor.minPeriod(); } function getTotalDividendsDistributed() external view returns (uint256) { return dividendDistributor.totalDistributed(); } function claim() external { dividendDistributor.claimDividend(); } function getNumberOfDividendTokenHolders() external view returns(uint256) { return dividendDistributor.totalShares(); } function setFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _rewardsFee, uint256 _sellFeeIncrease) public onlyOwner{ require(0 <= _rewardsFee && _rewardsFee <= 5, "Requested rewardsFee fee not within acceptable range."); require(0 <= _liquidityFee && _liquidityFee <= 5 , "Requested liquidity fee not within acceptable range."); require(0 <= _marketingFee && _marketingFee <= 5, "Requested marketing fee not within acceptable range."); require(0 <= _sellFeeIncrease && _sellFeeIncrease <= 6, "Requested sell fee increase not within acceptable range."); require(0 < _marketingFee + _liquidityFee, "Total fee amount must be strictly positive."); rewardsFee = _rewardsFee; liquidityFee = _liquidityFee; marketingFee = _marketingFee; sellFeeIncrease = _sellFeeIncrease; totalFees = _rewardsFee + _liquidityFee + _marketingFee; emit SetFees(liquidityFee, marketingFee, rewardsFee); } function setTradeRestrictions(uint256 _maxTx, uint256 _maxWallet) public onlyOwner{ require(_maxTx >= (5 * TOTAL_SUPPLY / 1000), "Requested max transaction amount too low."); require(_maxWallet >= (20 * TOTAL_SUPPLY / 1000), "Requested max allowable wallet amount too low."); maxTx = _maxTx * DECIMALS; maxWallet = _maxWallet * DECIMALS; emit SetTradeRestrictions(maxTx, maxWallet); } function setSwapTokensAtAmount(uint256 _swapTokensAtAmount) public onlyOwner{ require(5 * TOTAL_SUPPLY / 1000 <= _swapTokensAtAmount && _swapTokensAtAmount <= 2 * TOTAL_SUPPLY / 100, "Requested contract swap amount out of acceptable range."); swapTokensAtAmount = _swapTokensAtAmount * DECIMALS; emit SetSwapTokensAtAmount(swapTokensAtAmount); } function checkValidTrade(address from, address to, uint256 amount) private view{ if (from != owner() && to != owner() && !isExcludedFromFees[from]) { require(tradingIsEnabled, "Project has yet to launch."); require(amount <= maxTx, "Transfer amount exceeds the maxTxAmount."); if (isPair[from]){ require(balanceOf(address(to)) + amount <= maxWallet, "Token purchase implies maxWallet violation."); } } } function _transfer(address from, address to, uint256 amount) internal override { if(amount == 0) { super._transfer(from, to, 0); return; } checkValidTrade(from, to, amount); bool takeFee = tradingIsEnabled && !swapping; if(isExcludedFromFees[from] || isExcludedFromFees[to]) { takeFee = false; } if(takeFee) { uint256 fees; bool _burnFees = false; if(antiBotActive){ if(isPair[from]){ require(!launchSniper[to], "Do not buy before official launch."); if(!hasLaunched){ super._transfer(from, address(this), amount); launchSniper[to] = true; return; } if(timeLastTrade[to] != 0){ require(block.number > timeLastTrade[to] + tradeCooldown, "Trade too frequent."); } timeLastTrade[to] = block.number; } if(block.number < launchBlock + nAntiBotBlocks){ fees = amount * 99 / 100; } else{ antiBotActive = block.number > launchBlock + antiBotDuration ? false : antiBotActive; (uint256 fee, bool burnFees) = calculateFee(from); _burnFees = burnFees; fees = amount * fee / 100; } } else{ (uint256 fee, bool burnFees) = calculateFee(from); _burnFees = burnFees; fees = amount * fee / 100; } amount = amount - fees; super._transfer(from, (_burnFees ? deadAddress : address(this)), fees); } if(accumulatingForBurn){ if(shouldBurn()){ doBurn(burnAmount); } } else if(shouldSwap(from)) { swapTokens(swapTokensAtAmount); } super._transfer(from, to, amount); if(!isExcludedFromDividends[from]) try dividendDistributor.setShare(payable(from), balanceOf(from)) {} catch {} if(!isExcludedFromDividends[to]) try dividendDistributor.setShare(payable(to), balanceOf(to)) {} catch {} if(tradingIsEnabled && !swapping && !antiBotActive) { try dividendDistributor.process(gasForProcessing) { } catch {} } } function rush(bool _shouldBurn, uint256 _minutes) external onlyAuthorized{ require(_minutes <= 120, "Rush may not last over two hours."); intensify = true; shouldBurnFee = _shouldBurn; intensifyDuration = _minutes * 1 minutes; intensifyStart = block.timestamp; } function calculateFee(address from) private returns (uint256, bool){ uint256 fee; if(intensify){ uint256 halfTime = intensifyStart + intensifyDuration / 2; uint256 fullTime = intensifyStart + intensifyDuration; if(block.timestamp < halfTime){ fee = isPair[from] ? 0 : 20; return (fee, shouldBurnFee); } else if(block.timestamp < fullTime){ fee = isPair[from] ? 5 : 15; return (fee, shouldBurnFee); } else{ fee = isPair[from] ? totalFees : totalFees + sellFeeIncrease; intensify = false; return (fee, false); } } else{ fee = isPair[from] ? totalFees : totalFees + sellFeeIncrease; return (fee, false); } } function shouldBurn() private view returns (bool){ uint256 contractTokenBalance = balanceOf(address(this)); bool canBurn = contractTokenBalance >= burnAmount; return tradingIsEnabled && canBurn && !inBurn && !antiBotActive; } function planBurn(uint256 _burnNumerator, uint256 _burnDenominator) public onlyAuthorized { burnAmount = TOTAL_SUPPLY * DECIMALS * _burnNumerator / _burnDenominator; accumulatingForBurn = true; } function doBurn(uint256 _burnAmount) private inburn { super._transfer(address(this), deadAddress, _burnAmount); accumulatingForBurn = false; } function shouldSwap(address from) private view returns (bool){ uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; return tradingIsEnabled && canSwap && !swapping && !isPair[from] && !isExcludedFromFees[from] && !antiBotActive; } function swapTokens(uint256 tokens) private inSwap { uint256 LPtokens = tokens * liquidityFee / totalFees; uint256 halfLPTokens = LPtokens / 2; uint256 marketingtokens = tokens * marketingFee / totalFees; uint256 rewardTokens = tokens - LPtokens - marketingtokens; uint256 swapAmount = halfLPTokens + marketingtokens + rewardTokens; uint256 initialBalance = address(this).balance; swapTokensForEth(swapAmount); uint256 newBalance = address(this).balance - initialBalance; uint256 BNBForLP = newBalance * halfLPTokens / swapAmount; uint256 BNBForMarketing = newBalance * marketingtokens / swapAmount; (bool temp,) = payable(marketingAddress).call{value: BNBForMarketing, gas: 30000}(""); temp; //warning-suppresion if(halfLPTokens>0){ addLiquidity(halfLPTokens, BNBForLP); emit SwapAndLiquify(halfLPTokens, BNBForLP); } uint256 BNBForRewards = address(this).balance; try dividendDistributor.deposit{value: BNBForRewards}() {} catch{} //warning-suppresion emit SendDividends(BNBForRewards); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable deadAddress, block.timestamp ); } function buybackStuckBNB(uint256 percent) public onlyAuthorized { uint256 amountToBuyBack = address(this).balance * percent / 100; // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = uniswapV2Router.WETH(); path[1] = address(this); uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amountToBuyBack}( 0, // accept any amount of Tokens path, deadAddress, block.timestamp ); } function airdrop(address sender, address[] calldata recipients, uint256[] calldata values) external onlyOwner { require(recipients.length == values.length, "Mismatch between Address and token count"); for (uint256 i = 0; i < recipients.length; i++) { _transfer(sender, recipients[i], values[i] * DECIMALS); } } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"shouldExclude","type":"bool"}],"name":"ExcludeFromDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"GasForProcessingUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"nAntiBotBlocks","type":"uint256"}],"name":"Launch","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newLiquidityWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldLiquidityWallet","type":"address"}],"name":"LiquidityWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"iterations","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"claims","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lastProcessedIndex","type":"uint256"},{"indexed":true,"internalType":"bool","name":"automatic","type":"bool"},{"indexed":false,"internalType":"uint256","name":"gas","type":"uint256"},{"indexed":true,"internalType":"address","name":"processor","type":"address"}],"name":"ProcessedDividendDistributor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"FTMRewards","type":"uint256"}],"name":"SendDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"FTMRewardsFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"marketingFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"SetFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SetSwapTokensAtAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxTx","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"SetTradeRestrictions","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateDividendDistributor","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[],"name":"accumulatingForBurn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","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":[{"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":"account","type":"address"},{"internalType":"bool","name":"_authorize","type":"bool"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"buybackStuckBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dividendDistributor","outputs":[{"internalType":"contract ZuckDividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"shouldExclude","type":"bool"}],"name":"excludeFromDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gasForProcessing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getClaimWait","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfDividendTokenHolders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDividendsDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_antiBotDuration","type":"uint256"}],"name":"initiateAntiBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"intensify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"intensifyDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"intensifyStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromDividends","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nAntiBotBlocks","type":"uint256"},{"internalType":"uint256","name":"_tradeCooldown","type":"uint256"}],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnNumerator","type":"uint256"},{"internalType":"uint256","name":"_burnDenominator","type":"uint256"}],"name":"planBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_shouldBurn","type":"bool"},{"internalType":"uint256","name":"_minutes","type":"uint256"}],"name":"rush","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFeeIncrease","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_rewardsFee","type":"uint256"},{"internalType":"uint256","name":"_sellFeeIncrease","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapTokensAtAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTx","type":"uint256"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"}],"name":"setTradeRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shouldBurnFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateDividendDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"updateGasForProcessing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateUniswapV2Router","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a0604052600980546001600160a01b0319169055670de0b6b3a76400006103e86200003264e8d4a51000600562000965565b6200003e919062000987565b6200004a919062000965565b600b55670de0b6b3a76400006127106200006b64e8d4a51000600562000965565b62000077919062000987565b62000083919062000965565b600c55670de0b6b3a76400006103e8620000a464e8d4a51000601462000965565b620000b0919062000987565b620000bc919062000965565b600d556018805460ff19169055601b805463ffffffff191690556000601e55601f805461ffff1916905562061a80602055348015620000fa57600080fd5b50604080518082018252600881526743524f424e4f424960c01b602080830191825283518085019094526007845266244352494e4a4160c81b9084015281519192916200014a916003916200089b565b508051620001609060049060208401906200089b565b5050600580543361010081026001600160a81b031990921691909117601217909155600081815260066020526040808220805460ff191660011790555191925082917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000600e8190556002600f819055601081905560046011819055819081620001f18186620009aa565b620001fd9190620009aa565b601281905550600073145677fc4d9b8f19b5d56d1820c48e0443049a3090506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200025857600080fd5b505afa1580156200026d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002939190620009c5565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002dc57600080fd5b505afa158015620002f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003179190620009c5565b6040518363ffffffff1660e01b815260040162000336929190620009f7565b602060405180830381600087803b1580156200035157600080fd5b505af115801562000366573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038c9190620009c5565b600780546001600160a01b0319166001600160a01b03858116919091179091558116608052905081620003be620004ea565b604051620003cc906200092a565b620003d9929190620009f7565b604051809103906000f080158015620003f6573d6000803e3d6000fd5b50600880546001600160a01b03929092166001600160a01b0319928316179055600a805490911673ca4ea7b1523bd1368cadb56192f1329435c7b26217905562000442816001620004fe565b6200044f30600162000610565b60085462000468906001600160a01b0316600162000610565b6200047582600162000610565b6009546200048e906001600160a01b0316600162000698565b6200049b30600162000698565b620004b1620004a9620004ea565b600162000698565b620004de620004bf620004ea565b620004d8670de0b6b3a764000064e8d4a5100062000965565b620007b5565b50505050505062000a83565b60055461010090046001600160a01b031690565b6001600160a01b03821660009081526023602052604090205460ff1615158115151415620005995760405162461bcd60e51b815260206004820152603e60248201527f546573743a204175746f6d61746564206d61726b6574206d616b65722070616960448201527f7220697320616c72656164792073657420746f20746861742076616c7565000060648201526084015b60405180910390fd5b6001600160a01b0382166000908152602360205260409020805460ff19168215801591909117909155620005d457620005d482600162000610565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b336200061b620004ea565b6001600160a01b031614620006445760405162461bcd60e51b8152600401620005909062000a11565b6001600160a01b038216600081815260226020526040808220805460ff191685151590811790915590519092917fa3c7c11b2e12c4144b09a7813f3393ba646392788638998c97be8da908cf04be91a35050565b33620006a3620004ea565b6001600160a01b031614620006cc5760405162461bcd60e51b8152600401620005909062000a11565b6001600160a01b03821660009081526021602052604090205460ff1615158115151415620007565760405162461bcd60e51b815260206004820152603060248201527f546573743a204163636f756e7420697320616c7265616479207468652076616c60448201526f7565206f6620276578636c756465642760801b606482015260840162000590565b6001600160a01b038216600081815260216020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b0382166200080d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000590565b806002546200081d9190620009aa565b6002556001600160a01b03821660009081526020819052604090205462000846908290620009aa565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b828054620008a99062000a46565b90600052602060002090601f016020900481019282620008cd576000855562000918565b82601f10620008e857805160ff191683800117855562000918565b8280016001018555821562000918579182015b8281111562000918578251825591602001919060010190620008fb565b506200092692915062000938565b5090565b610e7e80620041ad83390190565b5b8082111562000926576000815560010162000939565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156200098257620009826200094f565b500290565b600082620009a557634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620009c057620009c06200094f565b500190565b600060208284031215620009d857600080fd5b81516001600160a01b0381168114620009f057600080fd5b9392505050565b6001600160a01b0392831681529116602082015260400190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168062000a5b57607f821691505b6020821081141562000a7d57634e487b7160e01b600052602260045260246000fd5b50919050565b60805161370762000aa660003960008181610525015261197801526137076000f3fe6080604052600436106102955760003560e01c8063025ff12f146102a15780630483f7a0146102c357806306fdde03146102e3578063095ea7b31461030e57806313114a9d1461033e5780631694505e1461036257806318160ddd1461039a5780631e3fe7db146103af57806323b872dd146103cf57806327c8f835146103ef57806328d38a1e1461040f5780632bb14e1d146104305780632d1fb389146104465780632d48e8961461046657806330bb4cff14610486578063313ce5671461049b57806339509351146104bd5780633cc66d4d146104dd578063486a7e6b146104fd57806349bd5a5e146105135780634e71d92d146105475780634fbee1931461055c57806361f9fe5f1461058c57806364b0f653146105ac57806365b8dbc0146105c15780636b67c4df146105e15780636fcba377146105f757806370a0823114610617578063715018a6146106375780637437681e1461064c578063822cb4901461066257806382760cd214610682578063871c128d146106a25780638da5cb5b146106c257806395d89b41146106d757806398118cb4146106ec5780639a7a23d6146107025780639c1b8af5146107225780639f00ad8e14610738578063a0c68c1d1461074e578063a26579ad14610768578063a457c2d71461077d578063a5ece9411461079d578063a9059cbb146107bd578063ada00ad6146107dd578063afa4f3b2146107fd578063bad3ea6a1461081d578063c02466681461083d578063c705c5691461085d578063dd62ed3e1461088d578063e2f45605146108d3578063e5e31b13146108e9578063eed20cd514610919578063f0329cb51461092f578063f2fde38b1461094f578063f8b45b051461096f578063fd0ba57714610985578063ff1a01d71461099b57600080fd5b3661029c57005b600080fd5b3480156102ad57600080fd5b506102c16102bc366004613170565b6109bb565b005b3480156102cf57600080fd5b506102c16102de366004613207565b610ad4565b3480156102ef57600080fd5b506102f8610b57565b604051610305919061323c565b60405180910390f35b34801561031a57600080fd5b5061032e610329366004613291565b610be9565b6040519015158152602001610305565b34801561034a57600080fd5b5061035460125481565b604051908152602001610305565b34801561036e57600080fd5b50600754610382906001600160a01b031681565b6040516001600160a01b039091168152602001610305565b3480156103a657600080fd5b50600254610354565b3480156103bb57600080fd5b506102c16103ca3660046132bd565b610bff565b3480156103db57600080fd5b5061032e6103ea3660046132e1565b610e47565b3480156103fb57600080fd5b50600954610382906001600160a01b031681565b34801561041b57600080fd5b50601b5461032e906301000000900460ff1681565b34801561043c57600080fd5b50610354600e5481565b34801561045257600080fd5b506102c1610461366004613207565b610e99565b34801561047257600080fd5b506102c1610481366004613322565b610ef3565b34801561049257600080fd5b50610354610f84565b3480156104a757600080fd5b5060055460405160ff9091168152602001610305565b3480156104c957600080fd5b5061032e6104d8366004613291565b611006565b3480156104e957600080fd5b506102c16104f8366004613344565b61103d565b34801561050957600080fd5b50610354601e5481565b34801561051f57600080fd5b506103827f000000000000000000000000000000000000000000000000000000000000000081565b34801561055357600080fd5b506102c16110b1565b34801561056857600080fd5b5061032e6105773660046132bd565b60216020526000908152604090205460ff1681565b34801561059857600080fd5b50601b5461032e9062010000900460ff1681565b3480156105b857600080fd5b5061035461111b565b3480156105cd57600080fd5b506102c16105dc3660046132bd565b611160565b3480156105ed57600080fd5b5061035460105481565b34801561060357600080fd5b506102c161061236600461335d565b61125c565b34801561062357600080fd5b506103546106323660046132bd565b611519565b34801561064357600080fd5b506102c1611534565b34801561065857600080fd5b50610354600b5481565b34801561066e57600080fd5b506102c161067d366004613322565b6115a1565b34801561068e57600080fd5b506102c161069d366004613322565b61172d565b3480156106ae57600080fd5b506102c16106bd366004613344565b6117d0565b3480156106ce57600080fd5b50610382611924565b3480156106e357600080fd5b506102f8611938565b3480156106f857600080fd5b50610354600f5481565b34801561070e57600080fd5b506102c161071d366004613207565b611947565b34801561072e57600080fd5b5061035460205481565b34801561074457600080fd5b5061035460115481565b34801561075a57600080fd5b50601f5461032e9060ff1681565b34801561077457600080fd5b50610354611a40565b34801561078957600080fd5b5061032e610798366004613291565b611a88565b3480156107a957600080fd5b50600a54610382906001600160a01b031681565b3480156107c957600080fd5b5061032e6107d8366004613291565b611abf565b3480156107e957600080fd5b506102c16107f8366004613322565b611acc565b34801561080957600080fd5b506102c1610818366004613344565b611b3c565b34801561082957600080fd5b50600854610382906001600160a01b031681565b34801561084957600080fd5b506102c1610858366004613207565b611c61565b34801561086957600080fd5b5061032e6108783660046132bd565b60226020526000908152604090205460ff1681565b34801561089957600080fd5b506103546108a836600461338f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156108df57600080fd5b50610354600c5481565b3480156108f557600080fd5b5061032e6109043660046132bd565b60236020526000908152604090205460ff1681565b34801561092557600080fd5b50610354601d5481565b34801561093b57600080fd5b506102c161094a366004613344565b611d77565b34801561095b57600080fd5b506102c161096a3660046132bd565b611f2a565b34801561097b57600080fd5b50610354600d5481565b34801561099157600080fd5b50610354601c5481565b3480156109a757600080fd5b506102c16109b63660046133c8565b612013565b336109c4611924565b6001600160a01b0316146109f35760405162461bcd60e51b81526004016109ea906133e4565b60405180910390fd5b828114610a535760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b60648201526084016109ea565b60005b83811015610acc57610aba86868684818110610a7457610a74613419565b9050602002016020810190610a8991906132bd565b670de0b6b3a7640000868686818110610aa457610aa4613419565b90506020020135610ab59190613445565b6120d1565b80610ac481613464565b915050610a56565b505050505050565b33610add611924565b6001600160a01b031614610b035760405162461bcd60e51b81526004016109ea906133e4565b6001600160a01b038216600081815260226020526040808220805460ff191685151590811790915590519092917fa3c7c11b2e12c4144b09a7813f3393ba646392788638998c97be8da908cf04be91a35050565b606060038054610b669061347f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b929061347f565b8015610bdf5780601f10610bb457610100808354040283529160200191610bdf565b820191906000526020600020905b815481529060010190602001808311610bc257829003601f168201915b5050505050905090565b6000610bf63384846125cf565b50600192915050565b33610c08611924565b6001600160a01b031614610c2e5760405162461bcd60e51b81526004016109ea906133e4565b6008546001600160a01b0382811691161415610cac5760405162461bcd60e51b815260206004820152603760248201527f5a75636b3a20546865206469766964656e64206469737472696275746f7220616044820152766c7265616479206861732074686174206164647265737360481b60648201526084016109ea565b6000819050306001600160a01b0316816001600160a01b031663b2bdfa7b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cf457600080fd5b505afa158015610d08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2c91906134ba565b6001600160a01b031614610dbc5760405162461bcd60e51b815260206004820152604b60248201527f5a75636b3a20546865206e6577206469766964656e642064697374726962757460448201527f6f72206d757374206265206f776e656420627920746865205465737420746f6b60648201526a195b8818dbdb9d1c9858dd60aa1b608482015260a4016109ea565b610dc7816001610ad4565b610dd2306001610ad4565b600754610de9906001600160a01b03166001610ad4565b6008546040516001600160a01b03918216918416907f4c1beaad9b2fcfd2ce776571d2ebc4750ba710de22bc57bd3fee8737ee3e3a9090600090a3600880546001600160a01b0319166001600160a01b039290921691909117905550565b6000610e548484846120d1565b6001600160a01b038416600090815260016020908152604080832033808552925290912054610e8f918691610e8a9086906134d7565b6125cf565b5060019392505050565b33610ea2611924565b6001600160a01b031614610ec85760405162461bcd60e51b81526004016109ea906133e4565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b33610efc611924565b6001600160a01b031614610f225760405162461bcd60e51b81526004016109ea906133e4565b6008546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b158015610f7057600080fd5b505af1158015610acc573d6000803e3d6000fd5b6008546040805163efca2eed60e01b815290516000926001600160a01b03169163efca2eed916004808301926020929190829003018186803b158015610fc957600080fd5b505afa158015610fdd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100191906134ee565b905090565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610bf6918590610e8a908690613507565b33611046611924565b6001600160a01b03161461106c5760405162461bcd60e51b81526004016109ea906133e4565b601b5460ff161561108f5760405162461bcd60e51b81526004016109ea9061351f565b60155560188054600160ff199182168117909255601b80549091169091179055565b600860009054906101000a90046001600160a01b03166001600160a01b031663f0fc6bca6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561110157600080fd5b505af1158015611115573d6000803e3d6000fd5b50505050565b60085460408051633a98ef3960e01b815290516000926001600160a01b031691633a98ef39916004808301926020929190829003018186803b158015610fc957600080fd5b33611169611924565b6001600160a01b03161461118f5760405162461bcd60e51b81526004016109ea906133e4565b6007546001600160a01b03828116911614156111ff5760405162461bcd60e51b815260206004820152602960248201527f546573743a2054686520726f7574657220616c7265616479206861732074686160448201526874206164647265737360b81b60648201526084016109ea565b6007546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b33611265611924565b6001600160a01b03161461128b5760405162461bcd60e51b81526004016109ea906133e4565b60058211156112fa5760405162461bcd60e51b815260206004820152603560248201527f526571756573746564207265776172647346656520666565206e6f74207769746044820152743434b71030b1b1b2b83a30b13632903930b733b29760591b60648201526084016109ea565b60058311156113685760405162461bcd60e51b815260206004820152603460248201527f526571756573746564206c697175696469747920666565206e6f74207769746860448201527334b71030b1b1b2b83a30b13632903930b733b29760611b60648201526084016109ea565b60058411156113d65760405162461bcd60e51b815260206004820152603460248201527f526571756573746564206d61726b6574696e6720666565206e6f74207769746860448201527334b71030b1b1b2b83a30b13632903930b733b29760611b60648201526084016109ea565b60068111156114485760405162461bcd60e51b815260206004820152603860248201527f5265717565737465642073656c6c2066656520696e637265617365206e6f74206044820152773bb4ba3434b71030b1b1b2b83a30b13632903930b733b29760411b60648201526084016109ea565b6114528385613507565b6000106114b55760405162461bcd60e51b815260206004820152602b60248201527f546f74616c2066656520616d6f756e74206d757374206265207374726963746c60448201526a3c903837b9b4ba34bb329760a91b60648201526084016109ea565b600e829055600f83905560108490556011819055836114d48484613507565b6114de9190613507565b601255600e54601054600f546040517f37322890d66d781059d797be5e2f27dc160a34d8bc0a8e09116cb9a773ce88ef90600090a450505050565b6001600160a01b031660009081526020819052604090205490565b3361153d611924565b6001600160a01b0316146115635760405162461bcd60e51b81526004016109ea906133e4565b60055460405160009161010090046001600160a01b0316906000805160206136b2833981519152908390a360058054610100600160a81b0319169055565b336115aa611924565b6001600160a01b0316146115d05760405162461bcd60e51b81526004016109ea906133e4565b6103e86115e364e8d4a510006005613445565b6115ed9190613552565b82101561164e5760405162461bcd60e51b815260206004820152602960248201527f526571756573746564206d6178207472616e73616374696f6e20616d6f756e74604482015268103a37b7903637bb9760b91b60648201526084016109ea565b6103e861166164e8d4a510006014613445565b61166b9190613552565b8110156116d15760405162461bcd60e51b815260206004820152602e60248201527f526571756573746564206d617820616c6c6f7761626c652077616c6c6574206160448201526d36b7bab73a103a37b7903637bb9760911b60648201526084016109ea565b6116e3670de0b6b3a764000083613445565b600b556116f8670de0b6b3a764000082613445565b600d819055600b546040517fc66babc31501a8b9fd3efae98ba8279008417a4d125e542a34ba6657305bf8ff90600090a35050565b33611736611924565b6001600160a01b03161461175c5760405162461bcd60e51b81526004016109ea906133e4565b601b54610100900460ff16156117845760405162461bcd60e51b81526004016109ea9061351f565b6014829055436016556017819055601b805461ff00191661010017905560405181907fa72e5e150ebe7b67363131cf1d5e72a8053adc58eb1879467ebd529ae3d4ecca90600090a25050565b336117d9611924565b6001600160a01b0316146117ff5760405162461bcd60e51b81526004016109ea906133e4565b62030d4081101580156118155750620c35008111155b6118845760405162461bcd60e51b815260206004820152603a60248201527f546573743a20676173466f7250726f63657373696e67206d7573742062652062604482015279065747765656e203230302c30303020616e64203830302c3030360341b60648201526084016109ea565b6020548114156118f15760405162461bcd60e51b815260206004820152603260248201527f546573743a2043616e6e6f742075706461746520676173466f7250726f63657360448201527173696e6720746f2073616d652076616c756560701b60648201526084016109ea565b60205460405182907f40d7e40e79af4e8e5a9b3c57030d8ea93f13d669c06d448c4d631d4ae7d23db790600090a3602055565b60055461010090046001600160a01b031690565b606060048054610b669061347f565b33611950611924565b6001600160a01b0316146119765760405162461bcd60e51b81526004016109ea906133e4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415611a325760405162461bcd60e51b815260206004820152604b60248201527f546573743a205468652050616e63616b655377617020706169722063616e6e6f60448201527f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b6560648201526a744d616b6572506169727360a81b608482015260a4016109ea565b611a3c82826126f4565b5050565b600854604080516001620ad8df60e21b0319815290516000926001600160a01b03169163ffd49c84916004808301926020929190829003018186803b158015610fc957600080fd5b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610bf6918590610e8a9086906134d7565b6000610bf63384846120d1565b3360009081526006602052604090205460ff16611afb5760405162461bcd60e51b81526004016109ea90613574565b8082611b14670de0b6b3a764000064e8d4a51000613445565b611b1e9190613445565b611b289190613552565b601e555050601f805460ff19166001179055565b33611b45611924565b6001600160a01b031614611b6b5760405162461bcd60e51b81526004016109ea906133e4565b806103e8611b7f64e8d4a510006005613445565b611b899190613552565b11158015611bb257506064611ba464e8d4a510006002613445565b611bae9190613552565b8111155b611c1e5760405162461bcd60e51b815260206004820152603760248201527f52657175657374656420636f6e7472616374207377617020616d6f756e74206f6044820152763aba1037b31030b1b1b2b83a30b13632903930b733b29760491b60648201526084016109ea565b611c30670de0b6b3a764000082613445565b600c8190556040517f09e89af7cbd8410d0ad2a74ab3cc8d9ddeef8ab1177f0f8a1984d355bb9d78f190600090a250565b33611c6a611924565b6001600160a01b031614611c905760405162461bcd60e51b81526004016109ea906133e4565b6001600160a01b03821660009081526021602052604090205460ff1615158115151415611d185760405162461bcd60e51b815260206004820152603060248201527f546573743a204163636f756e7420697320616c7265616479207468652076616c60448201526f7565206f6620276578636c756465642760801b60648201526084016109ea565b6001600160a01b038216600081815260216020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b3360009081526006602052604090205460ff16611da65760405162461bcd60e51b81526004016109ea90613574565b60006064611db48347613445565b611dbe9190613552565b60408051600280825260608201835292935060009290916020830190803683375050600754604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015611e2857600080fd5b505afa158015611e3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6091906134ba565b81600081518110611e7357611e73613419565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611ea757611ea7613419565b6001600160a01b03928316602091820292909201015260075460095460405163b6f9de9560e01b81529183169263b6f9de95928692611ef39260009288929091169042906004016135f9565b6000604051808303818588803b158015611f0c57600080fd5b505af1158015611f20573d6000803e3d6000fd5b5050505050505050565b33611f33611924565b6001600160a01b031614611f595760405162461bcd60e51b81526004016109ea906133e4565b6001600160a01b038116611fbe5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109ea565b6005546040516001600160a01b0380841692610100900416906000805160206136b283398151915290600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b3360009081526006602052604090205460ff166120425760405162461bcd60e51b81526004016109ea90613574565b607881111561209d5760405162461bcd60e51b815260206004820152602160248201527f52757368206d6179206e6f74206c617374206f7665722074776f20686f7572736044820152601760f91b60648201526084016109ea565b601b805483151563010000000263ffff00001990911617620100001790556120c681603c613445565b601c55505042601d55565b806120e7576120e2838360006127fd565b505050565b6120f28383836128a2565b601b5460009060ff16801561210a575060135460ff16155b6001600160a01b03851660009081526021602052604090205490915060ff168061214c57506001600160a01b03831660009081526021602052604090205460ff165b15612155575060005b80156123e457601854600090819060ff1615612385576001600160a01b03861660009081526023602052604090205460ff16156122e9576001600160a01b0385166000908152601a602052604090205460ff16156122005760405162461bcd60e51b815260206004820152602260248201527f446f206e6f7420627579206265666f7265206f6666696369616c206c61756e63604482015261341760f11b60648201526084016109ea565b601b54610100900460ff166122455761221a8630866127fd565b5050506001600160a01b039091166000908152601a60205260409020805460ff191660011790555050565b6001600160a01b038516600090815260196020526040902054156122cd576017546001600160a01b0386166000908152601960205260409020546122899190613507565b43116122cd5760405162461bcd60e51b81526020600482015260136024820152722a3930b232903a37b790333932b8bab2b73a1760691b60448201526064016109ea565b6001600160a01b03851660009081526019602052604090204390555b6014546016546122f99190613507565b43101561231e57606461230d856063613445565b6123179190613552565b91506123b3565b60155460165461232e9190613507565b431161233f5760185460ff16612342565b60005b6018805460ff191691151591909117905560008061235f88612a5a565b9350915082905060646123728388613445565b61237c9190613552565b935050506123b3565b60008061239188612a5a565b9350915082905060646123a48388613445565b6123ae9190613552565b935050505b6123bd82856134d7565b93506123e186826123ce57306123db565b6009546001600160a01b03165b846127fd565b50505b601f5460ff161561240c576123f7612bd8565b1561240757612407601e54612c27565b612425565b61241584612c5c565b1561242557612425600c54612cf1565b6124308484846127fd565b6001600160a01b03841660009081526022602052604090205460ff166124b5576008546001600160a01b03166314b6ca968561246b81611519565b6040518363ffffffff1660e01b815260040161248892919061362e565b600060405180830381600087803b1580156124a257600080fd5b505af19250505080156124b3575060015b505b6001600160a01b03831660009081526022602052604090205460ff1661253a576008546001600160a01b03166314b6ca96846124f081611519565b6040518363ffffffff1660e01b815260040161250d92919061362e565b600060405180830381600087803b15801561252757600080fd5b505af1925050508015612538575060015b505b601b5460ff16801561254f575060135460ff16155b801561255e575060185460ff16155b15611115576008546020546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c4799161259b9160040190815260200190565b600060405180830381600087803b1580156125b557600080fd5b505af19250505080156125c6575060015b61111557611115565b6001600160a01b0383166126315760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109ea565b6001600160a01b0382166126925760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109ea565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03821660009081526023602052604090205460ff16151581151514156127895760405162461bcd60e51b815260206004820152603e60248201527f546573743a204175746f6d61746564206d61726b6574206d616b65722070616960448201527f7220697320616c72656164792073657420746f20746861742076616c7565000060648201526084016109ea565b6001600160a01b0382166000908152602360205260409020805460ff191682158015919091179091556127c1576127c1826001610ad4565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6001600160a01b0383166000908152602081905260409020546128219082906134d7565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612851908290613507565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016126e7565b6128aa611924565b6001600160a01b0316836001600160a01b0316141580156128e457506128ce611924565b6001600160a01b0316826001600160a01b031614155b801561290957506001600160a01b03831660009081526021602052604090205460ff16155b156120e257601b5460ff1661295d5760405162461bcd60e51b815260206004820152601a602482015279283937b532b1ba103430b9903cb2ba103a37903630bab731b41760311b60448201526064016109ea565b600b548111156129c05760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016109ea565b6001600160a01b03831660009081526023602052604090205460ff16156120e257600d54816129ee84611519565b6129f89190613507565b11156120e25760405162461bcd60e51b815260206004820152602b60248201527f546f6b656e20707572636861736520696d706c696573206d617857616c6c657460448201526a103b34b7b630ba34b7b71760a91b60648201526084016109ea565b6000806000601b60029054906101000a900460ff1615612b945760006002601c54612a859190613552565b601d54612a929190613507565b90506000601c54601d54612aa69190613507565b905081421015612af8576001600160a01b03861660009081526023602052604090205460ff16612ad7576014612ada565b60005b601b5460ff9182169863010000009091049091169650945050505050565b80421015612b42576001600160a01b03861660009081526023602052604090205460ff16612b2757600f612ada565b5050601b54600595630100000090910460ff16945092505050565b6001600160a01b03861660009081526023602052604090205460ff16612b7757601154601254612b729190613507565b612b7b565b6012545b601b805462ff0000191690559660009650945050505050565b6001600160a01b03841660009081526023602052604090205460ff16612bc957601154601254612bc49190613507565b612bcd565b6012545b946000945092505050565b600080612be430611519565b601e54601b549192508210159060ff168015612bfd5750805b8015612c115750601f54610100900460ff16155b8015612c20575060185460ff16155b9250505090565b601f805461ff001916610100179055600954612c4e9030906001600160a01b0316836127fd565b50601f805461ffff19169055565b600080612c6830611519565b600c54601b549192508210159060ff168015612c815750805b8015612c90575060135460ff16155b8015612cb557506001600160a01b03841660009081526023602052604090205460ff16155b8015612cda57506001600160a01b03841660009081526021602052604090205460ff16155b8015612ce9575060185460ff16155b949350505050565b6013805460ff19166001179055601254600f5460009190612d129084613445565b612d1c9190613552565b90506000612d2b600283613552565b9050600060125460105485612d409190613445565b612d4a9190613552565b9050600081612d5985876134d7565b612d6391906134d7565b9050600081612d728486613507565b612d7c9190613507565b905047612d8882612f17565b6000612d9482476134d7565b9050600083612da38884613445565b612dad9190613552565b9050600084612dbc8885613445565b612dc69190613552565b600a546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d8060008114612e1d576040519150601f19603f3d011682016040523d82523d6000602084013e612e22565b606091505b50909150508815612e7157612e37898461304a565b604080518a8152602081018590527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15b60085460408051630d0e30db60e41b8152905147926001600160a01b03169163d0e30db091849160048082019260009290919082900301818588803b158015612eb957600080fd5b505af193505050508015612ecb575060015b506040518181527fb0cc2628d6d644cf6be9d8110e142297ac910d6d8026d795a99f272fd9ad60b19060200160405180910390a150506013805460ff1916905550505050505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612f4c57612f4c613419565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612fa057600080fd5b505afa158015612fb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd891906134ba565b81600181518110612feb57612feb613419565b6001600160a01b03928316602091820292909201015260075461301191309116846125cf565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac94790610f56908590600090869030904290600401613647565b6007546130629030906001600160a01b0316846125cf565b60075460095460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b1580156130cd57600080fd5b505af11580156130e1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131069190613683565b5050505050565b6001600160a01b038116811461312257600080fd5b50565b60008083601f84011261313757600080fd5b5081356001600160401b0381111561314e57600080fd5b6020830191508360208260051b850101111561316957600080fd5b9250929050565b60008060008060006060868803121561318857600080fd5b85356131938161310d565b945060208601356001600160401b03808211156131af57600080fd5b6131bb89838a01613125565b909650945060408801359150808211156131d457600080fd5b506131e188828901613125565b969995985093965092949392505050565b8035801515811461320257600080fd5b919050565b6000806040838503121561321a57600080fd5b82356132258161310d565b9150613233602084016131f2565b90509250929050565b600060208083528351808285015260005b818110156132695785810183015185820160400152820161324d565b8181111561327b576000604083870101525b50601f01601f1916929092016040019392505050565b600080604083850312156132a457600080fd5b82356132af8161310d565b946020939093013593505050565b6000602082840312156132cf57600080fd5b81356132da8161310d565b9392505050565b6000806000606084860312156132f657600080fd5b83356133018161310d565b925060208401356133118161310d565b929592945050506040919091013590565b6000806040838503121561333557600080fd5b50508035926020909101359150565b60006020828403121561335657600080fd5b5035919050565b6000806000806080858703121561337357600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156133a257600080fd5b82356133ad8161310d565b915060208301356133bd8161310d565b809150509250929050565b600080604083850312156133db57600080fd5b6132af836131f2565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561345f5761345f61342f565b500290565b60006000198214156134785761347861342f565b5060010190565b600181811c9082168061349357607f821691505b602082108114156134b457634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156134cc57600080fd5b81516132da8161310d565b6000828210156134e9576134e961342f565b500390565b60006020828403121561350057600080fd5b5051919050565b6000821982111561351a5761351a61342f565b500190565b602080825260199082015278283937b532b1ba1030b63932b0b23c903630bab731b432b21760391b604082015260600190565b60008261356f57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526021908201527f4f776e61626c653a2063616c6c6572206973206e6f7420617574686f72697a656040820152601960fa1b606082015260800190565b600081518084526020808501945080840160005b838110156135ee5781516001600160a01b0316875295820195908201906001016135c9565b509495945050505050565b84815260806020820152600061361260808301866135b5565b6001600160a01b03949094166040830152506060015292915050565b6001600160a01b03929092168252602082015260400190565b85815284602082015260a06040820152600061366660a08301866135b5565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561369857600080fd5b835192506020840151915060408401519050925092509256fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220f52c69471a07c70a644805d286b620f9171ad6ca20eb79a88493a9516803764a64736f6c634300080900336080604052600280546001600160a01b031916737083609fce4d1d8dc0c979aab8c869ea2c8734021790556ec097ce7bc90715b34b9f1000000000600c55610e10600d556103e8600e5534801561005557600080fd5b50604051610e7e380380610e7e833981016040819052610074916100cb565b600380546001600160a01b039384166001600160a01b03199182161790915560008054821633179055600180549290931691161790556100fe565b80516001600160a01b03811681146100c657600080fd5b919050565b600080604083850312156100de57600080fd5b6100e7836100af565b91506100f5602084016100af565b90509250929050565b610d718061010d6000396000f3fe6080604052600436106100bc5760003560e01c806311ce023d1461011c57806314b6ca961461014557806328fd3198146101675780632d48e896146101875780633a98ef39146101a75780634fab0ae8146101bd578063997664d7146101d3578063b2bdfa7b146101e9578063ce7c2ac214610216578063d0e30db01461026d578063e2d2e21914610275578063efca2eed1461028b578063f0fc6bca146102a1578063ffb2c479146102b6578063ffd49c84146102d657600080fd5b3661011757306001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156100fc57600080fd5b505af1158015610110573d6000803e3d6000fd5b5050505050005b600080fd5b34801561012857600080fd5b50610132600c5481565b6040519081526020015b60405180910390f35b34801561015157600080fd5b50610165610160366004610b0d565b6102ec565b005b34801561017357600080fd5b50610132610182366004610b39565b610479565b34801561019357600080fd5b506101656101a2366004610b5d565b610502565b3480156101b357600080fd5b5061013260085481565b3480156101c957600080fd5b50610132600e5481565b3480156101df57600080fd5b5061013260095481565b3480156101f557600080fd5b50600154610209906001600160a01b031681565b60405161013c9190610b7f565b34801561022257600080fd5b50610252610231366004610b39565b60076020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161013c565b610165610539565b34801561028157600080fd5b50610132600b5481565b34801561029757600080fd5b50610132600a5481565b3480156102ad57600080fd5b50610165610757565b3480156102c257600080fd5b506101656102d1366004610b93565b610762565b3480156102e257600080fd5b50610132600d5481565b6000546001600160a01b031633148061030f57506001546001600160a01b031633145b61031857600080fd5b6001600160a01b0382166000908152600760205260409020541561033f5761033f8261084b565b60008111801561036557506001600160a01b038216600090815260076020526040902054155b156103cb57600480546001600160a01b0384166000818152600560205260408120839055600183018455929092527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b03191690911790556103fe565b801580156103f057506001600160a01b03821660009081526007602052604090205415155b156103fe576103fe82610978565b6001600160a01b038216600090815260076020526040902054600854829161042591610bc2565b61042f9190610bd9565b6008556001600160a01b038216600090815260076020526040902081905561045681610a8d565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b03811660009081526007602052604081205461049e57506000919050565b6001600160a01b0382166000908152600760205260408120546104c090610a8d565b6001600160a01b0384166000908152600760205260409020600101549091508082116104f0575060009392505050565b6104fa8183610bc2565b949350505050565b6000546001600160a01b031633148061052557506001546001600160a01b031633145b61052e57600080fd5b600d91909155600e55565b6040805160028082526060820183526000926020830190803683375050600354604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b15801561059e57600080fd5b505afa1580156105b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d69190610bf1565b816000815181106105e9576105e9610c0e565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061061a5761061a610c0e565b6001600160a01b03928316602091820292909201015260035460405163b6f9de9560e01b815291169063b6f9de9590349061066090600090869030904290600401610c24565b6000604051808303818588803b15801561067957600080fd5b505af115801561068d573d6000803e3d6000fd5b50506002546040516370a0823160e01b8152600094506001600160a01b0390911692506370a0823191506106c5903090600401610b7f565b60206040518083038186803b1580156106dd57600080fd5b505afa1580156106f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107159190610c8e565b9050806009546107259190610bd9565b600955600854600c54610739908390610ca7565b6107439190610cc6565b600b546107509190610bd9565b600b555050565b6107603361084b565b565b6004548061076e575050565b6000805a905060005b848310801561078557508381105b156108445783600f5410610799576000600f555b6107cb6004600f54815481106107b1576107b1610c0e565b6000918252602090912001546001600160a01b0316610ab0565b15610802576108026004600f54815481106107e8576107e8610c0e565b6000918252602090912001546001600160a01b031661084b565b5a61080d9083610bc2565b6108179084610bd9565b92505a600f8054919350600061082c83610ce8565b9190505550808061083c90610ce8565b915050610777565b5050505050565b6001600160a01b03811660009081526007602052604090205461086b5750565b600061087682610479565b905080156109745780600a5461088c9190610bd9565b600a5560025460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b1580156108dd57600080fd5b505af11580156108f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109159190610d03565b506001600160a01b0382166000908152600660209081526040808320429055600790915290206002015461094a908290610bd9565b6001600160a01b038316600090815260076020526040902060028101919091555461045690610a8d565b5050565b6004805461098890600190610bc2565b8154811061099857610998610c0e565b60009182526020808320909101546001600160a01b03848116845260059092526040909220546004805492909316929181106109d6576109d6610c0e565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260059182905260408120546004805491939291610a2290600190610bc2565b81548110610a3257610a32610c0e565b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610a6857610a68610d25565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000600c54600b5483610aa09190610ca7565b610aaa9190610cc6565b92915050565b600d546001600160a01b03821660009081526006602052604081205490914291610ada9190610bd9565b108015610aaa5750600e54610aee83610479565b1192915050565b6001600160a01b0381168114610b0a57600080fd5b50565b60008060408385031215610b2057600080fd5b8235610b2b81610af5565b946020939093013593505050565b600060208284031215610b4b57600080fd5b8135610b5681610af5565b9392505050565b60008060408385031215610b7057600080fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b600060208284031215610ba557600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b600082821015610bd457610bd4610bac565b500390565b60008219821115610bec57610bec610bac565b500190565b600060208284031215610c0357600080fd5b8151610b5681610af5565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610c6e5784516001600160a01b031683529383019391830191600101610c49565b50506001600160a01b039690961660408501525050506060015292915050565b600060208284031215610ca057600080fd5b5051919050565b6000816000190483118215151615610cc157610cc1610bac565b500290565b600082610ce357634e487b7160e01b600052601260045260246000fd5b500490565b6000600019821415610cfc57610cfc610bac565b5060010190565b600060208284031215610d1557600080fd5b81518015158114610b5657600080fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220f1bcc0267fc47199322f28f29c17bfe74bc60e216360ad66a8f2f3aaf8fdf10964736f6c63430008090033
Deployed Bytecode
0x6080604052600436106102955760003560e01c8063025ff12f146102a15780630483f7a0146102c357806306fdde03146102e3578063095ea7b31461030e57806313114a9d1461033e5780631694505e1461036257806318160ddd1461039a5780631e3fe7db146103af57806323b872dd146103cf57806327c8f835146103ef57806328d38a1e1461040f5780632bb14e1d146104305780632d1fb389146104465780632d48e8961461046657806330bb4cff14610486578063313ce5671461049b57806339509351146104bd5780633cc66d4d146104dd578063486a7e6b146104fd57806349bd5a5e146105135780634e71d92d146105475780634fbee1931461055c57806361f9fe5f1461058c57806364b0f653146105ac57806365b8dbc0146105c15780636b67c4df146105e15780636fcba377146105f757806370a0823114610617578063715018a6146106375780637437681e1461064c578063822cb4901461066257806382760cd214610682578063871c128d146106a25780638da5cb5b146106c257806395d89b41146106d757806398118cb4146106ec5780639a7a23d6146107025780639c1b8af5146107225780639f00ad8e14610738578063a0c68c1d1461074e578063a26579ad14610768578063a457c2d71461077d578063a5ece9411461079d578063a9059cbb146107bd578063ada00ad6146107dd578063afa4f3b2146107fd578063bad3ea6a1461081d578063c02466681461083d578063c705c5691461085d578063dd62ed3e1461088d578063e2f45605146108d3578063e5e31b13146108e9578063eed20cd514610919578063f0329cb51461092f578063f2fde38b1461094f578063f8b45b051461096f578063fd0ba57714610985578063ff1a01d71461099b57600080fd5b3661029c57005b600080fd5b3480156102ad57600080fd5b506102c16102bc366004613170565b6109bb565b005b3480156102cf57600080fd5b506102c16102de366004613207565b610ad4565b3480156102ef57600080fd5b506102f8610b57565b604051610305919061323c565b60405180910390f35b34801561031a57600080fd5b5061032e610329366004613291565b610be9565b6040519015158152602001610305565b34801561034a57600080fd5b5061035460125481565b604051908152602001610305565b34801561036e57600080fd5b50600754610382906001600160a01b031681565b6040516001600160a01b039091168152602001610305565b3480156103a657600080fd5b50600254610354565b3480156103bb57600080fd5b506102c16103ca3660046132bd565b610bff565b3480156103db57600080fd5b5061032e6103ea3660046132e1565b610e47565b3480156103fb57600080fd5b50600954610382906001600160a01b031681565b34801561041b57600080fd5b50601b5461032e906301000000900460ff1681565b34801561043c57600080fd5b50610354600e5481565b34801561045257600080fd5b506102c1610461366004613207565b610e99565b34801561047257600080fd5b506102c1610481366004613322565b610ef3565b34801561049257600080fd5b50610354610f84565b3480156104a757600080fd5b5060055460405160ff9091168152602001610305565b3480156104c957600080fd5b5061032e6104d8366004613291565b611006565b3480156104e957600080fd5b506102c16104f8366004613344565b61103d565b34801561050957600080fd5b50610354601e5481565b34801561051f57600080fd5b506103827f000000000000000000000000fb307dc1d74facef5a43bf34aabf2731571761b781565b34801561055357600080fd5b506102c16110b1565b34801561056857600080fd5b5061032e6105773660046132bd565b60216020526000908152604090205460ff1681565b34801561059857600080fd5b50601b5461032e9062010000900460ff1681565b3480156105b857600080fd5b5061035461111b565b3480156105cd57600080fd5b506102c16105dc3660046132bd565b611160565b3480156105ed57600080fd5b5061035460105481565b34801561060357600080fd5b506102c161061236600461335d565b61125c565b34801561062357600080fd5b506103546106323660046132bd565b611519565b34801561064357600080fd5b506102c1611534565b34801561065857600080fd5b50610354600b5481565b34801561066e57600080fd5b506102c161067d366004613322565b6115a1565b34801561068e57600080fd5b506102c161069d366004613322565b61172d565b3480156106ae57600080fd5b506102c16106bd366004613344565b6117d0565b3480156106ce57600080fd5b50610382611924565b3480156106e357600080fd5b506102f8611938565b3480156106f857600080fd5b50610354600f5481565b34801561070e57600080fd5b506102c161071d366004613207565b611947565b34801561072e57600080fd5b5061035460205481565b34801561074457600080fd5b5061035460115481565b34801561075a57600080fd5b50601f5461032e9060ff1681565b34801561077457600080fd5b50610354611a40565b34801561078957600080fd5b5061032e610798366004613291565b611a88565b3480156107a957600080fd5b50600a54610382906001600160a01b031681565b3480156107c957600080fd5b5061032e6107d8366004613291565b611abf565b3480156107e957600080fd5b506102c16107f8366004613322565b611acc565b34801561080957600080fd5b506102c1610818366004613344565b611b3c565b34801561082957600080fd5b50600854610382906001600160a01b031681565b34801561084957600080fd5b506102c1610858366004613207565b611c61565b34801561086957600080fd5b5061032e6108783660046132bd565b60226020526000908152604090205460ff1681565b34801561089957600080fd5b506103546108a836600461338f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156108df57600080fd5b50610354600c5481565b3480156108f557600080fd5b5061032e6109043660046132bd565b60236020526000908152604090205460ff1681565b34801561092557600080fd5b50610354601d5481565b34801561093b57600080fd5b506102c161094a366004613344565b611d77565b34801561095b57600080fd5b506102c161096a3660046132bd565b611f2a565b34801561097b57600080fd5b50610354600d5481565b34801561099157600080fd5b50610354601c5481565b3480156109a757600080fd5b506102c16109b63660046133c8565b612013565b336109c4611924565b6001600160a01b0316146109f35760405162461bcd60e51b81526004016109ea906133e4565b60405180910390fd5b828114610a535760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b60648201526084016109ea565b60005b83811015610acc57610aba86868684818110610a7457610a74613419565b9050602002016020810190610a8991906132bd565b670de0b6b3a7640000868686818110610aa457610aa4613419565b90506020020135610ab59190613445565b6120d1565b80610ac481613464565b915050610a56565b505050505050565b33610add611924565b6001600160a01b031614610b035760405162461bcd60e51b81526004016109ea906133e4565b6001600160a01b038216600081815260226020526040808220805460ff191685151590811790915590519092917fa3c7c11b2e12c4144b09a7813f3393ba646392788638998c97be8da908cf04be91a35050565b606060038054610b669061347f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b929061347f565b8015610bdf5780601f10610bb457610100808354040283529160200191610bdf565b820191906000526020600020905b815481529060010190602001808311610bc257829003601f168201915b5050505050905090565b6000610bf63384846125cf565b50600192915050565b33610c08611924565b6001600160a01b031614610c2e5760405162461bcd60e51b81526004016109ea906133e4565b6008546001600160a01b0382811691161415610cac5760405162461bcd60e51b815260206004820152603760248201527f5a75636b3a20546865206469766964656e64206469737472696275746f7220616044820152766c7265616479206861732074686174206164647265737360481b60648201526084016109ea565b6000819050306001600160a01b0316816001600160a01b031663b2bdfa7b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610cf457600080fd5b505afa158015610d08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2c91906134ba565b6001600160a01b031614610dbc5760405162461bcd60e51b815260206004820152604b60248201527f5a75636b3a20546865206e6577206469766964656e642064697374726962757460448201527f6f72206d757374206265206f776e656420627920746865205465737420746f6b60648201526a195b8818dbdb9d1c9858dd60aa1b608482015260a4016109ea565b610dc7816001610ad4565b610dd2306001610ad4565b600754610de9906001600160a01b03166001610ad4565b6008546040516001600160a01b03918216918416907f4c1beaad9b2fcfd2ce776571d2ebc4750ba710de22bc57bd3fee8737ee3e3a9090600090a3600880546001600160a01b0319166001600160a01b039290921691909117905550565b6000610e548484846120d1565b6001600160a01b038416600090815260016020908152604080832033808552925290912054610e8f918691610e8a9086906134d7565b6125cf565b5060019392505050565b33610ea2611924565b6001600160a01b031614610ec85760405162461bcd60e51b81526004016109ea906133e4565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b33610efc611924565b6001600160a01b031614610f225760405162461bcd60e51b81526004016109ea906133e4565b6008546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b158015610f7057600080fd5b505af1158015610acc573d6000803e3d6000fd5b6008546040805163efca2eed60e01b815290516000926001600160a01b03169163efca2eed916004808301926020929190829003018186803b158015610fc957600080fd5b505afa158015610fdd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100191906134ee565b905090565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610bf6918590610e8a908690613507565b33611046611924565b6001600160a01b03161461106c5760405162461bcd60e51b81526004016109ea906133e4565b601b5460ff161561108f5760405162461bcd60e51b81526004016109ea9061351f565b60155560188054600160ff199182168117909255601b80549091169091179055565b600860009054906101000a90046001600160a01b03166001600160a01b031663f0fc6bca6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561110157600080fd5b505af1158015611115573d6000803e3d6000fd5b50505050565b60085460408051633a98ef3960e01b815290516000926001600160a01b031691633a98ef39916004808301926020929190829003018186803b158015610fc957600080fd5b33611169611924565b6001600160a01b03161461118f5760405162461bcd60e51b81526004016109ea906133e4565b6007546001600160a01b03828116911614156111ff5760405162461bcd60e51b815260206004820152602960248201527f546573743a2054686520726f7574657220616c7265616479206861732074686160448201526874206164647265737360b81b60648201526084016109ea565b6007546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b33611265611924565b6001600160a01b03161461128b5760405162461bcd60e51b81526004016109ea906133e4565b60058211156112fa5760405162461bcd60e51b815260206004820152603560248201527f526571756573746564207265776172647346656520666565206e6f74207769746044820152743434b71030b1b1b2b83a30b13632903930b733b29760591b60648201526084016109ea565b60058311156113685760405162461bcd60e51b815260206004820152603460248201527f526571756573746564206c697175696469747920666565206e6f74207769746860448201527334b71030b1b1b2b83a30b13632903930b733b29760611b60648201526084016109ea565b60058411156113d65760405162461bcd60e51b815260206004820152603460248201527f526571756573746564206d61726b6574696e6720666565206e6f74207769746860448201527334b71030b1b1b2b83a30b13632903930b733b29760611b60648201526084016109ea565b60068111156114485760405162461bcd60e51b815260206004820152603860248201527f5265717565737465642073656c6c2066656520696e637265617365206e6f74206044820152773bb4ba3434b71030b1b1b2b83a30b13632903930b733b29760411b60648201526084016109ea565b6114528385613507565b6000106114b55760405162461bcd60e51b815260206004820152602b60248201527f546f74616c2066656520616d6f756e74206d757374206265207374726963746c60448201526a3c903837b9b4ba34bb329760a91b60648201526084016109ea565b600e829055600f83905560108490556011819055836114d48484613507565b6114de9190613507565b601255600e54601054600f546040517f37322890d66d781059d797be5e2f27dc160a34d8bc0a8e09116cb9a773ce88ef90600090a450505050565b6001600160a01b031660009081526020819052604090205490565b3361153d611924565b6001600160a01b0316146115635760405162461bcd60e51b81526004016109ea906133e4565b60055460405160009161010090046001600160a01b0316906000805160206136b2833981519152908390a360058054610100600160a81b0319169055565b336115aa611924565b6001600160a01b0316146115d05760405162461bcd60e51b81526004016109ea906133e4565b6103e86115e364e8d4a510006005613445565b6115ed9190613552565b82101561164e5760405162461bcd60e51b815260206004820152602960248201527f526571756573746564206d6178207472616e73616374696f6e20616d6f756e74604482015268103a37b7903637bb9760b91b60648201526084016109ea565b6103e861166164e8d4a510006014613445565b61166b9190613552565b8110156116d15760405162461bcd60e51b815260206004820152602e60248201527f526571756573746564206d617820616c6c6f7761626c652077616c6c6574206160448201526d36b7bab73a103a37b7903637bb9760911b60648201526084016109ea565b6116e3670de0b6b3a764000083613445565b600b556116f8670de0b6b3a764000082613445565b600d819055600b546040517fc66babc31501a8b9fd3efae98ba8279008417a4d125e542a34ba6657305bf8ff90600090a35050565b33611736611924565b6001600160a01b03161461175c5760405162461bcd60e51b81526004016109ea906133e4565b601b54610100900460ff16156117845760405162461bcd60e51b81526004016109ea9061351f565b6014829055436016556017819055601b805461ff00191661010017905560405181907fa72e5e150ebe7b67363131cf1d5e72a8053adc58eb1879467ebd529ae3d4ecca90600090a25050565b336117d9611924565b6001600160a01b0316146117ff5760405162461bcd60e51b81526004016109ea906133e4565b62030d4081101580156118155750620c35008111155b6118845760405162461bcd60e51b815260206004820152603a60248201527f546573743a20676173466f7250726f63657373696e67206d7573742062652062604482015279065747765656e203230302c30303020616e64203830302c3030360341b60648201526084016109ea565b6020548114156118f15760405162461bcd60e51b815260206004820152603260248201527f546573743a2043616e6e6f742075706461746520676173466f7250726f63657360448201527173696e6720746f2073616d652076616c756560701b60648201526084016109ea565b60205460405182907f40d7e40e79af4e8e5a9b3c57030d8ea93f13d669c06d448c4d631d4ae7d23db790600090a3602055565b60055461010090046001600160a01b031690565b606060048054610b669061347f565b33611950611924565b6001600160a01b0316146119765760405162461bcd60e51b81526004016109ea906133e4565b7f000000000000000000000000fb307dc1d74facef5a43bf34aabf2731571761b76001600160a01b0316826001600160a01b03161415611a325760405162461bcd60e51b815260206004820152604b60248201527f546573743a205468652050616e63616b655377617020706169722063616e6e6f60448201527f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b6560648201526a744d616b6572506169727360a81b608482015260a4016109ea565b611a3c82826126f4565b5050565b600854604080516001620ad8df60e21b0319815290516000926001600160a01b03169163ffd49c84916004808301926020929190829003018186803b158015610fc957600080fd5b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610bf6918590610e8a9086906134d7565b6000610bf63384846120d1565b3360009081526006602052604090205460ff16611afb5760405162461bcd60e51b81526004016109ea90613574565b8082611b14670de0b6b3a764000064e8d4a51000613445565b611b1e9190613445565b611b289190613552565b601e555050601f805460ff19166001179055565b33611b45611924565b6001600160a01b031614611b6b5760405162461bcd60e51b81526004016109ea906133e4565b806103e8611b7f64e8d4a510006005613445565b611b899190613552565b11158015611bb257506064611ba464e8d4a510006002613445565b611bae9190613552565b8111155b611c1e5760405162461bcd60e51b815260206004820152603760248201527f52657175657374656420636f6e7472616374207377617020616d6f756e74206f6044820152763aba1037b31030b1b1b2b83a30b13632903930b733b29760491b60648201526084016109ea565b611c30670de0b6b3a764000082613445565b600c8190556040517f09e89af7cbd8410d0ad2a74ab3cc8d9ddeef8ab1177f0f8a1984d355bb9d78f190600090a250565b33611c6a611924565b6001600160a01b031614611c905760405162461bcd60e51b81526004016109ea906133e4565b6001600160a01b03821660009081526021602052604090205460ff1615158115151415611d185760405162461bcd60e51b815260206004820152603060248201527f546573743a204163636f756e7420697320616c7265616479207468652076616c60448201526f7565206f6620276578636c756465642760801b60648201526084016109ea565b6001600160a01b038216600081815260216020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b3360009081526006602052604090205460ff16611da65760405162461bcd60e51b81526004016109ea90613574565b60006064611db48347613445565b611dbe9190613552565b60408051600280825260608201835292935060009290916020830190803683375050600754604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015611e2857600080fd5b505afa158015611e3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6091906134ba565b81600081518110611e7357611e73613419565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611ea757611ea7613419565b6001600160a01b03928316602091820292909201015260075460095460405163b6f9de9560e01b81529183169263b6f9de95928692611ef39260009288929091169042906004016135f9565b6000604051808303818588803b158015611f0c57600080fd5b505af1158015611f20573d6000803e3d6000fd5b5050505050505050565b33611f33611924565b6001600160a01b031614611f595760405162461bcd60e51b81526004016109ea906133e4565b6001600160a01b038116611fbe5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109ea565b6005546040516001600160a01b0380841692610100900416906000805160206136b283398151915290600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b3360009081526006602052604090205460ff166120425760405162461bcd60e51b81526004016109ea90613574565b607881111561209d5760405162461bcd60e51b815260206004820152602160248201527f52757368206d6179206e6f74206c617374206f7665722074776f20686f7572736044820152601760f91b60648201526084016109ea565b601b805483151563010000000263ffff00001990911617620100001790556120c681603c613445565b601c55505042601d55565b806120e7576120e2838360006127fd565b505050565b6120f28383836128a2565b601b5460009060ff16801561210a575060135460ff16155b6001600160a01b03851660009081526021602052604090205490915060ff168061214c57506001600160a01b03831660009081526021602052604090205460ff165b15612155575060005b80156123e457601854600090819060ff1615612385576001600160a01b03861660009081526023602052604090205460ff16156122e9576001600160a01b0385166000908152601a602052604090205460ff16156122005760405162461bcd60e51b815260206004820152602260248201527f446f206e6f7420627579206265666f7265206f6666696369616c206c61756e63604482015261341760f11b60648201526084016109ea565b601b54610100900460ff166122455761221a8630866127fd565b5050506001600160a01b039091166000908152601a60205260409020805460ff191660011790555050565b6001600160a01b038516600090815260196020526040902054156122cd576017546001600160a01b0386166000908152601960205260409020546122899190613507565b43116122cd5760405162461bcd60e51b81526020600482015260136024820152722a3930b232903a37b790333932b8bab2b73a1760691b60448201526064016109ea565b6001600160a01b03851660009081526019602052604090204390555b6014546016546122f99190613507565b43101561231e57606461230d856063613445565b6123179190613552565b91506123b3565b60155460165461232e9190613507565b431161233f5760185460ff16612342565b60005b6018805460ff191691151591909117905560008061235f88612a5a565b9350915082905060646123728388613445565b61237c9190613552565b935050506123b3565b60008061239188612a5a565b9350915082905060646123a48388613445565b6123ae9190613552565b935050505b6123bd82856134d7565b93506123e186826123ce57306123db565b6009546001600160a01b03165b846127fd565b50505b601f5460ff161561240c576123f7612bd8565b1561240757612407601e54612c27565b612425565b61241584612c5c565b1561242557612425600c54612cf1565b6124308484846127fd565b6001600160a01b03841660009081526022602052604090205460ff166124b5576008546001600160a01b03166314b6ca968561246b81611519565b6040518363ffffffff1660e01b815260040161248892919061362e565b600060405180830381600087803b1580156124a257600080fd5b505af19250505080156124b3575060015b505b6001600160a01b03831660009081526022602052604090205460ff1661253a576008546001600160a01b03166314b6ca96846124f081611519565b6040518363ffffffff1660e01b815260040161250d92919061362e565b600060405180830381600087803b15801561252757600080fd5b505af1925050508015612538575060015b505b601b5460ff16801561254f575060135460ff16155b801561255e575060185460ff16155b15611115576008546020546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c4799161259b9160040190815260200190565b600060405180830381600087803b1580156125b557600080fd5b505af19250505080156125c6575060015b61111557611115565b6001600160a01b0383166126315760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109ea565b6001600160a01b0382166126925760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109ea565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03821660009081526023602052604090205460ff16151581151514156127895760405162461bcd60e51b815260206004820152603e60248201527f546573743a204175746f6d61746564206d61726b6574206d616b65722070616960448201527f7220697320616c72656164792073657420746f20746861742076616c7565000060648201526084016109ea565b6001600160a01b0382166000908152602360205260409020805460ff191682158015919091179091556127c1576127c1826001610ad4565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6001600160a01b0383166000908152602081905260409020546128219082906134d7565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612851908290613507565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016126e7565b6128aa611924565b6001600160a01b0316836001600160a01b0316141580156128e457506128ce611924565b6001600160a01b0316826001600160a01b031614155b801561290957506001600160a01b03831660009081526021602052604090205460ff16155b156120e257601b5460ff1661295d5760405162461bcd60e51b815260206004820152601a602482015279283937b532b1ba103430b9903cb2ba103a37903630bab731b41760311b60448201526064016109ea565b600b548111156129c05760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016109ea565b6001600160a01b03831660009081526023602052604090205460ff16156120e257600d54816129ee84611519565b6129f89190613507565b11156120e25760405162461bcd60e51b815260206004820152602b60248201527f546f6b656e20707572636861736520696d706c696573206d617857616c6c657460448201526a103b34b7b630ba34b7b71760a91b60648201526084016109ea565b6000806000601b60029054906101000a900460ff1615612b945760006002601c54612a859190613552565b601d54612a929190613507565b90506000601c54601d54612aa69190613507565b905081421015612af8576001600160a01b03861660009081526023602052604090205460ff16612ad7576014612ada565b60005b601b5460ff9182169863010000009091049091169650945050505050565b80421015612b42576001600160a01b03861660009081526023602052604090205460ff16612b2757600f612ada565b5050601b54600595630100000090910460ff16945092505050565b6001600160a01b03861660009081526023602052604090205460ff16612b7757601154601254612b729190613507565b612b7b565b6012545b601b805462ff0000191690559660009650945050505050565b6001600160a01b03841660009081526023602052604090205460ff16612bc957601154601254612bc49190613507565b612bcd565b6012545b946000945092505050565b600080612be430611519565b601e54601b549192508210159060ff168015612bfd5750805b8015612c115750601f54610100900460ff16155b8015612c20575060185460ff16155b9250505090565b601f805461ff001916610100179055600954612c4e9030906001600160a01b0316836127fd565b50601f805461ffff19169055565b600080612c6830611519565b600c54601b549192508210159060ff168015612c815750805b8015612c90575060135460ff16155b8015612cb557506001600160a01b03841660009081526023602052604090205460ff16155b8015612cda57506001600160a01b03841660009081526021602052604090205460ff16155b8015612ce9575060185460ff16155b949350505050565b6013805460ff19166001179055601254600f5460009190612d129084613445565b612d1c9190613552565b90506000612d2b600283613552565b9050600060125460105485612d409190613445565b612d4a9190613552565b9050600081612d5985876134d7565b612d6391906134d7565b9050600081612d728486613507565b612d7c9190613507565b905047612d8882612f17565b6000612d9482476134d7565b9050600083612da38884613445565b612dad9190613552565b9050600084612dbc8885613445565b612dc69190613552565b600a546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d8060008114612e1d576040519150601f19603f3d011682016040523d82523d6000602084013e612e22565b606091505b50909150508815612e7157612e37898461304a565b604080518a8152602081018590527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15b60085460408051630d0e30db60e41b8152905147926001600160a01b03169163d0e30db091849160048082019260009290919082900301818588803b158015612eb957600080fd5b505af193505050508015612ecb575060015b506040518181527fb0cc2628d6d644cf6be9d8110e142297ac910d6d8026d795a99f272fd9ad60b19060200160405180910390a150506013805460ff1916905550505050505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612f4c57612f4c613419565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015612fa057600080fd5b505afa158015612fb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fd891906134ba565b81600181518110612feb57612feb613419565b6001600160a01b03928316602091820292909201015260075461301191309116846125cf565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac94790610f56908590600090869030904290600401613647565b6007546130629030906001600160a01b0316846125cf565b60075460095460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b1580156130cd57600080fd5b505af11580156130e1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131069190613683565b5050505050565b6001600160a01b038116811461312257600080fd5b50565b60008083601f84011261313757600080fd5b5081356001600160401b0381111561314e57600080fd5b6020830191508360208260051b850101111561316957600080fd5b9250929050565b60008060008060006060868803121561318857600080fd5b85356131938161310d565b945060208601356001600160401b03808211156131af57600080fd5b6131bb89838a01613125565b909650945060408801359150808211156131d457600080fd5b506131e188828901613125565b969995985093965092949392505050565b8035801515811461320257600080fd5b919050565b6000806040838503121561321a57600080fd5b82356132258161310d565b9150613233602084016131f2565b90509250929050565b600060208083528351808285015260005b818110156132695785810183015185820160400152820161324d565b8181111561327b576000604083870101525b50601f01601f1916929092016040019392505050565b600080604083850312156132a457600080fd5b82356132af8161310d565b946020939093013593505050565b6000602082840312156132cf57600080fd5b81356132da8161310d565b9392505050565b6000806000606084860312156132f657600080fd5b83356133018161310d565b925060208401356133118161310d565b929592945050506040919091013590565b6000806040838503121561333557600080fd5b50508035926020909101359150565b60006020828403121561335657600080fd5b5035919050565b6000806000806080858703121561337357600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156133a257600080fd5b82356133ad8161310d565b915060208301356133bd8161310d565b809150509250929050565b600080604083850312156133db57600080fd5b6132af836131f2565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561345f5761345f61342f565b500290565b60006000198214156134785761347861342f565b5060010190565b600181811c9082168061349357607f821691505b602082108114156134b457634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156134cc57600080fd5b81516132da8161310d565b6000828210156134e9576134e961342f565b500390565b60006020828403121561350057600080fd5b5051919050565b6000821982111561351a5761351a61342f565b500190565b602080825260199082015278283937b532b1ba1030b63932b0b23c903630bab731b432b21760391b604082015260600190565b60008261356f57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526021908201527f4f776e61626c653a2063616c6c6572206973206e6f7420617574686f72697a656040820152601960fa1b606082015260800190565b600081518084526020808501945080840160005b838110156135ee5781516001600160a01b0316875295820195908201906001016135c9565b509495945050505050565b84815260806020820152600061361260808301866135b5565b6001600160a01b03949094166040830152506060015292915050565b6001600160a01b03929092168252602082015260400190565b85815284602082015260a06040820152600061366660a08301866135b5565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561369857600080fd5b835192506020840151915060408401519050925092509256fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a2646970667358221220f52c69471a07c70a644805d286b620f9171ad6ca20eb79a88493a9516803764a64736f6c63430008090033
Deployed Bytecode Sourcemap
13707:19795:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33103:355;;;;;;;;;;-1:-1:-1;33103:355:0;;;;;:::i;:::-;;:::i;:::-;;20846:211;;;;;;;;;;-1:-1:-1;20846:211:0;;;;;:::i;:::-;;:::i;4009:91::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4929:167;;;;;;;;;;-1:-1:-1;4929:167:0;;;;;:::i;:::-;;:::i;:::-;;;3007:14:1;;3000:22;2982:41;;2970:2;2955:18;4929:167:0;2842:187:1;14675:24:0;;;;;;;;;;;;;;;;;;;3180:25:1;;;3168:2;3153:18;14675:24:0;3034:177:1;13755:39:0;;;;;;;;;;-1:-1:-1;13755:39:0;;;;-1:-1:-1;;;;;13755:39:0;;;;;;-1:-1:-1;;;;;3404:32:1;;;3386:51;;3374:2;3359:18;13755:39:0;3216:227:1;4322:108:0;;;;;;;;;;-1:-1:-1;4410:12:0;;4322:108;;19428:785;;;;;;;;;;-1:-1:-1;19428:785:0;;;;;:::i;:::-;;:::i;5108:270::-;;;;;;;;;;-1:-1:-1;5108:270:0;;;;;:::i;:::-;;:::i;13919:80::-;;;;;;;;;;-1:-1:-1;13919:80:0;;;;-1:-1:-1;;;;;13919:80:0;;;15160:33;;;;;;;;;;-1:-1:-1;15160:33:0;;;;;;;;;;;14535:25;;;;;;;;;;;;;;;;2749:120;;;;;;;;;;-1:-1:-1;2749:120:0;;;;;:::i;:::-;;:::i;22112:197::-;;;;;;;;;;-1:-1:-1;22112:197:0;;;;;:::i;:::-;;:::i;22441:136::-;;;;;;;;;;;;;:::i;4219:91::-;;;;;;;;;;-1:-1:-1;4293:9:0;;4219:91;;4293:9;;;;4764:36:1;;4752:2;4737:18;4219:91:0;4622:184:1;5390:211:0;;;;;;;;;;-1:-1:-1;5390:211:0;;;;;:::i;:::-;;:::i;18810:251::-;;;;;;;;;;-1:-1:-1;18810:251:0;;;;;:::i;:::-;;:::i;15281:29::-;;;;;;;;;;;;;;;;13801:38;;;;;;;;;;;;;;;22588:74;;;;;;;;;;;;;:::i;15519:51::-;;;;;;;;;;-1:-1:-1;15519:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15124:29;;;;;;;;;;-1:-1:-1;15124:29:0;;;;;;;;;;;22670:133;;;;;;;;;;;;;:::i;20221:311::-;;;;;;;;;;-1:-1:-1;20221:311:0;;;;;:::i;:::-;;:::i;14603:27::-;;;;;;;;;;;;;;;;22815:1016;;;;;;;;;;-1:-1:-1;22815:1016:0;;;;;:::i;:::-;;:::i;4442:127::-;;;;;;;;;;-1:-1:-1;4442:127:0;;;;;:::i;:::-;;:::i;3148:148::-;;;;;;;;;;;;;:::i;14174:59::-;;;;;;;;;;;;;;;;23843:454;;;;;;;;;;-1:-1:-1;23843:454:0;;;;;:::i;:::-;;:::i;19073:347::-;;;;;;;;;;-1:-1:-1;19073:347:0;;;;;:::i;:::-;;:::i;21700:404::-;;;;;;;;;;-1:-1:-1;21700:404:0;;;;;:::i;:::-;;:::i;2650:87::-;;;;;;;;;;;;;:::i;4112:95::-;;;;;;;;;;;;;:::i;14567:27::-;;;;;;;;;;;;;;;;21065:262;;;;;;;;;;-1:-1:-1;21065:262:0;;;;;:::i;:::-;;:::i;15473:37::-;;;;;;;;;;;;;;;;14638:30;;;;;;;;;;;;;;;;15317:39;;;;;;;;;;-1:-1:-1;15317:39:0;;;;;;;;22321:112;;;;;;;;;;;;;:::i;5609:221::-;;;;;;;;;;-1:-1:-1;5609:221:0;;;;;:::i;:::-;;:::i;14006:31::-;;;;;;;;;;-1:-1:-1;14006:31:0;;;;-1:-1:-1;;;;;14006:31:0;;;4581:173;;;;;;;;;;-1:-1:-1;4581:173:0;;;;;:::i;:::-;;:::i;29399:218::-;;;;;;;;;;-1:-1:-1;29399:218:0;;;;;:::i;:::-;;:::i;24305:410::-;;;;;;;;;;-1:-1:-1;24305:410:0;;;;;:::i;:::-;;:::i;13856:50::-;;;;;;;;;;-1:-1:-1;13856:50:0;;;;-1:-1:-1;;;;;13856:50:0;;;20540:294;;;;;;;;;;-1:-1:-1;20540:294:0;;;;;:::i;:::-;;:::i;15577:56::-;;;;;;;;;;-1:-1:-1;15577:56:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4766:151;;;;;;;;;;-1:-1:-1;4766:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;4882:18:0;;;4855:7;4882:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4766:151;14293:71;;;;;;;;;;;;;;;;15642:39;;;;;;;;;;-1:-1:-1;15642:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15239:29;;;;;;;;;;;;;;;;32519:571;;;;;;;;;;-1:-1:-1;32519:571:0;;;;;:::i;:::-;;:::i;3308:244::-;;;;;;;;;;-1:-1:-1;3308:244:0;;;;;:::i;:::-;;:::i;14412:64::-;;;;;;;;;;;;;;;;15200:32;;;;;;;;;;;;;;;;27866:312;;;;;;;;;;-1:-1:-1;27866:312:0;;;;;:::i;:::-;;:::i;33103:355::-;2932:10;2921:7;:5;:7::i;:::-;-1:-1:-1;;;;;2921:21:0;;2913:66;;;;-1:-1:-1;;;2913:66:0;;;;;;;:::i;:::-;;;;;;;;;33232:34;;::::1;33224:87;;;::::0;-1:-1:-1;;;33224:87:0;;6843:2:1;33224:87:0::1;::::0;::::1;6825:21:1::0;6882:2;6862:18;;;6855:30;6921:34;6901:18;;;6894:62;-1:-1:-1;;;6972:18:1;;;6965:38;7020:19;;33224:87:0::1;6641:404:1::0;33224:87:0::1;33327:9;33322:129;33342:21:::0;;::::1;33322:129;;;33385:54;33395:6;33403:10;;33414:1;33403:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;14157:4;33418:6;;33425:1;33418:9;;;;;;;:::i;:::-;;;;;;;:20;;;;:::i;:::-;33385:9;:54::i;:::-;33365:3:::0;::::1;::::0;::::1;:::i;:::-;;;;33322:129;;;;33103:355:::0;;;;;:::o;20846:211::-;2932:10;2921:7;:5;:7::i;:::-;-1:-1:-1;;;;;2921:21:0;;2913:66;;;;-1:-1:-1;;;2913:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20941:32:0;::::1;;::::0;;;:23:::1;:32;::::0;;;;;:48;;-1:-1:-1;;20941:48:0::1;::::0;::::1;;::::0;;::::1;::::0;;;21005:44;;20941:48;;:32;21005:44:::1;::::0;::::1;20846:211:::0;;:::o;4009:91::-;4054:13;4087:5;4080:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4009:91;:::o;4929:167::-;5012:4;5029:37;5038:10;5050:7;5059:6;5029:8;:37::i;:::-;-1:-1:-1;5084:4:0;4929:167;;;;:::o;19428:785::-;2932:10;2921:7;:5;:7::i;:::-;-1:-1:-1;;;;;2921:21:0;;2913:66;;;;-1:-1:-1;;;2913:66:0;;;;;;;:::i;:::-;19541:19:::1;::::0;-1:-1:-1;;;;;19519:42:0;;::::1;19541:19:::0;::::1;19519:42;;19511:110;;;::::0;-1:-1:-1;;;19511:110:0;;8214:2:1;19511:110:0::1;::::0;::::1;8196:21:1::0;8253:2;8233:18;;;8226:30;8292:34;8272:18;;;8265:62;-1:-1:-1;;;8343:18:1;;;8336:53;8406:19;;19511:110:0::1;8012:419:1::0;19511:110:0::1;19634:46;19715:10;19634:93;;19791:4;-1:-1:-1::0;;;;;19748:48:0::1;:22;-1:-1:-1::0;;;;;19748:29:0::1;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19748:48:0::1;;19740:136;;;::::0;-1:-1:-1;;;19740:136:0;;8894:2:1;19740:136:0::1;::::0;::::1;8876:21:1::0;8933:2;8913:18;;;8906:30;8972:34;8952:18;;;8945:62;9043:34;9023:18;;;9016:62;-1:-1:-1;;;9094:19:1;;;9087:42;9146:19;;19740:136:0::1;8692:479:1::0;19740:136:0::1;19889:59;19918:22;19943:4;19889:20;:59::i;:::-;19959:41;19988:4;19995;19959:20;:41::i;:::-;20040:15;::::0;20011:52:::1;::::0;-1:-1:-1;;;;;20040:15:0::1;::::0;20011:20:::1;:52::i;:::-;20127:19;::::0;20081:67:::1;::::0;-1:-1:-1;;;;;20127:19:0;;::::1;::::0;20081:67;::::1;::::0;::::1;::::0;20127:19:::1;::::0;20081:67:::1;20161:19;:44:::0;;-1:-1:-1;;;;;;20161:44:0::1;-1:-1:-1::0;;;;;20161:44:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;19428:785:0:o;5108:270::-;5214:4;5231:36;5241:6;5249:9;5260:6;5231:9;:36::i;:::-;-1:-1:-1;;;;;5307:19:0;;;;;;:11;:19;;;;;;;;5295:10;5307:31;;;;;;;;;5278:70;;5287:6;;5307:40;;5341:6;;5307:40;:::i;:::-;5278:8;:70::i;:::-;-1:-1:-1;5366:4:0;5108:270;;;;;:::o;2749:120::-;2932:10;2921:7;:5;:7::i;:::-;-1:-1:-1;;;;;2921:21:0;;2913:66;;;;-1:-1:-1;;;2913:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2829:19:0;;;::::1;;::::0;;;:10:::1;:19;::::0;;;;:32;;-1:-1:-1;;2829:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;2749:120::o;22112:197::-;2932:10;2921:7;:5;:7::i;:::-;-1:-1:-1;;;;;2921:21:0;;2913:66;;;;-1:-1:-1;;;2913:66:0;;;;;;;:::i;:::-;22228:19:::1;::::0;:73:::1;::::0;-1:-1:-1;;;22228:73:0;;::::1;::::0;::::1;9480:25:1::0;;;9521:18;;;9514:34;;;-1:-1:-1;;;;;22228:19:0;;::::1;::::0;:43:::1;::::0;9453:18:1;;22228:73:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;22441:136:::0;22531:19;;:38;;;-1:-1:-1;;;22531:38:0;;;;22504:7;;-1:-1:-1;;;;;22531:19:0;;:36;;:38;;;;;;;;;;;;;;:19;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22524:45;;22441:136;:::o;5390:211::-;5504:10;5478:4;5525:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;5525:32:0;;;;;;;;;;5478:4;;5495:76;;5516:7;;5525:45;;5560:10;;5525:45;:::i;18810:251::-;2932:10;2921:7;:5;:7::i;:::-;-1:-1:-1;;;;;2921:21:0;;2913:66;;;;-1:-1:-1;;;2913:66:0;;;;;;;:::i;:::-;18897:16:::1;::::0;::::1;;18896:17;18888:55;;;;-1:-1:-1::0;;;18888:55:0::1;;;;;;;:::i;:::-;18954:15;:34:::0;18999:13:::1;:20:::0;;19015:4:::1;-1:-1:-1::0;;18999:20:0;;::::1;::::0;::::1;::::0;;;19030:16:::1;:23:::0;;;;::::1;::::0;;::::1;::::0;;18810:251::o;22588:74::-;22619:19;;;;;;;;;-1:-1:-1;;;;;22619:19:0;-1:-1:-1;;;;;22619:33:0;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22588:74::o;22670:133::-;22762:19;;:33;;;-1:-1:-1;;;22762:33:0;;;;22735:7;;-1:-1:-1;;;;;22762:19:0;;:31;;:33;;;;;;;;;;;;;;:19;:33;;;;;;;;;;20221:311;2932:10;2921:7;:5;:7::i;:::-;-1:-1:-1;;;;;2921:21:0;;2913:66;;;;-1:-1:-1;;;2913:66:0;;;;;;;:::i;:::-;20330:15:::1;::::0;-1:-1:-1;;;;;20308:38:0;;::::1;20330:15:::0;::::1;20308:38;;20300:92;;;::::0;-1:-1:-1;;;20300:92:0;;10437:2:1;20300:92:0::1;::::0;::::1;10419:21:1::0;10476:2;10456:18;;;10449:30;10515:34;10495:18;;;10488:62;-1:-1:-1;;;10566:18:1;;;10559:39;10615:19;;20300:92:0::1;10235:405:1::0;20300:92:0::1;20450:15;::::0;20408:59:::1;::::0;-1:-1:-1;;;;;20450:15:0;;::::1;::::0;20408:59;::::1;::::0;::::1;::::0;20450:15:::1;::::0;20408:59:::1;20478:15;:46:::0;;-1:-1:-1;;;;;;20478:46:0::1;-1:-1:-1::0;;;;;20478:46:0;;;::::1;::::0;;;::::1;::::0;;20221:311::o;22815:1016::-;2932:10;2921:7;:5;:7::i;:::-;-1:-1:-1;;;;;2921:21:0;;2913:66;;;;-1:-1:-1;;;2913:66:0;;;;;;;:::i;:::-;22995:1:::1;22980:11;:16;;22952:102;;;::::0;-1:-1:-1;;;22952:102:0;;10847:2:1;22952:102:0::1;::::0;::::1;10829:21:1::0;10886:2;10866:18;;;10859:30;10925:34;10905:18;;;10898:62;-1:-1:-1;;;10976:18:1;;;10969:51;11037:19;;22952:102:0::1;10645:417:1::0;22952:102:0::1;23112:1;23095:13;:18;;23065:106;;;::::0;-1:-1:-1;;;23065:106:0;;11269:2:1;23065:106:0::1;::::0;::::1;11251:21:1::0;11308:2;11288:18;;;11281:30;11347:34;11327:18;;;11320:62;-1:-1:-1;;;11398:18:1;;;11391:50;11458:19;;23065:106:0::1;11067:416:1::0;23065:106:0::1;23229:1;23212:13;:18;;23182:105;;;::::0;-1:-1:-1;;;23182:105:0;;11690:2:1;23182:105:0::1;::::0;::::1;11672:21:1::0;11729:2;11709:18;;;11702:30;11768:34;11748:18;;;11741:62;-1:-1:-1;;;11819:18:1;;;11812:50;11879:19;;23182:105:0::1;11488:416:1::0;23182:105:0::1;23351:1;23331:16;:21;;23298:115;;;::::0;-1:-1:-1;;;23298:115:0;;12111:2:1;23298:115:0::1;::::0;::::1;12093:21:1::0;12150:2;12130:18;;;12123:30;12189:34;12169:18;;;12162:62;-1:-1:-1;;;12240:18:1;;;12233:54;12304:19;;23298:115:0::1;11909:420:1::0;23298:115:0::1;23436:29;23452:13:::0;23436;:29:::1;:::i;:::-;23432:1;:33;23424:89;;;::::0;-1:-1:-1;;;23424:89:0;;12536:2:1;23424:89:0::1;::::0;::::1;12518:21:1::0;12575:2;12555:18;;;12548:30;12614:34;12594:18;;;12587:62;-1:-1:-1;;;12665:18:1;;;12658:41;12716:19;;23424:89:0::1;12334:407:1::0;23424:89:0::1;23534:10;:24:::0;;;23569:12:::1;:28:::0;;;23608:12:::1;:28:::0;;;23648:15:::1;:34:::0;;;23623:13;23705:27:::1;23584:13:::0;23547:11;23705:27:::1;:::i;:::-;:43;;;;:::i;:::-;23693:9;:55:::0;23810:10:::1;::::0;23796:12:::1;::::0;23782::::1;::::0;23774:47:::1;::::0;::::1;::::0;;;::::1;22815:1016:::0;;;;:::o;4442:127::-;-1:-1:-1;;;;;4543:18:0;4516:7;4543:18;;;;;;;;;;;;4442:127::o;3148:148::-;2932:10;2921:7;:5;:7::i;:::-;-1:-1:-1;;;;;2921:21:0;;2913:66;;;;-1:-1:-1;;;2913:66:0;;;;;;;:::i;:::-;3239:6:::1;::::0;3218:40:::1;::::0;3255:1:::1;::::0;3239:6:::1;::::0;::::1;-1:-1:-1::0;;;;;3239:6:0::1;::::0;-1:-1:-1;;;;;;;;;;;3218:40:0;3255:1;;3218:40:::1;3269:6;:19:::0;;-1:-1:-1;;;;;;3269:19:0::1;::::0;;3148:148::o;23843:454::-;2932:10;2921:7;:5;:7::i;:::-;-1:-1:-1;;;;;2921:21:0;;2913:66;;;;-1:-1:-1;;;2913:66:0;;;;;;;:::i;:::-;23974:4:::1;23955:16;14096:4;23955:1;:16;:::i;:::-;:23;;;;:::i;:::-;23944:6;:35;;23936:89;;;::::0;-1:-1:-1;;;23936:89:0;;13170:2:1;23936:89:0::1;::::0;::::1;13152:21:1::0;13209:2;13189:18;;;13182:30;13248:34;13228:18;;;13221:62;-1:-1:-1;;;13299:18:1;;;13292:39;13348:19;;23936:89:0::1;12968:405:1::0;23936:89:0::1;24079:4;24059:17;14096:4;24059:2;:17;:::i;:::-;:24;;;;:::i;:::-;24044:10;:40;;24036:99;;;::::0;-1:-1:-1;;;24036:99:0;;13580:2:1;24036:99:0::1;::::0;::::1;13562:21:1::0;13619:2;13599:18;;;13592:30;13658:34;13638:18;;;13631:62;-1:-1:-1;;;13709:18:1;;;13702:44;13763:19;;24036:99:0::1;13378:410:1::0;24036:99:0::1;24164:17;14157:4;24164:6:::0;:17:::1;:::i;:::-;24156:5;:25:::0;24204:21:::1;14157:4;24204:10:::0;:21:::1;:::i;:::-;24192:9;:33:::0;;;24272:5:::1;::::0;24251:38:::1;::::0;::::1;::::0;;;::::1;23843:454:::0;;:::o;19073:347::-;2932:10;2921:7;:5;:7::i;:::-;-1:-1:-1;;;;;2921:21:0;;2913:66;;;;-1:-1:-1;;;2913:66:0;;;;;;;:::i;:::-;19173:11:::1;::::0;::::1;::::0;::::1;;;19172:12;19164:50;;;;-1:-1:-1::0;;;19164:50:0::1;;;;;;;:::i;:::-;19225:14;:32:::0;;;19282:12:::1;19268:11;:26:::0;19305:13:::1;:30:::0;;;19346:11:::1;:18:::0;;-1:-1:-1;;19346:18:0::1;;;::::0;;19390:22:::1;::::0;19321:14;;19390:22:::1;::::0;-1:-1:-1;;19390:22:0::1;19073:347:::0;;:::o;21700:404::-;2932:10;2921:7;:5;:7::i;:::-;-1:-1:-1;;;;;2921:21:0;;2913:66;;;;-1:-1:-1;;;2913:66:0;;;;;;;:::i;:::-;21798:6:::1;21786:8;:18;;:40;;;;;21820:6;21808:8;:18;;21786:40;21778:111;;;::::0;-1:-1:-1;;;21778:111:0;;13995:2:1;21778:111:0::1;::::0;::::1;13977:21:1::0;14034:2;14014:18;;;14007:30;14073:34;14053:18;;;14046:62;-1:-1:-1;;;14124:18:1;;;14117:56;14190:19;;21778:111:0::1;13793:422:1::0;21778:111:0::1;21920:16;;21908:8;:28;;21900:91;;;::::0;-1:-1:-1;;;21900:91:0;;14422:2:1;21900:91:0::1;::::0;::::1;14404:21:1::0;14461:2;14441:18;;;14434:30;14500:34;14480:18;;;14473:62;-1:-1:-1;;;14551:18:1;;;14544:48;14609:19;;21900:91:0::1;14220:414:1::0;21900:91:0::1;22041:16;::::0;22007:51:::1;::::0;22031:8;;22007:51:::1;::::0;;;::::1;22069:16;:27:::0;21700:404::o;2650:87::-;2723:6;;;;;-1:-1:-1;;;;;2723:6:0;;2650:87::o;4112:95::-;4159:13;4192:7;4185:14;;;;;:::i;21065:262::-;2932:10;2921:7;:5;:7::i;:::-;-1:-1:-1;;;;;2921:21:0;;2913:66;;;;-1:-1:-1;;;2913:66:0;;;;;;;:::i;:::-;21172:13:::1;-1:-1:-1::0;;;;;21164:21:0::1;:4;-1:-1:-1::0;;;;;21164:21:0::1;;;21156:109;;;::::0;-1:-1:-1;;;21156:109:0;;14841:2:1;21156:109:0::1;::::0;::::1;14823:21:1::0;14880:2;14860:18;;;14853:30;14919:34;14899:18;;;14892:62;14990:34;14970:18;;;14963:62;-1:-1:-1;;;15041:19:1;;;15034:42;15093:19;;21156:109:0::1;14639:479:1::0;21156:109:0::1;21278:41;21307:4;21313:5;21278:28;:41::i;:::-;21065:262:::0;;:::o;22321:112::-;22394:19;;:31;;;-1:-1:-1;;;;;;22394:31:0;;;;22367:7;;-1:-1:-1;;;;;22394:19:0;;:29;;:31;;;;;;;;;;;;;;:19;:31;;;;;;;;;;5609:221;5728:10;5702:4;5749:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;5749:32:0;;;;;;;;;;5702:4;;5719:81;;5740:7;;5749:50;;5784:15;;5749:50;:::i;4581:173::-;4667:4;4684:40;4694:10;4706:9;4717:6;4684:9;:40::i;29399:218::-;3067:10;3056:22;;;;:10;:22;;;;;;;;3048:68;;;;-1:-1:-1;;;3048:68:0;;;;;;;:::i;:::-;29556:16;29539:14;29513:23:::1;14157:4;14096;29513:23;:::i;:::-;:40;;;;:::i;:::-;:59;;;;:::i;:::-;29500:10;:72:::0;-1:-1:-1;;29583:19:0::1;:26:::0;;-1:-1:-1;;29583:26:0::1;29605:4;29583:26;::::0;;29399:218::o;24305:410::-;2932:10;2921:7;:5;:7::i;:::-;-1:-1:-1;;;;;2921:21:0;;2913:66;;;;-1:-1:-1;;;2913:66:0;;;;;;;:::i;:::-;24427:19;24419:4:::1;24400:16;14096:4;24400:1;:16;:::i;:::-;:23;;;;:::i;:::-;:46;;:95;;;;-1:-1:-1::0;24492:3:0::1;24473:16;14096:4;24473:1;:16;:::i;:::-;:22;;;;:::i;:::-;24450:19;:45;;24400:95;24392:172;;;::::0;-1:-1:-1;;;24392:172:0;;15727:2:1;24392:172:0::1;::::0;::::1;15709:21:1::0;15766:2;15746:18;;;15739:30;15805:34;15785:18;;;15778:62;-1:-1:-1;;;15856:18:1;;;15849:53;15919:19;;24392:172:0::1;15525:419:1::0;24392:172:0::1;24606:30;14157:4;24606:19:::0;:30:::1;:::i;:::-;24585:18;:51:::0;;;24664:41:::1;::::0;::::1;::::0;;;::::1;24305:410:::0;:::o;20540:294::-;2932:10;2921:7;:5;:7::i;:::-;-1:-1:-1;;;;;2921:21:0;;2913:66;;;;-1:-1:-1;;;2913:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20633:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;::::1;;:39;;::::0;::::1;;;;20625:100;;;::::0;-1:-1:-1;;;20625:100:0;;16151:2:1;20625:100:0::1;::::0;::::1;16133:21:1::0;16190:2;16170:18;;;16163:30;16229:34;16209:18;;;16202:62;-1:-1:-1;;;16280:18:1;;;16273:46;16336:19;;20625:100:0::1;15949:412:1::0;20625:100:0::1;-1:-1:-1::0;;;;;20736:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:38;;-1:-1:-1;;20736:38:0::1;::::0;::::1;;::::0;;::::1;::::0;;;20792:34;;2982:41:1;;;20792:34:0::1;::::0;2955:18:1;20792:34:0::1;;;;;;;20540:294:::0;;:::o;32519:571::-;3067:10;3056:22;;;;:10;:22;;;;;;;;3048:68;;;;-1:-1:-1;;;3048:68:0;;;;;;;:::i;:::-;32594:23:::1;32654:3;32620:31;32644:7:::0;32620:21:::1;:31;:::i;:::-;:37;;;;:::i;:::-;32752:16;::::0;;32766:1:::1;32752:16:::0;;;;;::::1;::::0;;32594:63;;-1:-1:-1;32728:21:0::1;::::0;32752:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;32789:15:0::1;::::0;:22:::1;::::0;;-1:-1:-1;;;32789:22:0;;;;32728:40;;-1:-1:-1;;;;;;32789:15:0;;::::1;::::0;:20:::1;::::0;-1:-1:-1;32789:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32779:4;32784:1;32779:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1::0;;;;;32779:32:0::1;;;-1:-1:-1::0;;;;;32779:32:0::1;;;::::0;::::1;32840:4;32822;32827:1;32822:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;32822:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;32858:15:::1;::::0;33029:11:::1;::::0;32858:224:::1;::::0;-1:-1:-1;;;32858:224:0;;:15;;::::1;::::0;:66:::1;::::0;32932:15;;32858:224:::1;::::0;:15:::1;::::0;33010:4;;33029:11;;::::1;::::0;33056:15:::1;::::0;32858:224:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;32583:507;;32519:571:::0;:::o;3308:244::-;2932:10;2921:7;:5;:7::i;:::-;-1:-1:-1;;;;;2921:21:0;;2913:66;;;;-1:-1:-1;;;2913:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3397:22:0;::::1;3389:73;;;::::0;-1:-1:-1;;;3389:73:0;;17681:2:1;3389:73:0::1;::::0;::::1;17663:21:1::0;17720:2;17700:18;;;17693:30;17759:34;17739:18;;;17732:62;-1:-1:-1;;;17810:18:1;;;17803:36;17856:19;;3389:73:0::1;17479:402:1::0;3389:73:0::1;3499:6;::::0;3478:38:::1;::::0;-1:-1:-1;;;;;3478:38:0;;::::1;::::0;3499:6:::1;::::0;::::1;;::::0;-1:-1:-1;;;;;;;;;;;3478:38:0;;;::::1;3527:6;:17:::0;;-1:-1:-1;;;;;3527:17:0;;::::1;;;-1:-1:-1::0;;;;;;3527:17:0;;::::1;::::0;;;::::1;::::0;;3308:244::o;27866:312::-;3067:10;3056:22;;;;:10;:22;;;;;;;;3048:68;;;;-1:-1:-1;;;3048:68:0;;;;;;;:::i;:::-;27970:3:::1;27958:8;:15;;27950:61;;;::::0;-1:-1:-1;;;27950:61:0;;18088:2:1;27950:61:0::1;::::0;::::1;18070:21:1::0;18127:2;18107:18;;;18100:30;18166:34;18146:18;;;18139:62;-1:-1:-1;;;18217:18:1;;;18210:31;18258:19;;27950:61:0::1;17886:397:1::0;27950:61:0::1;28022:9;:16:::0;;28049:27;::::1;;::::0;::::1;-1:-1:-1::0;;28049:27:0;;;;28022:16;28049:27;;;28107:20:::1;:8:::0;28118:9:::1;28107:20;:::i;:::-;28087:17;:40:::0;-1:-1:-1;;28155:15:0::1;28138:14;:32:::0;27866:312::o;25236:2618::-;25329:11;25326:92;;25357:28;25373:4;25379:2;25383:1;25357:15;:28::i;:::-;25236:2618;;;:::o;25326:92::-;25434:33;25450:4;25456:2;25460:6;25434:15;:33::i;:::-;25493:16;;25478:12;;25493:16;;:29;;;;-1:-1:-1;25514:8:0;;;;25513:9;25493:29;-1:-1:-1;;;;;25546:24:0;;;;;;:18;:24;;;;;;25478:44;;-1:-1:-1;25546:24:0;;;:50;;-1:-1:-1;;;;;;25574:22:0;;;;;;:18;:22;;;;;;;;25546:50;25543:97;;;-1:-1:-1;25623:5:0;25543:97;25663:7;25660:1472;;;25753:13;;25687:12;;;;25753:13;;25750:1250;;;-1:-1:-1;;;;;25788:12:0;;;;;;:6;:12;;;;;;;;25785:562;;;-1:-1:-1;;;;;25832:16:0;;;;;;:12;:16;;;;;;;;25831:17;25823:64;;;;-1:-1:-1;;;25823:64:0;;18490:2:1;25823:64:0;;;18472:21:1;18529:2;18509:18;;;18502:30;18568:34;18548:18;;;18541:62;-1:-1:-1;;;18619:18:1;;;18612:32;18661:19;;25823:64:0;18288:398:1;25823:64:0;25913:11;;;;;;;25909:190;;25951:44;25967:4;25981;25988:6;25951:15;:44::i;:::-;-1:-1:-1;;;;;;;;26021:16:0;;;;;;;:12;:16;;;;;:23;;-1:-1:-1;;26021:23:0;26040:4;26021:23;;;-1:-1:-1;;25236:2618:0:o;25909:190::-;-1:-1:-1;;;;;26123:17:0;;;;;;:13;:17;;;;;;:22;26120:155;;26215:13;;-1:-1:-1;;;;;26195:17:0;;;;;;:13;:17;;;;;;:33;;26215:13;26195:33;:::i;:::-;26180:12;:48;26172:80;;;;-1:-1:-1;;;26172:80:0;;18893:2:1;26172:80:0;;;18875:21:1;18932:2;18912:18;;;18905:30;-1:-1:-1;;;18951:18:1;;;18944:49;19010:18;;26172:80:0;18691:343:1;26172:80:0;-1:-1:-1;;;;;26296:17:0;;;;;;:13;:17;;;;;26316:12;26296:32;;25785:562;26414:14;;26400:11;;:28;;;;:::i;:::-;26385:12;:43;26382:430;;;26473:3;26459:11;:6;26468:2;26459:11;:::i;:::-;:17;;;;:::i;:::-;26452:24;;25750:1250;;26382:430;26590:15;;26576:11;;:29;;;;:::i;:::-;26561:12;:44;:68;;26616:13;;;;26561:68;;;26608:5;26561:68;26545:13;:84;;-1:-1:-1;;26545:84:0;;;;;;;;;;-1:-1:-1;;26683:18:0;26696:4;26683:12;:18::i;:::-;26652:49;-1:-1:-1;26652:49:0;-1:-1:-1;26652:49:0;;-1:-1:-1;26789:3:0;26774:12;26652:49;26774:6;:12;:::i;:::-;:18;;;;:::i;:::-;26767:25;;26522:290;;25750:1250;;;26859:11;26872:13;26889:18;26902:4;26889:12;:18::i;:::-;26858:49;-1:-1:-1;26858:49:0;-1:-1:-1;26858:49:0;;-1:-1:-1;26979:3:0;26964:12;26858:49;26964:6;:12;:::i;:::-;:18;;;;:::i;:::-;26957:25;;26843:157;;25750:1250;27022:13;27031:4;27022:6;:13;:::i;:::-;27013:22;;27050:70;27066:4;27073:9;:39;;27107:4;27073:39;;;27085:11;;-1:-1:-1;;;;;27085:11:0;27073:39;27115:4;27050:15;:70::i;:::-;25672:1460;;25660:1472;27155:19;;;;27152:216;;;27193:12;:10;:12::i;:::-;27190:69;;;27225:18;27232:10;;27225:6;:18::i;:::-;27152:216;;;27292:16;27303:4;27292:10;:16::i;:::-;27289:79;;;27326:30;27337:18;;27326:10;:30::i;:::-;27388:33;27404:4;27410:2;27414:6;27388:15;:33::i;:::-;-1:-1:-1;;;;;27438:29:0;;;;;;:23;:29;;;;;;;;27434:124;;27486:19;;-1:-1:-1;;;;;27486:19:0;:28;27523:4;27530:15;27523:4;27530:9;:15::i;:::-;27486:60;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27482:76;;-1:-1:-1;;;;;27572:27:0;;;;;;:23;:27;;;;;;;;27568:118;;27618:19;;-1:-1:-1;;;;;27618:19:0;:28;27655:2;27660:13;27655:2;27660:9;:13::i;:::-;27618:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27614:72;;27709:16;;;;:29;;;;-1:-1:-1;27730:8:0;;;;27729:9;27709:29;:47;;;;-1:-1:-1;27743:13:0;;;;27742:14;27709:47;27706:141;;;27771:19;;27799:16;;27771:45;;-1:-1:-1;;;;;;27771:45:0;;-1:-1:-1;;;;;27771:19:0;;;;:27;;:45;;;;3180:25:1;;;3168:2;3153:18;;3034:177;27771:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27767:69;;;;6960:346;-1:-1:-1;;;;;7062:19:0;;7054:68;;;;-1:-1:-1;;;7054:68:0;;19528:2:1;7054:68:0;;;19510:21:1;19567:2;19547:18;;;19540:30;19606:34;19586:18;;;19579:62;-1:-1:-1;;;19657:18:1;;;19650:34;19701:19;;7054:68:0;19326:400:1;7054:68:0;-1:-1:-1;;;;;7141:21:0;;7133:68;;;;-1:-1:-1;;;7133:68:0;;19933:2:1;7133:68:0;;;19915:21:1;19972:2;19952:18;;;19945:30;20011:34;19991:18;;;19984:62;-1:-1:-1;;;20062:18:1;;;20055:32;20104:19;;7133:68:0;19731:398:1;7133:68:0;-1:-1:-1;;;;;7214:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7266:32;;3180:25:1;;;7266:32:0;;3153:18:1;7266:32:0;;;;;;;;6960:346;;;:::o;21335:357::-;-1:-1:-1;;;;;21426:12:0;;;;;;:6;:12;;;;;;;;:21;;;;;;;21418:96;;;;-1:-1:-1;;;21418:96:0;;20336:2:1;21418:96:0;;;20318:21:1;20375:2;20355:18;;;20348:30;20414:34;20394:18;;;20387:62;20485:32;20465:18;;;20458:60;20535:19;;21418:96:0;20134:426:1;21418:96:0;-1:-1:-1;;;;;21525:12:0;;;;;;:6;:12;;;;;:20;;-1:-1:-1;;21525:20:0;;;;;;;;;;;;21558:69;;21583:32;21604:4;21610;21583:20;:32::i;:::-;21644:40;;;;;;-1:-1:-1;;;;;21644:40:0;;;;;;;;21335:357;;:::o;5842:336::-;-1:-1:-1;;;;;6030:17:0;;:9;:17;;;;;;;;;;;:26;;6050:6;;6030:26;:::i;:::-;-1:-1:-1;;;;;6010:17:0;;;:9;:17;;;;;;;;;;;:46;;;;6090:20;;;;;;;:29;;6113:6;;6090:29;:::i;:::-;-1:-1:-1;;;;;6067:20:0;;;:9;:20;;;;;;;;;;;;:52;;;;6135:35;3180:25:1;;;6067:20:0;;6135:35;;;;;;3153:18:1;6135:35:0;3034:177:1;24727:497:0;24829:7;:5;:7::i;:::-;-1:-1:-1;;;;;24821:15:0;:4;-1:-1:-1;;;;;24821:15:0;;;:32;;;;;24846:7;:5;:7::i;:::-;-1:-1:-1;;;;;24840:13:0;:2;-1:-1:-1;;;;;24840:13:0;;;24821:32;:61;;;;-1:-1:-1;;;;;;24858:24:0;;;;;;:18;:24;;;;;;;;24857:25;24821:61;24817:399;;;24907:16;;;;24899:55;;;;-1:-1:-1;;;24899:55:0;;20767:2:1;24899:55:0;;;20749:21:1;20806:2;20786:18;;;20779:30;-1:-1:-1;;;20825:18:1;;;20818:56;20891:18;;24899:55:0;20565:350:1;24899:55:0;24987:5;;24977:6;:15;;24969:68;;;;-1:-1:-1;;;24969:68:0;;21122:2:1;24969:68:0;;;21104:21:1;21161:2;21141:18;;;21134:30;21200:34;21180:18;;;21173:62;-1:-1:-1;;;21251:18:1;;;21244:38;21299:19;;24969:68:0;20920:404:1;24969:68:0;-1:-1:-1;;;;;25057:12:0;;;;;;:6;:12;;;;;;;;25053:152;;;25132:9;;25122:6;25097:22;25115:2;25097:9;:22::i;:::-;:31;;;;:::i;:::-;:44;;25089:100;;;;-1:-1:-1;;;25089:100:0;;21531:2:1;25089:100:0;;;21513:21:1;21570:2;21550:18;;;21543:30;21609:34;21589:18;;;21582:62;-1:-1:-1;;;21660:18:1;;;21653:41;21711:19;;25089:100:0;21329:407:1;28190:919:0;28243:7;28252:4;28268:11;28293:9;;;;;;;;;;;28290:812;;;28318:16;28375:1;28355:17;;:21;;;;:::i;:::-;28337:14;;:39;;;;:::i;:::-;28318:58;;28391:16;28428:17;;28410:14;;:35;;;;:::i;:::-;28391:54;;28495:8;28477:15;:26;28474:482;;;-1:-1:-1;;;;;28529:12:0;;;;;;:6;:12;;;;;;;;:21;;28548:2;28529:21;;;28544:1;28529:21;28582:13;;28523:27;;;;;28582:13;;;;;;;;-1:-1:-1;28190:919:0;-1:-1:-1;;;;;28190:919:0:o;28474:482::-;28652:8;28634:15;:26;28631:325;;;-1:-1:-1;;;;;28686:12:0;;;;;;:6;:12;;;;;;;;:21;;28705:2;28686:21;;;-1:-1:-1;;28739:13:0;;28701:1;;28739:13;;;;28680:27;28739:13;;-1:-1:-1;28680:27:0;-1:-1:-1;;;28190:919:0:o;28631:325::-;-1:-1:-1;;;;;28812:12:0;;;;;;:6;:12;;;;;;;;:54;;28851:15;;28839:9;;:27;;;;:::i;:::-;28812:54;;;28827:9;;28812:54;28885:9;:17;;-1:-1:-1;;28885:17:0;;;28806:60;28897:5;;-1:-1:-1;28190:919:0;-1:-1:-1;;;;;28190:919:0:o;28290:812::-;-1:-1:-1;;;;;29002:12:0;;;;;;:6;:12;;;;;;;;:54;;29041:15;;29029:9;;:27;;;;:::i;:::-;29002:54;;;29017:9;;29002:54;28996:60;29084:5;;-1:-1:-1;28190:919:0;-1:-1:-1;;;28190:919:0:o;29121:266::-;29165:4;29181:28;29212:24;29230:4;29212:9;:24::i;:::-;29286:10;;29314:16;;29181:55;;-1:-1:-1;29262:34:0;;;;29314:16;;:27;;;;;29334:7;29314:27;:47;;;;-1:-1:-1;29355:6:0;;;;;;;29354:7;29314:47;:65;;;;-1:-1:-1;29366:13:0;;;;29365:14;29314:65;29307:72;;;;29121:266;:::o;29630:165::-;18739:6;:13;;-1:-1:-1;;18739:13:0;;;;;29724:11:::1;::::0;29693:56:::1;::::0;29717:4:::1;::::0;-1:-1:-1;;;;;29724:11:0::1;29737::::0;29693:15:::1;:56::i;:::-;-1:-1:-1::0;29760:19:0::1;:27:::0;;-1:-1:-1;;18776:14:0;;;29630:165::o;29807:344::-;29863:4;29879:28;29910:24;29928:4;29910:9;:24::i;:::-;29984:18;;30030:16;;29879:55;;-1:-1:-1;29960:42:0;;;;30030:16;;:27;;;;;30050:7;30030:27;:40;;;;-1:-1:-1;30062:8:0;;;;30061:9;30030:40;:66;;;;-1:-1:-1;;;;;;30084:12:0;;;;;;:6;:12;;;;;;;;30083:13;30030:66;:95;;;;-1:-1:-1;;;;;;30101:24:0;;;;;;:18;:24;;;;;;;;30100:25;30030:95;:113;;;;-1:-1:-1;30130:13:0;;;;30129:14;30030:113;30023:120;29807:344;-1:-1:-1;;;;29807:344:0:o;30171:1211::-;18639:8;:15;;-1:-1:-1;;18639:15:0;18650:4;18639:15;;;30276:9:::1;::::0;30261:12:::1;::::0;18639:8;;30276:9;30252:21:::1;::::0;:6;:21:::1;:::i;:::-;:33;;;;:::i;:::-;30233:52:::0;-1:-1:-1;30296:20:0::1;30319:12;30330:1;30233:52:::0;30319:12:::1;:::i;:::-;30296:35;;30342:23;30392:9;;30377:12;;30368:6;:21;;;;:::i;:::-;:33;;;;:::i;:::-;30342:59:::0;-1:-1:-1;30412:20:0::1;30342:59:::0;30435:17:::1;30444:8:::0;30435:6;:17:::1;:::i;:::-;:35;;;;:::i;:::-;30412:58:::0;-1:-1:-1;30481:18:0::1;30412:58:::0;30502:30:::1;30517:15:::0;30502:12;:30:::1;:::i;:::-;:45;;;;:::i;:::-;30481:66:::0;-1:-1:-1;30583:21:0::1;30617:28;30481:66:::0;30617:16:::1;:28::i;:::-;30668:18;30689:38;30713:14:::0;30689:21:::1;:38;:::i;:::-;30668:59:::0;-1:-1:-1;30748:16:0::1;30795:10:::0;30767:25:::1;30780:12:::0;30668:59;30767:25:::1;:::i;:::-;:38;;;;:::i;:::-;30748:57:::0;-1:-1:-1;30816:23:0::1;30873:10:::0;30842:28:::1;30855:15:::0;30842:10;:28:::1;:::i;:::-;:41;;;;:::i;:::-;30927:16;::::0;30919:70:::1;::::0;30816:67;;-1:-1:-1;30905:9:0::1;::::0;-1:-1:-1;;;;;30927:16:0;;::::1;::::0;30979:5:::1;::::0;30816:67;;30905:9;30919:70;30905:9;30919:70;30816:67;30927:16;30979:5;30919:70:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;30904:85:0;;-1:-1:-1;;31041:14:0;;31038:139:::1;;31071:36;31084:12;31098:8;31071:12;:36::i;:::-;31127:38;::::0;;9480:25:1;;;9536:2;9521:18;;9514:34;;;31127:38:0::1;::::0;9453:18:1;31127:38:0::1;;;;;;;31038:139;31247:19;::::0;:51:::1;::::0;;-1:-1:-1;;;31247:51:0;;;;31211:21:::1;::::0;-1:-1:-1;;;;;31247:19:0::1;::::0;:27:::1;::::0;31211:21;;31247:51:::1;::::0;;::::1;::::0;31187:21:::1;::::0;31247:51;;;;;;;;31211:21;31247:19;:51;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;;;;;;31243:66:::0;31346:28:::1;::::0;3180:25:1;;;31346:28:0::1;::::0;3168:2:1;3153:18;31346:28:0::1;;;;;;;-1:-1:-1::0;;18677:8:0;:16;;-1:-1:-1;;18677:16:0;;;-1:-1:-1;;;;;;;;;;30171:1211:0:o;31390:589::-;31540:16;;;31554:1;31540:16;;;;;;;;31516:21;;31540:16;;;;;;;;;;-1:-1:-1;31540:16:0;31516:40;;31585:4;31567;31572:1;31567:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31567:23:0;;;:7;;;;;;;;;;:23;;;;31611:15;;:22;;;-1:-1:-1;;;31611:22:0;;;;:15;;;;;:20;;:22;;;;;31567:7;;31611:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31601:4;31606:1;31601:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31601:32:0;;;:7;;;;;;;;;:32;31678:15;;31646:62;;31663:4;;31678:15;31696:11;31646:8;:62::i;:::-;31747:15;;:224;;-1:-1:-1;;;31747:224:0;;-1:-1:-1;;;;;31747:15:0;;;;:66;;:224;;31828:11;;31747:15;;31898:4;;31925;;31945:15;;31747:224;;;:::i;31991:516::-;32171:15;;32139:62;;32156:4;;-1:-1:-1;;;;;32171:15:0;32189:11;32139:8;:62::i;:::-;32243:15;;32447:11;;32243:256;;-1:-1:-1;;;32243:256:0;;32315:4;32243:256;;;22879:34:1;22929:18;;;22922:34;;;32243:15:0;22972:18:1;;;22965:34;;;23015:18;;;23008:34;-1:-1:-1;;;;;32447:11:0;;;23058:19:1;;;23051:44;32473:15:0;23111:19:1;;;23104:35;32243:15:0;;;:31;;32282:9;;22813:19:1;;32243:256:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31991:516;;:::o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:367::-;213:8;223:6;277:3;270:4;262:6;258:17;254:27;244:55;;295:1;292;285:12;244:55;-1:-1:-1;318:20:1;;-1:-1:-1;;;;;350:30:1;;347:50;;;393:1;390;383:12;347:50;430:4;422:6;418:17;406:29;;490:3;483:4;473:6;470:1;466:14;458:6;454:27;450:38;447:47;444:67;;;507:1;504;497:12;444:67;150:367;;;;;:::o;522:908::-;653:6;661;669;677;685;738:2;726:9;717:7;713:23;709:32;706:52;;;754:1;751;744:12;706:52;793:9;780:23;812:31;837:5;812:31;:::i;:::-;862:5;-1:-1:-1;918:2:1;903:18;;890:32;-1:-1:-1;;;;;971:14:1;;;968:34;;;998:1;995;988:12;968:34;1037:70;1099:7;1090:6;1079:9;1075:22;1037:70;:::i;:::-;1126:8;;-1:-1:-1;1011:96:1;-1:-1:-1;1214:2:1;1199:18;;1186:32;;-1:-1:-1;1230:16:1;;;1227:36;;;1259:1;1256;1249:12;1227:36;;1298:72;1362:7;1351:8;1340:9;1336:24;1298:72;:::i;:::-;522:908;;;;-1:-1:-1;522:908:1;;-1:-1:-1;1389:8:1;;1272:98;522:908;-1:-1:-1;;;522:908:1:o;1435:160::-;1500:20;;1556:13;;1549:21;1539:32;;1529:60;;1585:1;1582;1575:12;1529:60;1435:160;;;:::o;1600:315::-;1665:6;1673;1726:2;1714:9;1705:7;1701:23;1697:32;1694:52;;;1742:1;1739;1732:12;1694:52;1781:9;1768:23;1800:31;1825:5;1800:31;:::i;:::-;1850:5;-1:-1:-1;1874:35:1;1905:2;1890:18;;1874:35;:::i;:::-;1864:45;;1600:315;;;;;:::o;1920:597::-;2032:4;2061:2;2090;2079:9;2072:21;2122:6;2116:13;2165:6;2160:2;2149:9;2145:18;2138:34;2190:1;2200:140;2214:6;2211:1;2208:13;2200:140;;;2309:14;;;2305:23;;2299:30;2275:17;;;2294:2;2271:26;2264:66;2229:10;;2200:140;;;2358:6;2355:1;2352:13;2349:91;;;2428:1;2423:2;2414:6;2403:9;2399:22;2395:31;2388:42;2349:91;-1:-1:-1;2501:2:1;2480:15;-1:-1:-1;;2476:29:1;2461:45;;;;2508:2;2457:54;;1920:597;-1:-1:-1;;;1920:597:1:o;2522:315::-;2590:6;2598;2651:2;2639:9;2630:7;2626:23;2622:32;2619:52;;;2667:1;2664;2657:12;2619:52;2706:9;2693:23;2725:31;2750:5;2725:31;:::i;:::-;2775:5;2827:2;2812:18;;;;2799:32;;-1:-1:-1;;;2522:315:1:o;3448:247::-;3507:6;3560:2;3548:9;3539:7;3535:23;3531:32;3528:52;;;3576:1;3573;3566:12;3528:52;3615:9;3602:23;3634:31;3659:5;3634:31;:::i;:::-;3684:5;3448:247;-1:-1:-1;;;3448:247:1:o;3700:456::-;3777:6;3785;3793;3846:2;3834:9;3825:7;3821:23;3817:32;3814:52;;;3862:1;3859;3852:12;3814:52;3901:9;3888:23;3920:31;3945:5;3920:31;:::i;:::-;3970:5;-1:-1:-1;4027:2:1;4012:18;;3999:32;4040:33;3999:32;4040:33;:::i;:::-;3700:456;;4092:7;;-1:-1:-1;;;4146:2:1;4131:18;;;;4118:32;;3700:456::o;4369:248::-;4437:6;4445;4498:2;4486:9;4477:7;4473:23;4469:32;4466:52;;;4514:1;4511;4504:12;4466:52;-1:-1:-1;;4537:23:1;;;4607:2;4592:18;;;4579:32;;-1:-1:-1;4369:248:1:o;4811:180::-;4870:6;4923:2;4911:9;4902:7;4898:23;4894:32;4891:52;;;4939:1;4936;4929:12;4891:52;-1:-1:-1;4962:23:1;;4811:180;-1:-1:-1;4811:180:1:o;4996:385::-;5082:6;5090;5098;5106;5159:3;5147:9;5138:7;5134:23;5130:33;5127:53;;;5176:1;5173;5166:12;5127:53;-1:-1:-1;;5199:23:1;;;5269:2;5254:18;;5241:32;;-1:-1:-1;5320:2:1;5305:18;;5292:32;;5371:2;5356:18;5343:32;;-1:-1:-1;4996:385:1;-1:-1:-1;4996:385:1:o;5634:388::-;5702:6;5710;5763:2;5751:9;5742:7;5738:23;5734:32;5731:52;;;5779:1;5776;5769:12;5731:52;5818:9;5805:23;5837:31;5862:5;5837:31;:::i;:::-;5887:5;-1:-1:-1;5944:2:1;5929:18;;5916:32;5957:33;5916:32;5957:33;:::i;:::-;6009:7;5999:17;;;5634:388;;;;;:::o;6027:248::-;6092:6;6100;6153:2;6141:9;6132:7;6128:23;6124:32;6121:52;;;6169:1;6166;6159:12;6121:52;6192:26;6208:9;6192:26;:::i;6280:356::-;6482:2;6464:21;;;6501:18;;;6494:30;6560:34;6555:2;6540:18;;6533:62;6627:2;6612:18;;6280:356::o;7050:127::-;7111:10;7106:3;7102:20;7099:1;7092:31;7142:4;7139:1;7132:15;7166:4;7163:1;7156:15;7182:127;7243:10;7238:3;7234:20;7231:1;7224:31;7274:4;7271:1;7264:15;7298:4;7295:1;7288:15;7314:168;7354:7;7420:1;7416;7412:6;7408:14;7405:1;7402:21;7397:1;7390:9;7383:17;7379:45;7376:71;;;7427:18;;:::i;:::-;-1:-1:-1;7467:9:1;;7314:168::o;7487:135::-;7526:3;-1:-1:-1;;7547:17:1;;7544:43;;;7567:18;;:::i;:::-;-1:-1:-1;7614:1:1;7603:13;;7487:135::o;7627:380::-;7706:1;7702:12;;;;7749;;;7770:61;;7824:4;7816:6;7812:17;7802:27;;7770:61;7877:2;7869:6;7866:14;7846:18;7843:38;7840:161;;;7923:10;7918:3;7914:20;7911:1;7904:31;7958:4;7955:1;7948:15;7986:4;7983:1;7976:15;7840:161;;7627:380;;;:::o;8436:251::-;8506:6;8559:2;8547:9;8538:7;8534:23;8530:32;8527:52;;;8575:1;8572;8565:12;8527:52;8607:9;8601:16;8626:31;8651:5;8626:31;:::i;9176:125::-;9216:4;9244:1;9241;9238:8;9235:34;;;9249:18;;:::i;:::-;-1:-1:-1;9286:9:1;;9176:125::o;9559:184::-;9629:6;9682:2;9670:9;9661:7;9657:23;9653:32;9650:52;;;9698:1;9695;9688:12;9650:52;-1:-1:-1;9721:16:1;;9559:184;-1:-1:-1;9559:184:1:o;9748:128::-;9788:3;9819:1;9815:6;9812:1;9809:13;9806:39;;;9825:18;;:::i;:::-;-1:-1:-1;9861:9:1;;9748:128::o;9881:349::-;10083:2;10065:21;;;10122:2;10102:18;;;10095:30;-1:-1:-1;;;10156:2:1;10141:18;;10134:55;10221:2;10206:18;;9881:349::o;12746:217::-;12786:1;12812;12802:132;;12856:10;12851:3;12847:20;12844:1;12837:31;12891:4;12888:1;12881:15;12919:4;12916:1;12909:15;12802:132;-1:-1:-1;12948:9:1;;12746:217::o;15123:397::-;15325:2;15307:21;;;15364:2;15344:18;;;15337:30;15403:34;15398:2;15383:18;;15376:62;-1:-1:-1;;;15469:2:1;15454:18;;15447:31;15510:3;15495:19;;15123:397::o;16498:461::-;16551:3;16589:5;16583:12;16616:6;16611:3;16604:19;16642:4;16671:2;16666:3;16662:12;16655:19;;16708:2;16701:5;16697:14;16729:1;16739:195;16753:6;16750:1;16747:13;16739:195;;;16818:13;;-1:-1:-1;;;;;16814:39:1;16802:52;;16874:12;;;;16909:15;;;;16850:1;16768:9;16739:195;;;-1:-1:-1;16950:3:1;;16498:461;-1:-1:-1;;;;;16498:461:1:o;16964:510::-;17235:6;17224:9;17217:25;17278:3;17273:2;17262:9;17258:18;17251:31;17198:4;17299:57;17351:3;17340:9;17336:19;17328:6;17299:57;:::i;:::-;-1:-1:-1;;;;;17392:32:1;;;;17387:2;17372:18;;17365:60;-1:-1:-1;17456:2:1;17441:18;17434:34;17291:65;16964:510;-1:-1:-1;;16964:510:1:o;19039:282::-;-1:-1:-1;;;;;19239:32:1;;;;19221:51;;19303:2;19288:18;;19281:34;19209:2;19194:18;;19039:282::o;21951:582::-;22250:6;22239:9;22232:25;22293:6;22288:2;22277:9;22273:18;22266:34;22336:3;22331:2;22320:9;22316:18;22309:31;22213:4;22357:57;22409:3;22398:9;22394:19;22386:6;22357:57;:::i;:::-;-1:-1:-1;;;;;22450:32:1;;;;22445:2;22430:18;;22423:60;-1:-1:-1;22514:3:1;22499:19;22492:35;22349:65;21951:582;-1:-1:-1;;;21951:582:1:o;23150:306::-;23238:6;23246;23254;23307:2;23295:9;23286:7;23282:23;23278:32;23275:52;;;23323:1;23320;23313:12;23275:52;23352:9;23346:16;23336:26;;23402:2;23391:9;23387:18;23381:25;23371:35;;23446:2;23435:9;23431:18;23425:25;23415:35;;23150:306;;;;;:::o
Swarm Source
ipfs://f1bcc0267fc47199322f28f29c17bfe74bc60e216360ad66a8f2f3aaf8fdf109
Loading...
Loading
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
CRONOS | 100.00% | $0.088693 | 0.4497 | $0.039889 |
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.