Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
500,000,000 Htz
Holders
129
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
HostileZone
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-01-14 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IUniswapV2Pair { function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router01 { 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); } interface IUniswapV2Router02 is IUniswapV2Router01 {} abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } 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); } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // Hostilezone ERC-721 Contract interface HostileZoneNft { function walletOfOwner(address _owner) external view returns (uint256[] memory); function ownerOf(uint256 tokenId) external view returns (address owner); } contract HostileZone is Ownable, IERC20{ // pairs in AMM mapping (address => bool) public _isPool; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; // Fees wallets. address public marketWallet; address public developerWallet; address public GameDevelopWallet; address public liquidityWallet; // token string private _name = "HostileZoneOfficial"; string private _symbol = "Htz"; uint8 private _decimals = 18; // supply uint256 public _total = 500000000; uint256 private _totalSupply; // addresses address public _uniRouter = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address public _pair = address(0); // pause the contract at start bool public paused = true; bool public poolCreated; // set time based limitation bool public isLimited = true; uint256 public maxTransactionAmount = 100000 * 10 ** 18; uint256 public buyTotalFees; uint256 public sellTotalFees; // exclusions mapping (address => bool) public _isExcludedFromBuyFees; // buy fees exclusion mapping (address => bool) public _isExcludedFromSellFees; // sell fees exclusion mapping (address => bool) public _isExcludedMaxTransactionAmount; // max amount per transactions (any time) exclusion mapping (address => bool) public _isExcludedFromTimeTx; // max number of transactions in lower time scale exclusion mapping (address => bool) public _isExcludedFromTimeAmount; // max amount traded in higher time scale exclusion mapping (address => bool) public _isExcludedFromMaxWallet; // max wallet amount exclusion // wallets metrics mapping(address => uint256) public _previousFirstTradeTime; // first transaction in lower time scale mapping(address => uint256) public _numberOfTrades; // number of trades in lower time scale mapping(address => uint256) public _largerPreviousFirstTradeTime; // first transaction in larger time scale mapping(address => uint256) public _largerCurrentAmountTraded; // amount traded in large time scale // limitations values uint256 public largerTimeLimitBetweenTx = 7 days; // larger time scale uint256 public timeLimitBetweenTx = 1 hours; // lower time scale uint256 public txLimitByTime = 3; // number limit of transactions (lower scale) uint256 public largerAmountLimitByTime = 1500000 * 10 ** _decimals; // transaction amounts limits (larger scale) uint256 public maxByWallet = 600000 * 10 ** 18; // max token in wallet // Buy Fees uint256 _buyMarketingFee; uint256 _buyLiquidityFee; uint256 _buyDevFee; uint256 _buyGameDevelopingFee; uint256 public buyDiscountLv1; uint256 public buyDiscountLv2; // Sell Fees uint256 _sellMarketingFee; uint256 _sellLiquidityFee; uint256 _sellDevFee; uint256 _sellGameDevelopingFee; uint256 public sellDiscountLv1; uint256 public sellDiscountLv2; // Tokens routing uint256 public tokensForMarketing; uint256 public tokensForDev; uint256 public tokensForGameDev; uint256 public tokensForLiquidity; // uniswap v2 interface IUniswapV2Router02 private UniV2Router; // nft address to check discount address hostileZoneNftAddress; //Legendary NFTs uint256[] public legendaryNFTs; constructor() { // initial supply to mint _totalSupply = 100000000 * 10 ** _decimals; _balances[_msgSender()] += _totalSupply; emit Transfer(address(0), _msgSender(), _totalSupply); // set router v2 UniV2Router = IUniswapV2Router02(_uniRouter); // wallets setting marketWallet = 0x7F22B4D77EAa010C53Ad7383F93725Db405f44C7; developerWallet = 0xaE859cc7FD075cBff43E2E659694fb1F7aeE0ecF; GameDevelopWallet = 0xab9cc7E0E2B86d77bE6059bC69C4db3A9B53a6bf; liquidityWallet = 0xCD01C9F709535FdfdB1cd943C7C01D58714a0Ca6; // pair address _pair = IUniswapV2Factory(UniV2Router.factory()).createPair(address(this), UniV2Router.WETH()); // pair is set as pair _isPool[_pair] = true; // basic exclusions // buy fees exclusions _isExcludedFromBuyFees[_msgSender()] = true; _isExcludedFromBuyFees[address(this)] = true; // sell fees exclusions _isExcludedFromSellFees[_msgSender()] = true; _isExcludedFromSellFees[address(this)] = true; // max transaction amount any time _isExcludedMaxTransactionAmount[_msgSender()] = true; _isExcludedMaxTransactionAmount[_pair] = true; _isExcludedMaxTransactionAmount[address(this)] = true; // lower scale time number of transactions exclusions _isExcludedFromTimeTx[_msgSender()] = true; _isExcludedFromTimeTx[_pair] = true; _isExcludedFromTimeTx[address(this)] = true; // larger scale time amount exclusion _isExcludedFromTimeAmount[_msgSender()] = true; _isExcludedFromTimeAmount[_pair] = true; _isExcludedFromTimeAmount[address(this)] = true; // max wallet in exclusions _isExcludedFromMaxWallet[_msgSender()] = true; _isExcludedFromMaxWallet[_pair] = true; _isExcludedFromMaxWallet[address(this)] = true; // buy fees _buyMarketingFee = 4; _buyLiquidityFee = 5; _buyDevFee = 2; _buyGameDevelopingFee = 2; buyTotalFees = _buyMarketingFee + _buyDevFee + _buyLiquidityFee + _buyGameDevelopingFee; // 13% buyDiscountLv1 = 1; buyDiscountLv2 = 4; // Sell Fees _sellMarketingFee = 5; _sellLiquidityFee = 9; _sellDevFee = 2; _sellGameDevelopingFee = 3; sellTotalFees = _sellMarketingFee + _sellLiquidityFee + _sellDevFee + _sellGameDevelopingFee; // 19% sellDiscountLv1 = 2; sellDiscountLv2 = 5; } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { require (_allowances[sender][_msgSender()] >= amount, "ERC20: transfer amount exceeds allowance"); _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address sender, address recipient, uint256 amount) private { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(_balances[sender] >= amount, "ERC20: transfer exceeds balance"); require(amount > 450 * 10 ** 18, "HostileZone: cannot transfer less than 450 tokens."); require(!paused, "HostileZone: trading isn't enabled yet."); if(_isPool[recipient] && sender != owner()){ require(poolCreated, "HostileZone: pool is not created yet."); } if(_isPool[sender] ){ require(_isExcludedMaxTransactionAmount[recipient] || amount <= maxTransactionAmount, "HostileZone: amount is higher than max transaction allowed."); } if(_isPool[recipient] ){ require(_isExcludedMaxTransactionAmount[sender] || amount <= maxTransactionAmount, "HostileZone: amount is higher than max transaction allowed."); } // amount limit // check max transactions exclusion or max transaction amount limits require(_isExcludedMaxTransactionAmount[sender] || amount <= maxTransactionAmount, "HostileZone: amount is higher than max transaction allowed."); // check max wallet in exclusion or max transaction amount limits require(_isExcludedFromMaxWallet[recipient] || amount + _balances[recipient] <= maxByWallet, "HostileZone: amount is higher than max wallet amount allowed."); // time scales limitation if(isLimited){ // check if it's a buy or sell transaction // some limits only to apply on buy and sell if( _isPool[recipient] ) { checkTimeLimits(sender, amount); } else if(_isPool[sender] ){ checkTimeLimits(recipient, amount); } } uint256 fees = 0; bool takeBuyFee; bool takeSellFee; // Should contract take buy fees if( !_isExcludedFromBuyFees[recipient] && _isPool[sender] && buyTotalFees > 0 ) { takeBuyFee = true; } // Should contract take sell fees if( !_isExcludedFromSellFees[sender] && _isPool[recipient] && sellTotalFees > 0 ) { takeSellFee = true; } if(takeBuyFee){ // check discount for buy fees uint256 buyTotalFeesWithDiscount = calculateFeeBuyAmount(recipient); if(buyTotalFeesWithDiscount > 0){ // add total buy fees to fees fees += uint256(uint256(amount * buyTotalFeesWithDiscount) / 100); // Buy: liquidity fees calculation tokensForLiquidity = uint256(uint256(fees * _buyLiquidityFee) / buyTotalFeesWithDiscount); _balances[liquidityWallet] += tokensForLiquidity; emit Transfer(sender, liquidityWallet, tokensForLiquidity); // Buy: dev fees calculation tokensForDev = uint256(uint256(fees * _buyDevFee) / buyTotalFeesWithDiscount); _balances[developerWallet] += tokensForDev; emit Transfer(sender, developerWallet, tokensForDev); // Buy: marketing fees calculation tokensForMarketing = uint256(uint256(fees * _buyMarketingFee) / buyTotalFeesWithDiscount); _balances[marketWallet] += tokensForMarketing; emit Transfer(sender, marketWallet, tokensForMarketing); // Buy: game development fees calculation tokensForGameDev = uint256(uint256(fees * _buyGameDevelopingFee) / buyTotalFeesWithDiscount); _balances[GameDevelopWallet] += tokensForGameDev; emit Transfer(sender, GameDevelopWallet, tokensForGameDev); // reset some splited fees values resetTokenRouting(); } } if(takeSellFee) { // check discounts for sell fees uint256 sellTotalFeesWithDiscount = calculateFeeSellAmount(sender); if(sellTotalFeesWithDiscount > 0){ // add total sell fees amount to fees fees += uint256(uint256(amount * sellTotalFeesWithDiscount) / 100); // Sell: liquidity fees calculation tokensForLiquidity = uint256(uint256(fees * _sellLiquidityFee) / sellTotalFeesWithDiscount); _balances[liquidityWallet] += tokensForLiquidity; emit Transfer(sender, liquidityWallet, tokensForLiquidity); // Sell: dev fees calculation tokensForDev += uint256(uint256(fees * _sellDevFee) / sellTotalFeesWithDiscount); _balances[developerWallet] += tokensForDev; emit Transfer(sender, developerWallet, tokensForDev); // Sell: marketing fees calculation tokensForMarketing += uint256(uint256(fees * _sellMarketingFee) / sellTotalFeesWithDiscount); _balances[marketWallet] += tokensForMarketing; emit Transfer(sender, marketWallet, tokensForMarketing); // Sell: game development fees calculation tokensForGameDev += uint256(uint256(fees * _sellGameDevelopingFee) / sellTotalFeesWithDiscount); _balances[GameDevelopWallet] += tokensForGameDev; emit Transfer(sender, GameDevelopWallet, tokensForGameDev); // reset some splited fees values resetTokenRouting(); } } // amount to transfer minus fees uint256 amountMinusFees = amount - fees; // decrease sender balance _balances[sender] -= amount; // increase recipient balance _balances[recipient] += amountMinusFees; // if it's a sell if( _isPool[recipient]) { // add amount to larger time scale by user _largerCurrentAmountTraded[sender] += amount; // add 1 transaction to lower scale user count _numberOfTrades[sender] += 1; // it's a buy } else if(_isPool[sender]){ // add amount to larger time scale by user _largerCurrentAmountTraded[recipient] += amount; // add 1 transaction to lower scale user count _numberOfTrades[recipient] += 1; } // transfer event emit Transfer(sender, recipient, amountMinusFees); } function checkTimeLimits(address _address, uint256 _amount) private { // if higher than limit for lower time scale: reset all sender values if( _previousFirstTradeTime[_address] == 0){ _previousFirstTradeTime[_address] = block.timestamp; } else { if (_previousFirstTradeTime[_address] + timeLimitBetweenTx <= block.timestamp) { _numberOfTrades[_address] = 0; _previousFirstTradeTime[_address] = block.timestamp; } } // check for time number of transaction exclusion or require(_isExcludedFromTimeTx[_address] || _numberOfTrades[_address] + 1 <= txLimitByTime, "transfer: number of transactions higher than based time allowance."); // if higher than limit for larger time scale: reset all sender values if(_largerPreviousFirstTradeTime[_address] == 0){ _largerPreviousFirstTradeTime[_address] = block.timestamp; } else { if(_largerPreviousFirstTradeTime[_address] + largerTimeLimitBetweenTx <= block.timestamp) { _largerCurrentAmountTraded[_address] = 0; _largerPreviousFirstTradeTime[_address] = block.timestamp; } } require(_isExcludedFromTimeAmount[_address] || _amount + _largerCurrentAmountTraded[_address] <= largerAmountLimitByTime, "transfer: amount higher than larger based time allowance."); } // Calculate amount of buy discount . function calculateFeeBuyAmount(address _address) public view returns (uint256) { uint256 discountLvl = checkForDiscount(_address); if(discountLvl == 1){ return buyTotalFees - buyDiscountLv1; }else if(discountLvl == 2){ return buyTotalFees - buyDiscountLv2; } else if(discountLvl == 3){ return 0; } return buyTotalFees; } // Calculate amount of sell discount . function calculateFeeSellAmount(address _address) public view returns (uint256) { uint256 discountLvl = checkForDiscount(_address); if(discountLvl == 1){ return sellTotalFees - sellDiscountLv1; } else if(discountLvl == 2){ return sellTotalFees - sellDiscountLv2; } else if(discountLvl == 3){ return 0; } return sellTotalFees; } // enable fees discounts by checking the number of nfts in HostileZone nft contract function checkForDiscount(address _address) public view returns (uint256) { if(hostileZoneNftAddress != address(0)) { uint256 NFTAmount = HostileZoneNft(hostileZoneNftAddress).walletOfOwner(_address).length; if(checkForNFTDiscount(_address)){ return 3; } else if(NFTAmount > 0 && NFTAmount <= 3){ return 1; } else if (NFTAmount > 3 && NFTAmount <= 9){ return 2; } else if (NFTAmount >= 10 ){ return 3; } } return 0; } // mint function mint(uint256 amount) external onlyOwner { require (_totalSupply + amount <= _total * 10 ** _decimals, "HostileZone: amount higher than max."); _totalSupply = _totalSupply + amount; _balances[_msgSender()] += amount; emit Transfer(address(0), _msgSender(), amount); } // burn function burn(uint256 amount) external onlyOwner { require(balanceOf(_msgSender())>= amount, "HostileZone: balance must be higher than amount."); _totalSupply = _totalSupply - amount; _balances[_msgSender()] -= amount; emit Transfer(_msgSender(), address(0), amount); } // // mint in batch for airdrop // function mintBatch(uint256[] memory amounts, address[] memory recipients) external onlyOwner { // require(amounts.length > 0, "HostileZone: amounts list length should size higher than 0."); // require(amounts.length == recipients.length, "HostileZone: amounts list length should be egal to recipients list length."); // uint256 totalAmount; // for(uint256 i = 0; i < amounts.length; i++){ // require(amounts[i] > 0, "HostileZone: amount should be higher than 0." ); // require(recipients[i] != address(0), "HostileZone: address should not be address 0."); // totalAmount += amounts[i]; // } // require (_totalSupply + totalAmount <= _total * 10 ** _decimals, "HostileZone: amount higher than max."); // for(uint256 i = 0; i < amounts.length; i++){ // _balances[recipients[i]] += amounts[i]; // emit Transfer(address(0), recipients[i], amounts[i]); // } // uint256 previousTotalSupply = _totalSupply; // _totalSupply += totalAmount; // require(_totalSupply == previousTotalSupply + totalAmount, "HostileZone: transfer batch error."); // } // Disable fees. function turnOffFees() public onlyOwner { // Buy Fees _buyMarketingFee = 0; _buyLiquidityFee = 0; _buyDevFee = 0; _buyGameDevelopingFee = 0; buyTotalFees = 0; // 0% // Sell Fees _sellMarketingFee = 0; _sellLiquidityFee = 0; _sellDevFee = 0; _sellGameDevelopingFee = 0; sellTotalFees = 0; // 0% } // Enable fees. function turnOnFees() public onlyOwner { // Buy Fees _buyMarketingFee = 4; _buyLiquidityFee = 5; _buyDevFee = 2; _buyGameDevelopingFee = 2; buyTotalFees = _buyMarketingFee + _buyDevFee + _buyLiquidityFee + _buyGameDevelopingFee; // 13% // Sell Fees _sellMarketingFee = 5; _sellLiquidityFee = 9; _sellDevFee = 2; _sellGameDevelopingFee = 3; sellTotalFees = _sellMarketingFee + _sellLiquidityFee + _sellDevFee + _sellGameDevelopingFee; // 19% } // to reset token routing values // in order to calculate fees properly function resetTokenRouting() private { tokensForMarketing = 0; tokensForDev = 0; tokensForGameDev = 0; tokensForLiquidity = 0; } // to add liquidity to uniswap once function addLiquidity(uint256 _tokenAmountWithoutDecimals) external payable onlyOwner { uint256 tokenAmount = _tokenAmountWithoutDecimals * 10 ** _decimals; require(_pair != address(0), "addLiquidity: pair isn't create yet."); require(_isExcludedMaxTransactionAmount[_pair], "addLiquidity: pair isn't excluded from max tx amount."); (uint112 reserve0, uint112 reserve1,) = IUniswapV2Pair(_pair).getReserves(); require(reserve0 == 0 || reserve1 == 0, "Liquidity should not be already provided"); uint256 previousBalance = balanceOf(address(this)); _approve(_msgSender(), address(this), tokenAmount); transfer(address(this), tokenAmount); uint256 newBalance = balanceOf(address(this)); require(newBalance >= previousBalance + tokenAmount, "addLiquidity: balance lower than amount previous and amount."); _approve(address(this), address(UniV2Router), tokenAmount); UniV2Router.addLiquidityETH{value: msg.value}( address(this), tokenAmount, 0, 0, owner(), block.timestamp + 60 ); } // excluder // exclude any wallet for contact buy fees function excludeFromBuyFees(address _address, bool _exclude) external onlyOwner { _isExcludedFromBuyFees[_address] = _exclude; } // exclude any wallet for contact sell fees function excludeFromSellFees(address _address, bool _exclude) external onlyOwner { _isExcludedFromSellFees[_address] = _exclude; } // exclude any wallet for max transaction amount any time function excludedMaxTransactionAmount(address _address, bool _exclude) external onlyOwner { _isExcludedMaxTransactionAmount[_address] = _exclude; } // exclude any wallet for limited number of transactions in lower time scale function excludedFromTimeTx(address _address, bool _exclude) external onlyOwner { _isExcludedFromTimeTx[_address] = _exclude; } // exclude any wallet for limited amount to trade in larger time scale function excludedFromTimeAmount(address _address, bool _exclude) external onlyOwner { _isExcludedFromTimeAmount[_address] = _exclude; } // exclude any wallet from max amount in function excludedFromMaxWallet(address _address, bool _exclude) external onlyOwner { _isExcludedFromMaxWallet[_address] = _exclude; } // setter // set a pair in any automated market maker function setPool(address _addr, bool _enable) external onlyOwner { _isPool[_addr] = _enable; _isExcludedMaxTransactionAmount[_addr] = _enable; _isExcludedFromTimeTx[_addr] = _enable; _isExcludedFromTimeAmount[_addr] = _enable; _isExcludedFromMaxWallet[_addr] = _enable; } // set max transcation amount any times function setMaxTransactionAmount(uint256 _maxTransactionAmount) external onlyOwner { require(_maxTransactionAmount >= 100000 * 10 ** _decimals, "HostileZone: amount should be higher than 0.1% of totalSupply."); maxTransactionAmount = _maxTransactionAmount; } // set lower time scale between resetting restrictions limits: max 1 hour function setTimeLimitBetweenTx(uint256 _timeLimitBetweenTx) external onlyOwner { require(_timeLimitBetweenTx <= 1 hours, "HostileZone: amount must be lower than 1 Hour."); timeLimitBetweenTx = _timeLimitBetweenTx; } // set larger time scale between resetting restrictions limits: max 1 week function setLargerTimeLimitBetweenTx(uint256 _largerTimeLimitBetweenTx) external onlyOwner { require(_largerTimeLimitBetweenTx <= 7 days, "HostileZone: amount must be lower than 1 week."); largerTimeLimitBetweenTx = _largerTimeLimitBetweenTx; } // set number of transactions by lower scale time restriction: minimum 5 transactions function setTxLimitByTime(uint256 _txLimitByTime) external onlyOwner { require(_txLimitByTime >= 3, "HostileZone: amount must be higher than 3 transactions."); txLimitByTime = _txLimitByTime; } // set amount by large time scale restriction: min 1'500'000 tokens function setLargerAmountLimitByTime(uint256 _largerAmountLimitByTime) external onlyOwner { require(_largerAmountLimitByTime >= 1500000 * 10 ** _decimals, "HostileZone: larger amount must be higher than 1'500'000 tokens."); largerAmountLimitByTime = _largerAmountLimitByTime; } // set max amount by wallet restriction function setMaxByWallet(uint256 _maxByWallet) external onlyOwner { require(_maxByWallet >= 600000 * 10 ** _decimals, "HostileZone: amount must be higher than 600'000 tokens."); maxByWallet = _maxByWallet; } // could only be set once function setPause() external onlyOwner { paused = false; } // set time restrict limit function setLimited(bool _isLimited) external onlyOwner { isLimited = _isLimited; } function setNftAddress(address _hostileZoneNftAddress) external onlyOwner { hostileZoneNftAddress = _hostileZoneNftAddress; } function setMarketWallet(address _marketWallet) external onlyOwner { _isExcludedMaxTransactionAmount[_marketWallet] = true; _isExcludedFromTimeTx[_marketWallet] = true; _isExcludedFromTimeAmount[_marketWallet] = true; _isExcludedFromMaxWallet[_marketWallet] = true; _isExcludedFromBuyFees[_marketWallet] = true; _isExcludedFromSellFees[_marketWallet] = true; } function setDeveloperWallet(address _developerWallet) external onlyOwner { developerWallet = _developerWallet; _isExcludedMaxTransactionAmount[_developerWallet] = true; _isExcludedFromTimeTx[_developerWallet] = true; _isExcludedFromTimeAmount[_developerWallet] = true; _isExcludedFromMaxWallet[_developerWallet] = true; _isExcludedFromBuyFees[_developerWallet] = true; _isExcludedFromSellFees[_developerWallet] = true; } function setGameDevelopWallet(address _GameDevelopWallet) external onlyOwner { GameDevelopWallet = _GameDevelopWallet; _isExcludedMaxTransactionAmount[_GameDevelopWallet] = true; _isExcludedFromTimeTx[_GameDevelopWallet] = true; _isExcludedFromTimeAmount[_GameDevelopWallet] = true; _isExcludedFromMaxWallet[_GameDevelopWallet] = true; _isExcludedFromBuyFees[_GameDevelopWallet] = true; _isExcludedFromSellFees[_GameDevelopWallet] = true; } function setLiquidityWallet(address _liquidityWallet) external onlyOwner { liquidityWallet = _liquidityWallet; _isExcludedMaxTransactionAmount[_liquidityWallet] = true; _isExcludedFromTimeTx[_liquidityWallet] = true; _isExcludedFromTimeAmount[_liquidityWallet] = true; _isExcludedFromMaxWallet[_liquidityWallet] = true; _isExcludedFromBuyFees[_liquidityWallet] = true; _isExcludedFromSellFees[_liquidityWallet] = true; } // set buy fees: max 33% function setBuyFees( uint256 buyMarketingFee, uint256 buyLiquidityFee, uint256 buyDevFee, uint256 buyGameDevelopingFee, uint256 _buyDiscountLv1, uint256 _buyDiscountLv2 ) external onlyOwner { require(buyMarketingFee <= 20 && buyLiquidityFee <= 20 && buyDevFee <= 20 && buyGameDevelopingFee <= 20); _buyMarketingFee = buyMarketingFee; _buyLiquidityFee = buyLiquidityFee; _buyDevFee = buyDevFee; _buyGameDevelopingFee = buyGameDevelopingFee; buyTotalFees = _buyMarketingFee + _buyDevFee + _buyLiquidityFee + _buyGameDevelopingFee; buyDiscountLv1 = _buyDiscountLv1; buyDiscountLv2 = _buyDiscountLv2; require(buyTotalFees <= 33, "total fees cannot be higher than 33%."); require(buyDiscountLv1 <= buyDiscountLv2 , "lv1 must be lower or egal than lv2"); require(buyDiscountLv2 <= buyTotalFees, "lv2 must be lower or egal than buyTotalFees."); } // set sell fees: max 33% function setSellFees( uint256 sellMarketingFee, uint256 sellLiquidityFee, uint256 sellDevFee, uint256 sellGameDevelopingFee, uint256 _sellDiscountLv1, uint256 _sellDiscountLv2 ) external onlyOwner { require(sellMarketingFee <= 20 && sellLiquidityFee <= 20 && sellDevFee <= 20 && sellGameDevelopingFee <= 20); _sellMarketingFee = sellMarketingFee; _sellLiquidityFee = sellLiquidityFee; _sellDevFee = sellDevFee; _sellGameDevelopingFee = sellGameDevelopingFee; sellTotalFees = _sellMarketingFee + _sellLiquidityFee + _sellDevFee + _sellGameDevelopingFee; sellDiscountLv1 = _sellDiscountLv1; sellDiscountLv2 = _sellDiscountLv2; require(sellTotalFees <= 33, "total fees cannot be higher than 33%."); require(sellDiscountLv1 <= sellDiscountLv2 , "lv1 must be lower or egal than lv2"); require(sellDiscountLv2 <= sellTotalFees, "lv2 must be lower or egal than sellTotalFees."); } // pool created for the first time. function setPoolCreated() external onlyOwner { poolCreated = true; } // withdraw any ERC20 just in case function tokenWithdraw(IERC20 _tokenAddress, uint256 _tokenAmount, bool _withdrawAll) external onlyOwner returns(bool){ uint256 tokenBalance = _tokenAddress.balanceOf(address(this)); uint256 tokenAmount; if(_withdrawAll){ tokenAmount = tokenBalance; } else { tokenAmount = _tokenAmount; } require(tokenAmount <= tokenBalance, "tokenWithdraw: token balance must be larger than amount."); _tokenAddress.transfer(owner(), tokenAmount); return true; } // withdraw eth just in case function withdrawEth(uint256 _ethAmount, bool _withdrawAll) external onlyOwner returns(bool){ uint256 ethBalance = address(this).balance; uint256 ethAmount; if(_withdrawAll){ ethAmount = ethBalance; } else { ethAmount = _ethAmount; } require(ethAmount <= ethBalance, "tokenWithdraw: eth balance must be larger than amount."); (bool success,) = payable(owner()).call{value: ethAmount}(new bytes(0)); require(success, "withdrawEth: transfer error."); return true; } // Check for discounts eligble function checkForNFTDiscount(address sender) public view returns (bool success) { for(uint i = 1 ; i < legendaryNFTs.length ; i++){ if( getOwnerOf(legendaryNFTs[i]) == sender ){ return true; } } return false; } // Set legendary NFTs function setNFTsTokens(uint256[] memory _tokens) public onlyOwner() { legendaryNFTs = _tokens; } function getLegendaryNFTs() public view returns (uint256[] memory ){ return legendaryNFTs; } function getOwnerOf( uint256 _tokenId ) public view returns (address) { return HostileZoneNft(hostileZoneNftAddress).ownerOf(_tokenId); } // Batch Transfer for multiple wallets. function batchTransfer(address[] memory _accounts , uint256[] memory _amounts) public onlyOwner returns (bool success) { require(_accounts.length == _amounts.length); uint256 _totalTransfer = 0; for(uint256 i = 0; i < _amounts.length ; i++ ) { _totalTransfer += _amounts[i] * 10 ** 18; } require( balanceOf(msg.sender) >= _totalTransfer ); for(uint256 i = 0; i < _amounts.length ; i++ ) { _balances[_accounts[i]] += _amounts[i] * 10 ** 18; _balances[msg.sender] -= _amounts[i] * 10 ** 18; emit Transfer(msg.sender , _accounts[i], _amounts[i] * 10 ** 18); } return true; } receive() external payable {} fallback() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"GameDevelopWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromBuyFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromSellFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromTimeAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromTimeTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_largerCurrentAmountTraded","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_largerPreviousFirstTradeTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_numberOfTrades","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_previousFirstTradeTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_total","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenAmountWithoutDecimals","type":"uint256"}],"name":"addLiquidity","outputs":[],"stateMutability":"payable","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"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"batchTransfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDiscountLv1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDiscountLv2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"calculateFeeBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"calculateFeeSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"checkForDiscount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"checkForNFTDiscount","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"developerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_exclude","type":"bool"}],"name":"excludeFromBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_exclude","type":"bool"}],"name":"excludeFromSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_exclude","type":"bool"}],"name":"excludedFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_exclude","type":"bool"}],"name":"excludedFromTimeAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_exclude","type":"bool"}],"name":"excludedFromTimeTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_exclude","type":"bool"}],"name":"excludedMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getLegendaryNFTs","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"getOwnerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLimited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"largerAmountLimitByTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"largerTimeLimitBetweenTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"legendaryNFTs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxByWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","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":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolCreated","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDiscountLv1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDiscountLv2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"buyDevFee","type":"uint256"},{"internalType":"uint256","name":"buyGameDevelopingFee","type":"uint256"},{"internalType":"uint256","name":"_buyDiscountLv1","type":"uint256"},{"internalType":"uint256","name":"_buyDiscountLv2","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_developerWallet","type":"address"}],"name":"setDeveloperWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_GameDevelopWallet","type":"address"}],"name":"setGameDevelopWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_largerAmountLimitByTime","type":"uint256"}],"name":"setLargerAmountLimitByTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_largerTimeLimitBetweenTx","type":"uint256"}],"name":"setLargerTimeLimitBetweenTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isLimited","type":"bool"}],"name":"setLimited","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidityWallet","type":"address"}],"name":"setLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketWallet","type":"address"}],"name":"setMarketWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxByWallet","type":"uint256"}],"name":"setMaxByWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTransactionAmount","type":"uint256"}],"name":"setMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_tokens","type":"uint256[]"}],"name":"setNFTsTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_hostileZoneNftAddress","type":"address"}],"name":"setNftAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setPause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_enable","type":"bool"}],"name":"setPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setPoolCreated","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"sellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"sellDevFee","type":"uint256"},{"internalType":"uint256","name":"sellGameDevelopingFee","type":"uint256"},{"internalType":"uint256","name":"_sellDiscountLv1","type":"uint256"},{"internalType":"uint256","name":"_sellDiscountLv2","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timeLimitBetweenTx","type":"uint256"}],"name":"setTimeLimitBetweenTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_txLimitByTime","type":"uint256"}],"name":"setTxLimitByTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeLimitBetweenTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_tokenAmount","type":"uint256"},{"internalType":"bool","name":"_withdrawAll","type":"bool"}],"name":"tokenWithdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForGameDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","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":"turnOffFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"turnOnFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"txLimitByTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_ethAmount","type":"uint256"},{"internalType":"bool","name":"_withdrawAll","type":"bool"}],"name":"withdrawEth","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052601360808190527f486f7374696c655a6f6e654f6666696369616c0000000000000000000000000060a090815262000040916008919062000738565b5060408051808201909152600380825262243a3d60e91b60209092019182526200006d9160099162000738565b50600a805460ff191660129081178255631dcd6500600b55600d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055600e80546201000160a01b600161ff0160a81b031990911617905569152d02c7e14af6800000600f5562093a80601c55610e10601d556003601e55620000f19162000874565b62000100906216e36062000935565b601f55697f0e10af47c1c70000006020553480156200011e57600080fd5b506200012a33620006e8565b600a80546200013f9160ff9091169062000874565b6200014f906305f5e10062000935565b600c81905533600090815260026020526040812080549091906200017590849062000810565b9091555050600c5460405190815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3600d54603180546001600160a01b03199081166001600160a01b03909316928317909155600480548216737f22b4d77eaa010c53ad7383f93725db405f44c717815560058054831673ae859cc7fd075cbff43e2e659694fb1f7aee0ecf17905560068054831673ab9cc7e0e2b86d77be6059bc69c4db3a9b53a6bf1790556007805490921673cd01c9f709535fdfdb1cd943c7c01d58714a0ca6179091556040805163c45a015560e01b8152905163c45a015592828101926020929190829003018186803b1580156200028757600080fd5b505afa1580156200029c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c29190620007de565b6001600160a01b031663c9c6539630603160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032057600080fd5b505afa15801562000335573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035b9190620007de565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620003a457600080fd5b505af1158015620003b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003df9190620007de565b600e80546001600160a01b0319166001600160a01b0392909216918217905560009081526001602081905260408220805460ff19168217905590601290620004243390565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526012909252812080549092166001908117909255601390620004723390565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526013909252812080549092166001908117909255601490620004c03390565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600e549091168152601490925280822080548416600190811790915530835290822080549093168117909255601590620005253390565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600e5490911681526015909252808220805484166001908117909155308352908220805490931681179092556016906200058a3390565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600e549091168152601690925280822080548416600190811790915530835290822080549093168117909255601790620005ef3390565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600e5490911681526017909252808220805484166001908117909155308352912080549092161790556004602181905560056022819055600260238190556024819055916200066e90839062000810565b6200067a919062000810565b62000686919062000810565b601055600160255560046026556005602781905560096028819055600260298190556003602a819055929091620006bd9162000810565b620006c9919062000810565b620006d5919062000810565b6011556002602b556005602c55620009aa565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054620007469062000957565b90600052602060002090601f0160209004810192826200076a5760008555620007b5565b82601f106200078557805160ff1916838001178555620007b5565b82800160010185558215620007b5579182015b82811115620007b557825182559160200191906001019062000798565b50620007c3929150620007c7565b5090565b5b80821115620007c35760008155600101620007c8565b600060208284031215620007f157600080fd5b81516001600160a01b03811681146200080957600080fd5b9392505050565b6000821982111562000826576200082662000994565b500190565b600181815b808511156200086c57816000190482111562000850576200085062000994565b808516156200085e57918102915b93841c939080029062000830565b509250929050565b60006200080960ff84168360008262000890575060016200092f565b816200089f575060006200092f565b8160018114620008b85760028114620008c357620008e3565b60019150506200092f565b60ff841115620008d757620008d762000994565b50506001821b6200092f565b5060208310610133831016604e8410600b841016171562000908575081810a6200092f565b6200091483836200082b565b80600019048211156200092b576200092b62000994565b0290505b92915050565b600081600019048311821515161562000952576200095262000994565b500290565b600181811c908216806200096c57607f821691505b602082108114156200098e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b61497880620009ba6000396000f3fe60806040526004361061049f5760003560e01c8063715018a61161025e578063ba876bb911610143578063d85ba063116100bb578063e4440a8611610082578063e4440a8614610f03578063ea28b65f14610f23578063f2fde38b14610f50578063f74c9f4714610f70578063f756893b14610f90578063fa32e7d814610fb057005b8063d85ba06314610e50578063d96530d214610e66578063db5671fb14610e7c578063dd62ed3e14610e9d578063e10dffc014610ee357005b8063ceb198841161010a578063ceb1988414610d7e578063d0a6dc6814610d9e578063d1d7d7ef14610dbe578063d388451014610dee578063d431b1ac14610e1b578063d469801614610e3057005b8063ba876bb914610cf2578063c261a3c814610d12578063c71b49b014610d27578063c8c8ebe414610d48578063ca3436d414610d5e57005b80638f8a3403116101d6578063a104b12f1161019d578063a104b12f14610c22578063a7137e7114610c42578063a9059cbb14610c62578063aa43471e14610c82578063ae4edb0914610cb2578063b51449bb14610cd257005b80638f8a340314610b9757806393280f7b14610bb757806395d89b4114610bd75780639fccce3214610bec578063a0712d6814610c0257005b80637a27da79116102255780637a27da7914610ad65780637a7f36fe14610aec5780638363871014610b0c57806387c891dd14610b2c57806388d695b214610b595780638da5cb5b14610b7957005b8063715018a614610a4f57806373ad373a14610a64578063760509f014610a7a578063793761ae14610aaa578063795eeafc14610ac057005b80632e067421116103845780634d1d772c116102fc5780635c975abb116102c35780635c975abb1461098257806366373959146109a35780636a486a8e146109c35780636a725292146109d95780636cd56878146109f957806370a0823114610a1957005b80634d1d772c1461090457806351c6590a146109245780635433226614610937578063546900331461095757806354dd97061461096c57005b80633dce3b411161034b5780633dce3b41146108565780633e4353c61461086c57806342966c681461088257806342ba61bb146108a257806343faaf63146108c25780634a33a01a146108e457005b80632e067421146107b95780632e41225b146107d9578063313ce567146107ee57806331f870101461081057806334ecc70a1461084057005b80631a8145bb1161041757806320bec12c116103de57806320bec12c146106f3578063227313961461071357806323b872dd146107335780632744fdaa14610753578063296f0a0c146107695780632da557da1461078957005b80631a8145bb1461065a5780631e293c10146106705780631e38535c146106905780631e593e48146106b05780631f3fed8f146106dd57005b80630d827781116104665780630d8277811461057357806310d5de531461059357806315430f40146105c357806315d37054146105e357806318160ddd14610603578063185870f91461062257005b806306fdde03146104a85780630713f16b146104d3578063095ea7b3146105135780630abab09e146105335780630b102d1a1461055357005b366104a657005b005b3480156104b457600080fd5b506104bd610fc6565b6040516104ca9190614538565b60405180910390f35b3480156104df57600080fd5b506105036104ee3660046140a3565b60016020526000908152604090205460ff1681565b60405190151581526020016104ca565b34801561051f57600080fd5b5061050361052e366004614185565b611058565b34801561053f57600080fd5b506104a661054e3660046140a3565b61106f565b34801561055f57600080fd5b506104a661056e3660046140a3565b611131565b34801561057f57600080fd5b506104a661058e36600461427a565b61117d565b34801561059f57600080fd5b506105036105ae3660046140a3565b60146020526000908152604090205460ff1681565b3480156105cf57600080fd5b506104a66105de366004614157565b6111be565b3480156105ef57600080fd5b506105036105fe366004614442565b611213565b34801561060f57600080fd5b50600c545b6040519081526020016104ca565b34801561062e57600080fd5b50600554610642906001600160a01b031681565b6040516001600160a01b0390911681526020016104ca565b34801561066657600080fd5b5061061460305481565b34801561067c57600080fd5b506104a661068b366004614410565b61138a565b34801561069c57600080fd5b506104a66106ab366004614410565b61144e565b3480156106bc57600080fd5b506106146106cb3660046140a3565b60196020526000908152604090205481565b3480156106e957600080fd5b50610614602d5481565b3480156106ff57600080fd5b506104a661070e366004614157565b6114e7565b34801561071f57600080fd5b506104a661072e36600461434f565b61157c565b34801561073f57600080fd5b5061050361074e366004614116565b6115c4565b34801561075f57600080fd5b50610614602f5481565b34801561077557600080fd5b506104a66107843660046140a3565b611698565b34801561079557600080fd5b506105036107a43660046140a3565b60156020526000908152604090205460ff1681565b3480156107c557600080fd5b506104a66107d4366004614410565b611751565b3480156107e557600080fd5b506104a6611815565b3480156107fa57600080fd5b50600a5460405160ff90911681526020016104ca565b34801561081c57600080fd5b5061050361082b3660046140a3565b60136020526000908152604090205460ff1681565b34801561084c57600080fd5b5061061460205481565b34801561086257600080fd5b50610614601e5481565b34801561087857600080fd5b50610614601f5481565b34801561088e57600080fd5b506104a661089d366004614410565b611854565b3480156108ae57600080fd5b50600d54610642906001600160a01b031681565b3480156108ce57600080fd5b506108d761194e565b6040516104ca91906144f4565b3480156108f057600080fd5b506105036108ff366004614389565b6119a5565b34801561091057600080fd5b5061061461091f3660046140a3565b611b82565b6104a6610932366004614410565b611be5565b34801561094357600080fd5b506104a66109523660046140a3565b611fd5565b34801561096357600080fd5b506104a6612077565b34801561097857600080fd5b50610614602c5481565b34801561098e57600080fd5b50600e5461050390600160a01b900460ff1681565b3480156109af57600080fd5b506104a66109be366004614410565b6120d5565b3480156109cf57600080fd5b5061061460115481565b3480156109e557600080fd5b506104a66109f4366004614410565b61217b565b348015610a0557600080fd5b506104a6610a143660046140a3565b612241565b348015610a2557600080fd5b50610614610a343660046140a3565b6001600160a01b031660009081526002602052604090205490565b348015610a5b57600080fd5b506104a66122fa565b348015610a7057600080fd5b50610614602b5481565b348015610a8657600080fd5b50610503610a953660046140a3565b60126020526000908152604090205460ff1681565b348015610ab657600080fd5b50610614601c5481565b348015610acc57600080fd5b5061061460255481565b348015610ae257600080fd5b50610614600b5481565b348015610af857600080fd5b50610614610b073660046140a3565b612330565b348015610b1857600080fd5b50610642610b27366004614410565b612438565b348015610b3857600080fd5b50610614610b473660046140a3565b60186020526000908152604090205481565b348015610b6557600080fd5b50610503610b743660046141b1565b6124b5565b348015610b8557600080fd5b506000546001600160a01b0316610642565b348015610ba357600080fd5b506104a6610bb2366004614157565b6126da565b348015610bc357600080fd5b50600654610642906001600160a01b031681565b348015610be357600080fd5b506104bd61272f565b348015610bf857600080fd5b50610614602e5481565b348015610c0e57600080fd5b506104a6610c1d366004614410565b61273e565b348015610c2e57600080fd5b506104a6610c3d366004614157565b612848565b348015610c4e57600080fd5b506104a6610c5d366004614157565b61289d565b348015610c6e57600080fd5b50610503610c7d366004614185565b6128f2565b348015610c8e57600080fd5b50610503610c9d3660046140a3565b60166020526000908152604090205460ff1681565b348015610cbe57600080fd5b506104a6610ccd366004614157565b6128ff565b348015610cde57600080fd5b50600e54610642906001600160a01b031681565b348015610cfe57600080fd5b506104a6610d0d366004614495565b612954565b348015610d1e57600080fd5b506104a6612aac565b348015610d3357600080fd5b50600e5461050390600160a81b900460ff1681565b348015610d5457600080fd5b50610614600f5481565b348015610d6a57600080fd5b50610614610d793660046140a3565b612b54565b348015610d8a57600080fd5b50610503610d993660046140a3565b612bb0565b348015610daa57600080fd5b50610614610db9366004614410565b612c19565b348015610dca57600080fd5b50610503610dd93660046140a3565b60176020526000908152604090205460ff1681565b348015610dfa57600080fd5b50610614610e093660046140a3565b601a6020526000908152604090205481565b348015610e2757600080fd5b506104a6612c3a565b348015610e3c57600080fd5b50600754610642906001600160a01b031681565b348015610e5c57600080fd5b5061061460105481565b348015610e7257600080fd5b50610614601d5481565b348015610e8857600080fd5b50600e5461050390600160b01b900460ff1681565b348015610ea957600080fd5b50610614610eb83660046140dd565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610eef57600080fd5b506104a6610efe366004614157565b612c73565b348015610f0f57600080fd5b50600454610642906001600160a01b031681565b348015610f2f57600080fd5b50610614610f3e3660046140a3565b601b6020526000908152604090205481565b348015610f5c57600080fd5b506104a6610f6b3660046140a3565b612cc8565b348015610f7c57600080fd5b506104a6610f8b366004614495565b612d63565b348015610f9c57600080fd5b506104a6610fab366004614410565b612eb2565b348015610fbc57600080fd5b5061061460265481565b606060088054610fd590614867565b80601f016020809104026020016040519081016040528092919081815260200182805461100190614867565b801561104e5780601f106110235761010080835404028352916020019161104e565b820191906000526020600020905b81548152906001019060200180831161103157829003601f168201915b5050505050905090565b6000611065338484612f4a565b5060015b92915050565b6000546001600160a01b031633146110a25760405162461bcd60e51b8152600401611099906145f2565b60405180910390fd5b600680546001600160a01b039092166001600160a01b0319909216821790556000908152601460209081526040808320805460ff1990811660019081179092556015845282852080548216831790556016845282852080548216831790556017845282852080548216831790556012845282852080548216831790556013909352922080549091169091179055565b6000546001600160a01b0316331461115b5760405162461bcd60e51b8152600401611099906145f2565b603280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146111a75760405162461bcd60e51b8152600401611099906145f2565b80516111ba906033906020840190613fb5565b5050565b6000546001600160a01b031633146111e85760405162461bcd60e51b8152600401611099906145f2565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b600080546001600160a01b0316331461123e5760405162461bcd60e51b8152600401611099906145f2565b476000831561124e575080611251565b50835b818111156112c05760405162461bcd60e51b815260206004820152603660248201527f746f6b656e57697468647261773a206574682062616c616e6365206d757374206044820152753132903630b933b2b9103a3430b71030b6b7bab73a1760511b6064820152608401611099565b600080546040805183815260208101918290526001600160a01b039092169184916112eb91906144d8565b60006040518083038185875af1925050503d8060008114611328576040519150601f19603f3d011682016040523d82523d6000602084013e61132d565b606091505b505090508061137e5760405162461bcd60e51b815260206004820152601c60248201527f77697468647261774574683a207472616e73666572206572726f722e000000006044820152606401611099565b50600195945050505050565b6000546001600160a01b031633146113b45760405162461bcd60e51b8152600401611099906145f2565b600a80546113c79160ff90911690614756565b6113d490620186a0614801565b8110156114495760405162461bcd60e51b815260206004820152603e60248201527f486f7374696c655a6f6e653a20616d6f756e742073686f756c6420626520686960448201527f67686572207468616e20302e3125206f6620746f74616c537570706c792e00006064820152608401611099565b600f55565b6000546001600160a01b031633146114785760405162461bcd60e51b8152600401611099906145f2565b62093a808111156114e25760405162461bcd60e51b815260206004820152602e60248201527f486f7374696c655a6f6e653a20616d6f756e74206d757374206265206c6f776560448201526d39103a3430b71018903bb2b2b59760911b6064820152608401611099565b601c55565b6000546001600160a01b031633146115115760405162461bcd60e51b8152600401611099906145f2565b6001600160a01b039091166000908152600160209081526040808320805494151560ff19958616811790915560148352818420805486168217905560158352818420805486168217905560168352818420805486168217905560179092529091208054909216179055565b6000546001600160a01b031633146115a65760405162461bcd60e51b8152600401611099906145f2565b600e8054911515600160b01b0260ff60b01b19909216919091179055565b6001600160a01b03831660009081526003602090815260408083203384529091528120548211156116485760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401611099565b61165384848461306e565b6001600160a01b03841660009081526003602090815260408083203380855292529091205461168e918691611689908690614820565b612f4a565b5060019392505050565b6000546001600160a01b031633146116c25760405162461bcd60e51b8152600401611099906145f2565b600780546001600160a01b039092166001600160a01b0319909216821790556000908152601460209081526040808320805460ff1990811660019081179092556015845282852080548216831790556016845282852080548216831790556017845282852080548216831790556012845282852080548216831790556013909352922080549091169091179055565b6000546001600160a01b0316331461177b5760405162461bcd60e51b8152600401611099906145f2565b600a805461178e9160ff90911690614756565b61179b90620927c0614801565b8110156118105760405162461bcd60e51b815260206004820152603760248201527f486f7374696c655a6f6e653a20616d6f756e74206d757374206265206869676860448201527f6572207468616e203630302730303020746f6b656e732e0000000000000000006064820152608401611099565b602055565b6000546001600160a01b0316331461183f5760405162461bcd60e51b8152600401611099906145f2565b600e805460ff60a81b1916600160a81b179055565b6000546001600160a01b0316331461187e5760405162461bcd60e51b8152600401611099906145f2565b8061188833610a34565b10156118ef5760405162461bcd60e51b815260206004820152603060248201527f486f7374696c655a6f6e653a2062616c616e6365206d7573742062652068696760448201526f3432b9103a3430b71030b6b7bab73a1760811b6064820152608401611099565b80600c546118fd9190614820565b600c55336000908152600260205260408120805483929061191f908490614820565b90915550506040518181526000903390600080516020614923833981519152906020015b60405180910390a350565b6060603380548060200260200160405190810160405280929190818152602001828054801561104e57602002820191906000526020600020905b815481526020019060010190808311611988575050505050905090565b600080546001600160a01b031633146119d05760405162461bcd60e51b8152600401611099906145f2565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a082319060240160206040518083038186803b158015611a1257600080fd5b505afa158015611a26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4a9190614429565b905060008315611a5b575080611a5e565b50835b81811115611ad45760405162461bcd60e51b815260206004820152603860248201527f746f6b656e57697468647261773a20746f6b656e2062616c616e6365206d757360448201527f74206265206c6172676572207468616e20616d6f756e742e00000000000000006064820152608401611099565b856001600160a01b031663a9059cbb611af56000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b158015611b3d57600080fd5b505af1158015611b51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b75919061436c565b5060019695505050505050565b600080611b8e83612330565b90508060011415611bb057602b54601154611ba99190614820565b9392505050565b8060021415611bc957602c54601154611ba99190614820565b8060031415611bdb5750600092915050565b5050601154919050565b6000546001600160a01b03163314611c0f5760405162461bcd60e51b8152600401611099906145f2565b600a8054600091611c239160ff1690614756565b611c2d9083614801565b600e549091506001600160a01b0316611c945760405162461bcd60e51b8152602060048201526024808201527f6164644c69717569646974793a20706169722069736e277420637265617465206044820152633cb2ba1760e11b6064820152608401611099565b600e546001600160a01b031660009081526014602052604090205460ff16611d1c5760405162461bcd60e51b815260206004820152603560248201527f6164644c69717569646974793a20706169722069736e2774206578636c7564656044820152743210333937b69036b0bc103a3c1030b6b7bab73a1760591b6064820152608401611099565b600080600e60009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015611d6d57600080fd5b505afa158015611d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da591906143cb565b5091509150816001600160701b031660001480611dc957506001600160701b038116155b611e265760405162461bcd60e51b815260206004820152602860248201527f4c69717569646974792073686f756c64206e6f7420626520616c7265616479206044820152671c1c9bdd9a59195960c21b6064820152608401611099565b306000908152600260205260408120549050611e43333086612f4a565b611e4d30856128f2565b5030600090815260026020526040902054611e6885836146d9565b811015611edd5760405162461bcd60e51b815260206004820152603c60248201527f6164644c69717569646974793a2062616c616e6365206c6f776572207468616e60448201527f20616d6f756e742070726576696f757320616e6420616d6f756e742e000000006064820152608401611099565b603154611ef59030906001600160a01b031687612f4a565b6031546001600160a01b031663f305d719343088600080611f1e6000546001600160a01b031690565b611f2942603c6146d9565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c4016060604051808303818588803b158015611f9157600080fd5b505af1158015611fa5573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611fca9190614467565b505050505050505050565b6000546001600160a01b03163314611fff5760405162461bcd60e51b8152600401611099906145f2565b6001600160a01b031660009081526014602090815260408083208054600160ff1991821681179092556015845282852080548216831790556016845282852080548216831790556017845282852080548216831790556012845282852080548216831790556013909352922080549091169091179055565b6000546001600160a01b031633146120a15760405162461bcd60e51b8152600401611099906145f2565b600060218190556022819055602381905560248190556010819055602781905560288190556029819055602a819055601155565b6000546001600160a01b031633146120ff5760405162461bcd60e51b8152600401611099906145f2565b60038110156121765760405162461bcd60e51b815260206004820152603760248201527f486f7374696c655a6f6e653a20616d6f756e74206d757374206265206869676860448201527f6572207468616e2033207472616e73616374696f6e732e0000000000000000006064820152608401611099565b601e55565b6000546001600160a01b031633146121a55760405162461bcd60e51b8152600401611099906145f2565b600a80546121b89160ff90911690614756565b6121c5906216e360614801565b81101561223c576040805162461bcd60e51b81526020600482015260248101919091527f486f7374696c655a6f6e653a206c617267657220616d6f756e74206d7573742060448201527f626520686967686572207468616e2031273530302730303020746f6b656e732e6064820152608401611099565b601f55565b6000546001600160a01b0316331461226b5760405162461bcd60e51b8152600401611099906145f2565b600580546001600160a01b039092166001600160a01b0319909216821790556000908152601460209081526040808320805460ff1990811660019081179092556015845282852080548216831790556016845282852080548216831790556017845282852080548216831790556012845282852080548216831790556013909352922080549091169091179055565b6000546001600160a01b031633146123245760405162461bcd60e51b8152600401611099906145f2565b61232e6000613cbb565b565b6032546000906001600160a01b0316156124305760325460405162438b6360e81b81526001600160a01b038481166004830152600092169063438b63009060240160006040518083038186803b15801561238957600080fd5b505afa15801561239d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123c591908101906142b7565b5190506123d183612bb0565b156123df5750600392915050565b6000811180156123f0575060038111155b156123fe5750600192915050565b60038111801561240f575060098111155b1561241d5750600292915050565b600a811061242e5750600392915050565b505b506000919050565b6032546040516331a9108f60e11b8152600481018390526000916001600160a01b031690636352211e9060240160206040518083038186803b15801561247d57600080fd5b505afa158015612491573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106991906140c0565b600080546001600160a01b031633146124e05760405162461bcd60e51b8152600401611099906145f2565b81518351146124ee57600080fd5b6000805b83518110156125465783818151811061250d5761250d6148d3565b6020026020010151670de0b6b3a76400006125289190614801565b61253290836146d9565b91508061253e816148a2565b9150506124f2565b503360009081526002602052604090205481111561256357600080fd5b60005b83518110156126cf57838181518110612581576125816148d3565b6020026020010151670de0b6b3a764000061259c9190614801565b600260008784815181106125b2576125b26148d3565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008282546125e991906146d9565b92505081905550838181518110612602576126026148d3565b6020026020010151670de0b6b3a764000061261d9190614801565b336000908152600260205260408120805490919061263c908490614820565b92505081905550848181518110612655576126556148d3565b60200260200101516001600160a01b0316336001600160a01b0316600080516020614923833981519152868481518110612691576126916148d3565b6020026020010151670de0b6b3a76400006126ac9190614801565b60405190815260200160405180910390a3806126c7816148a2565b915050612566565b506001949350505050565b6000546001600160a01b031633146127045760405162461bcd60e51b8152600401611099906145f2565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b606060098054610fd590614867565b6000546001600160a01b031633146127685760405162461bcd60e51b8152600401611099906145f2565b600a805461277b9160ff90911690614756565b600b546127889190614801565b81600c5461279691906146d9565b11156127f05760405162461bcd60e51b8152602060048201526024808201527f486f7374696c655a6f6e653a20616d6f756e7420686967686572207468616e2060448201526336b0bc1760e11b6064820152608401611099565b80600c546127fe91906146d9565b600c5533600090815260026020526040812080548392906128209084906146d9565b9091555050604051818152339060009060008051602061492383398151915290602001611943565b6000546001600160a01b031633146128725760405162461bcd60e51b8152600401611099906145f2565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146128c75760405162461bcd60e51b8152600401611099906145f2565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b600061106533848461306e565b6000546001600160a01b031633146129295760405162461bcd60e51b8152600401611099906145f2565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461297e5760405162461bcd60e51b8152600401611099906145f2565b60148611158015612990575060148511155b801561299d575060148411155b80156129aa575060148311155b6129b357600080fd5b602786905560288590556029849055602a83905582846129d387896146d9565b6129dd91906146d9565b6129e791906146d9565b6011819055602b839055602c82905560211015612a165760405162461bcd60e51b81526004016110999061456b565b602c54602b541115612a3a5760405162461bcd60e51b8152600401611099906145b0565b601154602c541115612aa45760405162461bcd60e51b815260206004820152602d60248201527f6c7632206d757374206265206c6f776572206f72206567616c207468616e207360448201526c32b6362a37ba30b62332b2b99760991b6064820152608401611099565b505050505050565b6000546001600160a01b03163314612ad65760405162461bcd60e51b8152600401611099906145f2565b600460218190556005602281905560026023819055602481905591612afc9083906146d9565b612b0691906146d9565b612b1091906146d9565b6010556005602781905560096028819055600260298190556003602a819055929091612b3b916146d9565b612b4591906146d9565b612b4f91906146d9565b601155565b600080612b6083612330565b90508060011415612b7b57602554601054611ba99190614820565b8060021415612b9457602654601054611ba99190614820565b8060031415612ba65750600092915050565b5050601054919050565b600060015b60335481101561242e57826001600160a01b0316612bef60338381548110612bdf57612bdf6148d3565b9060005260206000200154612438565b6001600160a01b03161415612c075750600192915050565b80612c11816148a2565b915050612bb5565b60338181548110612c2957600080fd5b600091825260209091200154905081565b6000546001600160a01b03163314612c645760405162461bcd60e51b8152600401611099906145f2565b600e805460ff60a01b19169055565b6000546001600160a01b03163314612c9d5760405162461bcd60e51b8152600401611099906145f2565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314612cf25760405162461bcd60e51b8152600401611099906145f2565b6001600160a01b038116612d575760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611099565b612d6081613cbb565b50565b6000546001600160a01b03163314612d8d5760405162461bcd60e51b8152600401611099906145f2565b60148611158015612d9f575060148511155b8015612dac575060148411155b8015612db9575060148311155b612dc257600080fd5b60218690556022859055602384905560248390558285612de286896146d9565b612dec91906146d9565b612df691906146d9565b60108190556025839055602682905560211015612e255760405162461bcd60e51b81526004016110999061456b565b6026546025541115612e495760405162461bcd60e51b8152600401611099906145b0565b6010546026541115612aa45760405162461bcd60e51b815260206004820152602c60248201527f6c7632206d757374206265206c6f776572206f72206567616c207468616e206260448201526b3abcaa37ba30b62332b2b99760a11b6064820152608401611099565b6000546001600160a01b03163314612edc5760405162461bcd60e51b8152600401611099906145f2565b610e10811115612f455760405162461bcd60e51b815260206004820152602e60248201527f486f7374696c655a6f6e653a20616d6f756e74206d757374206265206c6f776560448201526d39103a3430b71018902437bab91760911b6064820152608401611099565b601d55565b6001600160a01b038316612fac5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401611099565b6001600160a01b03821661300d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401611099565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166130d25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401611099565b6001600160a01b0382166131345760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401611099565b6001600160a01b03831660009081526002602052604090205481111561319c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220657863656564732062616c616e6365006044820152606401611099565b6818650127cc3dc80000811161320f5760405162461bcd60e51b815260206004820152603260248201527f486f7374696c655a6f6e653a2063616e6e6f74207472616e73666572206c657360448201527139903a3430b7101a1a98103a37b5b2b7399760711b6064820152608401611099565b600e54600160a01b900460ff16156132795760405162461bcd60e51b815260206004820152602760248201527f486f7374696c655a6f6e653a2074726164696e672069736e277420656e61626c60448201526632b2103cb2ba1760c91b6064820152608401611099565b6001600160a01b03821660009081526001602052604090205460ff1680156132af57506000546001600160a01b03848116911614155b1561331b57600e54600160a81b900460ff1661331b5760405162461bcd60e51b815260206004820152602560248201527f486f7374696c655a6f6e653a20706f6f6c206973206e6f742063726561746564604482015264103cb2ba1760d91b6064820152608401611099565b6001600160a01b03831660009081526001602052604090205460ff1615613381576001600160a01b03821660009081526014602052604090205460ff16806133655750600f548111155b6133815760405162461bcd60e51b815260040161109990614627565b6001600160a01b03821660009081526001602052604090205460ff16156133e7576001600160a01b03831660009081526014602052604090205460ff16806133cb5750600f548111155b6133e75760405162461bcd60e51b815260040161109990614627565b6001600160a01b03831660009081526014602052604090205460ff16806134105750600f548111155b61342c5760405162461bcd60e51b815260040161109990614627565b6001600160a01b03821660009081526017602052604090205460ff16806134795750602080546001600160a01b0384166000908152600290925260409091205461347690836146d9565b11155b6134eb5760405162461bcd60e51b815260206004820152603d60248201527f486f7374696c655a6f6e653a20616d6f756e742069732068696768657220746860448201527f616e206d61782077616c6c657420616d6f756e7420616c6c6f7765642e0000006064820152608401611099565b600e54600160b01b900460ff1615613558576001600160a01b03821660009081526001602052604090205460ff161561352d576135288382613d0b565b613558565b6001600160a01b03831660009081526001602052604090205460ff1615613558576135588282613d0b565b6001600160a01b0382166000908152601260205260408120548190819060ff1615801561359d57506001600160a01b03861660009081526001602052604090205460ff165b80156135ab57506000601054115b156135b557600191505b6001600160a01b03861660009081526013602052604090205460ff161580156135f657506001600160a01b03851660009081526001602052604090205460ff165b801561360457506000601154115b1561360d575060015b811561386f57600061361e86612b54565b9050801561386d5760646136328287614801565b61363c91906146f1565b61364690856146d9565b935080602254856136579190614801565b61366191906146f1565b60308190556007546001600160a01b0316600090815260026020526040812080549091906136909084906146d9565b90915550506007546030546040519081526001600160a01b03918216918916906000805160206149238339815191529060200160405180910390a380602354856136da9190614801565b6136e491906146f1565b602e8190556005546001600160a01b0316600090815260026020526040812080549091906137139084906146d9565b9091555050600554602e546040519081526001600160a01b03918216918916906000805160206149238339815191529060200160405180910390a3806021548561375d9190614801565b61376791906146f1565b602d8190556004546001600160a01b0316600090815260026020526040812080549091906137969084906146d9565b9091555050600454602d546040519081526001600160a01b03918216918916906000805160206149238339815191529060200160405180910390a380602454856137e09190614801565b6137ea91906146f1565b602f8190556006546001600160a01b0316600090815260026020526040812080549091906138199084906146d9565b9091555050600654602f546040519081526001600160a01b03918216918916906000805160206149238339815191529060200160405180910390a361386d6000602d819055602e819055602f819055603055565b505b8015613b0d57600061388087611b82565b90508015613b0b5760646138948287614801565b61389e91906146f1565b6138a890856146d9565b935080602854856138b99190614801565b6138c391906146f1565b60308190556007546001600160a01b0316600090815260026020526040812080549091906138f29084906146d9565b90915550506007546030546040519081526001600160a01b03918216918916906000805160206149238339815191529060200160405180910390a3806029548561393c9190614801565b61394691906146f1565b602e600082825461395791906146d9565b9091555050602e546005546001600160a01b0316600090815260026020526040812080549091906139899084906146d9565b9091555050600554602e546040519081526001600160a01b03918216918916906000805160206149238339815191529060200160405180910390a380602754856139d39190614801565b6139dd91906146f1565b602d60008282546139ee91906146d9565b9091555050602d546004546001600160a01b031660009081526002602052604081208054909190613a209084906146d9565b9091555050600454602d546040519081526001600160a01b03918216918916906000805160206149238339815191529060200160405180910390a380602a5485613a6a9190614801565b613a7491906146f1565b602f6000828254613a8591906146d9565b9091555050602f546006546001600160a01b031660009081526002602052604081208054909190613ab79084906146d9565b9091555050600654602f546040519081526001600160a01b03918216918916906000805160206149238339815191529060200160405180910390a3613b0b6000602d819055602e819055602f819055603055565b505b6000613b198486614820565b6001600160a01b038816600090815260026020526040812080549293508792909190613b46908490614820565b90915550506001600160a01b03861660009081526002602052604081208054839290613b739084906146d9565b90915550506001600160a01b03861660009081526001602052604090205460ff1615613bfa576001600160a01b0387166000908152601b602052604081208054879290613bc19084906146d9565b90915550506001600160a01b0387166000908152601960205260408120805460019290613bef9084906146d9565b90915550613c779050565b6001600160a01b03871660009081526001602052604090205460ff1615613c77576001600160a01b0386166000908152601b602052604081208054879290613c439084906146d9565b90915550506001600160a01b0386166000908152601960205260408120805460019290613c719084906146d9565b90915550505b856001600160a01b0316876001600160a01b031660008051602061492383398151915283604051613caa91815260200190565b60405180910390a350505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216600090815260186020526040902054613d48576001600160a01b0382166000908152601860205260409020429055613d9d565b601d546001600160a01b0383166000908152601860205260409020544291613d6f916146d9565b11613d9d576001600160a01b0382166000908152601960209081526040808320839055601890915290204290555b6001600160a01b03821660009081526015602052604090205460ff1680613de95750601e546001600160a01b038316600090815260196020526040902054613de69060016146d9565b11155b613e665760405162461bcd60e51b815260206004820152604260248201527f7472616e736665723a206e756d626572206f66207472616e73616374696f6e7360448201527f20686967686572207468616e2062617365642074696d6520616c6c6f77616e63606482015261329760f11b608482015260a401611099565b6001600160a01b0382166000908152601a6020526040902054613ea3576001600160a01b0382166000908152601a60205260409020429055613ef8565b601c546001600160a01b0383166000908152601a60205260409020544291613eca916146d9565b11613ef8576001600160a01b0382166000908152601b60209081526040808320839055601a90915290204290555b6001600160a01b03821660009081526016602052604090205460ff1680613f435750601f546001600160a01b0383166000908152601b6020526040902054613f4090836146d9565b11155b6111ba5760405162461bcd60e51b815260206004820152603960248201527f7472616e736665723a20616d6f756e7420686967686572207468616e206c617260448201527f6765722062617365642074696d6520616c6c6f77616e63652e000000000000006064820152608401611099565b828054828255906000526020600020908101928215613ff0579160200282015b82811115613ff0578251825591602001919060010190613fd5565b50613ffc929150614000565b5090565b5b80821115613ffc5760008155600101614001565b600082601f83011261402657600080fd5b8135602061403b614036836146b5565b614684565b80838252828201915082860187848660051b890101111561405b57600080fd5b60005b8581101561407a5781358452928401929084019060010161405e565b5090979650505050505050565b80516001600160701b038116811461409e57600080fd5b919050565b6000602082840312156140b557600080fd5b8135611ba9816148ff565b6000602082840312156140d257600080fd5b8151611ba9816148ff565b600080604083850312156140f057600080fd5b82356140fb816148ff565b9150602083013561410b816148ff565b809150509250929050565b60008060006060848603121561412b57600080fd5b8335614136816148ff565b92506020840135614146816148ff565b929592945050506040919091013590565b6000806040838503121561416a57600080fd5b8235614175816148ff565b9150602083013561410b81614914565b6000806040838503121561419857600080fd5b82356141a3816148ff565b946020939093013593505050565b600080604083850312156141c457600080fd5b823567ffffffffffffffff808211156141dc57600080fd5b818501915085601f8301126141f057600080fd5b81356020614200614036836146b5565b8083825282820191508286018a848660051b890101111561422057600080fd5b600096505b8487101561424c578035614238816148ff565b835260019690960195918301918301614225565b509650508601359250508082111561426357600080fd5b5061427085828601614015565b9150509250929050565b60006020828403121561428c57600080fd5b813567ffffffffffffffff8111156142a357600080fd5b6142af84828501614015565b949350505050565b600060208083850312156142ca57600080fd5b825167ffffffffffffffff8111156142e157600080fd5b8301601f810185136142f257600080fd5b8051614300614036826146b5565b80828252848201915084840188868560051b870101111561432057600080fd5b600094505b83851015614343578051835260019490940193918501918501614325565b50979650505050505050565b60006020828403121561436157600080fd5b8135611ba981614914565b60006020828403121561437e57600080fd5b8151611ba981614914565b60008060006060848603121561439e57600080fd5b83356143a9816148ff565b92506020840135915060408401356143c081614914565b809150509250925092565b6000806000606084860312156143e057600080fd5b6143e984614087565b92506143f760208501614087565b9150604084015163ffffffff811681146143c057600080fd5b60006020828403121561442257600080fd5b5035919050565b60006020828403121561443b57600080fd5b5051919050565b6000806040838503121561445557600080fd5b82359150602083013561410b81614914565b60008060006060848603121561447c57600080fd5b8351925060208401519150604084015190509250925092565b60008060008060008060c087890312156144ae57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600082516144ea818460208701614837565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b8181101561452c57835183529284019291840191600101614510565b50909695505050505050565b6020815260008251806020840152614557816040850160208701614837565b601f01601f19169190910160400192915050565b60208082526025908201527f746f74616c20666565732063616e6e6f7420626520686967686572207468616e604082015264101999929760d91b606082015260800190565b60208082526022908201527f6c7631206d757374206265206c6f776572206f72206567616c207468616e206c6040820152613b1960f11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252603b908201527f486f7374696c655a6f6e653a20616d6f756e742069732068696768657220746860408201527f616e206d6178207472616e73616374696f6e20616c6c6f7765642e0000000000606082015260800190565b604051601f8201601f1916810167ffffffffffffffff811182821017156146ad576146ad6148e9565b604052919050565b600067ffffffffffffffff8211156146cf576146cf6148e9565b5060051b60200190565b600082198211156146ec576146ec6148bd565b500190565b60008261470e57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561474e578160001904821115614734576147346148bd565b8085161561474157918102915b93841c9390800290614718565b509250929050565b6000611ba960ff84168360008261476f57506001611069565b8161477c57506000611069565b8160018114614792576002811461479c576147b8565b6001915050611069565b60ff8411156147ad576147ad6148bd565b50506001821b611069565b5060208310610133831016604e8410600b84101617156147db575081810a611069565b6147e58383614713565b80600019048211156147f9576147f96148bd565b029392505050565b600081600019048311821515161561481b5761481b6148bd565b500290565b600082821015614832576148326148bd565b500390565b60005b8381101561485257818101518382015260200161483a565b83811115614861576000848401525b50505050565b600181811c9082168061487b57607f821691505b6020821081141561489c57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156148b6576148b66148bd565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114612d6057600080fd5b8015158114612d6057600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220316861761c36fbee5a3759542de0b3e8726f6acb57e0b4aa968cbfbbf883ce0a64736f6c63430008070033
Deployed Bytecode
0x60806040526004361061049f5760003560e01c8063715018a61161025e578063ba876bb911610143578063d85ba063116100bb578063e4440a8611610082578063e4440a8614610f03578063ea28b65f14610f23578063f2fde38b14610f50578063f74c9f4714610f70578063f756893b14610f90578063fa32e7d814610fb057005b8063d85ba06314610e50578063d96530d214610e66578063db5671fb14610e7c578063dd62ed3e14610e9d578063e10dffc014610ee357005b8063ceb198841161010a578063ceb1988414610d7e578063d0a6dc6814610d9e578063d1d7d7ef14610dbe578063d388451014610dee578063d431b1ac14610e1b578063d469801614610e3057005b8063ba876bb914610cf2578063c261a3c814610d12578063c71b49b014610d27578063c8c8ebe414610d48578063ca3436d414610d5e57005b80638f8a3403116101d6578063a104b12f1161019d578063a104b12f14610c22578063a7137e7114610c42578063a9059cbb14610c62578063aa43471e14610c82578063ae4edb0914610cb2578063b51449bb14610cd257005b80638f8a340314610b9757806393280f7b14610bb757806395d89b4114610bd75780639fccce3214610bec578063a0712d6814610c0257005b80637a27da79116102255780637a27da7914610ad65780637a7f36fe14610aec5780638363871014610b0c57806387c891dd14610b2c57806388d695b214610b595780638da5cb5b14610b7957005b8063715018a614610a4f57806373ad373a14610a64578063760509f014610a7a578063793761ae14610aaa578063795eeafc14610ac057005b80632e067421116103845780634d1d772c116102fc5780635c975abb116102c35780635c975abb1461098257806366373959146109a35780636a486a8e146109c35780636a725292146109d95780636cd56878146109f957806370a0823114610a1957005b80634d1d772c1461090457806351c6590a146109245780635433226614610937578063546900331461095757806354dd97061461096c57005b80633dce3b411161034b5780633dce3b41146108565780633e4353c61461086c57806342966c681461088257806342ba61bb146108a257806343faaf63146108c25780634a33a01a146108e457005b80632e067421146107b95780632e41225b146107d9578063313ce567146107ee57806331f870101461081057806334ecc70a1461084057005b80631a8145bb1161041757806320bec12c116103de57806320bec12c146106f3578063227313961461071357806323b872dd146107335780632744fdaa14610753578063296f0a0c146107695780632da557da1461078957005b80631a8145bb1461065a5780631e293c10146106705780631e38535c146106905780631e593e48146106b05780631f3fed8f146106dd57005b80630d827781116104665780630d8277811461057357806310d5de531461059357806315430f40146105c357806315d37054146105e357806318160ddd14610603578063185870f91461062257005b806306fdde03146104a85780630713f16b146104d3578063095ea7b3146105135780630abab09e146105335780630b102d1a1461055357005b366104a657005b005b3480156104b457600080fd5b506104bd610fc6565b6040516104ca9190614538565b60405180910390f35b3480156104df57600080fd5b506105036104ee3660046140a3565b60016020526000908152604090205460ff1681565b60405190151581526020016104ca565b34801561051f57600080fd5b5061050361052e366004614185565b611058565b34801561053f57600080fd5b506104a661054e3660046140a3565b61106f565b34801561055f57600080fd5b506104a661056e3660046140a3565b611131565b34801561057f57600080fd5b506104a661058e36600461427a565b61117d565b34801561059f57600080fd5b506105036105ae3660046140a3565b60146020526000908152604090205460ff1681565b3480156105cf57600080fd5b506104a66105de366004614157565b6111be565b3480156105ef57600080fd5b506105036105fe366004614442565b611213565b34801561060f57600080fd5b50600c545b6040519081526020016104ca565b34801561062e57600080fd5b50600554610642906001600160a01b031681565b6040516001600160a01b0390911681526020016104ca565b34801561066657600080fd5b5061061460305481565b34801561067c57600080fd5b506104a661068b366004614410565b61138a565b34801561069c57600080fd5b506104a66106ab366004614410565b61144e565b3480156106bc57600080fd5b506106146106cb3660046140a3565b60196020526000908152604090205481565b3480156106e957600080fd5b50610614602d5481565b3480156106ff57600080fd5b506104a661070e366004614157565b6114e7565b34801561071f57600080fd5b506104a661072e36600461434f565b61157c565b34801561073f57600080fd5b5061050361074e366004614116565b6115c4565b34801561075f57600080fd5b50610614602f5481565b34801561077557600080fd5b506104a66107843660046140a3565b611698565b34801561079557600080fd5b506105036107a43660046140a3565b60156020526000908152604090205460ff1681565b3480156107c557600080fd5b506104a66107d4366004614410565b611751565b3480156107e557600080fd5b506104a6611815565b3480156107fa57600080fd5b50600a5460405160ff90911681526020016104ca565b34801561081c57600080fd5b5061050361082b3660046140a3565b60136020526000908152604090205460ff1681565b34801561084c57600080fd5b5061061460205481565b34801561086257600080fd5b50610614601e5481565b34801561087857600080fd5b50610614601f5481565b34801561088e57600080fd5b506104a661089d366004614410565b611854565b3480156108ae57600080fd5b50600d54610642906001600160a01b031681565b3480156108ce57600080fd5b506108d761194e565b6040516104ca91906144f4565b3480156108f057600080fd5b506105036108ff366004614389565b6119a5565b34801561091057600080fd5b5061061461091f3660046140a3565b611b82565b6104a6610932366004614410565b611be5565b34801561094357600080fd5b506104a66109523660046140a3565b611fd5565b34801561096357600080fd5b506104a6612077565b34801561097857600080fd5b50610614602c5481565b34801561098e57600080fd5b50600e5461050390600160a01b900460ff1681565b3480156109af57600080fd5b506104a66109be366004614410565b6120d5565b3480156109cf57600080fd5b5061061460115481565b3480156109e557600080fd5b506104a66109f4366004614410565b61217b565b348015610a0557600080fd5b506104a6610a143660046140a3565b612241565b348015610a2557600080fd5b50610614610a343660046140a3565b6001600160a01b031660009081526002602052604090205490565b348015610a5b57600080fd5b506104a66122fa565b348015610a7057600080fd5b50610614602b5481565b348015610a8657600080fd5b50610503610a953660046140a3565b60126020526000908152604090205460ff1681565b348015610ab657600080fd5b50610614601c5481565b348015610acc57600080fd5b5061061460255481565b348015610ae257600080fd5b50610614600b5481565b348015610af857600080fd5b50610614610b073660046140a3565b612330565b348015610b1857600080fd5b50610642610b27366004614410565b612438565b348015610b3857600080fd5b50610614610b473660046140a3565b60186020526000908152604090205481565b348015610b6557600080fd5b50610503610b743660046141b1565b6124b5565b348015610b8557600080fd5b506000546001600160a01b0316610642565b348015610ba357600080fd5b506104a6610bb2366004614157565b6126da565b348015610bc357600080fd5b50600654610642906001600160a01b031681565b348015610be357600080fd5b506104bd61272f565b348015610bf857600080fd5b50610614602e5481565b348015610c0e57600080fd5b506104a6610c1d366004614410565b61273e565b348015610c2e57600080fd5b506104a6610c3d366004614157565b612848565b348015610c4e57600080fd5b506104a6610c5d366004614157565b61289d565b348015610c6e57600080fd5b50610503610c7d366004614185565b6128f2565b348015610c8e57600080fd5b50610503610c9d3660046140a3565b60166020526000908152604090205460ff1681565b348015610cbe57600080fd5b506104a6610ccd366004614157565b6128ff565b348015610cde57600080fd5b50600e54610642906001600160a01b031681565b348015610cfe57600080fd5b506104a6610d0d366004614495565b612954565b348015610d1e57600080fd5b506104a6612aac565b348015610d3357600080fd5b50600e5461050390600160a81b900460ff1681565b348015610d5457600080fd5b50610614600f5481565b348015610d6a57600080fd5b50610614610d793660046140a3565b612b54565b348015610d8a57600080fd5b50610503610d993660046140a3565b612bb0565b348015610daa57600080fd5b50610614610db9366004614410565b612c19565b348015610dca57600080fd5b50610503610dd93660046140a3565b60176020526000908152604090205460ff1681565b348015610dfa57600080fd5b50610614610e093660046140a3565b601a6020526000908152604090205481565b348015610e2757600080fd5b506104a6612c3a565b348015610e3c57600080fd5b50600754610642906001600160a01b031681565b348015610e5c57600080fd5b5061061460105481565b348015610e7257600080fd5b50610614601d5481565b348015610e8857600080fd5b50600e5461050390600160b01b900460ff1681565b348015610ea957600080fd5b50610614610eb83660046140dd565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610eef57600080fd5b506104a6610efe366004614157565b612c73565b348015610f0f57600080fd5b50600454610642906001600160a01b031681565b348015610f2f57600080fd5b50610614610f3e3660046140a3565b601b6020526000908152604090205481565b348015610f5c57600080fd5b506104a6610f6b3660046140a3565b612cc8565b348015610f7c57600080fd5b506104a6610f8b366004614495565b612d63565b348015610f9c57600080fd5b506104a6610fab366004614410565b612eb2565b348015610fbc57600080fd5b5061061460265481565b606060088054610fd590614867565b80601f016020809104026020016040519081016040528092919081815260200182805461100190614867565b801561104e5780601f106110235761010080835404028352916020019161104e565b820191906000526020600020905b81548152906001019060200180831161103157829003601f168201915b5050505050905090565b6000611065338484612f4a565b5060015b92915050565b6000546001600160a01b031633146110a25760405162461bcd60e51b8152600401611099906145f2565b60405180910390fd5b600680546001600160a01b039092166001600160a01b0319909216821790556000908152601460209081526040808320805460ff1990811660019081179092556015845282852080548216831790556016845282852080548216831790556017845282852080548216831790556012845282852080548216831790556013909352922080549091169091179055565b6000546001600160a01b0316331461115b5760405162461bcd60e51b8152600401611099906145f2565b603280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146111a75760405162461bcd60e51b8152600401611099906145f2565b80516111ba906033906020840190613fb5565b5050565b6000546001600160a01b031633146111e85760405162461bcd60e51b8152600401611099906145f2565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b600080546001600160a01b0316331461123e5760405162461bcd60e51b8152600401611099906145f2565b476000831561124e575080611251565b50835b818111156112c05760405162461bcd60e51b815260206004820152603660248201527f746f6b656e57697468647261773a206574682062616c616e6365206d757374206044820152753132903630b933b2b9103a3430b71030b6b7bab73a1760511b6064820152608401611099565b600080546040805183815260208101918290526001600160a01b039092169184916112eb91906144d8565b60006040518083038185875af1925050503d8060008114611328576040519150601f19603f3d011682016040523d82523d6000602084013e61132d565b606091505b505090508061137e5760405162461bcd60e51b815260206004820152601c60248201527f77697468647261774574683a207472616e73666572206572726f722e000000006044820152606401611099565b50600195945050505050565b6000546001600160a01b031633146113b45760405162461bcd60e51b8152600401611099906145f2565b600a80546113c79160ff90911690614756565b6113d490620186a0614801565b8110156114495760405162461bcd60e51b815260206004820152603e60248201527f486f7374696c655a6f6e653a20616d6f756e742073686f756c6420626520686960448201527f67686572207468616e20302e3125206f6620746f74616c537570706c792e00006064820152608401611099565b600f55565b6000546001600160a01b031633146114785760405162461bcd60e51b8152600401611099906145f2565b62093a808111156114e25760405162461bcd60e51b815260206004820152602e60248201527f486f7374696c655a6f6e653a20616d6f756e74206d757374206265206c6f776560448201526d39103a3430b71018903bb2b2b59760911b6064820152608401611099565b601c55565b6000546001600160a01b031633146115115760405162461bcd60e51b8152600401611099906145f2565b6001600160a01b039091166000908152600160209081526040808320805494151560ff19958616811790915560148352818420805486168217905560158352818420805486168217905560168352818420805486168217905560179092529091208054909216179055565b6000546001600160a01b031633146115a65760405162461bcd60e51b8152600401611099906145f2565b600e8054911515600160b01b0260ff60b01b19909216919091179055565b6001600160a01b03831660009081526003602090815260408083203384529091528120548211156116485760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401611099565b61165384848461306e565b6001600160a01b03841660009081526003602090815260408083203380855292529091205461168e918691611689908690614820565b612f4a565b5060019392505050565b6000546001600160a01b031633146116c25760405162461bcd60e51b8152600401611099906145f2565b600780546001600160a01b039092166001600160a01b0319909216821790556000908152601460209081526040808320805460ff1990811660019081179092556015845282852080548216831790556016845282852080548216831790556017845282852080548216831790556012845282852080548216831790556013909352922080549091169091179055565b6000546001600160a01b0316331461177b5760405162461bcd60e51b8152600401611099906145f2565b600a805461178e9160ff90911690614756565b61179b90620927c0614801565b8110156118105760405162461bcd60e51b815260206004820152603760248201527f486f7374696c655a6f6e653a20616d6f756e74206d757374206265206869676860448201527f6572207468616e203630302730303020746f6b656e732e0000000000000000006064820152608401611099565b602055565b6000546001600160a01b0316331461183f5760405162461bcd60e51b8152600401611099906145f2565b600e805460ff60a81b1916600160a81b179055565b6000546001600160a01b0316331461187e5760405162461bcd60e51b8152600401611099906145f2565b8061188833610a34565b10156118ef5760405162461bcd60e51b815260206004820152603060248201527f486f7374696c655a6f6e653a2062616c616e6365206d7573742062652068696760448201526f3432b9103a3430b71030b6b7bab73a1760811b6064820152608401611099565b80600c546118fd9190614820565b600c55336000908152600260205260408120805483929061191f908490614820565b90915550506040518181526000903390600080516020614923833981519152906020015b60405180910390a350565b6060603380548060200260200160405190810160405280929190818152602001828054801561104e57602002820191906000526020600020905b815481526020019060010190808311611988575050505050905090565b600080546001600160a01b031633146119d05760405162461bcd60e51b8152600401611099906145f2565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a082319060240160206040518083038186803b158015611a1257600080fd5b505afa158015611a26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4a9190614429565b905060008315611a5b575080611a5e565b50835b81811115611ad45760405162461bcd60e51b815260206004820152603860248201527f746f6b656e57697468647261773a20746f6b656e2062616c616e6365206d757360448201527f74206265206c6172676572207468616e20616d6f756e742e00000000000000006064820152608401611099565b856001600160a01b031663a9059cbb611af56000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b158015611b3d57600080fd5b505af1158015611b51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b75919061436c565b5060019695505050505050565b600080611b8e83612330565b90508060011415611bb057602b54601154611ba99190614820565b9392505050565b8060021415611bc957602c54601154611ba99190614820565b8060031415611bdb5750600092915050565b5050601154919050565b6000546001600160a01b03163314611c0f5760405162461bcd60e51b8152600401611099906145f2565b600a8054600091611c239160ff1690614756565b611c2d9083614801565b600e549091506001600160a01b0316611c945760405162461bcd60e51b8152602060048201526024808201527f6164644c69717569646974793a20706169722069736e277420637265617465206044820152633cb2ba1760e11b6064820152608401611099565b600e546001600160a01b031660009081526014602052604090205460ff16611d1c5760405162461bcd60e51b815260206004820152603560248201527f6164644c69717569646974793a20706169722069736e2774206578636c7564656044820152743210333937b69036b0bc103a3c1030b6b7bab73a1760591b6064820152608401611099565b600080600e60009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015611d6d57600080fd5b505afa158015611d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da591906143cb565b5091509150816001600160701b031660001480611dc957506001600160701b038116155b611e265760405162461bcd60e51b815260206004820152602860248201527f4c69717569646974792073686f756c64206e6f7420626520616c7265616479206044820152671c1c9bdd9a59195960c21b6064820152608401611099565b306000908152600260205260408120549050611e43333086612f4a565b611e4d30856128f2565b5030600090815260026020526040902054611e6885836146d9565b811015611edd5760405162461bcd60e51b815260206004820152603c60248201527f6164644c69717569646974793a2062616c616e6365206c6f776572207468616e60448201527f20616d6f756e742070726576696f757320616e6420616d6f756e742e000000006064820152608401611099565b603154611ef59030906001600160a01b031687612f4a565b6031546001600160a01b031663f305d719343088600080611f1e6000546001600160a01b031690565b611f2942603c6146d9565b60405160e089901b6001600160e01b03191681526001600160a01b039687166004820152602481019590955260448501939093526064840191909152909216608482015260a481019190915260c4016060604051808303818588803b158015611f9157600080fd5b505af1158015611fa5573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611fca9190614467565b505050505050505050565b6000546001600160a01b03163314611fff5760405162461bcd60e51b8152600401611099906145f2565b6001600160a01b031660009081526014602090815260408083208054600160ff1991821681179092556015845282852080548216831790556016845282852080548216831790556017845282852080548216831790556012845282852080548216831790556013909352922080549091169091179055565b6000546001600160a01b031633146120a15760405162461bcd60e51b8152600401611099906145f2565b600060218190556022819055602381905560248190556010819055602781905560288190556029819055602a819055601155565b6000546001600160a01b031633146120ff5760405162461bcd60e51b8152600401611099906145f2565b60038110156121765760405162461bcd60e51b815260206004820152603760248201527f486f7374696c655a6f6e653a20616d6f756e74206d757374206265206869676860448201527f6572207468616e2033207472616e73616374696f6e732e0000000000000000006064820152608401611099565b601e55565b6000546001600160a01b031633146121a55760405162461bcd60e51b8152600401611099906145f2565b600a80546121b89160ff90911690614756565b6121c5906216e360614801565b81101561223c576040805162461bcd60e51b81526020600482015260248101919091527f486f7374696c655a6f6e653a206c617267657220616d6f756e74206d7573742060448201527f626520686967686572207468616e2031273530302730303020746f6b656e732e6064820152608401611099565b601f55565b6000546001600160a01b0316331461226b5760405162461bcd60e51b8152600401611099906145f2565b600580546001600160a01b039092166001600160a01b0319909216821790556000908152601460209081526040808320805460ff1990811660019081179092556015845282852080548216831790556016845282852080548216831790556017845282852080548216831790556012845282852080548216831790556013909352922080549091169091179055565b6000546001600160a01b031633146123245760405162461bcd60e51b8152600401611099906145f2565b61232e6000613cbb565b565b6032546000906001600160a01b0316156124305760325460405162438b6360e81b81526001600160a01b038481166004830152600092169063438b63009060240160006040518083038186803b15801561238957600080fd5b505afa15801561239d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123c591908101906142b7565b5190506123d183612bb0565b156123df5750600392915050565b6000811180156123f0575060038111155b156123fe5750600192915050565b60038111801561240f575060098111155b1561241d5750600292915050565b600a811061242e5750600392915050565b505b506000919050565b6032546040516331a9108f60e11b8152600481018390526000916001600160a01b031690636352211e9060240160206040518083038186803b15801561247d57600080fd5b505afa158015612491573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106991906140c0565b600080546001600160a01b031633146124e05760405162461bcd60e51b8152600401611099906145f2565b81518351146124ee57600080fd5b6000805b83518110156125465783818151811061250d5761250d6148d3565b6020026020010151670de0b6b3a76400006125289190614801565b61253290836146d9565b91508061253e816148a2565b9150506124f2565b503360009081526002602052604090205481111561256357600080fd5b60005b83518110156126cf57838181518110612581576125816148d3565b6020026020010151670de0b6b3a764000061259c9190614801565b600260008784815181106125b2576125b26148d3565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008282546125e991906146d9565b92505081905550838181518110612602576126026148d3565b6020026020010151670de0b6b3a764000061261d9190614801565b336000908152600260205260408120805490919061263c908490614820565b92505081905550848181518110612655576126556148d3565b60200260200101516001600160a01b0316336001600160a01b0316600080516020614923833981519152868481518110612691576126916148d3565b6020026020010151670de0b6b3a76400006126ac9190614801565b60405190815260200160405180910390a3806126c7816148a2565b915050612566565b506001949350505050565b6000546001600160a01b031633146127045760405162461bcd60e51b8152600401611099906145f2565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b606060098054610fd590614867565b6000546001600160a01b031633146127685760405162461bcd60e51b8152600401611099906145f2565b600a805461277b9160ff90911690614756565b600b546127889190614801565b81600c5461279691906146d9565b11156127f05760405162461bcd60e51b8152602060048201526024808201527f486f7374696c655a6f6e653a20616d6f756e7420686967686572207468616e2060448201526336b0bc1760e11b6064820152608401611099565b80600c546127fe91906146d9565b600c5533600090815260026020526040812080548392906128209084906146d9565b9091555050604051818152339060009060008051602061492383398151915290602001611943565b6000546001600160a01b031633146128725760405162461bcd60e51b8152600401611099906145f2565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146128c75760405162461bcd60e51b8152600401611099906145f2565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b600061106533848461306e565b6000546001600160a01b031633146129295760405162461bcd60e51b8152600401611099906145f2565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461297e5760405162461bcd60e51b8152600401611099906145f2565b60148611158015612990575060148511155b801561299d575060148411155b80156129aa575060148311155b6129b357600080fd5b602786905560288590556029849055602a83905582846129d387896146d9565b6129dd91906146d9565b6129e791906146d9565b6011819055602b839055602c82905560211015612a165760405162461bcd60e51b81526004016110999061456b565b602c54602b541115612a3a5760405162461bcd60e51b8152600401611099906145b0565b601154602c541115612aa45760405162461bcd60e51b815260206004820152602d60248201527f6c7632206d757374206265206c6f776572206f72206567616c207468616e207360448201526c32b6362a37ba30b62332b2b99760991b6064820152608401611099565b505050505050565b6000546001600160a01b03163314612ad65760405162461bcd60e51b8152600401611099906145f2565b600460218190556005602281905560026023819055602481905591612afc9083906146d9565b612b0691906146d9565b612b1091906146d9565b6010556005602781905560096028819055600260298190556003602a819055929091612b3b916146d9565b612b4591906146d9565b612b4f91906146d9565b601155565b600080612b6083612330565b90508060011415612b7b57602554601054611ba99190614820565b8060021415612b9457602654601054611ba99190614820565b8060031415612ba65750600092915050565b5050601054919050565b600060015b60335481101561242e57826001600160a01b0316612bef60338381548110612bdf57612bdf6148d3565b9060005260206000200154612438565b6001600160a01b03161415612c075750600192915050565b80612c11816148a2565b915050612bb5565b60338181548110612c2957600080fd5b600091825260209091200154905081565b6000546001600160a01b03163314612c645760405162461bcd60e51b8152600401611099906145f2565b600e805460ff60a01b19169055565b6000546001600160a01b03163314612c9d5760405162461bcd60e51b8152600401611099906145f2565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314612cf25760405162461bcd60e51b8152600401611099906145f2565b6001600160a01b038116612d575760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611099565b612d6081613cbb565b50565b6000546001600160a01b03163314612d8d5760405162461bcd60e51b8152600401611099906145f2565b60148611158015612d9f575060148511155b8015612dac575060148411155b8015612db9575060148311155b612dc257600080fd5b60218690556022859055602384905560248390558285612de286896146d9565b612dec91906146d9565b612df691906146d9565b60108190556025839055602682905560211015612e255760405162461bcd60e51b81526004016110999061456b565b6026546025541115612e495760405162461bcd60e51b8152600401611099906145b0565b6010546026541115612aa45760405162461bcd60e51b815260206004820152602c60248201527f6c7632206d757374206265206c6f776572206f72206567616c207468616e206260448201526b3abcaa37ba30b62332b2b99760a11b6064820152608401611099565b6000546001600160a01b03163314612edc5760405162461bcd60e51b8152600401611099906145f2565b610e10811115612f455760405162461bcd60e51b815260206004820152602e60248201527f486f7374696c655a6f6e653a20616d6f756e74206d757374206265206c6f776560448201526d39103a3430b71018902437bab91760911b6064820152608401611099565b601d55565b6001600160a01b038316612fac5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401611099565b6001600160a01b03821661300d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401611099565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166130d25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401611099565b6001600160a01b0382166131345760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401611099565b6001600160a01b03831660009081526002602052604090205481111561319c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a207472616e7366657220657863656564732062616c616e6365006044820152606401611099565b6818650127cc3dc80000811161320f5760405162461bcd60e51b815260206004820152603260248201527f486f7374696c655a6f6e653a2063616e6e6f74207472616e73666572206c657360448201527139903a3430b7101a1a98103a37b5b2b7399760711b6064820152608401611099565b600e54600160a01b900460ff16156132795760405162461bcd60e51b815260206004820152602760248201527f486f7374696c655a6f6e653a2074726164696e672069736e277420656e61626c60448201526632b2103cb2ba1760c91b6064820152608401611099565b6001600160a01b03821660009081526001602052604090205460ff1680156132af57506000546001600160a01b03848116911614155b1561331b57600e54600160a81b900460ff1661331b5760405162461bcd60e51b815260206004820152602560248201527f486f7374696c655a6f6e653a20706f6f6c206973206e6f742063726561746564604482015264103cb2ba1760d91b6064820152608401611099565b6001600160a01b03831660009081526001602052604090205460ff1615613381576001600160a01b03821660009081526014602052604090205460ff16806133655750600f548111155b6133815760405162461bcd60e51b815260040161109990614627565b6001600160a01b03821660009081526001602052604090205460ff16156133e7576001600160a01b03831660009081526014602052604090205460ff16806133cb5750600f548111155b6133e75760405162461bcd60e51b815260040161109990614627565b6001600160a01b03831660009081526014602052604090205460ff16806134105750600f548111155b61342c5760405162461bcd60e51b815260040161109990614627565b6001600160a01b03821660009081526017602052604090205460ff16806134795750602080546001600160a01b0384166000908152600290925260409091205461347690836146d9565b11155b6134eb5760405162461bcd60e51b815260206004820152603d60248201527f486f7374696c655a6f6e653a20616d6f756e742069732068696768657220746860448201527f616e206d61782077616c6c657420616d6f756e7420616c6c6f7765642e0000006064820152608401611099565b600e54600160b01b900460ff1615613558576001600160a01b03821660009081526001602052604090205460ff161561352d576135288382613d0b565b613558565b6001600160a01b03831660009081526001602052604090205460ff1615613558576135588282613d0b565b6001600160a01b0382166000908152601260205260408120548190819060ff1615801561359d57506001600160a01b03861660009081526001602052604090205460ff165b80156135ab57506000601054115b156135b557600191505b6001600160a01b03861660009081526013602052604090205460ff161580156135f657506001600160a01b03851660009081526001602052604090205460ff165b801561360457506000601154115b1561360d575060015b811561386f57600061361e86612b54565b9050801561386d5760646136328287614801565b61363c91906146f1565b61364690856146d9565b935080602254856136579190614801565b61366191906146f1565b60308190556007546001600160a01b0316600090815260026020526040812080549091906136909084906146d9565b90915550506007546030546040519081526001600160a01b03918216918916906000805160206149238339815191529060200160405180910390a380602354856136da9190614801565b6136e491906146f1565b602e8190556005546001600160a01b0316600090815260026020526040812080549091906137139084906146d9565b9091555050600554602e546040519081526001600160a01b03918216918916906000805160206149238339815191529060200160405180910390a3806021548561375d9190614801565b61376791906146f1565b602d8190556004546001600160a01b0316600090815260026020526040812080549091906137969084906146d9565b9091555050600454602d546040519081526001600160a01b03918216918916906000805160206149238339815191529060200160405180910390a380602454856137e09190614801565b6137ea91906146f1565b602f8190556006546001600160a01b0316600090815260026020526040812080549091906138199084906146d9565b9091555050600654602f546040519081526001600160a01b03918216918916906000805160206149238339815191529060200160405180910390a361386d6000602d819055602e819055602f819055603055565b505b8015613b0d57600061388087611b82565b90508015613b0b5760646138948287614801565b61389e91906146f1565b6138a890856146d9565b935080602854856138b99190614801565b6138c391906146f1565b60308190556007546001600160a01b0316600090815260026020526040812080549091906138f29084906146d9565b90915550506007546030546040519081526001600160a01b03918216918916906000805160206149238339815191529060200160405180910390a3806029548561393c9190614801565b61394691906146f1565b602e600082825461395791906146d9565b9091555050602e546005546001600160a01b0316600090815260026020526040812080549091906139899084906146d9565b9091555050600554602e546040519081526001600160a01b03918216918916906000805160206149238339815191529060200160405180910390a380602754856139d39190614801565b6139dd91906146f1565b602d60008282546139ee91906146d9565b9091555050602d546004546001600160a01b031660009081526002602052604081208054909190613a209084906146d9565b9091555050600454602d546040519081526001600160a01b03918216918916906000805160206149238339815191529060200160405180910390a380602a5485613a6a9190614801565b613a7491906146f1565b602f6000828254613a8591906146d9565b9091555050602f546006546001600160a01b031660009081526002602052604081208054909190613ab79084906146d9565b9091555050600654602f546040519081526001600160a01b03918216918916906000805160206149238339815191529060200160405180910390a3613b0b6000602d819055602e819055602f819055603055565b505b6000613b198486614820565b6001600160a01b038816600090815260026020526040812080549293508792909190613b46908490614820565b90915550506001600160a01b03861660009081526002602052604081208054839290613b739084906146d9565b90915550506001600160a01b03861660009081526001602052604090205460ff1615613bfa576001600160a01b0387166000908152601b602052604081208054879290613bc19084906146d9565b90915550506001600160a01b0387166000908152601960205260408120805460019290613bef9084906146d9565b90915550613c779050565b6001600160a01b03871660009081526001602052604090205460ff1615613c77576001600160a01b0386166000908152601b602052604081208054879290613c439084906146d9565b90915550506001600160a01b0386166000908152601960205260408120805460019290613c719084906146d9565b90915550505b856001600160a01b0316876001600160a01b031660008051602061492383398151915283604051613caa91815260200190565b60405180910390a350505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216600090815260186020526040902054613d48576001600160a01b0382166000908152601860205260409020429055613d9d565b601d546001600160a01b0383166000908152601860205260409020544291613d6f916146d9565b11613d9d576001600160a01b0382166000908152601960209081526040808320839055601890915290204290555b6001600160a01b03821660009081526015602052604090205460ff1680613de95750601e546001600160a01b038316600090815260196020526040902054613de69060016146d9565b11155b613e665760405162461bcd60e51b815260206004820152604260248201527f7472616e736665723a206e756d626572206f66207472616e73616374696f6e7360448201527f20686967686572207468616e2062617365642074696d6520616c6c6f77616e63606482015261329760f11b608482015260a401611099565b6001600160a01b0382166000908152601a6020526040902054613ea3576001600160a01b0382166000908152601a60205260409020429055613ef8565b601c546001600160a01b0383166000908152601a60205260409020544291613eca916146d9565b11613ef8576001600160a01b0382166000908152601b60209081526040808320839055601a90915290204290555b6001600160a01b03821660009081526016602052604090205460ff1680613f435750601f546001600160a01b0383166000908152601b6020526040902054613f4090836146d9565b11155b6111ba5760405162461bcd60e51b815260206004820152603960248201527f7472616e736665723a20616d6f756e7420686967686572207468616e206c617260448201527f6765722062617365642074696d6520616c6c6f77616e63652e000000000000006064820152608401611099565b828054828255906000526020600020908101928215613ff0579160200282015b82811115613ff0578251825591602001919060010190613fd5565b50613ffc929150614000565b5090565b5b80821115613ffc5760008155600101614001565b600082601f83011261402657600080fd5b8135602061403b614036836146b5565b614684565b80838252828201915082860187848660051b890101111561405b57600080fd5b60005b8581101561407a5781358452928401929084019060010161405e565b5090979650505050505050565b80516001600160701b038116811461409e57600080fd5b919050565b6000602082840312156140b557600080fd5b8135611ba9816148ff565b6000602082840312156140d257600080fd5b8151611ba9816148ff565b600080604083850312156140f057600080fd5b82356140fb816148ff565b9150602083013561410b816148ff565b809150509250929050565b60008060006060848603121561412b57600080fd5b8335614136816148ff565b92506020840135614146816148ff565b929592945050506040919091013590565b6000806040838503121561416a57600080fd5b8235614175816148ff565b9150602083013561410b81614914565b6000806040838503121561419857600080fd5b82356141a3816148ff565b946020939093013593505050565b600080604083850312156141c457600080fd5b823567ffffffffffffffff808211156141dc57600080fd5b818501915085601f8301126141f057600080fd5b81356020614200614036836146b5565b8083825282820191508286018a848660051b890101111561422057600080fd5b600096505b8487101561424c578035614238816148ff565b835260019690960195918301918301614225565b509650508601359250508082111561426357600080fd5b5061427085828601614015565b9150509250929050565b60006020828403121561428c57600080fd5b813567ffffffffffffffff8111156142a357600080fd5b6142af84828501614015565b949350505050565b600060208083850312156142ca57600080fd5b825167ffffffffffffffff8111156142e157600080fd5b8301601f810185136142f257600080fd5b8051614300614036826146b5565b80828252848201915084840188868560051b870101111561432057600080fd5b600094505b83851015614343578051835260019490940193918501918501614325565b50979650505050505050565b60006020828403121561436157600080fd5b8135611ba981614914565b60006020828403121561437e57600080fd5b8151611ba981614914565b60008060006060848603121561439e57600080fd5b83356143a9816148ff565b92506020840135915060408401356143c081614914565b809150509250925092565b6000806000606084860312156143e057600080fd5b6143e984614087565b92506143f760208501614087565b9150604084015163ffffffff811681146143c057600080fd5b60006020828403121561442257600080fd5b5035919050565b60006020828403121561443b57600080fd5b5051919050565b6000806040838503121561445557600080fd5b82359150602083013561410b81614914565b60008060006060848603121561447c57600080fd5b8351925060208401519150604084015190509250925092565b60008060008060008060c087890312156144ae57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600082516144ea818460208701614837565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b8181101561452c57835183529284019291840191600101614510565b50909695505050505050565b6020815260008251806020840152614557816040850160208701614837565b601f01601f19169190910160400192915050565b60208082526025908201527f746f74616c20666565732063616e6e6f7420626520686967686572207468616e604082015264101999929760d91b606082015260800190565b60208082526022908201527f6c7631206d757374206265206c6f776572206f72206567616c207468616e206c6040820152613b1960f11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252603b908201527f486f7374696c655a6f6e653a20616d6f756e742069732068696768657220746860408201527f616e206d6178207472616e73616374696f6e20616c6c6f7765642e0000000000606082015260800190565b604051601f8201601f1916810167ffffffffffffffff811182821017156146ad576146ad6148e9565b604052919050565b600067ffffffffffffffff8211156146cf576146cf6148e9565b5060051b60200190565b600082198211156146ec576146ec6148bd565b500190565b60008261470e57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561474e578160001904821115614734576147346148bd565b8085161561474157918102915b93841c9390800290614718565b509250929050565b6000611ba960ff84168360008261476f57506001611069565b8161477c57506000611069565b8160018114614792576002811461479c576147b8565b6001915050611069565b60ff8411156147ad576147ad6148bd565b50506001821b611069565b5060208310610133831016604e8410600b84101617156147db575081810a611069565b6147e58383614713565b80600019048211156147f9576147f96148bd565b029392505050565b600081600019048311821515161561481b5761481b6148bd565b500290565b600082821015614832576148326148bd565b500390565b60005b8381101561485257818101518382015260200161483a565b83811115614861576000848401525b50505050565b600181811c9082168061487b57607f821691505b6020821081141561489c57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156148b6576148b66148bd565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114612d6057600080fd5b8015158114612d6057600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220316861761c36fbee5a3759542de0b3e8726f6acb57e0b4aa968cbfbbf883ce0a64736f6c63430008070033
Deployed Bytecode Sourcemap
2979:33865:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9402:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3048:40;;;;;;;;;;-1:-1:-1;3048:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10562:14:1;;10555:22;10537:41;;10525:2;10510:18;3048:40:0;10397:187:1;10240:161:0;;;;;;;;;;-1:-1:-1;10240:161:0;;;;;:::i;:::-;;:::i;30685:511::-;;;;;;;;;;-1:-1:-1;30685:511:0;;;;;:::i;:::-;;:::i;29601:139::-;;;;;;;;;;-1:-1:-1;29601:139:0;;;;;:::i;:::-;;:::i;35552:109::-;;;;;;;;;;-1:-1:-1;35552:109:0;;;;;:::i;:::-;;:::i;4292:64::-;;;;;;;;;;-1:-1:-1;4292:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25919:144;;;;;;;;;;-1:-1:-1;25919:144:0;;;;;:::i;:::-;;:::i;34594:575::-;;;;;;;;;;-1:-1:-1;34594:575:0;;;;;:::i;:::-;;:::i;9679:100::-;;;;;;;;;;-1:-1:-1;9759:12:0;;9679:100;;;25140:25:1;;;25128:2;25113:18;9679:100:0;24994:177:1;3284:30:0;;;;;;;;;;-1:-1:-1;3284:30:0;;;;-1:-1:-1;;;;;3284:30:0;;;;;;-1:-1:-1;;;;;8825:32:1;;;8807:51;;8795:2;8780:18;3284:30:0;8661:203:1;6448:33:0;;;;;;;;;;;;;;;;27406:281;;;;;;;;;;-1:-1:-1;27406:281:0;;;;;:::i;:::-;;:::i;28100:267::-;;;;;;;;;;-1:-1:-1;28100:267:0;;;;;:::i;:::-;;:::i;4944:50::-;;;;;;;;;;-1:-1:-1;4944:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;6336:33;;;;;;;;;;;;;;;;27032:321;;;;;;;;;;-1:-1:-1;27032:321:0;;;;;:::i;:::-;;:::i;29496:97::-;;;;;;;;;;-1:-1:-1;29496:97:0;;;;;:::i;:::-;;:::i;10409:374::-;;;;;;;;;;-1:-1:-1;10409:374:0;;;;;:::i;:::-;;:::i;6410:31::-;;;;;;;;;;;;;;;;31204:491;;;;;;;;;;-1:-1:-1;31204:491:0;;;;;:::i;:::-;;:::i;4421:54::-;;;;;;;;;;-1:-1:-1;4421:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;29116:229;;;;;;;;;;-1:-1:-1;29116:229:0;;;;;:::i;:::-;;:::i;33870:82::-;;;;;;;;;;;;;:::i;9588:83::-;;;;;;;;;;-1:-1:-1;9654:9:0;;9588:83;;9654:9;;;;25318:36:1;;25306:2;25291:18;9588:83:0;25176:184:1;4192:56:0;;;;;;;;;;-1:-1:-1;4192:56:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5776:46;;;;;;;;;;;;;;;;5530:32;;;;;;;;;;;;;;;;5653:66;;;;;;;;;;;;;;;;21570:310;;;;;;;;;;-1:-1:-1;21570:310:0;;;;;:::i;:::-;;:::i;3650:70::-;;;;;;;;;;-1:-1:-1;3650:70:0;;;;-1:-1:-1;;;;;3650:70:0;;;35666:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;34002:550::-;;;;;;;;;;-1:-1:-1;34002:550:0;;;;;:::i;:::-;;:::i;20074:427::-;;;;;;;;;;-1:-1:-1;20074:427:0;;;;;:::i;:::-;;:::i;24470:1177::-;;;;;;:::i;:::-;;:::i;29748:430::-;;;;;;;;;;-1:-1:-1;29748:430:0;;;;;:::i;:::-;;:::i;23164:408::-;;;;;;;;;;;;;:::i;6269:30::-;;;;;;;;;;;;;;;;3805:25;;;;;;;;;;-1:-1:-1;3805:25:0;;;;-1:-1:-1;;;3805:25:0;;;;;;28466:216;;;;;;;;;;-1:-1:-1;28466:216:0;;;;;:::i;:::-;;:::i;4037:28::-;;;;;;;;;;;;;;;;28763:299;;;;;;;;;;-1:-1:-1;28763:299:0;;;;;:::i;:::-;;:::i;30186:491::-;;;;;;;;;;-1:-1:-1;30186:491:0;;;;;:::i;:::-;;:::i;9787:119::-;;;;;;;;;;-1:-1:-1;9787:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;9880:18:0;9853:7;9880:18;;;:9;:18;;;;;;;9787:119;2229:103;;;;;;;;;;;;;:::i;6232:30::-;;;;;;;;;;;;;;;;4093:55;;;;;;;;;;-1:-1:-1;4093:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5335:48;;;;;;;;;;;;;;;;6013:29;;;;;;;;;;;;;;;;3554:33;;;;;;;;;;;;;;;;20599:613;;;;;;;;;;-1:-1:-1;20599:613:0;;;;;:::i;:::-;;:::i;35773:170::-;;;;;;;;;;-1:-1:-1;35773:170:0;;;;;:::i;:::-;;:::i;4822:58::-;;;;;;;;;;-1:-1:-1;4822:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;35994:776;;;;;;;;;;-1:-1:-1;35994:776:0;;;;;:::i;:::-;;:::i;2006:87::-;;;;;;;;;;-1:-1:-1;2052:7:0;2079:6;-1:-1:-1;;;;;2079:6:0;2006:87;;25720:142;;;;;;;;;;-1:-1:-1;25720:142:0;;;;;:::i;:::-;;:::i;3321:32::-;;;;;;;;;;-1:-1:-1;3321:32:0;;;;-1:-1:-1;;;;;3321:32:0;;;9493:87;;;;;;;;;;;;;:::i;6376:27::-;;;;;;;;;;;;;;;;21233:316;;;;;;;;;;-1:-1:-1;21233:316:0;;;;;:::i;:::-;;:::i;26610:149::-;;;;;;;;;;-1:-1:-1;26610:149:0;;;;;:::i;:::-;;:::i;26134:161::-;;;;;;;;;;-1:-1:-1;26134:161:0;;;;;:::i;:::-;;:::i;9914:167::-;;;;;;;;;;-1:-1:-1;9914:167:0;;;;;:::i;:::-;;:::i;4559:58::-;;;;;;;;;;-1:-1:-1;4559:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;26385:141;;;;;;;;;;-1:-1:-1;26385:141:0;;;;;:::i;:::-;;:::i;3727:33::-;;;;;;;;;;-1:-1:-1;3727:33:0;;;;-1:-1:-1;;;;;3727:33:0;;;32779:1044;;;;;;;;;;-1:-1:-1;32779:1044:0;;;;;:::i;:::-;;:::i;23605:557::-;;;;;;;;;;;;;:::i;3837:23::-;;;;;;;;;;-1:-1:-1;3837:23:0;;;;-1:-1:-1;;;3837:23:0;;;;;;3941:55;;;;;;;;;;;;;;;;19593:429;;;;;;;;;;-1:-1:-1;19593:429:0;;;;;:::i;:::-;;:::i;35214:303::-;;;;;;;;;;-1:-1:-1;35214:303:0;;;;;:::i;:::-;;:::i;6662:30::-;;;;;;;;;;-1:-1:-1;6662:30:0;;;;;:::i;:::-;;:::i;4688:57::-;;;;;;;;;;-1:-1:-1;4688:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5061:64;;;;;;;;;;-1:-1:-1;5061:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;29384:72;;;;;;;;;;;;;:::i;3360:30::-;;;;;;;;;;-1:-1:-1;3360:30:0;;;;-1:-1:-1;;;;;3360:30:0;;;4003:27;;;;;;;;;;;;;;;;5433:43;;;;;;;;;;;;;;;;3904:28;;;;;;;;;;-1:-1:-1;3904:28:0;;;;-1:-1:-1;;;3904:28:0;;;;;;10089:143;;;;;;;;;;-1:-1:-1;10089:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;10197:18:0;;;10170:7;10197:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10089:143;26813:147;;;;;;;;;;-1:-1:-1;26813:147:0;;;;;:::i;:::-;;:::i;3250:27::-;;;;;;;;;;-1:-1:-1;3250:27:0;;;;-1:-1:-1;;;;;3250:27:0;;;5188:61;;;;;;;;;;-1:-1:-1;5188:61:0;;;;;:::i;:::-;;;;;;;;;;;;;;2340:201;;;;;;;;;;-1:-1:-1;2340:201:0;;;;;:::i;:::-;;:::i;31733:1007::-;;;;;;;;;;-1:-1:-1;31733:1007:0;;;;;:::i;:::-;;:::i;27774:238::-;;;;;;;;;;-1:-1:-1;27774:238:0;;;;;:::i;:::-;;:::i;6049:29::-;;;;;;;;;;;;;;;;9402:83;9439:13;9472:5;9465:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9402:83;:::o;10240:161::-;10315:4;10332:39;1021:10;10355:7;10364:6;10332:8;:39::i;:::-;-1:-1:-1;10389:4:0;10240:161;;;;;:::o;30685:511::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;;;;;;;;;30773:17:::1;:38:::0;;-1:-1:-1;;;;;30773:38:0;;::::1;-1:-1:-1::0;;;;;;30773:38:0;;::::1;::::0;::::1;::::0;;:17:::1;30823:51:::0;;;:31:::1;:51;::::0;;;;;;;:58;;-1:-1:-1;;30823:58:0;;::::1;30773:38:::0;30823:58;;::::1;::::0;;;30892:21:::1;:41:::0;;;;;:48;;;::::1;::::0;::::1;::::0;;30951:25:::1;:45:::0;;;;;:52;;;::::1;::::0;::::1;::::0;;31014:24:::1;:44:::0;;;;;:51;;;::::1;::::0;::::1;::::0;;31078:22:::1;:42:::0;;;;;:49;;;::::1;::::0;::::1;::::0;;31138:23:::1;:43:::0;;;;;:50;;;;::::1;::::0;;::::1;::::0;;30685:511::o;29601:139::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;29686:21:::1;:46:::0;;-1:-1:-1;;;;;;29686:46:0::1;-1:-1:-1::0;;;;;29686:46:0;;;::::1;::::0;;;::::1;::::0;;29601:139::o;35552:109::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;35632:23;;::::1;::::0;:13:::1;::::0;:23:::1;::::0;::::1;::::0;::::1;:::i;:::-;;35552:109:::0;:::o;25919:144::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26011:33:0;;;::::1;;::::0;;;:23:::1;:33;::::0;;;;:44;;-1:-1:-1;;26011:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25919:144::o;34594:575::-;34681:4;2079:6;;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;34718:21:::1;34697:18;34778:120:::0;::::1;;;-1:-1:-1::0;34821:10:0;34778:120:::1;;;-1:-1:-1::0;34876:10:0;34778:120:::1;34929:10;34916:9;:23;;34908:90;;;::::0;-1:-1:-1;;;34908:90:0;;24773:2:1;34908:90:0::1;::::0;::::1;24755:21:1::0;24812:2;24792:18;;;24785:30;24851:34;24831:18;;;24824:62;-1:-1:-1;;;24902:18:1;;;24895:52;24964:19;;34908:90:0::1;24571:418:1::0;34908:90:0::1;35010:12;2079:6:::0;;35067:12:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;2079:6:0;;;;35056:9;;35027:53:::1;::::0;35067:12;35027:53:::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35009:71;;;35099:7;35091:48;;;::::0;-1:-1:-1;;;35091:48:0;;18978:2:1;35091:48:0::1;::::0;::::1;18960:21:1::0;19017:2;18997:18;;;18990:30;19056;19036:18;;;19029:58;19104:18;;35091:48:0::1;18776:352:1::0;35091:48:0::1;-1:-1:-1::0;35157:4:0::1;::::0;34594:575;-1:-1:-1;;;;;34594:575:0:o;27406:281::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;27548:9:::1;::::0;;27542:15:::1;::::0;27548:9:::1;::::0;;::::1;::::0;27542:15:::1;:::i;:::-;27533:24;::::0;:6:::1;:24;:::i;:::-;27508:21;:49;;27500:124;;;::::0;-1:-1:-1;;;27500:124:0;;14514:2:1;27500:124:0::1;::::0;::::1;14496:21:1::0;14553:2;14533:18;;;14526:30;14592:34;14572:18;;;14565:62;14663:32;14643:18;;;14636:60;14713:19;;27500:124:0::1;14312:426:1::0;27500:124:0::1;27635:20;:44:::0;27406:281::o;28100:267::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;28239:6:::1;28210:25;:35;;28202:94;;;::::0;-1:-1:-1;;;28202:94:0;;17371:2:1;28202:94:0::1;::::0;::::1;17353:21:1::0;17410:2;17390:18;;;17383:30;17449:34;17429:18;;;17422:62;-1:-1:-1;;;17500:18:1;;;17493:44;17554:19;;28202:94:0::1;17169:410:1::0;28202:94:0::1;28307:24;:52:::0;28100:267::o;27032:321::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27108:14:0;;::::1;;::::0;;;:7:::1;:14;::::0;;;;;;;:24;;;::::1;;-1:-1:-1::0;;27108:24:0;;::::1;::::0;::::1;::::0;;;27143:31:::1;:38:::0;;;;;:48;;;::::1;::::0;::::1;::::0;;27202:21:::1;:28:::0;;;;;:38;;;::::1;::::0;::::1;::::0;;27251:25:::1;:32:::0;;;;;:42;;;::::1;::::0;::::1;::::0;;27304:24:::1;:31:::0;;;;;;:41;;;;::::1;;::::0;;27032:321::o;29496:97::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;29563:9:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;29563:22:0::1;-1:-1:-1::0;;;;29563:22:0;;::::1;::::0;;;::::1;::::0;;29496:97::o;10409:374::-;-1:-1:-1;;;;;10533:19:0;;10507:4;10533:19;;;:11;:19;;;;;;;;1021:10;10533:33;;;;;;;;:43;-1:-1:-1;10533:43:0;10524:97;;;;-1:-1:-1;;;10524:97:0;;17786:2:1;10524:97:0;;;17768:21:1;17825:2;17805:18;;;17798:30;17864:34;17844:18;;;17837:62;-1:-1:-1;;;17915:18:1;;;17908:38;17963:19;;10524:97:0;17584:404:1;10524:97:0;10632:36;10642:6;10650:9;10661:6;10632:9;:36::i;:::-;-1:-1:-1;;;;;10710:19:0;;;;;;:11;:19;;;;;;;;1021:10;10710:33;;;;;;;;;10679:74;;10688:6;;10710:42;;10746:6;;10710:42;:::i;:::-;10679:8;:74::i;:::-;-1:-1:-1;10771:4:0;10409:374;;;;;:::o;31204:491::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;31288:15:::1;:34:::0;;-1:-1:-1;;;;;31288:34:0;;::::1;-1:-1:-1::0;;;;;;31288:34:0;;::::1;::::0;::::1;::::0;;:15:::1;31334:49:::0;;;:31:::1;:49;::::0;;;;;;;:56;;-1:-1:-1;;31334:56:0;;::::1;31288:34:::0;31334:56;;::::1;::::0;;;31401:21:::1;:39:::0;;;;;:46;;;::::1;::::0;::::1;::::0;;31458:25:::1;:43:::0;;;;;:50;;;::::1;::::0;::::1;::::0;;31519:24:::1;:42:::0;;;;;:49;;;::::1;::::0;::::1;::::0;;31581:22:::1;:40:::0;;;;;:47;;;::::1;::::0;::::1;::::0;;31639:23:::1;:41:::0;;;;;:48;;;;::::1;::::0;;::::1;::::0;;31204:491::o;29116:229::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;29231:9:::1;::::0;;29225:15:::1;::::0;29231:9:::1;::::0;;::::1;::::0;29225:15:::1;:::i;:::-;29216:24;::::0;:6:::1;:24;:::i;:::-;29200:12;:40;;29192:108;;;::::0;-1:-1:-1;;;29192:108:0;;21004:2:1;29192:108:0::1;::::0;::::1;20986:21:1::0;21043:2;21023:18;;;21016:30;21082:34;21062:18;;;21055:62;21153:25;21133:18;;;21126:53;21196:19;;29192:108:0::1;20802:419:1::0;29192:108:0::1;29311:11;:26:::0;29116:229::o;33870:82::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;33926:11:::1;:18:::0;;-1:-1:-1;;;;33926:18:0::1;-1:-1:-1::0;;;33926:18:0::1;::::0;;33870:82::o;21570:310::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;21664:6;21638:23:::1;1021:10:::0;21648:12:::1;941:98:::0;21638:23:::1;:32;;21630:93;;;::::0;-1:-1:-1;;;21630:93:0;;15348:2:1;21630:93:0::1;::::0;::::1;15330:21:1::0;15387:2;15367:18;;;15360:30;15426:34;15406:18;;;15399:62;-1:-1:-1;;;15477:18:1;;;15470:46;15533:19;;21630:93:0::1;15146:412:1::0;21630:93:0::1;21764:6;21749:12;;:21;;;;:::i;:::-;21734:12;:36:::0;1021:10;21781:23:::1;::::0;;;:9:::1;:23;::::0;;;;:33;;21808:6;;21781:23;:33:::1;::::0;21808:6;;21781:33:::1;:::i;:::-;::::0;;;-1:-1:-1;;21830:42:0::1;::::0;25140:25:1;;;21861:1:0::1;::::0;1021:10;;-1:-1:-1;;;;;;;;;;;21830:42:0;25128:2:1;25113:18;21830:42:0::1;;;;;;;;21570:310:::0;:::o;35666:102::-;35715:16;35749:13;35742:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35666:102;:::o;34002:550::-;34115:4;2079:6;;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;34154:38:::1;::::0;-1:-1:-1;;;34154:38:0;;34186:4:::1;34154:38;::::0;::::1;8807:51:1::0;34131:20:0::1;::::0;-1:-1:-1;;;;;34154:23:0;::::1;::::0;::::1;::::0;8780:18:1;;34154:38:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34131:61;;34203:19;34236:12;34233:128;;;-1:-1:-1::0;34278:12:0;34233:128:::1;;;-1:-1:-1::0;34337:12:0;34233:128:::1;34394:12;34379:11;:27;;34371:96;;;::::0;-1:-1:-1;;;34371:96:0;;20579:2:1;34371:96:0::1;::::0;::::1;20561:21:1::0;20618:2;20598:18;;;20591:30;20657:34;20637:18;;;20630:62;20728:26;20708:18;;;20701:54;20772:19;;34371:96:0::1;20377:420:1::0;34371:96:0::1;34478:13;-1:-1:-1::0;;;;;34478:22:0::1;;34501:7;2052::::0;2079:6;-1:-1:-1;;;;;2079:6:0;;2006:87;34501:7:::1;34478:44;::::0;-1:-1:-1;;;;;;34478:44:0::1;::::0;;;;;;-1:-1:-1;;;;;9061:32:1;;;34478:44:0::1;::::0;::::1;9043:51:1::0;9110:18;;;9103:34;;;9016:18;;34478:44:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;34540:4:0::1;::::0;34002:550;-1:-1:-1;;;;;;34002:550:0:o;20074:427::-;20146:7;20166:19;20188:26;20205:8;20188:16;:26::i;:::-;20166:48;;20228:11;20243:1;20228:16;20225:238;;;20283:15;;20267:13;;:31;;;;:::i;:::-;20260:38;20074:427;-1:-1:-1;;;20074:427:0:o;20225:238::-;20319:11;20334:1;20319:16;20316:147;;;20375:15;;20359:13;;:31;;;;:::i;20316:147::-;20411:11;20426:1;20411:16;20408:55;;;-1:-1:-1;20450:1:0;;20074:427;-1:-1:-1;;20074:427:0:o;20408:55::-;-1:-1:-1;;20480:13:0;;;20074:427;-1:-1:-1;20074:427:0:o;24470:1177::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;24625:9:::1;::::0;;24567:19:::1;::::0;24619:15:::1;::::0;24625:9:::1;;::::0;24619:15:::1;:::i;:::-;24589:45;::::0;:27;:45:::1;:::i;:::-;24653:5;::::0;24567:67;;-1:-1:-1;;;;;;24653:5:0::1;24645:68;;;::::0;-1:-1:-1;;;24645:68:0;;16198:2:1;24645:68:0::1;::::0;::::1;16180:21:1::0;16237:2;16217:18;;;16210:30;16276:34;16256:18;;;16249:62;-1:-1:-1;;;16327:18:1;;;16320:34;16371:19;;24645:68:0::1;15996:400:1::0;24645:68:0::1;24764:5;::::0;-1:-1:-1;;;;;24764:5:0::1;24732:38;::::0;;;:31:::1;:38;::::0;;;;;::::1;;24724:104;;;::::0;-1:-1:-1;;;24724:104:0;;18556:2:1;24724:104:0::1;::::0;::::1;18538:21:1::0;18595:2;18575:18;;;18568:30;18634:34;18614:18;;;18607:62;-1:-1:-1;;;18685:18:1;;;18678:51;18746:19;;24724:104:0::1;18354:417:1::0;24724:104:0::1;24840:16;24858::::0;24894:5:::1;;;;;;;;;-1:-1:-1::0;;;;;24894:5:0::1;-1:-1:-1::0;;;;;24879:33:0::1;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24839:75;;;;;24933:8;-1:-1:-1::0;;;;;24933:13:0::1;24945:1;24933:13;:30;;;-1:-1:-1::0;;;;;;24950:13:0;::::1;::::0;24933:30:::1;24925:83;;;::::0;-1:-1:-1;;;24925:83:0;;21833:2:1;24925:83:0::1;::::0;::::1;21815:21:1::0;21872:2;21852:18;;;21845:30;21911:34;21891:18;;;21884:62;-1:-1:-1;;;21962:18:1;;;21955:38;22010:19;;24925:83:0::1;21631:404:1::0;24925:83:0::1;25063:4;25019:23;9880:18:::0;;;:9;:18;;;;;;25019:50;-1:-1:-1;25080:50:0::1;1021:10:::0;25111:4:::1;25118:11;25080:8;:50::i;:::-;25141:36;25158:4;25165:11;25141:8;:36::i;:::-;-1:-1:-1::0;25227:4:0::1;25188:18;9880::::0;;;:9;:18;;;;;;25266:29:::1;25284:11:::0;25266:15;:29:::1;:::i;:::-;25252:10;:43;;25244:116;;;::::0;-1:-1:-1;;;25244:116:0;;23085:2:1;25244:116:0::1;::::0;::::1;23067:21:1::0;23124:2;23104:18;;;23097:30;23163:34;23143:18;;;23136:62;23234:30;23214:18;;;23207:58;23282:19;;25244:116:0::1;22883:424:1::0;25244:116:0::1;25403:11;::::0;25371:58:::1;::::0;25388:4:::1;::::0;-1:-1:-1;;;;;25403:11:0::1;25417::::0;25371:8:::1;:58::i;:::-;25440:11;::::0;-1:-1:-1;;;;;25440:11:0::1;:27;25475:9;25508:4;25528:11:::0;25440::::1;::::0;25586:7:::1;2052::::0;2079:6;-1:-1:-1;;;;;2079:6:0;;2006:87;25586:7:::1;25608:20;:15;25626:2;25608:20;:::i;:::-;25440:199;::::0;::::1;::::0;;;-1:-1:-1;;;;;;25440:199:0;;;-1:-1:-1;;;;;9507:15:1;;;25440:199:0::1;::::0;::::1;9489:34:1::0;9539:18;;;9532:34;;;;9582:18;;;9575:34;;;;9625:18;;;9618:34;;;;9689:15;;;9668:19;;;9661:44;9721:19;;;9714:35;;;;9423:19;;25440:199:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24556:1091;;;;;24470:1177:::0;:::o;29748:430::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29826:46:0::1;;::::0;;;:31:::1;:46;::::0;;;;;;;:53;;29875:4:::1;-1:-1:-1::0;;29826:53:0;;::::1;::::0;::::1;::::0;;;29890:21:::1;:36:::0;;;;;:43;;;::::1;::::0;::::1;::::0;;29944:25:::1;:40:::0;;;;;:47;;;::::1;::::0;::::1;::::0;;30002:24:::1;:39:::0;;;;;:46;;;::::1;::::0;::::1;::::0;;30064:22:::1;:37:::0;;;;;:44;;;::::1;::::0;::::1;::::0;;30119:23:::1;:38:::0;;;;;:45;;;;::::1;::::0;;::::1;::::0;;29748:430::o;23164:408::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;23255:1:::1;23236:16;:20:::0;;;23267:16:::1;:20:::0;;;23298:10:::1;:14:::0;;;23323:21:::1;:25:::0;;;23359:12:::1;:16:::0;;;23414:17:::1;:21:::0;;;23446:17:::1;:21:::0;;;23478:11:::1;:15:::0;;;23504:22:::1;:26:::0;;;-1:-1:-1;23541:17:0;23164:408::o;28466:216::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;28572:1:::1;28554:14;:19;;28546:87;;;::::0;-1:-1:-1;;;28546:87:0;;19335:2:1;28546:87:0::1;::::0;::::1;19317:21:1::0;19374:2;19354:18;;;19347:30;19413:34;19393:18;;;19386:62;19484:25;19464:18;;;19457:53;19527:19;;28546:87:0::1;19133:419:1::0;28546:87:0::1;28644:13;:30:::0;28466:216::o;28763:299::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;28915:9:::1;::::0;;28909:15:::1;::::0;28915:9:::1;::::0;;::::1;::::0;28909:15:::1;:::i;:::-;28899:25;::::0;:7:::1;:25;:::i;:::-;28871:24;:53;;28863:130;;;::::0;;-1:-1:-1;;;28863:130:0;;15765:2:1;28863:130:0::1;::::0;::::1;15747:21:1::0;15784:18;;;15777:30;;;;15843:34;15823:18;;;15816:62;15914:34;15894:18;;;15887:62;15966:19;;28863:130:0::1;15563:428:1::0;28863:130:0::1;29004:23;:50:::0;28763:299::o;30186:491::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;30270:15:::1;:34:::0;;-1:-1:-1;;;;;30270:34:0;;::::1;-1:-1:-1::0;;;;;;30270:34:0;;::::1;::::0;::::1;::::0;;:15:::1;30316:49:::0;;;:31:::1;:49;::::0;;;;;;;:56;;-1:-1:-1;;30316:56:0;;::::1;30270:34:::0;30316:56;;::::1;::::0;;;30383:21:::1;:39:::0;;;;;:46;;;::::1;::::0;::::1;::::0;;30440:25:::1;:43:::0;;;;;:50;;;::::1;::::0;::::1;::::0;;30501:24:::1;:42:::0;;;;;:49;;;::::1;::::0;::::1;::::0;;30563:22:::1;:40:::0;;;;;:47;;;::::1;::::0;::::1;::::0;;30621:23:::1;:41:::0;;;;;:48;;;;::::1;::::0;;::::1;::::0;;30186:491::o;2229:103::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;2294:30:::1;2321:1;2294:18;:30::i;:::-;2229:103::o:0;20599:613::-;20688:21;;20664:7;;-1:-1:-1;;;;;20688:21:0;:35;20685:498;;20776:21;;20761:61;;-1:-1:-1;;;20761:61:0;;-1:-1:-1;;;;;8825:32:1;;;20761:61:0;;;8807:51:1;20740:17:0;;20776:21;;20761:51;;8780:18:1;;20761:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20761:61:0;;;;;;;;;;;;:::i;:::-;:68;20740:89;;20847:29;20867:8;20847:19;:29::i;:::-;20844:328;;;-1:-1:-1;20904:1:0;;20599:613;-1:-1:-1;;20599:613:0:o;20844:328::-;20954:1;20942:9;:13;:31;;;;;20972:1;20959:9;:14;;20942:31;20939:233;;;-1:-1:-1;21000:1:0;;20599:613;-1:-1:-1;;20599:613:0:o;20939:233::-;21039:1;21027:9;:13;:31;;;;;21057:1;21044:9;:14;;21027:31;21023:149;;;-1:-1:-1;21085:1:0;;20599:613;-1:-1:-1;;20599:613:0:o;21023:149::-;21125:2;21112:9;:15;21108:64;;-1:-1:-1;21155:1:0;;20599:613;-1:-1:-1;;20599:613:0:o;21108:64::-;20725:458;20685:498;-1:-1:-1;21200:1:0;;20599:613;-1:-1:-1;20599:613:0:o;35773:170::-;35885:21;;35870:55;;-1:-1:-1;;;35870:55:0;;;;;25140:25:1;;;35834:7:0;;-1:-1:-1;;;;;35885:21:0;;35870:45;;25113:18:1;;35870:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;35994:776::-;36099:12;2079:6;;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;36163:8:::1;:15;36143:9;:16;:35;36135:44;;;::::0;::::1;;36190:22;36229:9:::0;36225:121:::1;36248:8;:15;36244:1;:19;36225:121;;;36302:8;36311:1;36302:11;;;;;;;;:::i;:::-;;;;;;;36316:8;36302:22;;;;:::i;:::-;36284:40;::::0;;::::1;:::i;:::-;::::0;-1:-1:-1;36266:3:0;::::1;::::0;::::1;:::i;:::-;;;;36225:121;;;-1:-1:-1::0;36385:10:0::1;9853:7:::0;9880:18;;;:9;:18;;;;;;36400:14;-1:-1:-1;36375:39:0::1;36366:50;;;::::0;::::1;;36437:9;36433:306;36456:8;:15;36452:1;:19;36433:306;;;36547:8;36556:1;36547:11;;;;;;;;:::i;:::-;;;;;;;36561:8;36547:22;;;;:::i;:::-;36520:9;:23;36530:9;36540:1;36530:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;36520:23:0::1;-1:-1:-1::0;;;;;36520:23:0::1;;;;;;;;;;;;;:49;;;;;;;:::i;:::-;;;;;;;;36613:8;36622:1;36613:11;;;;;;;;:::i;:::-;;;;;;;36627:8;36613:22;;;;:::i;:::-;36598:10;36588:21;::::0;;;:9:::1;:21;::::0;;;;:47;;:21;;;:47:::1;::::0;;;::::1;:::i;:::-;;;;;;;;36677:9;36687:1;36677:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;36655:59:0::1;36664:10;-1:-1:-1::0;;;;;36655:59:0::1;-1:-1:-1::0;;;;;;;;;;;36691:8:0::1;36700:1;36691:11;;;;;;;;:::i;:::-;;;;;;;36705:8;36691:22;;;;:::i;:::-;36655:59;::::0;25140:25:1;;;25128:2;25113:18;36655:59:0::1;;;;;;;36474:3:::0;::::1;::::0;::::1;:::i;:::-;;;;36433:306;;;-1:-1:-1::0;36756:4:0::1;::::0;35994:776;-1:-1:-1;;;;35994:776:0:o;25720:142::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25811:32:0;;;::::1;;::::0;;;:22:::1;:32;::::0;;;;:43;;-1:-1:-1;;25811:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25720:142::o;9493:87::-;9532:13;9565:7;9558:14;;;;;:::i;21233:316::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;21342:9:::1;::::0;;21336:15:::1;::::0;21342:9:::1;::::0;;::::1;::::0;21336:15:::1;:::i;:::-;21327:6;;:24;;;;:::i;:::-;21317:6;21302:12;;:21;;;;:::i;:::-;:49;;21293:99;;;::::0;-1:-1:-1;;;21293:99:0;;23940:2:1;21293:99:0::1;::::0;::::1;23922:21:1::0;23979:2;23959:18;;;23952:30;24018:34;23998:18;;;23991:62;-1:-1:-1;;;24069:18:1;;;24062:34;24113:19;;21293:99:0::1;23738:400:1::0;21293:99:0::1;21433:6;21418:12;;:21;;;;:::i;:::-;21403:12;:36:::0;1021:10;21450:23:::1;::::0;;;:9:::1;:23;::::0;;;;:33;;21477:6;;21450:23;:33:::1;::::0;21477:6;;21450:33:::1;:::i;:::-;::::0;;;-1:-1:-1;;21499:42:0::1;::::0;25140:25:1;;;1021:10:0;;21516:1:::1;::::0;-1:-1:-1;;;;;;;;;;;21499:42:0;25128:2:1;25113:18;21499:42:0::1;24994:177:1::0;26610:149:0;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26705:35:0;;;::::1;;::::0;;;:25:::1;:35;::::0;;;;:46;;-1:-1:-1;;26705:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26610:149::o;26134:161::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26235:41:0;;;::::1;;::::0;;;:31:::1;:41;::::0;;;;:52;;-1:-1:-1;;26235:52:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26134:161::o;9914:167::-;9992:4;10009:42;1021:10;10033:9;10044:6;10009:9;:42::i;26385:141::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26476:31:0;;;::::1;;::::0;;;:21:::1;:31;::::0;;;;:42;;-1:-1:-1;;26476:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26385:141::o;32779:1044::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;33082:2:::1;33062:16;:22;;:48;;;;;33108:2;33088:16;:22;;33062:48;:68;;;;;33128:2;33114:10;:16;;33062:68;:99;;;;;33159:2;33134:21;:27;;33062:99;33054:108;;;::::0;::::1;;33173:17;:36:::0;;;33220:17:::1;:36:::0;;;33267:11:::1;:24:::0;;;33302:22:::1;:46:::0;;;33327:21;33281:10;33375:37:::1;33240:16:::0;33193;33375:37:::1;:::i;:::-;:51;;;;:::i;:::-;:76;;;;:::i;:::-;33359:13;:92:::0;;;33462:15:::1;:34:::0;;;33507:15:::1;:34:::0;;;33577:2:::1;-1:-1:-1::0;33560:19:0::1;33552:69;;;;-1:-1:-1::0;;;33552:69:0::1;;;;;;;:::i;:::-;33659:15;;33640;;:34;;33632:82;;;;-1:-1:-1::0;;;33632:82:0::1;;;;;;;:::i;:::-;33752:13;;33733:15;;:32;;33725:90;;;::::0;-1:-1:-1;;;33725:90:0;;19759:2:1;33725:90:0::1;::::0;::::1;19741:21:1::0;19798:2;19778:18;;;19771:30;19837:34;19817:18;;;19810:62;-1:-1:-1;;;19888:18:1;;;19881:43;19941:19;;33725:90:0::1;19557:409:1::0;33725:90:0::1;32779:1044:::0;;;;;;:::o;23605:557::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;23695:1:::1;23676:16;:20:::0;;;23726:1:::1;23707:16;:20:::0;;;23751:1:::1;23738:10;:14:::0;;;23763:21:::1;:25:::0;;;23751:1;23814:29:::1;::::0;23751:1;;23814:29:::1;:::i;:::-;:48;;;;:::i;:::-;:72;;;;:::i;:::-;23799:12;:87:::0;23948:1:::1;23928:17;:21:::0;;;23980:1:::1;23960:17;:21:::0;;;24006:1:::1;23992:11;:15:::0;;;24043:1:::1;24018:22;:26:::0;;;24043:1;24006;;24071:37:::1;::::0;::::1;:::i;:::-;:51;;;;:::i;:::-;:76;;;;:::i;:::-;24055:13;:92:::0;23605:557::o;19593:429::-;19664:7;19684:19;19706:26;19723:8;19706:16;:26::i;:::-;19684:48;;19746:11;19761:1;19746:16;19743:242;;;19800:14;;19785:12;;:29;;;;:::i;19743:242::-;19834:11;19849:1;19834:16;19831:154;;;19889:14;;19874:12;;:29;;;;:::i;19831:154::-;19933:11;19948:1;19933:16;19930:55;;;-1:-1:-1;19972:1:0;;19593:429;-1:-1:-1;;19593:429:0:o;19930:55::-;-1:-1:-1;;20002:12:0;;;19593:429;-1:-1:-1;19593:429:0:o;35214:303::-;35280:12;35322:1;35309:170;35330:13;:20;35326:24;;35309:170;;;35410:6;-1:-1:-1;;;;;35378:38:0;:28;35389:13;35403:1;35389:16;;;;;;;;:::i;:::-;;;;;;;;;35378:10;:28::i;:::-;-1:-1:-1;;;;;35378:38:0;;35374:90;;;-1:-1:-1;35444:4:0;;35214:303;-1:-1:-1;;35214:303:0:o;35374:90::-;35353:3;;;;:::i;:::-;;;;35309:170;;6662:30;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6662:30:0;:::o;29384:72::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;29434:6:::1;:14:::0;;-1:-1:-1;;;;29434:14:0::1;::::0;;29384:72::o;26813:147::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26907:34:0;;;::::1;;::::0;;;:24:::1;:34;::::0;;;;:45;;-1:-1:-1;;26907:45:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26813:147::o;2340:201::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2429:22:0;::::1;2421:73;;;::::0;-1:-1:-1;;;2421:73:0;;12870:2:1;2421:73:0::1;::::0;::::1;12852:21:1::0;12909:2;12889:18;;;12882:30;12948:34;12928:18;;;12921:62;-1:-1:-1;;;12999:18:1;;;12992:36;13045:19;;2421:73:0::1;12668:402:1::0;2421:73:0::1;2505:28;2524:8;2505:18;:28::i;:::-;2340:201:::0;:::o;31733:1007::-;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;32025:2:::1;32006:15;:21;;:46;;;;;32050:2;32031:15;:21;;32006:46;:65;;;;;32069:2;32056:9;:15;;32006:65;:95;;;;;32099:2;32075:20;:26;;32006:95;31998:104;;;::::0;::::1;;32113:16;:34:::0;;;32158:16:::1;:34:::0;;;32203:10:::1;:22:::0;;;32236:21:::1;:44:::0;;;32260:20;32177:15;32306:29:::1;32216:9:::0;32132:15;32306:29:::1;:::i;:::-;:48;;;;:::i;:::-;:72;;;;:::i;:::-;32291:12;:87:::0;;;32389:14:::1;:32:::0;;;32432:14:::1;:32:::0;;;32499:2:::1;-1:-1:-1::0;32483:18:0::1;32475:68;;;;-1:-1:-1::0;;;32475:68:0::1;;;;;;;:::i;:::-;32580:14;;32562;;:32;;32554:80;;;;-1:-1:-1::0;;;32554:80:0::1;;;;;;;:::i;:::-;32671:12;;32653:14;;:30;;32645:87;;;::::0;-1:-1:-1;;;32645:87:0;;22672:2:1;32645:87:0::1;::::0;::::1;22654:21:1::0;22711:2;22691:18;;;22684:30;22750:34;22730:18;;;22723:62;-1:-1:-1;;;22801:18:1;;;22794:42;22853:19;;32645:87:0::1;22470:408:1::0;27774:238:0;2052:7;2079:6;-1:-1:-1;;;;;2079:6:0;1021:10;2141:23;2133:68;;;;-1:-1:-1;;;2133:68:0;;;;;;;:::i;:::-;27895:7:::1;27872:19;:30;;27864:89;;;::::0;-1:-1:-1;;;27864:89:0;;14099:2:1;27864:89:0::1;::::0;::::1;14081:21:1::0;14138:2;14118:18;;;14111:30;14177:34;14157:18;;;14150:62;-1:-1:-1;;;14228:18:1;;;14221:44;14282:19;;27864:89:0::1;13897:410:1::0;27864:89:0::1;27964:18;:40:::0;27774:238::o;10791:335::-;-1:-1:-1;;;;;10884:19:0;;10876:68;;;;-1:-1:-1;;;10876:68:0;;21428:2:1;10876:68:0;;;21410:21:1;21467:2;21447:18;;;21440:30;21506:34;21486:18;;;21479:62;-1:-1:-1;;;21557:18:1;;;21550:34;21601:19;;10876:68:0;21226:400:1;10876:68:0;-1:-1:-1;;;;;10963:21:0;;10955:68;;;;-1:-1:-1;;;10955:68:0;;13277:2:1;10955:68:0;;;13259:21:1;13316:2;13296:18;;;13289:30;13355:34;13335:18;;;13328:62;-1:-1:-1;;;13406:18:1;;;13399:32;13448:19;;10955:68:0;13075:398:1;10955:68:0;-1:-1:-1;;;;;11034:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11086:32;;25140:25:1;;;11086:32:0;;25113:18:1;11086:32:0;;;;;;;10791:335;;;:::o;11134:6743::-;-1:-1:-1;;;;;11231:20:0;;11223:70;;;;-1:-1:-1;;;11223:70:0;;20173:2:1;11223:70:0;;;20155:21:1;20212:2;20192:18;;;20185:30;20251:34;20231:18;;;20224:62;-1:-1:-1;;;20302:18:1;;;20295:35;20347:19;;11223:70:0;19971:401:1;11223:70:0;-1:-1:-1;;;;;11312:23:0;;11304:71;;;;-1:-1:-1;;;11304:71:0;;11179:2:1;11304:71:0;;;11161:21:1;11218:2;11198:18;;;11191:30;11257:34;11237:18;;;11230:62;-1:-1:-1;;;11308:18:1;;;11301:33;11351:19;;11304:71:0;10977:399:1;11304:71:0;-1:-1:-1;;;;;11394:17:0;;;;;;:9;:17;;;;;;:27;-1:-1:-1;11394:27:0;11386:71;;;;-1:-1:-1;;;11386:71:0;;16603:2:1;11386:71:0;;;16585:21:1;16642:2;16622:18;;;16615:30;16681:33;16661:18;;;16654:61;16732:18;;11386:71:0;16401:355:1;11386:71:0;11485:14;11476:6;:23;11468:86;;;;-1:-1:-1;;;11468:86:0;;13680:2:1;11468:86:0;;;13662:21:1;13719:2;13699:18;;;13692:30;13758:34;13738:18;;;13731:62;-1:-1:-1;;;13809:18:1;;;13802:48;13867:19;;11468:86:0;13478:414:1;11468:86:0;11574:6;;-1:-1:-1;;;11574:6:0;;;;11573:7;11565:59;;;;-1:-1:-1;;;11565:59:0;;16963:2:1;11565:59:0;;;16945:21:1;17002:2;16982:18;;;16975:30;17041:34;17021:18;;;17014:62;-1:-1:-1;;;17092:18:1;;;17085:37;17139:19;;11565:59:0;16761:403:1;11565:59:0;-1:-1:-1;;;;;11640:18:0;;;;;;:7;:18;;;;;;;;:40;;;;-1:-1:-1;2052:7:0;2079:6;-1:-1:-1;;;;;11663:17:0;;;2079:6;;11663:17;;11640:40;11637:132;;;11704:11;;-1:-1:-1;;;11704:11:0;;;;11696:61;;;;-1:-1:-1;;;11696:61:0;;12058:2:1;11696:61:0;;;12040:21:1;12097:2;12077:18;;;12070:30;12136:34;12116:18;;;12109:62;-1:-1:-1;;;12187:18:1;;;12180:35;12232:19;;11696:61:0;11856:401:1;11696:61:0;-1:-1:-1;;;;;11784:15:0;;;;;;:7;:15;;;;;;;;11781:195;;;-1:-1:-1;;;;;11824:42:0;;;;;;:31;:42;;;;;;;;;:76;;;11880:20;;11870:6;:30;;11824:76;11816:148;;;;-1:-1:-1;;;11816:148:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12000:18:0;;;;;;:7;:18;;;;;;;;11997:195;;;-1:-1:-1;;;;;12043:39:0;;;;;;:31;:39;;;;;;;;;:73;;;12096:20;;12086:6;:30;;12043:73;12035:145;;;;-1:-1:-1;;;12035:145:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12322:39:0;;;;;;:31;:39;;;;;;;;;:73;;;12375:20;;12365:6;:30;;12322:73;12314:145;;;;-1:-1:-1;;;12314:145:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12553:35:0;;;;;;:24;:35;;;;;;;;;:83;;-1:-1:-1;12625:11:0;;;-1:-1:-1;;;;;12601:20:0;;;;;;:9;:20;;;;;;;;12592:29;;:6;:29;:::i;:::-;:44;;12553:83;12545:157;;;;-1:-1:-1;;;12545:157:0;;22242:2:1;12545:157:0;;;22224:21:1;22281:2;22261:18;;;22254:30;22320:34;22300:18;;;22293:62;22391:31;22371:18;;;22364:59;22440:19;;12545:157:0;22040:425:1;12545:157:0;12753:9;;-1:-1:-1;;;12753:9:0;;;;12750:341;;;-1:-1:-1;;;;;12897:18:0;;;;;;:7;:18;;;;;;;;12893:187;;;12938:31;12954:6;12962;12938:15;:31::i;:::-;12893:187;;;-1:-1:-1;;;;;12994:15:0;;;;;;:7;:15;;;;;;;;12991:89;;;13030:34;13046:9;13057:6;13030:15;:34::i;:::-;-1:-1:-1;;;;;13242:33:0;;13111:12;13242:33;;;:22;:33;;;;;;13111:12;;;;13242:33;;13241:34;:53;;;;-1:-1:-1;;;;;;13279:15:0;;;;;;:7;:15;;;;;;;;13241:53;:73;;;;;13313:1;13298:12;;:16;13241:73;13237:125;;;13346:4;13333:17;;13237:125;-1:-1:-1;;;;;13422:31:0;;;;;;:23;:31;;;;;;;;13421:32;:54;;;;-1:-1:-1;;;;;;13457:18:0;;;;;;:7;:18;;;;;;;;13421:54;:75;;;;;13495:1;13479:13;;:17;13421:75;13417:128;;;-1:-1:-1;13529:4:0;13417:128;13560:10;13557:1660;;;13630:32;13665;13687:9;13665:21;:32::i;:::-;13630:67;-1:-1:-1;13717:28:0;;13714:1478;;13875:3;13838:33;13847:24;13838:6;:33;:::i;:::-;13830:48;;;;:::i;:::-;13814:65;;;;:::i;:::-;;;14018:24;13998:16;;13991:4;:23;;;;:::i;:::-;13983:59;;;;:::i;:::-;13954:18;:89;;;14072:15;;-1:-1:-1;;;;;14072:15:0;14062:26;;;;:9;:26;;;;;:48;;:26;;;:48;;13954:89;;14062:48;:::i;:::-;;;;-1:-1:-1;;14151:15:0;;14168:18;;14134:53;;25140:25:1;;;-1:-1:-1;;;;;14151:15:0;;;;14134:53;;;-1:-1:-1;;;;;;;;;;;14134:53:0;25128:2:1;25113:18;14134:53:0;;;;;;;14308:24;14294:10;;14287:4;:17;;;;:::i;:::-;14279:53;;;;:::i;:::-;14256:12;:77;;;14362:15;;-1:-1:-1;;;;;14362:15:0;14352:26;;;;:9;:26;;;;;:42;;:26;;;:42;;14256:77;;14352:42;:::i;:::-;;;;-1:-1:-1;;14435:15:0;;14452:12;;14418:47;;25140:25:1;;;-1:-1:-1;;;;;14435:15:0;;;;14418:47;;;-1:-1:-1;;;;;;;;;;;14418:47:0;25128:2:1;25113:18;14418:47:0;;;;;;;14604:24;14584:16;;14577:4;:23;;;;:::i;:::-;14569:59;;;;:::i;:::-;14540:18;:89;;;14658:12;;-1:-1:-1;;;;;14658:12:0;14648:23;;;;:9;:23;;;;;:45;;:23;;;:45;;14540:89;;14648:45;:::i;:::-;;;;-1:-1:-1;;14734:12:0;;14748:18;;14717:50;;25140:25:1;;;-1:-1:-1;;;;;14734:12:0;;;;14717:50;;;-1:-1:-1;;;;;;;;;;;14717:50:0;25128:2:1;25113:18;14717:50:0;;;;;;;14916:24;14891:21;;14884:4;:28;;;;:::i;:::-;14876:64;;;;:::i;:::-;14849:16;:92;;;14970:17;;-1:-1:-1;;;;;14970:17:0;14960:28;;;;:9;:28;;;;;:48;;:28;;;:48;;14849:92;;14960:48;:::i;:::-;;;;-1:-1:-1;;15049:17:0;;15068:16;;15032:53;;25140:25:1;;;-1:-1:-1;;;;;15049:17:0;;;;15032:53;;;-1:-1:-1;;;;;;;;;;;15032:53:0;25128:2:1;25113:18;15032:53:0;;;;;;;15157:19;24321:1;24300:18;:22;;;24333:12;:16;;;24360;:20;;;24391:18;:22;24252:169;15157:19;13571:1646;13557:1660;15233:11;15230:1700;;;15309:33;15345:30;15368:6;15345:22;:30::i;:::-;15309:66;-1:-1:-1;15397:29:0;;15394:1525;;15567:3;15529:34;15538:25;15529:6;:34;:::i;:::-;15521:49;;;;:::i;:::-;15505:66;;;;:::i;:::-;;;15712:25;15691:17;;15684:4;:24;;;;:::i;:::-;15676:61;;;;:::i;:::-;15647:18;:91;;;15767:15;;-1:-1:-1;;;;;15767:15:0;15757:26;;;;:9;:26;;;;;:48;;:26;;;:48;;15647:91;;15757:48;:::i;:::-;;;;-1:-1:-1;;15846:15:0;;15863:18;;15829:53;;25140:25:1;;;-1:-1:-1;;;;;15846:15:0;;;;15829:53;;;-1:-1:-1;;;;;;;;;;;15829:53:0;25128:2:1;25113:18;15829:53:0;;;;;;;16022:25;16007:11;;16000:4;:18;;;;:::i;:::-;15992:55;;;;:::i;:::-;15968:12;;:80;;;;;;;:::i;:::-;;;;-1:-1:-1;;16097:12:0;;16077:15;;-1:-1:-1;;;;;16077:15:0;16067:26;;;;:9;:26;;;;;:42;;:26;;;:42;;16097:12;;16067:42;:::i;:::-;;;;-1:-1:-1;;16150:15:0;;16167:12;;16133:47;;25140:25:1;;;-1:-1:-1;;;;;16150:15:0;;;;16133:47;;;-1:-1:-1;;;;;;;;;;;16133:47:0;25128:2:1;25113:18;16133:47:0;;;;;;;16322:25;16301:17;;16294:4;:24;;;;:::i;:::-;16286:61;;;;:::i;:::-;16256:18;;:92;;;;;;;:::i;:::-;;;;-1:-1:-1;;16394:18:0;;16377:12;;-1:-1:-1;;;;;16377:12:0;16367:23;;;;:9;:23;;;;;:45;;:23;;;:45;;16394:18;;16367:45;:::i;:::-;;;;-1:-1:-1;;16453:12:0;;16467:18;;16436:50;;25140:25:1;;;-1:-1:-1;;;;;16453:12:0;;;;16436:50;;;-1:-1:-1;;;;;;;;;;;16436:50:0;25128:2:1;25113:18;16436:50:0;;;;;;;16638:25;16612:22;;16605:4;:29;;;;:::i;:::-;16597:66;;;;:::i;:::-;16569:16;;:95;;;;;;;:::i;:::-;;;;-1:-1:-1;;16715:16:0;;16693:17;;-1:-1:-1;;;;;16693:17:0;16683:28;;;;:9;:28;;;;;:48;;:28;;;:48;;16715:16;;16683:48;:::i;:::-;;;;-1:-1:-1;;16772:17:0;;16791:16;;16755:53;;25140:25:1;;;-1:-1:-1;;;;;16772:17:0;;;;16755:53;;;-1:-1:-1;;;;;;;;;;;16755:53:0;25128:2:1;25113:18;16755:53:0;;;;;;;16882:19;24321:1;24300:18;:22;;;24333:12;:16;;;24360;:20;;;24391:18;:22;24252:169;16882:19;15246:1684;15230:1700;16984:23;17010:13;17019:4;17010:6;:13;:::i;:::-;-1:-1:-1;;;;;17072:17:0;;;;;;:9;:17;;;;;:27;;16984:39;;-1:-1:-1;17093:6:0;;17072:17;;;:27;;17093:6;;17072:27;:::i;:::-;;;;-1:-1:-1;;;;;;;17151:20:0;;;;;;:9;:20;;;;;:39;;17175:15;;17151:20;:39;;17175:15;;17151:39;:::i;:::-;;;;-1:-1:-1;;;;;;;17234:18:0;;;;;;:7;:18;;;;;;;;17230:551;;;-1:-1:-1;;;;;17328:34:0;;;;;;:26;:34;;;;;:44;;17366:6;;17328:34;:44;;17366:6;;17328:44;:::i;:::-;;;;-1:-1:-1;;;;;;;17450:23:0;;;;;;:15;:23;;;;;:28;;17477:1;;17450:23;:28;;17477:1;;17450:28;:::i;:::-;;;;-1:-1:-1;17230:551:0;;-1:-1:-1;17230:551:0;;-1:-1:-1;;;;;17524:15:0;;;;;;:7;:15;;;;;;;;17521:260;;;-1:-1:-1;;;;;17613:37:0;;;;;;:26;:37;;;;;:47;;17654:6;;17613:37;:47;;17654:6;;17613:47;:::i;:::-;;;;-1:-1:-1;;;;;;;17738:26:0;;;;;;:15;:26;;;;;:31;;17768:1;;17738:26;:31;;17768:1;;17738:31;:::i;:::-;;;;-1:-1:-1;;17521:260:0;17842:9;-1:-1:-1;;;;;17825:44:0;17834:6;-1:-1:-1;;;;;17825:44:0;-1:-1:-1;;;;;;;;;;;17853:15:0;17825:44;;;;25140:25:1;;25128:2;25113:18;;24994:177;17825:44:0;;;;;;;;11212:6665;;;;11134:6743;;;:::o;2549:191::-;2623:16;2642:6;;-1:-1:-1;;;;;2659:17:0;;;-1:-1:-1;;;;;;2659:17:0;;;;;;2692:40;;2642:6;;;;;;;2692:40;;2623:16;2692:40;2612:128;2549:191;:::o;17883:1651::-;-1:-1:-1;;;;;18082:33:0;;;;;;:23;:33;;;;;;18078:423;;-1:-1:-1;;;;;18144:33:0;;;;;;:23;:33;;;;;18180:15;18144:51;;18078:423;;;18285:18;;-1:-1:-1;;;;;18249:33:0;;;;;;:23;:33;;;;;;18307:15;;18249:54;;;:::i;:::-;:73;18245:237;;-1:-1:-1;;;;;18351:25:0;;18379:1;18351:25;;;:15;:25;;;;;;;;:29;;;18407:23;:33;;;;;18443:15;18407:51;;18245:237;-1:-1:-1;;;;;18600:31:0;;;;;;:21;:31;;;;;;;;;:81;;-1:-1:-1;18668:13:0;;-1:-1:-1;;;;;18635:25:0;;;;;;:15;:25;;;;;;:29;;18663:1;18635:29;:::i;:::-;:46;;18600:81;18592:160;;;;-1:-1:-1;;;18592:160:0;;11583:2:1;18592:160:0;;;11565:21:1;11622:2;11602:18;;;11595:30;11661:34;11641:18;;;11634:62;11732:34;11712:18;;;11705:62;-1:-1:-1;;;11783:19:1;;;11776:33;11826:19;;18592:160:0;11381:470:1;18592:160:0;-1:-1:-1;;;;;18867:39:0;;;;;;:29;:39;;;;;;18864:461;;-1:-1:-1;;;;;18935:39:0;;;;;;:29;:39;;;;;18977:15;18935:57;;18864:461;;;19086:24;;-1:-1:-1;;;;;19044:39:0;;;;;;:29;:39;;;;;;19114:15;;19044:66;;;:::i;:::-;:85;19041:265;;-1:-1:-1;;;;;19158:36:0;;19197:1;19158:36;;;:26;:36;;;;;;;;:40;;;19225:29;:39;;;;;19267:15;19225:57;;19041:265;-1:-1:-1;;;;;19351:35:0;;;;;;:25;:35;;;;;;;;;:113;;-1:-1:-1;19441:23:0;;-1:-1:-1;;;;;19401:36:0;;;;;;:26;:36;;;;;;19390:47;;:7;:47;:::i;:::-;:74;;19351:113;19343:183;;;;-1:-1:-1;;;19343:183:0;;23514:2:1;19343:183:0;;;23496:21:1;23553:2;23533:18;;;23526:30;23592:34;23572:18;;;23565:62;23663:27;23643:18;;;23636:55;23708:19;;19343:183:0;23312:421:1;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:673:1;68:5;121:3;114:4;106:6;102:17;98:27;88:55;;139:1;136;129:12;88:55;175:6;162:20;201:4;225:60;241:43;281:2;241:43;:::i;:::-;225:60;:::i;:::-;307:3;331:2;326:3;319:15;359:2;354:3;350:12;343:19;;394:2;386:6;382:15;446:3;441:2;435;432:1;428:10;420:6;416:23;412:32;409:41;406:61;;;463:1;460;453:12;406:61;485:1;495:163;509:2;506:1;503:9;495:163;;;566:17;;554:30;;604:12;;;;636;;;;527:1;520:9;495:163;;;-1:-1:-1;676:5:1;;14:673;-1:-1:-1;;;;;;;14:673:1:o;692:188::-;771:13;;-1:-1:-1;;;;;813:42:1;;803:53;;793:81;;870:1;867;860:12;793:81;692:188;;;:::o;885:247::-;944:6;997:2;985:9;976:7;972:23;968:32;965:52;;;1013:1;1010;1003:12;965:52;1052:9;1039:23;1071:31;1096:5;1071:31;:::i;1137:251::-;1207:6;1260:2;1248:9;1239:7;1235:23;1231:32;1228:52;;;1276:1;1273;1266:12;1228:52;1308:9;1302:16;1327:31;1352:5;1327:31;:::i;1393:388::-;1461:6;1469;1522:2;1510:9;1501:7;1497:23;1493:32;1490:52;;;1538:1;1535;1528:12;1490:52;1577:9;1564:23;1596:31;1621:5;1596:31;:::i;:::-;1646:5;-1:-1:-1;1703:2:1;1688:18;;1675:32;1716:33;1675:32;1716:33;:::i;:::-;1768:7;1758:17;;;1393:388;;;;;:::o;1786:456::-;1863:6;1871;1879;1932:2;1920:9;1911:7;1907:23;1903:32;1900:52;;;1948:1;1945;1938:12;1900:52;1987:9;1974:23;2006:31;2031:5;2006:31;:::i;:::-;2056:5;-1:-1:-1;2113:2:1;2098:18;;2085:32;2126:33;2085:32;2126:33;:::i;:::-;1786:456;;2178:7;;-1:-1:-1;;;2232:2:1;2217:18;;;;2204:32;;1786:456::o;2247:382::-;2312:6;2320;2373:2;2361:9;2352:7;2348:23;2344:32;2341:52;;;2389:1;2386;2379:12;2341:52;2428:9;2415:23;2447:31;2472:5;2447:31;:::i;:::-;2497:5;-1:-1:-1;2554:2:1;2539:18;;2526:32;2567:30;2526:32;2567:30;:::i;2634:315::-;2702:6;2710;2763:2;2751:9;2742:7;2738:23;2734:32;2731:52;;;2779:1;2776;2769:12;2731:52;2818:9;2805:23;2837:31;2862:5;2837:31;:::i;:::-;2887:5;2939:2;2924:18;;;;2911:32;;-1:-1:-1;;;2634:315:1:o;2954:1226::-;3072:6;3080;3133:2;3121:9;3112:7;3108:23;3104:32;3101:52;;;3149:1;3146;3139:12;3101:52;3189:9;3176:23;3218:18;3259:2;3251:6;3248:14;3245:34;;;3275:1;3272;3265:12;3245:34;3313:6;3302:9;3298:22;3288:32;;3358:7;3351:4;3347:2;3343:13;3339:27;3329:55;;3380:1;3377;3370:12;3329:55;3416:2;3403:16;3438:4;3462:60;3478:43;3518:2;3478:43;:::i;3462:60::-;3544:3;3568:2;3563:3;3556:15;3596:2;3591:3;3587:12;3580:19;;3627:2;3623;3619:11;3675:7;3670:2;3664;3661:1;3657:10;3653:2;3649:19;3645:28;3642:41;3639:61;;;3696:1;3693;3686:12;3639:61;3718:1;3709:10;;3728:238;3742:2;3739:1;3736:9;3728:238;;;3813:3;3800:17;3830:31;3855:5;3830:31;:::i;:::-;3874:18;;3760:1;3753:9;;;;;3912:12;;;;3944;;3728:238;;;-1:-1:-1;3985:5:1;-1:-1:-1;;4028:18:1;;4015:32;;-1:-1:-1;;4059:16:1;;;4056:36;;;4088:1;4085;4078:12;4056:36;;4111:63;4166:7;4155:8;4144:9;4140:24;4111:63;:::i;:::-;4101:73;;;2954:1226;;;;;:::o;4185:348::-;4269:6;4322:2;4310:9;4301:7;4297:23;4293:32;4290:52;;;4338:1;4335;4328:12;4290:52;4378:9;4365:23;4411:18;4403:6;4400:30;4397:50;;;4443:1;4440;4433:12;4397:50;4466:61;4519:7;4510:6;4499:9;4495:22;4466:61;:::i;:::-;4456:71;4185:348;-1:-1:-1;;;;4185:348:1:o;4538:892::-;4633:6;4664:2;4707;4695:9;4686:7;4682:23;4678:32;4675:52;;;4723:1;4720;4713:12;4675:52;4756:9;4750:16;4789:18;4781:6;4778:30;4775:50;;;4821:1;4818;4811:12;4775:50;4844:22;;4897:4;4889:13;;4885:27;-1:-1:-1;4875:55:1;;4926:1;4923;4916:12;4875:55;4955:2;4949:9;4978:60;4994:43;5034:2;4994:43;:::i;4978:60::-;5060:3;5084:2;5079:3;5072:15;5112:2;5107:3;5103:12;5096:19;;5143:2;5139;5135:11;5191:7;5186:2;5180;5177:1;5173:10;5169:2;5165:19;5161:28;5158:41;5155:61;;;5212:1;5209;5202:12;5155:61;5234:1;5225:10;;5244:156;5258:2;5255:1;5252:9;5244:156;;;5315:10;;5303:23;;5276:1;5269:9;;;;;5346:12;;;;5378;;5244:156;;;-1:-1:-1;5419:5:1;4538:892;-1:-1:-1;;;;;;;4538:892:1:o;5435:241::-;5491:6;5544:2;5532:9;5523:7;5519:23;5515:32;5512:52;;;5560:1;5557;5550:12;5512:52;5599:9;5586:23;5618:28;5640:5;5618:28;:::i;5681:245::-;5748:6;5801:2;5789:9;5780:7;5776:23;5772:32;5769:52;;;5817:1;5814;5807:12;5769:52;5849:9;5843:16;5868:28;5890:5;5868:28;:::i;5931:464::-;6019:6;6027;6035;6088:2;6076:9;6067:7;6063:23;6059:32;6056:52;;;6104:1;6101;6094:12;6056:52;6143:9;6130:23;6162:31;6187:5;6162:31;:::i;:::-;6212:5;-1:-1:-1;6264:2:1;6249:18;;6236:32;;-1:-1:-1;6320:2:1;6305:18;;6292:32;6333:30;6292:32;6333:30;:::i;:::-;6382:7;6372:17;;;5931:464;;;;;:::o;6400:450::-;6487:6;6495;6503;6556:2;6544:9;6535:7;6531:23;6527:32;6524:52;;;6572:1;6569;6562:12;6524:52;6595:40;6625:9;6595:40;:::i;:::-;6585:50;;6654:49;6699:2;6688:9;6684:18;6654:49;:::i;:::-;6644:59;;6746:2;6735:9;6731:18;6725:25;6790:10;6783:5;6779:22;6772:5;6769:33;6759:61;;6816:1;6813;6806:12;6855:180;6914:6;6967:2;6955:9;6946:7;6942:23;6938:32;6935:52;;;6983:1;6980;6973:12;6935:52;-1:-1:-1;7006:23:1;;6855:180;-1:-1:-1;6855:180:1:o;7040:184::-;7110:6;7163:2;7151:9;7142:7;7138:23;7134:32;7131:52;;;7179:1;7176;7169:12;7131:52;-1:-1:-1;7202:16:1;;7040:184;-1:-1:-1;7040:184:1:o;7229:309::-;7294:6;7302;7355:2;7343:9;7334:7;7330:23;7326:32;7323:52;;;7371:1;7368;7361:12;7323:52;7407:9;7394:23;7384:33;;7467:2;7456:9;7452:18;7439:32;7480:28;7502:5;7480:28;:::i;7543:306::-;7631:6;7639;7647;7700:2;7688:9;7679:7;7675:23;7671:32;7668:52;;;7716:1;7713;7706:12;7668:52;7745:9;7739:16;7729:26;;7795:2;7784:9;7780:18;7774:25;7764:35;;7839:2;7828:9;7824:18;7818:25;7808:35;;7543:306;;;;;:::o;7854:523::-;7958:6;7966;7974;7982;7990;7998;8051:3;8039:9;8030:7;8026:23;8022:33;8019:53;;;8068:1;8065;8058:12;8019:53;-1:-1:-1;;8091:23:1;;;8161:2;8146:18;;8133:32;;-1:-1:-1;8212:2:1;8197:18;;8184:32;;8263:2;8248:18;;8235:32;;-1:-1:-1;8314:3:1;8299:19;;8286:33;;-1:-1:-1;8366:3:1;8351:19;8338:33;;-1:-1:-1;7854:523:1;-1:-1:-1;7854:523:1:o;8382:274::-;8511:3;8549:6;8543:13;8565:53;8611:6;8606:3;8599:4;8591:6;8587:17;8565:53;:::i;:::-;8634:16;;;;;8382:274;-1:-1:-1;;8382:274:1:o;9760:632::-;9931:2;9983:21;;;10053:13;;9956:18;;;10075:22;;;9902:4;;9931:2;10154:15;;;;10128:2;10113:18;;;9902:4;10197:169;10211:6;10208:1;10205:13;10197:169;;;10272:13;;10260:26;;10341:15;;;;10306:12;;;;10233:1;10226:9;10197:169;;;-1:-1:-1;10383:3:1;;9760:632;-1:-1:-1;;;;;;9760:632:1:o;10589:383::-;10738:2;10727:9;10720:21;10701:4;10770:6;10764:13;10813:6;10808:2;10797:9;10793:18;10786:34;10829:66;10888:6;10883:2;10872:9;10868:18;10863:2;10855:6;10851:15;10829:66;:::i;:::-;10956:2;10935:15;-1:-1:-1;;10931:29:1;10916:45;;;;10963:2;10912:54;;10589:383;-1:-1:-1;;10589:383:1:o;12262:401::-;12464:2;12446:21;;;12503:2;12483:18;;;12476:30;12542:34;12537:2;12522:18;;12515:62;-1:-1:-1;;;12608:2:1;12593:18;;12586:35;12653:3;12638:19;;12262:401::o;14743:398::-;14945:2;14927:21;;;14984:2;14964:18;;;14957:30;15023:34;15018:2;15003:18;;14996:62;-1:-1:-1;;;15089:2:1;15074:18;;15067:32;15131:3;15116:19;;14743:398::o;17993:356::-;18195:2;18177:21;;;18214:18;;;18207:30;18273:34;18268:2;18253:18;;18246:62;18340:2;18325:18;;17993:356::o;24143:423::-;24345:2;24327:21;;;24384:2;24364:18;;;24357:30;24423:34;24418:2;24403:18;;24396:62;24494:29;24489:2;24474:18;;24467:57;24556:3;24541:19;;24143:423::o;25365:275::-;25436:2;25430:9;25501:2;25482:13;;-1:-1:-1;;25478:27:1;25466:40;;25536:18;25521:34;;25557:22;;;25518:62;25515:88;;;25583:18;;:::i;:::-;25619:2;25612:22;25365:275;;-1:-1:-1;25365:275:1:o;25645:183::-;25705:4;25738:18;25730:6;25727:30;25724:56;;;25760:18;;:::i;:::-;-1:-1:-1;25805:1:1;25801:14;25817:4;25797:25;;25645:183::o;25833:128::-;25873:3;25904:1;25900:6;25897:1;25894:13;25891:39;;;25910:18;;:::i;:::-;-1:-1:-1;25946:9:1;;25833:128::o;25966:217::-;26006:1;26032;26022:132;;26076:10;26071:3;26067:20;26064:1;26057:31;26111:4;26108:1;26101:15;26139:4;26136:1;26129:15;26022:132;-1:-1:-1;26168:9:1;;25966:217::o;26188:422::-;26277:1;26320:5;26277:1;26334:270;26355:7;26345:8;26342:21;26334:270;;;26414:4;26410:1;26406:6;26402:17;26396:4;26393:27;26390:53;;;26423:18;;:::i;:::-;26473:7;26463:8;26459:22;26456:55;;;26493:16;;;;26456:55;26572:22;;;;26532:15;;;;26334:270;;;26338:3;26188:422;;;;;:::o;26615:140::-;26673:5;26702:47;26743:4;26733:8;26729:19;26723:4;26809:5;26839:8;26829:80;;-1:-1:-1;26880:1:1;26894:5;;26829:80;26928:4;26918:76;;-1:-1:-1;26965:1:1;26979:5;;26918:76;27010:4;27028:1;27023:59;;;;27096:1;27091:130;;;;27003:218;;27023:59;27053:1;27044:10;;27067:5;;;27091:130;27128:3;27118:8;27115:17;27112:43;;;27135:18;;:::i;:::-;-1:-1:-1;;27191:1:1;27177:16;;27206:5;;27003:218;;27305:2;27295:8;27292:16;27286:3;27280:4;27277:13;27273:36;27267:2;27257:8;27254:16;27249:2;27243:4;27240:12;27236:35;27233:77;27230:159;;;-1:-1:-1;27342:19:1;;;27374:5;;27230:159;27421:34;27446:8;27440:4;27421:34;:::i;:::-;27491:6;27487:1;27483:6;27479:19;27470:7;27467:32;27464:58;;;27502:18;;:::i;:::-;27540:20;;26760:806;-1:-1:-1;;;26760:806:1:o;27571:168::-;27611:7;27677:1;27673;27669:6;27665:14;27662:1;27659:21;27654:1;27647:9;27640:17;27636:45;27633:71;;;27684:18;;:::i;:::-;-1:-1:-1;27724:9:1;;27571:168::o;27744:125::-;27784:4;27812:1;27809;27806:8;27803:34;;;27817:18;;:::i;:::-;-1:-1:-1;27854:9:1;;27744:125::o;27874:258::-;27946:1;27956:113;27970:6;27967:1;27964:13;27956:113;;;28046:11;;;28040:18;28027:11;;;28020:39;27992:2;27985:10;27956:113;;;28087:6;28084:1;28081:13;28078:48;;;28122:1;28113:6;28108:3;28104:16;28097:27;28078:48;;27874:258;;;:::o;28137:380::-;28216:1;28212:12;;;;28259;;;28280:61;;28334:4;28326:6;28322:17;28312:27;;28280:61;28387:2;28379:6;28376:14;28356:18;28353:38;28350:161;;;28433:10;28428:3;28424:20;28421:1;28414:31;28468:4;28465:1;28458:15;28496:4;28493:1;28486:15;28350:161;;28137:380;;;:::o;28522:135::-;28561:3;-1:-1:-1;;28582:17:1;;28579:43;;;28602:18;;:::i;:::-;-1:-1:-1;28649:1:1;28638:13;;28522:135::o;28662:127::-;28723:10;28718:3;28714:20;28711:1;28704:31;28754:4;28751:1;28744:15;28778:4;28775:1;28768:15;28794:127;28855:10;28850:3;28846:20;28843:1;28836:31;28886:4;28883:1;28876:15;28910:4;28907:1;28900:15;28926:127;28987:10;28982:3;28978:20;28975:1;28968:31;29018:4;29015:1;29008:15;29042:4;29039:1;29032:15;29058:131;-1:-1:-1;;;;;29133:31:1;;29123:42;;29113:70;;29179:1;29176;29169:12;29194:118;29280:5;29273:13;29266:21;29259:5;29256:32;29246:60;;29302:1;29299;29292:12
Swarm Source
ipfs://316861761c36fbee5a3759542de0b3e8726f6acb57e0b4aa968cbfbbf883ce0a
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.