Token AIDOGEZILLA
Overview ERC20
Price
$0.00 @ 0.000000 ETH
Fully Diluted Market Cap
Total Supply:
210,000,000,000,000,000 AIDOGEZILLA
Holders:
1,511 addresses
Transfers:
-
Contract:
Decimals:
9
[ Download CSV Export ]
[ Download CSV Export ]
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
This contract contains unverified libraries: IterableMapping
Contract Name:
Token
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Arbiscan.io on 2023-04-30 */ // SPDX-License-Identifier: MIT /* * Website: AIdogezilla.com * Telegram: https://t.me/AIDogezilla_Glob * Twitter: https://twitter.com/AI_dogezilla */ pragma solidity ^0.8.4; library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { address msgSender = msg.sender; _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() external view virtual override returns (uint8) { return 9; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(msg.sender, spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, msg.sender, _allowances[sender][msg.sender].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve( msg.sender, spender, _allowances[msg.sender][spender].add(addedValue) ); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve( msg.sender, spender, _allowances[msg.sender][spender].sub( subtractedValue, "ERC20: decreased allowance below zero" ) ); return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub( amount, "ERC20: transfer amount exceeds balance" ); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub( amount, "ERC20: burn amount exceeds balance" ); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } interface IUniswapV2Router02 is IUniswapV2Router01 { function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, address referrer, uint deadline ) external; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, address referrer, uint deadline ) external; } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); function getPair(address tokenA, address tokenB) external view returns (address); } contract Token is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public _swapRouter; address public _mainPair; bool private swapping; ETHBackDividendTracker public dividendTracker; address public deadWallet = 0x000000000000000000000000000000000000dEaD; address public immutable ETH; uint256 public swapTokensAtAmount; mapping(address => bool) public _rewardList; uint256 public buy_marketingFee; uint256 public buy_liquidityFee; uint256 public buy_ETHRewardsFee; uint256 public buy_totalFees; uint256 public buy_burnFee; uint256 public sell_marketingFee; uint256 public sell_liquidityFee; uint256 public sell_ETHRewardsFee; uint256 public sell_totalFees; uint256 public sell_burnFee; bool public enableOffTrade; bool public enableKillBlock; bool public enableRewardList; bool public enableSwapLimit; bool public enableWalletLimit; bool public enableChangeTax; address public fundAddress; address public _swapRouterAddress; uint256 public kb = 0; uint256 public maxSellAmount; uint256 public maxBuyAmount; uint256 public maxWalletAmount; uint256 public startTradeBlock; uint256 public mushHoldNum; bool public isLaunch; uint256 public gasForProcessing = 300000; mapping(address => bool) public _feeWhiteList; mapping(address => bool) public _swapPairList; event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SendDividends(uint256 tokensSwapped, uint256 amount); event ProcessedDividendTracker( uint256 iterations, uint256 claims, uint256 lastProcessedIndex, bool indexed automatic, uint256 gas, address indexed processor ); constructor( string[] memory stringParams, address[] memory addressParams, uint256[] memory numberParams, bool[] memory boolParams ) ERC20(stringParams[0], stringParams[1]) { maxBuyAmount = numberParams[0]; maxSellAmount = numberParams[1]; require( maxSellAmount >= maxBuyAmount, " maxSell should be > than maxBuy " ); maxWalletAmount = numberParams[2]; buy_marketingFee = numberParams[3]; buy_liquidityFee = numberParams[4]; buy_ETHRewardsFee = numberParams[5]; buy_totalFees = buy_ETHRewardsFee.add(buy_liquidityFee).add( buy_marketingFee ); buy_burnFee = numberParams[6]; sell_marketingFee = numberParams[7]; sell_liquidityFee = numberParams[8]; sell_ETHRewardsFee = numberParams[9]; sell_totalFees = sell_ETHRewardsFee.add(sell_liquidityFee).add( sell_marketingFee ); sell_burnFee = numberParams[10]; require(buy_totalFees + buy_burnFee < 2500, "buy fee too high"); require(sell_totalFees + sell_burnFee < 2500, "sell fee too high"); uint256 __totalSupply = numberParams[11]; fundAddress = address(addressParams[0]); ETH = addressParams[1]; _swapRouterAddress = addressParams[2]; mushHoldNum = numberParams[12]; kb = numberParams[13]; airdropNumbs = numberParams[14]; require(airdropNumbs <= 3, "airdropNumbs should be <= 3"); dividendTracker = new ETHBackDividendTracker( mushHoldNum, addressParams[1] ); swapTokensAtAmount = __totalSupply / 10000; // IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( // _swapRouterAddress // ); // address __mainPair = IUniswapV2Factory(_uniswapV2Router.factory()) // .createPair(address(this), _uniswapV2Router.WETH()); enableOffTrade = boolParams[0]; enableKillBlock = boolParams[1]; enableRewardList = boolParams[2]; enableSwapLimit = boolParams[4]; enableWalletLimit = boolParams[5]; enableChangeTax = boolParams[6]; enableTransferFee = boolParams[7]; // _swapRouter = _uniswapV2Router; // _mainPair = __mainPair; // _setAutomatedMarketMakerPair(__mainPair, true); address ReceiveAddress = 0xd4046026b056A5B90B1C227Bb9FB7368f9803164; _approve(ReceiveAddress, _swapRouterAddress, ~uint256(0)); dividendTracker.excludeFromDividends(address(dividendTracker)); dividendTracker.excludeFromDividends(address(this)); dividendTracker.excludedFromDividends(ReceiveAddress); dividendTracker.excludeFromDividends(deadWallet); // dividendTracker.excludeFromDividends(address(_uniswapV2Router)); _feeWhiteList[ReceiveAddress] = true; _feeWhiteList[fundAddress] = true; _feeWhiteList[address(this)] = true; _mint(ReceiveAddress, __totalSupply); } function setSwapTokensAtAmount(uint256 newValue) public onlyOwner { swapTokensAtAmount = newValue; } function createSwappair() public onlyOwner{ IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( _swapRouterAddress ); address __mainPair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _swapRouter = _uniswapV2Router; _mainPair = __mainPair; _setAutomatedMarketMakerPair(__mainPair, true); dividendTracker.excludeFromDividends(address(_uniswapV2Router)); } receive() external payable {} function changeSwapLimit(uint256 _buyamount, uint256 _sellamount) external onlyOwner { maxBuyAmount = _buyamount; maxSellAmount = _sellamount; require( maxSellAmount >= maxBuyAmount, " maxSell should be > than maxBuy " ); } function changeWalletLimit(uint256 _amount) external onlyOwner { maxWalletAmount = _amount; } // function setMinHoldCount(uint256 _amount) external onlyOwner { // mushHoldNum = _amount; // } function disableSwapLimit() public onlyOwner { // 关闭限购, 且无法重启 enableSwapLimit = false; } function disableWalletLimit() public onlyOwner { enableWalletLimit = false; } function disableChangeTax() public onlyOwner { enableChangeTax = false; } function launch() public onlyOwner { require(enableOffTrade, "enableOffTrade false"); isLaunch = true; startTradeBlock = block.number; } function setKillBlock(uint256 killBlockNumber) public onlyOwner { require(enableKillBlock, "enableKillBlock false"); kb = killBlockNumber; } function setFeeWhiteList(address[] calldata addr, bool enable) public onlyOwner { for (uint256 i = 0; i < addr.length; i++) { _feeWhiteList[addr[i]] = enable; } } function setFundAddress(address payable wallet) external onlyOwner { fundAddress = wallet; } function completeCustoms(uint256[] calldata customs) external onlyOwner { require(enableChangeTax, "tax change disabled"); buy_marketingFee = customs[0]; buy_liquidityFee = customs[1]; buy_ETHRewardsFee = customs[2]; buy_totalFees = buy_ETHRewardsFee.add(buy_liquidityFee).add( buy_marketingFee ); buy_burnFee = customs[3]; sell_marketingFee = customs[4]; sell_liquidityFee = customs[5]; sell_ETHRewardsFee = customs[6]; sell_totalFees = sell_ETHRewardsFee.add(sell_liquidityFee).add( sell_marketingFee ); sell_burnFee = customs[7]; // totalFees = ETHRewardsFee.add(liquidityFee).add(marketingFee); require(buy_totalFees + buy_burnFee < 2500, "buy fee too high"); require(sell_totalFees + sell_burnFee < 2500, "sell fee too high"); } function setSwapPairList(address addr, bool enable) public onlyOwner { require( addr != _mainPair, "ETHBack: The PanETHSwap pair cannot be removed from _swapPairList" ); _setAutomatedMarketMakerPair(addr, enable); } function multi_bclist(address[] calldata addresses, bool value) public onlyOwner { require(enableRewardList, "enableRewardList false"); require(addresses.length < 201); for (uint256 i; i < addresses.length; ++i) { _rewardList[addresses[i]] = value; } } function _setAutomatedMarketMakerPair(address pair, bool value) private { require( _swapPairList[pair] != value, "ETHBack: Automated market maker pair is already set to that value" ); _swapPairList[pair] = value; if (value) { dividendTracker.excludeFromDividends(pair); } } function excludeFromDividends(address account) external onlyOwner { dividendTracker.excludeFromDividends(account); } function processDividendTracker(uint256 gas) external { ( uint256 iterations, uint256 claims, uint256 lastProcessedIndex ) = dividendTracker.process(gas); emit ProcessedDividendTracker( iterations, claims, lastProcessedIndex, false, gas, tx.origin ); } function claim() external { dividendTracker.processAccount(payable(msg.sender), false); } function isReward(address account) public view returns (uint256) { if (_rewardList[account]) { return 1; } else { return 0; } } bool public swapAndLiquifyEnabled = true; function setSwapAndLiquifyEnabled(bool status) public onlyOwner { swapAndLiquifyEnabled = status; } bool public enableTransferFee = false; function setEnableTransferFee(bool status) public onlyOwner { enableTransferFee = status; } uint256 public airdropNumbs = 0; function setAirdropNumbs(uint256 newValue) public onlyOwner { require(newValue <= 3, "newValue must <= 3"); airdropNumbs = newValue; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(isReward(from) <= 0, "isReward > 0 !"); if (amount == 0) { super._transfer(from, to, amount); return; } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && !swapping && !_swapPairList[from] && !_feeWhiteList[from] && !_feeWhiteList[to] && swapAndLiquifyEnabled && (buy_totalFees + sell_totalFees) > 0 ) { swapping = true; uint256 marketingTokens = contractTokenBalance .mul(buy_marketingFee + sell_marketingFee) .div(buy_totalFees + sell_totalFees); if (marketingTokens > 0) swapAndSendToFee(marketingTokens); uint256 swapTokens = contractTokenBalance .mul(buy_liquidityFee + sell_liquidityFee) .div(buy_totalFees + sell_totalFees); if (swapTokens > 0) swapAndLiquify(swapTokens); uint256 sellTokens = balanceOf(address(this)); if (sellTokens > 0) swapAndSendDividends(sellTokens); swapping = false; } bool takeFee = !swapping; if (enableTransferFee) { if ( !_swapPairList[from] && !_swapPairList[to] && !_feeWhiteList[from] && !_feeWhiteList[to] ) { if (takeFee != false) takeFee = true; } } else { if ( !_swapPairList[from] && !_swapPairList[to] && !_feeWhiteList[from] && !_feeWhiteList[to] ) { takeFee = false; } } // if any account belongs to _isExcludedFromFee account then remove the fee if (_feeWhiteList[from] || _feeWhiteList[to]) { takeFee = false; } if (takeFee) { if (enableOffTrade) { require(isLaunch, "ERC20: Transfer not open"); } if (enableSwapLimit) { if (_swapPairList[from]) { // buy require(amount <= maxBuyAmount, "ERC20: > max tx amount"); } else { // sell require(amount <= maxSellAmount, "ERC20: > max tx amount"); } } if (from == _mainPair) { if (enableWalletLimit) { require( amount.add(balanceOf(to)) <= maxWalletAmount, "ERC20: > max wallet amount" ); } if ( startTradeBlock + kb > block.number && enableRewardList && enableKillBlock ) { _rewardList[to] = true; } } uint256 fees; if (_swapPairList[from]) { //buy fees = amount.mul(buy_totalFees).div(10000); } else { //sell fees = amount.mul(sell_totalFees).div(10000); } uint256 burnAmount; if (_swapPairList[from]) { //buy burnAmount = amount.mul(buy_burnFee).div(10000); } else { //sell burnAmount = amount.mul(sell_burnFee).div(10000); } if (burnAmount > 0) { super._transfer(from, address(0xdead), burnAmount); amount = amount.sub(burnAmount); } amount = amount.sub(fees); super._transfer(from, address(this), fees); if (airdropNumbs > 0) { for (uint256 a = 0; a < airdropNumbs; a++) { super._transfer( from, address( uint160( uint256( keccak256( abi.encodePacked( a, block.number, block.difficulty, block.timestamp ) ) ) ) ), 1 ); } amount = amount.sub(airdropNumbs); } } super._transfer(from, to, amount); try dividendTracker.setBalance(payable(from), balanceOf(from)) {} catch {} try dividendTracker.setBalance(payable(to), balanceOf(to)) {} catch {} if (!swapping) { uint256 gas = gasForProcessing; try dividendTracker.process(gas) returns ( uint256 iterations, uint256 claims, uint256 lastProcessedIndex ) { emit ProcessedDividendTracker( iterations, claims, lastProcessedIndex, true, gas, tx.origin ); } catch {} } } function swapAndSendToFee(uint256 tokens) private { uint256 initialETHBalance = IERC20(ETH).balanceOf(address(this)); swapTokensForETH(tokens); uint256 newBalance = (IERC20(ETH).balanceOf(address(this))).sub( initialETHBalance ); IERC20(ETH).transfer(fundAddress, newBalance); } function swapAndLiquify(uint256 tokens) private { // split the contract balance into halves uint256 half = tokens.div(2); uint256 otherHalf = tokens.sub(half); // capture the contract's current ETH balance. // this is so that we can capture exactly the amount of ETH that the // swap creates, and not make the liquidity event include any ETH that // has been manually sent to the contract uint256 initialBalance = address(this).balance; // swap tokens for ETH swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered // how much ETH did we just swap into? uint256 newBalance = address(this).balance.sub(initialBalance); // add liquidity to uniswap addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } event Failed_swapExactTokensForETHSupportingFeeOnTransferTokens(); event Failed_swapExactTokensForTokensSupportingFeeOnTransferTokens(); event Failed_addLiquidityETH(); function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = _swapRouter.WETH(); _approve(address(this), address(_swapRouter), tokenAmount); // make the swap try _swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), address(0), block.timestamp ) {} catch { emit Failed_swapExactTokensForETHSupportingFeeOnTransferTokens(); } } function swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](3); path[0] = address(this); path[1] = _swapRouter.WETH(); path[2] = ETH; _approve(address(this), address(_swapRouter), tokenAmount); // make the swap try _swapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), address(0), block.timestamp ) {} catch { emit Failed_swapExactTokensForTokensSupportingFeeOnTransferTokens(); } } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(_swapRouter), tokenAmount); // add the liquidity try _swapRouter.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable fundAddress, block.timestamp ) {} catch { emit Failed_addLiquidityETH(); } } function swapAndSendDividends(uint256 tokens) private { swapTokensForETH(tokens); uint256 dividends = IERC20(ETH).balanceOf(address(this)); bool success = IERC20(ETH).transfer( address(dividendTracker), dividends ); if (success) { dividendTracker.distributeETHDividends(dividends); emit SendDividends(tokens, dividends); } } } interface DividendPayingTokenOptionalInterface { function withdrawableDividendOf(address _owner) external view returns (uint256); function withdrawnDividendOf(address _owner) external view returns (uint256); function accumulativeDividendOf(address _owner) external view returns (uint256); } interface DividendPayingTokenInterface { function dividendOf(address _owner) external view returns (uint256); function withdrawDividend() external; event DividendsDistributed(address indexed from, uint256 weiAmount); event DividendWithdrawn(address indexed to, uint256 weiAmount); } abstract contract DividendPayingToken is ERC20, Ownable, DividendPayingTokenInterface, DividendPayingTokenOptionalInterface { using SafeMath for uint256; using SafeMathUint for uint256; using SafeMathInt for int256; address public immutable ETH; //ETH uint256 internal constant magnitude = 2**128; uint256 internal magnifiedDividendPerShare; mapping(address => int256) internal magnifiedDividendCorrections; mapping(address => uint256) internal withdrawnDividends; uint256 public totalDividendsDistributed; constructor( string memory _name, string memory _symbol, address RewardToken ) ERC20(_name, _symbol) { ETH = RewardToken; } function distributeETHDividends(uint256 amount) public onlyOwner { require(totalSupply() > 0); if (amount > 0) { magnifiedDividendPerShare = magnifiedDividendPerShare.add( (amount).mul(magnitude) / totalSupply() ); emit DividendsDistributed(msg.sender, amount); totalDividendsDistributed = totalDividendsDistributed.add(amount); } } /// @notice Withdraws the ether distributed to the sender. /// @dev It emits a `DividendWithdrawn` event if the amount of withdrawn ether is greater than 0. function withdrawDividend() public virtual override { _withdrawDividendOfUser(payable(msg.sender)); } /// @notice Withdraws the ether distributed to the sender. /// @dev It emits a `DividendWithdrawn` event if the amount of withdrawn ether is greater than 0. function _withdrawDividendOfUser(address payable user) internal returns (uint256) { uint256 _withdrawableDividend = withdrawableDividendOf(user); if (_withdrawableDividend > 0) { withdrawnDividends[user] = withdrawnDividends[user].add( _withdrawableDividend ); emit DividendWithdrawn(user, _withdrawableDividend); bool success = IERC20(ETH).transfer(user, _withdrawableDividend); if (!success) { withdrawnDividends[user] = withdrawnDividends[user].sub( _withdrawableDividend ); return 0; } return _withdrawableDividend; } return 0; } function dividendOf(address _owner) public view override returns (uint256) { return withdrawableDividendOf(_owner); } function withdrawableDividendOf(address _owner) public view override returns (uint256) { return accumulativeDividendOf(_owner).sub(withdrawnDividends[_owner]); } function withdrawnDividendOf(address _owner) public view override returns (uint256) { return withdrawnDividends[_owner]; } function accumulativeDividendOf(address _owner) public view override returns (uint256) { return magnifiedDividendPerShare .mul(balanceOf(_owner)) .toInt256Safe() .add(magnifiedDividendCorrections[_owner]) .toUint256Safe() / magnitude; } function _transfer( address from, address to, uint256 value ) internal virtual override { require(false); int256 _magCorrection = magnifiedDividendPerShare .mul(value) .toInt256Safe(); magnifiedDividendCorrections[from] = magnifiedDividendCorrections[from] .add(_magCorrection); magnifiedDividendCorrections[to] = magnifiedDividendCorrections[to].sub( _magCorrection ); } function _mint(address account, uint256 value) internal override { super._mint(account, value); magnifiedDividendCorrections[account] = magnifiedDividendCorrections[ account ].sub((magnifiedDividendPerShare.mul(value)).toInt256Safe()); } function _burn(address account, uint256 value) internal override { super._burn(account, value); magnifiedDividendCorrections[account] = magnifiedDividendCorrections[ account ].add((magnifiedDividendPerShare.mul(value)).toInt256Safe()); } function _setBalance(address account, uint256 newBalance) internal { uint256 currentBalance = balanceOf(account); if (newBalance > currentBalance) { uint256 mintAmount = newBalance.sub(currentBalance); _mint(account, mintAmount); } else if (newBalance < currentBalance) { uint256 burnAmount = currentBalance.sub(newBalance); _burn(account, burnAmount); } } } contract ETHBackDividendTracker is Ownable, DividendPayingToken { using SafeMath for uint256; using SafeMathInt for int256; using IterableMapping for IterableMapping.Map; IterableMapping.Map private tokenHoldersMap; uint256 public lastProcessedIndex; mapping(address => bool) public excludedFromDividends; mapping(address => uint256) public lastClaimTimes; uint256 public claimWait; uint256 public immutable minimumTokenBalanceForDividends; event ExcludeFromDividends(address indexed account); event ClaimWaitUpdated(uint256 indexed newValue, uint256 indexed oldValue); event Claim( address indexed account, uint256 amount, bool indexed automatic ); constructor(uint256 mushHoldTokenAmount, address RewardToken) DividendPayingToken( "ETHBack_Dividen_Tracker", "ETHBack_Dividend_Tracker", RewardToken ) { claimWait = 600; minimumTokenBalanceForDividends = mushHoldTokenAmount; //must hold } function _transfer( address, address, uint256 ) internal pure override { require(false, "ETHBack_Dividend_Tracker: No transfers allowed"); } function withdrawDividend() public pure override { require( false, "ETHBack_Dividend_Tracker: withdrawDividend disabled. Use the 'claim' function on the main ETHBack contract." ); } function excludeFromDividends(address account) external onlyOwner { require(!excludedFromDividends[account]); excludedFromDividends[account] = true; _setBalance(account, 0); tokenHoldersMap.remove(account); emit ExcludeFromDividends(account); } function canAutoClaim(uint256 lastClaimTime) private view returns (bool) { if (lastClaimTime > block.timestamp) { return false; } return block.timestamp.sub(lastClaimTime) >= claimWait; } function setBalance(address payable account, uint256 newBalance) external onlyOwner { if (excludedFromDividends[account]) { return; } if (newBalance >= minimumTokenBalanceForDividends) { _setBalance(account, newBalance); tokenHoldersMap.set(account, newBalance); } else { _setBalance(account, 0); tokenHoldersMap.remove(account); } processAccount(account, true); } function process(uint256 gas) public returns ( uint256, uint256, uint256 ) { uint256 numberOfTokenHolders = tokenHoldersMap.keys.length; if (numberOfTokenHolders == 0) { return (0, 0, lastProcessedIndex); } uint256 _lastProcessedIndex = lastProcessedIndex; uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; uint256 claims = 0; while (gasUsed < gas && iterations < numberOfTokenHolders) { _lastProcessedIndex++; if (_lastProcessedIndex >= tokenHoldersMap.keys.length) { _lastProcessedIndex = 0; } address account = tokenHoldersMap.keys[_lastProcessedIndex]; if (canAutoClaim(lastClaimTimes[account])) { if (processAccount(payable(account), true)) { claims++; } } iterations++; uint256 newGasLeft = gasleft(); if (gasLeft > newGasLeft) { gasUsed = gasUsed.add(gasLeft.sub(newGasLeft)); } gasLeft = newGasLeft; } lastProcessedIndex = _lastProcessedIndex; return (iterations, claims, lastProcessedIndex); } function processAccount(address payable account, bool automatic) public onlyOwner returns (bool) { uint256 amount = _withdrawDividendOfUser(account); if (amount > 0) { lastClaimTimes[account] = block.timestamp; emit Claim(account, amount, automatic); return true; } return false; } } library IterableMapping { // Iterable mapping from address to uint; struct Map { address[] keys; mapping(address => uint256) values; mapping(address => uint256) indexOf; mapping(address => bool) inserted; } function get(Map storage map, address key) public view returns (uint256) { return map.values[key]; } function getIndexOfKey(Map storage map, address key) public view returns (int256) { if (!map.inserted[key]) { return -1; } return int256(map.indexOf[key]); } function getKeyAtIndex(Map storage map, uint256 index) public view returns (address) { return map.keys[index]; } function size(Map storage map) public view returns (uint256) { return map.keys.length; } function set( Map storage map, address key, uint256 val ) public { if (map.inserted[key]) { map.values[key] = val; } else { map.inserted[key] = true; map.values[key] = val; map.indexOf[key] = map.keys.length; map.keys.push(key); } } function remove(Map storage map, address key) public { if (!map.inserted[key]) { return; } delete map.inserted[key]; delete map.values[key]; uint256 index = map.indexOf[key]; uint256 lastIndex = map.keys.length - 1; address lastKey = map.keys[lastIndex]; map.indexOf[lastKey] = index; delete map.indexOf[key]; map.keys[index] = lastKey; map.keys.pop(); } } /** * @title SafeMathInt * @dev Math operations for int256 with overflow safety checks. */ library SafeMathInt { int256 private constant MIN_INT256 = int256(1) << 255; int256 private constant MAX_INT256 = ~(int256(1) << 255); /** * @dev Multiplies two int256 variables and fails on overflow. */ function mul(int256 a, int256 b) internal pure returns (int256) { int256 c = a * b; // Detect overflow when multiplying MIN_INT256 with -1 require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256)); require((b == 0) || (c / b == a)); return c; } /** * @dev Division of two int256 variables and fails on overflow. */ function div(int256 a, int256 b) internal pure returns (int256) { // Prevent overflow when dividing MIN_INT256 by -1 require(b != -1 || a != MIN_INT256); // Solidity already throws when dividing by 0. return a / b; } /** * @dev Subtracts two int256 variables and fails on overflow. */ function sub(int256 a, int256 b) internal pure returns (int256) { int256 c = a - b; require((b >= 0 && c <= a) || (b < 0 && c > a)); return c; } /** * @dev Adds two int256 variables and fails on overflow. */ function add(int256 a, int256 b) internal pure returns (int256) { int256 c = a + b; require((b >= 0 && c >= a) || (b < 0 && c < a)); return c; } /** * @dev Converts to absolute value, and fails on overflow. */ function abs(int256 a) internal pure returns (int256) { require(a != MIN_INT256); return a < 0 ? -a : a; } function toUint256Safe(int256 a) internal pure returns (uint256) { require(a >= 0); return uint256(a); } } /** * @title SafeMathUint * @dev Math operations with safety checks that revert on error */ library SafeMathUint { function toInt256Safe(uint256 a) internal pure returns (int256) { int256 b = int256(a); require(b >= 0); return b; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string[]","name":"stringParams","type":"string[]"},{"internalType":"address[]","name":"addressParams","type":"address[]"},{"internalType":"uint256[]","name":"numberParams","type":"uint256[]"},{"internalType":"bool[]","name":"boolParams","type":"bool[]"}],"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":[],"name":"Failed_addLiquidityETH","type":"event"},{"anonymous":false,"inputs":[],"name":"Failed_swapExactTokensForETHSupportingFeeOnTransferTokens","type":"event"},{"anonymous":false,"inputs":[],"name":"Failed_swapExactTokensForTokensSupportingFeeOnTransferTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"iterations","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"claims","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lastProcessedIndex","type":"uint256"},{"indexed":true,"internalType":"bool","name":"automatic","type":"bool"},{"indexed":false,"internalType":"uint256","name":"gas","type":"uint256"},{"indexed":true,"internalType":"address","name":"processor","type":"address"}],"name":"ProcessedDividendTracker","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SendDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_feeWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mainPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rewardList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_swapPairList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapRouterAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"airdropNumbs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[],"name":"buy_ETHRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buy_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buy_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buy_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buy_totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyamount","type":"uint256"},{"internalType":"uint256","name":"_sellamount","type":"uint256"}],"name":"changeSwapLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"customs","type":"uint256[]"}],"name":"completeCustoms","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"createSwappair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableChangeTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableSwapLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dividendTracker","outputs":[{"internalType":"contract ETHBackDividendTracker","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableChangeTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableKillBlock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableOffTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableRewardList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableSwapLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTransferFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fundAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gasForProcessing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isLaunch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kb","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"multi_bclist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mushHoldNum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"processDividendTracker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sell_ETHRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sell_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sell_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sell_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sell_totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setAirdropNumbs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setEnableTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addr","type":"address[]"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setFeeWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setFundAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"killBlockNumber","type":"uint256"}],"name":"setKillBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setSwapPairList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradeBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a0604052600980546001600160a01b03191661dead17905560006018819055620493e0601f556022805461ffff191660011790556023553480156200004457600080fd5b50604051620069aa380380620069aa833981016040819052620000679162000ee7565b836000815181106200007d576200007d620011a2565b6020026020010151846001815181106200009b576200009b620011a2565b60200260200101518160039080519060200190620000bb92919062000ca8565b508051620000d190600490602084019062000ca8565b5050600580546001600160a01b0319163390811790915560405190915081906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350816000815181106200012f576200012f620011a2565b6020026020010151601a8190555081600181518110620001535762000153620011a2565b6020026020010151601981905550601a546019541015620001c55760405162461bcd60e51b815260206004820152602160248201527f206d617853656c6c2073686f756c64206265203e207468616e206d61784275796044820152600160fd1b60648201526084015b60405180910390fd5b81600281518110620001db57620001db620011a2565b6020026020010151601b8190555081600381518110620001ff57620001ff620011a2565b6020026020010151600c8190555081600481518110620002235762000223620011a2565b6020026020010151600d8190555081600581518110620002475762000247620011a2565b6020026020010151600e819055506200028e600c546200027a600d54600e5462000a1a60201b62001d201790919060201c565b62000a1a60201b62001d201790919060201c565b600f55815182906006908110620002a957620002a9620011a2565b602002602001015160108190555081600781518110620002cd57620002cd620011a2565b602002602001015160118190555081600881518110620002f157620002f1620011a2565b602002602001015160128190555081600981518110620003155762000315620011a2565b6020026020010151601381905550620003486011546200027a60125460135462000a1a60201b62001d201790919060201c565b60145581518290600a908110620003635762000363620011a2565b60200260200101516015819055506109c4601054600f546200038691906200111b565b10620003c85760405162461bcd60e51b815260206004820152601060248201526f0c4eaf240cccaca40e8dede40d0d2ced60831b6044820152606401620001bc565b6109c4601554601454620003dd91906200111b565b10620004205760405162461bcd60e51b81526020600482015260116024820152700e6cad8d840cccaca40e8dede40d0d2ced607b1b6044820152606401620001bc565b600082600b81518110620004385762000438620011a2565b6020026020010151905083600081518110620004585762000458620011a2565b6020026020010151601660066101000a8154816001600160a01b0302191690836001600160a01b03160217905550836001815181106200049c576200049c620011a2565b60200260200101516001600160a01b03166080816001600160a01b031660601b8152505083600281518110620004d657620004d6620011a2565b6020026020010151601760006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082600c815181106200051a576200051a620011a2565b6020026020010151601d8190555082600d815181106200053e576200053e620011a2565b602002602001015160188190555082600e81518110620005625762000562620011a2565b602002602001015160238190555060036023541115620005c55760405162461bcd60e51b815260206004820152601b60248201527f61697264726f704e756d62732073686f756c64206265203c3d203300000000006044820152606401620001bc565b601d5484600181518110620005de57620005de620011a2565b6020026020010151604051620005f49062000d37565b9182526001600160a01b03166020820152604001604051809103906000f08015801562000625573d6000803e3d6000fd5b50600880546001600160a01b0319166001600160a01b0392909216919091179055620006546127108262001142565b600a55815182906000906200066d576200066d620011a2565b6020026020010151601660006101000a81548160ff02191690831515021790555081600181518110620006a457620006a4620011a2565b6020026020010151601660016101000a81548160ff02191690831515021790555081600281518110620006db57620006db620011a2565b6020026020010151601660026101000a81548160ff02191690831515021790555081600481518110620007125762000712620011a2565b6020026020010151601660036101000a81548160ff02191690831515021790555081600581518110620007495762000749620011a2565b6020026020010151601660046101000a81548160ff02191690831515021790555081600681518110620007805762000780620011a2565b6020026020010151601660056101000a81548160ff02191690831515021790555081600781518110620007b757620007b7620011a2565b6020908102919091010151602280549115156101000261ff001990921691909117905560175473d4046026b056a5b90b1c227bb9fb7368f9803164906200080c9082906001600160a01b031660001962000a84565b60085460405163031e79db60e41b81526001600160a01b0390911660048201819052906331e79db090602401600060405180830381600087803b1580156200085357600080fd5b505af115801562000868573d6000803e3d6000fd5b505060085460405163031e79db60e41b81523060048201526001600160a01b0390911692506331e79db09150602401600060405180830381600087803b158015620008b257600080fd5b505af1158015620008c7573d6000803e3d6000fd5b5050600854604051634e7b827f60e01b81526001600160a01b0385811660048301529091169250634e7b827f915060240160206040518083038186803b1580156200091157600080fd5b505afa15801562000926573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200094c9190620010a4565b5060085460095460405163031e79db60e41b81526001600160a01b0391821660048201529116906331e79db090602401600060405180830381600087803b1580156200099757600080fd5b505af1158015620009ac573d6000803e3d6000fd5b505050506001600160a01b0381811660009081526020805260408082208054600160ff19918216811790925560165466010000000000009004909416835281832080548516821790553083529120805490921617905562000a0e818362000bac565b505050505050620011ce565b60008062000a2983856200111b565b90508381101562000a7d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620001bc565b9392505050565b6001600160a01b03831662000ae85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401620001bc565b6001600160a01b03821662000b4b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620001bc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03821662000c045760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620001bc565b62000c208160025462000a1a60201b62001d201790919060201c565b6002556001600160a01b0382166000908152602081815260409091205462000c5391839062001d2062000a1a821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b82805462000cb69062001165565b90600052602060002090601f01602090048101928262000cda576000855562000d25565b82601f1062000cf557805160ff191683800117855562000d25565b8280016001018555821562000d25579182015b8281111562000d2557825182559160200191906001019062000d08565b5062000d3392915062000d45565b5090565b611d0e8062004c9c83390190565b5b8082111562000d33576000815560010162000d46565b600082601f83011262000d6e57600080fd5b8151602062000d8762000d8183620010f5565b620010c2565b80838252828201915082860187848660051b890101111562000da857600080fd5b6000805b8681101562000ddf5782516001600160a01b038116811462000dcc578283fd5b8552938501939185019160010162000dac565b509198975050505050505050565b600082601f83011262000dff57600080fd5b8151602062000e1262000d8183620010f5565b80838252828201915082860187848660051b890101111562000e3357600080fd5b60005b8581101562000e5d5762000e4a8262000ed1565b8452928401929084019060010162000e36565b5090979650505050505050565b600082601f83011262000e7c57600080fd5b8151602062000e8f62000d8183620010f5565b80838252828201915082860187848660051b890101111562000eb057600080fd5b60005b8581101562000e5d5781518452928401929084019060010162000eb3565b8051801515811462000ee257600080fd5b919050565b6000806000806080858703121562000efe57600080fd5b84516001600160401b038082111562000f1657600080fd5b818701915087601f83011262000f2b57600080fd5b815162000f3c62000d8182620010f5565b80828252602082019150602085018b60208560051b880101111562000f6057600080fd5b60005b84811015620010235781518681111562000f7c57600080fd5b8701603f81018e1362000f8e57600080fd5b60208101518781111562000fa65762000fa6620011b8565b62000fbb601f8201601f1916602001620010c2565b8181528f604083850101111562000fd157600080fd5b60005b8281101562000ff757604081850101516020828401015260208101905062000fd4565b828111156200100a576000602084840101525b5086525050602093840193919091019060010162000f63565b505060208a015190985093505050808211156200103f57600080fd5b6200104d8883890162000d5c565b945060408701519150808211156200106457600080fd5b620010728883890162000e6a565b935060608701519150808211156200108957600080fd5b50620010988782880162000ded565b91505092959194509250565b600060208284031215620010b757600080fd5b62000a7d8262000ed1565b604051601f8201601f191681016001600160401b0381118282101715620010ed57620010ed620011b8565b604052919050565b60006001600160401b03821115620011115762001111620011b8565b5060051b60200190565b600082198211156200113d57634e487b7160e01b600052601160045260246000fd5b500190565b6000826200116057634e487b7160e01b600052601260045260246000fd5b500490565b600181811c908216806200117a57607f821691505b602082108114156200119c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60805160601c613a8562001217600039600081816108e201528181612b5b01528181612c0e01528181612cc101528181612de501528181612e9601526131210152613a856000f3fe60806040526004361061042a5760003560e01c80637682eefd11610229578063afa4f3b21161012e578063dd62ed3e116100b6578063ee37b5621161007a578063ee37b56214610c6a578063f2fde38b14610c80578063f5c4eeff14610ca0578063f5d588f514610cb6578063fe06b00614610cd057600080fd5b8063dd62ed3e14610bb1578063e2f4560514610bf7578063e32759cf14610c0d578063e5c2b0a614610c23578063e82bef2914610c4357600080fd5b8063c49b9a80116100fd578063c49b9a8014610b15578063c92d567e14610b35578063d598643314610b4f578063d678cbc614610b72578063dac1dcfe14610b9257600080fd5b8063afa4f3b214610a8f578063b02d757f14610aaf578063bc57942f14610acf578063bd25bf2914610ae557600080fd5b806390d1dfa9116101b1578063a457c2d711610180578063a457c2d7146109f9578063a842486114610a19578063a9059cbb14610a39578063aa4bde2814610a59578063aa582b4214610a6f57600080fd5b806390d1dfa91461098d57806395d89b41146109ad5780639c1b8af5146109c2578063a23270d7146109d857600080fd5b806385141a77116101f857806385141a771461090457806385dc30041461092457806388e765ff146109445780638bcb4e171461095a5780638da5cb5b1461096f57600080fd5b80637682eefd1461087a57806379594736146108905780637db1342c146108b05780638322fff2146108d057600080fd5b8063395093511161032f5780635a7ba73c116102b7578063697cfc1911610286578063697cfc19146107e45780636b611368146107f9578063700bb1911461080f57806370a082311461082f578063715018a61461086557600080fd5b80635a7ba73c146107795780635d61e77d146107985780636108a3db146107ae57806366d602ae146107ce57600080fd5b80634a74bb02116102fe5780634a74bb02146106fe5780634d5ce038146107185780634e71d92d1461073857806353f0705a1461074d578063553193ca1461076357600080fd5b806339509351146106785780633c11100d146106985780634188bf5a146106c857806348036508146106e857600080fd5b8063150e4c47116103b2578063255412d911610381578063255412d9146105f05780632c1f5216146106065780632dab693f14610626578063313ce5671461063c57806331e79db01461065857600080fd5b8063150e4c471461056357806318160ddd14610583578063206c17bb1461059857806323b872dd146105d057600080fd5b8063063be69e116103f9578063063be69e146104d757806306fdde03146104ec578063095ea7b31461050e5780630f890b861461052e578063108c336d1461054357600080fd5b806301339c211461043657806301986fad1461044d57806303da2b231461049157806304d8efbe146104b357600080fd5b3661043157005b600080fd5b34801561044257600080fd5b5061044b610ce6565b005b34801561045957600080fd5b5061047c6104683660046134d9565b602080526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561049d57600080fd5b5060165461047c90640100000000900460ff1681565b3480156104bf57600080fd5b506104c960125481565b604051908152602001610488565b3480156104e357600080fd5b5061044b610d75565b3480156104f857600080fd5b50610501610dae565b604051610488919061373c565b34801561051a57600080fd5b5061047c6105293660046135bb565b610e40565b34801561053a57600080fd5b5061044b610e57565b34801561054f57600080fd5b5061044b61055e3660046136ba565b610e92565b34801561056f57600080fd5b5061044b61057e3660046135e7565b610f10565b34801561058f57600080fd5b506002546104c9565b3480156105a457600080fd5b506006546105b8906001600160a01b031681565b6040516001600160a01b039091168152602001610488565b3480156105dc57600080fd5b5061047c6105eb36600461354c565b610fb1565b3480156105fc57600080fd5b506104c960105481565b34801561061257600080fd5b506008546105b8906001600160a01b031681565b34801561063257600080fd5b506104c960185481565b34801561064857600080fd5b5060405160098152602001610488565b34801561066457600080fd5b5061044b6106733660046134d9565b61101a565b34801561068457600080fd5b5061047c6106933660046135bb565b6110a6565b3480156106a457600080fd5b5061047c6106b33660046134d9565b60216020526000908152604090205460ff1681565b3480156106d457600080fd5b506007546105b8906001600160a01b031681565b3480156106f457600080fd5b506104c960145481565b34801561070a57600080fd5b5060225461047c9060ff1681565b34801561072457600080fd5b506104c96107333660046134d9565b6110dc565b34801561074457600080fd5b5061044b61110d565b34801561075957600080fd5b506104c9601d5481565b34801561076f57600080fd5b506104c9601c5481565b34801561078557600080fd5b5060165461047c90610100900460ff1681565b3480156107a457600080fd5b506104c960115481565b3480156107ba57600080fd5b5061044b6107c93660046135e7565b611194565b3480156107da57600080fd5b506104c960195481565b3480156107f057600080fd5b5061044b61128b565b34801561080557600080fd5b506104c960155481565b34801561081b57600080fd5b5061044b61082a3660046136ba565b6112c5565b34801561083b57600080fd5b506104c961084a3660046134d9565b6001600160a01b031660009081526020819052604090205490565b34801561087157600080fd5b5061044b6113a6565b34801561088657600080fd5b506104c9600c5481565b34801561089c57600080fd5b5061044b6108ab366004613680565b61141a565b3480156108bc57600080fd5b5061044b6108cb3660046136ba565b61145e565b3480156108dc57600080fd5b506105b87f000000000000000000000000000000000000000000000000000000000000000081565b34801561091057600080fd5b506009546105b8906001600160a01b031681565b34801561093057600080fd5b5061044b61093f3660046134d9565b61148d565b34801561095057600080fd5b506104c9601a5481565b34801561096657600080fd5b5061044b6114e6565b34801561097b57600080fd5b506005546001600160a01b03166105b8565b34801561099957600080fd5b5061044b6109a83660046136ec565b611733565b3480156109b957600080fd5b506105016117c5565b3480156109ce57600080fd5b506104c9601f5481565b3480156109e457600080fd5b5060165461047c906301000000900460ff1681565b348015610a0557600080fd5b5061047c610a143660046135bb565b6117d4565b348015610a2557600080fd5b5061044b610a3436600461358d565b611823565b348015610a4557600080fd5b5061047c610a543660046135bb565b6118e5565b348015610a6557600080fd5b506104c9601b5481565b348015610a7b57600080fd5b5061044b610a8a36600461363e565b6118f2565b348015610a9b57600080fd5b5061044b610aaa3660046136ba565b611b54565b348015610abb57600080fd5b5060165461047c9062010000900460ff1681565b348015610adb57600080fd5b506104c9600e5481565b348015610af157600080fd5b5061047c610b003660046134d9565b600b6020526000908152604090205460ff1681565b348015610b2157600080fd5b5061044b610b30366004613680565b611b83565b348015610b4157600080fd5b5060165461047c9060ff1681565b348015610b5b57600080fd5b5060165461047c9065010000000000900460ff1681565b348015610b7e57600080fd5b506017546105b8906001600160a01b031681565b348015610b9e57600080fd5b5060225461047c90610100900460ff1681565b348015610bbd57600080fd5b506104c9610bcc366004613513565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610c0357600080fd5b506104c9600a5481565b348015610c1957600080fd5b506104c960235481565b348015610c2f57600080fd5b5061044b610c3e3660046136ba565b611bc0565b348015610c4f57600080fd5b506016546105b890600160301b90046001600160a01b031681565b348015610c7657600080fd5b506104c9600d5481565b348015610c8c57600080fd5b5061044b610c9b3660046134d9565b611c35565b348015610cac57600080fd5b506104c9600f5481565b348015610cc257600080fd5b50601e5461047c9060ff1681565b348015610cdc57600080fd5b506104c960135481565b6005546001600160a01b03163314610d195760405162461bcd60e51b8152600401610d10906137d4565b60405180910390fd5b60165460ff16610d625760405162461bcd60e51b8152602060048201526014602482015273656e61626c654f666654726164652066616c736560601b6044820152606401610d10565b601e805460ff1916600117905543601c55565b6005546001600160a01b03163314610d9f5760405162461bcd60e51b8152600401610d10906137d4565b6016805463ff00000019169055565b606060038054610dbd90613937565b80601f0160208091040260200160405190810160405280929190818152602001828054610de990613937565b8015610e365780601f10610e0b57610100808354040283529160200191610e36565b820191906000526020600020905b815481529060010190602001808311610e1957829003601f168201915b5050505050905090565b6000610e4d338484611d86565b5060015b92915050565b6005546001600160a01b03163314610e815760405162461bcd60e51b8152600401610d10906137d4565b6016805465ff000000000019169055565b6005546001600160a01b03163314610ebc5760405162461bcd60e51b8152600401610d10906137d4565b601654610100900460ff16610f0b5760405162461bcd60e51b8152602060048201526015602482015274656e61626c654b696c6c426c6f636b2066616c736560581b6044820152606401610d10565b601855565b6005546001600160a01b03163314610f3a5760405162461bcd60e51b8152600401610d10906137d4565b60005b82811015610fab578160206000868685818110610f5c57610f5c6139a3565b9050602002016020810190610f7191906134d9565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610fa381613972565b915050610f3d565b50505050565b6000610fbe848484611eab565b611010843361100b85604051806060016040528060288152602001613a03602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612841565b611d86565b5060019392505050565b6005546001600160a01b031633146110445760405162461bcd60e51b8152600401610d10906137d4565b60085460405163031e79db60e41b81526001600160a01b038381166004830152909116906331e79db090602401600060405180830381600087803b15801561108b57600080fd5b505af115801561109f573d6000803e3d6000fd5b5050505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610e4d91859061100b9086611d20565b6001600160a01b0381166000908152600b602052604081205460ff161561110557506001919050565b506000919050565b60085460405163bc4c4b3760e01b8152336004820152600060248201526001600160a01b039091169063bc4c4b3790604401602060405180830381600087803b15801561115957600080fd5b505af115801561116d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611191919061369d565b50565b6005546001600160a01b031633146111be5760405162461bcd60e51b8152600401610d10906137d4565b60165462010000900460ff1661120f5760405162461bcd60e51b8152602060048201526016602482015275656e61626c655265776172644c6973742066616c736560501b6044820152606401610d10565b60c9821061121c57600080fd5b60005b82811015610fab5781600b600086868581811061123e5761123e6139a3565b905060200201602081019061125391906134d9565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561128481613972565b905061121f565b6005546001600160a01b031633146112b55760405162461bcd60e51b8152600401610d10906137d4565b6016805464ff0000000019169055565b6008546040516001624d3b8760e01b0319815260048101839052600091829182916001600160a01b03169063ffb2c47990602401606060405180830381600087803b15801561131357600080fd5b505af1158015611327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134b919061370e565b604080518481526020810184905290810182905260608101889052929550909350915032906000907fc864333d6121033635ab41b29ae52f10a22cf4438c3e4f1c4c68518feb2f8a989060800160405180910390a350505050565b6005546001600160a01b031633146113d05760405162461bcd60e51b8152600401610d10906137d4565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146114445760405162461bcd60e51b8152600401610d10906137d4565b602280549115156101000261ff0019909216919091179055565b6005546001600160a01b031633146114885760405162461bcd60e51b8152600401610d10906137d4565b601b55565b6005546001600160a01b031633146114b75760405162461bcd60e51b8152600401610d10906137d4565b601680546001600160a01b03909216600160301b026601000000000000600160d01b0319909216919091179055565b6005546001600160a01b031633146115105760405162461bcd60e51b8152600401610d10906137d4565b6017546040805163c45a015560e01b815290516001600160a01b0390921691600091839163c45a015591600480820192602092909190829003018186803b15801561155a57600080fd5b505afa15801561156e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159291906134f6565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156115da57600080fd5b505afa1580156115ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161291906134f6565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561165a57600080fd5b505af115801561166e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169291906134f6565b600680546001600160a01b038086166001600160a01b031992831617909255600780549284169290911691909117905590506116cf81600161287b565b60085460405163031e79db60e41b81526001600160a01b038481166004830152909116906331e79db0906024015b600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050505050565b6005546001600160a01b0316331461175d5760405162461bcd60e51b8152600401610d10906137d4565b601a8290556019819055818110156117c15760405162461bcd60e51b815260206004820152602160248201527f206d617853656c6c2073686f756c64206265203e207468616e206d61784275796044820152600160fd1b6064820152608401610d10565b5050565b606060048054610dbd90613937565b6000610e4d338461100b85604051806060016040528060258152602001613a2b602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190612841565b6005546001600160a01b0316331461184d5760405162461bcd60e51b8152600401610d10906137d4565b6007546001600160a01b03838116911614156118db5760405162461bcd60e51b815260206004820152604160248201527f4554484261636b3a205468652050616e4554485377617020706169722063616e60448201527f6e6f742062652072656d6f7665642066726f6d205f73776170506169724c69736064820152601d60fa1b608482015260a401610d10565b6117c1828261287b565b6000610e4d338484611eab565b6005546001600160a01b0316331461191c5760405162461bcd60e51b8152600401610d10906137d4565b60165465010000000000900460ff1661196d5760405162461bcd60e51b81526020600482015260136024820152721d185e0818da185b99d948191a5cd8589b1959606a1b6044820152606401610d10565b81816000818110611980576119806139a3565b6020029190910135600c55508181600181811061199f5761199f6139a3565b6020029190910135600d5550818160028181106119be576119be6139a3565b90506020020135600e819055506119ee600c546119e8600d54600e54611d2090919063ffffffff16565b90611d20565b600f5581816003818110611a0457611a046139a3565b60200291909101356010555081816004818110611a2357611a236139a3565b60200291909101356011555081816005818110611a4257611a426139a3565b60200291909101356012555081816006818110611a6157611a616139a3565b90506020020135601381905550611a8b6011546119e8601254601354611d2090919063ffffffff16565b60145581816007818110611aa157611aa16139a3565b602002919091013560155550601054600f546109c491611ac0916138c7565b10611b005760405162461bcd60e51b815260206004820152601060248201526f0c4eaf240cccaca40e8dede40d0d2ced60831b6044820152606401610d10565b6109c4601554601454611b1391906138c7565b106117c15760405162461bcd60e51b81526020600482015260116024820152700e6cad8d840cccaca40e8dede40d0d2ced607b1b6044820152606401610d10565b6005546001600160a01b03163314611b7e5760405162461bcd60e51b8152600401610d10906137d4565b600a55565b6005546001600160a01b03163314611bad5760405162461bcd60e51b8152600401610d10906137d4565b6022805460ff1916911515919091179055565b6005546001600160a01b03163314611bea5760405162461bcd60e51b8152600401610d10906137d4565b6003811115611c305760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b6044820152606401610d10565b602355565b6005546001600160a01b03163314611c5f5760405162461bcd60e51b8152600401610d10906137d4565b6001600160a01b038116611cc45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d10565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600080611d2d83856138c7565b905083811015611d7f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610d10565b9392505050565b6001600160a01b038316611de85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d10565b6001600160a01b038216611e495760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d10565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611ed15760405162461bcd60e51b8152600401610d1090613809565b6001600160a01b038216611ef75760405162461bcd60e51b8152600401610d1090613791565b6000611f02846110dc565b1115611f415760405162461bcd60e51b815260206004820152600e60248201526d6973526577617264203e2030202160901b6044820152606401610d10565b80611f5657611f51838383612979565b505050565b30600090815260208190526040902054600a5481108015908190611f845750600754600160a01b900460ff16155b8015611fa957506001600160a01b03851660009081526021602052604090205460ff16155b8015611fcd57506001600160a01b038516600090815260208052604090205460ff16155b8015611ff157506001600160a01b038416600090815260208052604090205460ff16155b8015611fff575060225460ff165b801561201a57506000601454600f5461201891906138c7565b115b156120ea576007805460ff60a01b1916600160a01b179055601454600f546000916120699161204991906138c7565b612063601154600c5461205c91906138c7565b8690612a82565b90612b01565b9050801561207a5761207a81612b43565b60006120a9601454600f5461208f91906138c7565b612063601254600d546120a291906138c7565b8790612a82565b905080156120ba576120ba81612d3d565b3060009081526020819052604090205480156120d9576120d981612dc4565b50506007805460ff60a01b19169055505b60075460225460ff600160a01b9092048216159161010090910416156121a8576001600160a01b03861660009081526021602052604090205460ff1615801561214c57506001600160a01b03851660009081526021602052604090205460ff16155b801561217057506001600160a01b038616600090815260208052604090205460ff16155b801561219457506001600160a01b038516600090815260208052604090205460ff16155b156121a35780156121a3575060015b61223b565b6001600160a01b03861660009081526021602052604090205460ff161580156121ea57506001600160a01b03851660009081526021602052604090205460ff16155b801561220e57506001600160a01b038616600090815260208052604090205460ff16155b801561223257506001600160a01b038516600090815260208052604090205460ff16155b1561223b575060005b6001600160a01b038616600090815260208052604090205460ff168061227857506001600160a01b038516600090815260208052604090205460ff165b15612281575060005b80156126345760165460ff16156122e457601e5460ff166122e45760405162461bcd60e51b815260206004820152601860248201527f45524332303a205472616e73666572206e6f74206f70656e00000000000000006044820152606401610d10565b6016546301000000900460ff16156123b2576001600160a01b03861660009081526021602052604090205460ff161561236757601a548411156123625760405162461bcd60e51b8152602060048201526016602482015275115490cc8c0e880f881b585e081d1e08185b5bdd5b9d60521b6044820152606401610d10565b6123b2565b6019548411156123b25760405162461bcd60e51b8152602060048201526016602482015275115490cc8c0e880f881b585e081d1e08185b5bdd5b9d60521b6044820152606401610d10565b6007546001600160a01b03878116911614156124b757601654640100000000900460ff161561245557601b54612407612400876001600160a01b031660009081526020819052604090205490565b8690611d20565b11156124555760405162461bcd60e51b815260206004820152601a60248201527f45524332303a203e206d61782077616c6c657420616d6f756e740000000000006044820152606401610d10565b43601854601c5461246691906138c7565b11801561247b575060165462010000900460ff165b801561248e5750601654610100900460ff165b156124b7576001600160a01b0385166000908152600b60205260409020805460ff191660011790555b6001600160a01b03861660009081526021602052604081205460ff16156124fa576124f3612710612063600f5488612a8290919063ffffffff16565b9050612518565b61251561271061206360145488612a8290919063ffffffff16565b90505b6001600160a01b03871660009081526021602052604081205460ff161561255b5761255461271061206360105489612a8290919063ffffffff16565b9050612579565b61257661271061206360155489612a8290919063ffffffff16565b90505b80156125995761258c8861dead83612979565b6125968682612fb9565b95505b6125a38683612fb9565b95506125b0883084612979565b602354156126315760005b60235481101561261f576040805160208101839052439181019190915244606082015242608082015261260d908a9060a0016040516020818303038152906040528051906020012060001c6001612979565b8061261781613972565b9150506125bb565b5060235461262e908790612fb9565b95505b50505b61263f868686612979565b6008546001600160a01b031663e30443bc87612670816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156126b657600080fd5b505af19250505080156126c7575060015b506008546001600160a01b031663e30443bc866126f9816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561273f57600080fd5b505af1925050508015612750575060015b50600754600160a01b900460ff1661172b57601f546008546040516001624d3b8760e01b03198152600481018390526001600160a01b039091169063ffb2c47990602401606060405180830381600087803b1580156127ae57600080fd5b505af19250505080156127de575060408051601f3d908101601f191682019092526127db9181019061370e565b60015b6127e757612838565b60408051848152602081018490529081018290526060810185905232906001907fc864333d6121033635ab41b29ae52f10a22cf4438c3e4f1c4c68518feb2f8a989060800160405180910390a35050505b50505050505050565b600081848411156128655760405162461bcd60e51b8152600401610d10919061373c565b5060006128728486613920565b95945050505050565b6001600160a01b03821660009081526021602052604090205460ff161515811515141561291a5760405162461bcd60e51b815260206004820152604160248201527f4554484261636b3a204175746f6d61746564206d61726b6574206d616b65722060448201527f7061697220697320616c72656164792073657420746f20746861742076616c756064820152606560f81b608482015260a401610d10565b6001600160a01b0382166000908152602160205260409020805460ff191682158015919091179091556117c15760085460405163031e79db60e41b81526001600160a01b038481166004830152909116906331e79db0906024016116fd565b6001600160a01b03831661299f5760405162461bcd60e51b8152600401610d1090613809565b6001600160a01b0382166129c55760405162461bcd60e51b8152600401610d1090613791565b612a02816040518060600160405280602681526020016139dd602691396001600160a01b0386166000908152602081905260409020549190612841565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612a319082611d20565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611e9e565b600082612a9157506000610e51565b6000612a9d8385613901565b905082612aaa85836138df565b14611d7f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610d10565b6000611d7f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ffb565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015612ba557600080fd5b505afa158015612bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bdd91906136d3565b9050612be882613029565b6040516370a0823160e01b8152306004820152600090612c8e9083906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b158015612c5057600080fd5b505afa158015612c64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8891906136d3565b90612fb9565b60165460405163a9059cbb60e01b81526001600160a01b03600160301b90920482166004820152602481018390529192507f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90604401602060405180830381600087803b158015612d0557600080fd5b505af1158015612d19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab919061369d565b6000612d4a826002612b01565b90506000612d588383612fb9565b905047612d6483613210565b6000612d704783612fb9565b9050612d7c83826133a1565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050505050565b612dcd81613029565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015612e2f57600080fd5b505afa158015612e43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6791906136d3565b60085460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529192506000917f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb90604401602060405180830381600087803b158015612edc57600080fd5b505af1158015612ef0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f14919061369d565b90508015611f51576008546040516351c2a0e360e01b8152600481018490526001600160a01b03909116906351c2a0e390602401600060405180830381600087803b158015612f6257600080fd5b505af1158015612f76573d6000803e3d6000fd5b505060408051868152602081018690527f80195cc573b02cc48460cbca6e6e4cc85ddb91959d946e1c3025ea3d87942dc3935001905060405180910390a1505050565b6000611d7f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612841565b6000818361301c5760405162461bcd60e51b8152600401610d10919061373c565b50600061287284866138df565b60408051600380825260808201909252600091602082016060803683370190505090503081600081518110613060576130606139a3565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156130b457600080fd5b505afa1580156130c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130ec91906134f6565b816001815181106130ff576130ff6139a3565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600281518110613153576131536139a3565b6001600160a01b0392831660209182029290920101526006546131799130911684611d86565b60065460405163561c49dd60e11b81526001600160a01b039091169063ac3893ba906131b4908590600090869030908390429060040161384e565b600060405180830381600087803b1580156131ce57600080fd5b505af19250505080156131df575060015b6117c1576040517ffa4626fc78df02cb8fdea85a8af60ad29e2c95f22e2a91c79d99631c288a8b6c90600090a15050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613245576132456139a3565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561329957600080fd5b505afa1580156132ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d191906134f6565b816001815181106132e4576132e46139a3565b6001600160a01b03928316602091820292909201015260065461330a9130911684611d86565b600654604051632955261160e11b81526001600160a01b03909116906352aa4c2290613345908590600090869030908390429060040161384e565b600060405180830381600087803b15801561335f57600080fd5b505af1925050508015613370575060015b6117c1576040517fe2ca28dff25f053218cef44cd4580a8df8e34fd11ee24e2e45b5394750c20d3c90600090a15050565b6006546133b99030906001600160a01b031684611d86565b60065460165460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b03600160301b909204821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b15801561342b57600080fd5b505af19350505050801561345c575060408051601f3d908101601f191682019092526134599181019061370e565b60015b61109f576040517f7f9722f0fc39b6e3f30aeebd8e67a082ad4dcd92706bfd1f76130f39ba012aec90600090a15050565b60008083601f84011261349f57600080fd5b50813567ffffffffffffffff8111156134b757600080fd5b6020830191508360208260051b85010111156134d257600080fd5b9250929050565b6000602082840312156134eb57600080fd5b8135611d7f816139b9565b60006020828403121561350857600080fd5b8151611d7f816139b9565b6000806040838503121561352657600080fd5b8235613531816139b9565b91506020830135613541816139b9565b809150509250929050565b60008060006060848603121561356157600080fd5b833561356c816139b9565b9250602084013561357c816139b9565b929592945050506040919091013590565b600080604083850312156135a057600080fd5b82356135ab816139b9565b91506020830135613541816139ce565b600080604083850312156135ce57600080fd5b82356135d9816139b9565b946020939093013593505050565b6000806000604084860312156135fc57600080fd5b833567ffffffffffffffff81111561361357600080fd5b61361f8682870161348d565b9094509250506020840135613633816139ce565b809150509250925092565b6000806020838503121561365157600080fd5b823567ffffffffffffffff81111561366857600080fd5b6136748582860161348d565b90969095509350505050565b60006020828403121561369257600080fd5b8135611d7f816139ce565b6000602082840312156136af57600080fd5b8151611d7f816139ce565b6000602082840312156136cc57600080fd5b5035919050565b6000602082840312156136e557600080fd5b5051919050565b600080604083850312156136ff57600080fd5b50508035926020909101359150565b60008060006060848603121561372357600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156137695785810183015185820160400152820161374d565b8181111561377b576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b600060c082018883526020888185015260c0604085015281885180845260e086019150828a01935060005b8181101561389e5784516001600160a01b031683529383019391830191600101613879565b50506001600160a01b039788166060860152959096166080840152505060a00152949350505050565b600082198211156138da576138da61398d565b500190565b6000826138fc57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561391b5761391b61398d565b500290565b6000828210156139325761393261398d565b500390565b600181811c9082168061394b57607f821691505b6020821081141561396c57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156139865761398661398d565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461119157600080fd5b801515811461119157600080fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201f7caf8bd8677249835dd1bb274c59f21d616c51e245058afde04513e3c2fe9264736f6c6343000807003360c06040523480156200001157600080fd5b5060405162001d0e38038062001d0e8339810160408190526200003491620001e1565b6040518060400160405280601781526020017f4554484261636b5f4469766964656e5f547261636b65720000000000000000008152506040518060400160405280601881526020017f4554484261636b5f4469766964656e645f547261636b657200000000000000008152508282828160039080519060200190620000bb9291906200013b565b508051620000d19060049060208401906200013b565b5050600580546001600160a01b0319163390811790915560405190915081906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060601b6001600160601b03191660805250506102586011555060a0526200025d565b828054620001499062000220565b90600052602060002090601f0160209004810192826200016d5760008555620001b8565b82601f106200018857805160ff1916838001178555620001b8565b82800160010185558215620001b8579182015b82811115620001b85782518255916020019190600101906200019b565b50620001c6929150620001ca565b5090565b5b80821115620001c65760008155600101620001cb565b60008060408385031215620001f557600080fd5b825160208401519092506001600160a01b03811681146200021557600080fd5b809150509250929050565b600181811c908216806200023557607f821691505b602082108114156200025757634e487b7160e01b600052602260045260246000fd5b50919050565b60805160601c60a051611a7a62000294600039600081816104290152610b2701526000818161034001526112c30152611a7a6000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c8063715018a61161010f578063a9059cbb116100a2578063dd62ed3e11610071578063dd62ed3e1461044b578063e30443bc14610484578063f2fde38b14610497578063ffb2c479146104aa57600080fd5b8063a9059cbb146103d5578063aafd847a146103e8578063bc4c4b3714610411578063be10b6141461042457600080fd5b806391b89fba116100de57806391b89fba1461039457806395d89b41146103a7578063a457c2d7146103af578063a8b9d240146103c257600080fd5b8063715018a6146103335780638322fff21461033b57806385a6b3ae1461037a5780638da5cb5b1461038357600080fd5b8063313ce5671161018757806351c2a0e31161015657806351c2a0e3146102e65780636a474002146102f95780636f2789ec1461030157806370a082311461030a57600080fd5b8063313ce5671461028c57806331e79db01461029b57806339509351146102b05780634e7b827f146102c357600080fd5b8063226cfa3d116101c3578063226cfa3d1461023d57806323b872dd1461025d57806327ce0147146102705780633009a6091461028357600080fd5b806306fdde03146101ea578063095ea7b31461020857806318160ddd1461022b575b600080fd5b6101f26104d8565b6040516101ff91906117b6565b60405180910390f35b61021b6102163660046116e5565b61056a565b60405190151581526020016101ff565b6002545b6040519081526020016101ff565b61022f61024b36600461168f565b60106020526000908152604090205481565b61021b61026b36600461173f565b610581565b61022f61027e36600461168f565b6105ea565b61022f600e5481565b604051600981526020016101ff565b6102ae6102a936600461168f565b610646565b005b61021b6102be3660046116e5565b610776565b61021b6102d136600461168f565b600f6020526000908152604090205460ff1681565b6102ae6102f436600461179d565b6107ac565b6102ae61086a565b61022f60115481565b61022f61031836600461168f565b6001600160a01b031660009081526020819052604090205490565b6102ae610912565b6103627f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101ff565b61022f60095481565b6005546001600160a01b0316610362565b61022f6103a236600461168f565b610986565b6101f2610991565b61021b6103bd3660046116e5565b6109a0565b61022f6103d036600461168f565b6109ef565b61021b6103e33660046116e5565b610a1b565b61022f6103f636600461168f565b6001600160a01b031660009081526008602052604090205490565b61021b61041f3660046116ac565b610a28565b61022f7f000000000000000000000000000000000000000000000000000000000000000081565b61022f610459366004611711565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102ae6104923660046116e5565b610ad6565b6102ae6104a536600461168f565b610c62565b6104bd6104b836600461179d565b610d4d565b604080519384526020840192909252908201526060016101ff565b6060600380546104e790611930565b80601f016020809104026020016040519081016040528092919081815260200182805461051390611930565b80156105605780601f1061053557610100808354040283529160200191610560565b820191906000526020600020905b81548152906001019060200180831161054357829003601f168201915b5050505050905090565b6000610577338484610e68565b5060015b92915050565b600061058e848484610f8c565b6105e084336105db856040518060600160405280602881526020016119f8602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190610feb565b610e68565b5060019392505050565b6001600160a01b03811660009081526007602090815260408083205491839052822054600654600160801b9261063c92610637926106319161062c9190611025565b6110ab565b906110bb565b6110f9565b61057b9190611899565b6005546001600160a01b031633146106795760405162461bcd60e51b81526004016106709061180b565b60405180910390fd5b6001600160a01b0381166000908152600f602052604090205460ff161561069f57600080fd5b6001600160a01b0381166000908152600f60205260408120805460ff191660011790556106cd90829061110c565b60405163131836e760e21b8152600a60048201526001600160a01b0382166024820152738da76515ace04476af4f88e82e04750c255a96f490634c60db9c9060440160006040518083038186803b15801561072757600080fd5b505af415801561073b573d6000803e3d6000fd5b50506040516001600160a01b03841692507fa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b259150600090a250565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916105779185906105db908661116b565b6005546001600160a01b031633146107d65760405162461bcd60e51b81526004016106709061180b565b60006107e160025490565b116107eb57600080fd5b80156108675761081e6107fd60025490565b61080b83600160801b611025565b6108159190611899565b6006549061116b565b60065560405181815233907fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d784541165119060200160405180910390a2600954610863908261116b565b6009555b50565b60405162461bcd60e51b815260206004820152606b60248201527f4554484261636b5f4469766964656e645f547261636b65723a2077697468647260448201527f61774469766964656e642064697361626c65642e20557365207468652027636c60648201527f61696d272066756e6374696f6e206f6e20746865206d61696e2045544842616360848201526a359031b7b73a3930b1ba1760a91b60a482015260c401610670565b6005546001600160a01b0316331461093c5760405162461bcd60e51b81526004016106709061180b565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b600061057b826109ef565b6060600480546104e790611930565b600061057733846105db85604051806060016040528060258152602001611a20602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190610feb565b6001600160a01b03811660009081526008602052604081205461057b90610a15846105ea565b906111ca565b6000610577338484610f8c565b6005546000906001600160a01b03163314610a555760405162461bcd60e51b81526004016106709061180b565b6000610a608461120c565b90508015610acc576001600160a01b038416600081815260106020526040908190204290555184151591907fa2c38e2d2fb7e3e1912d937fd1ca11ed6d51864dee4cfa7a7bf02becd7acf09290610aba9085815260200190565b60405180910390a3600191505061057b565b5060009392505050565b6005546001600160a01b03163314610b005760405162461bcd60e51b81526004016106709061180b565b6001600160a01b0382166000908152600f602052604090205460ff1615610b25575050565b7f00000000000000000000000000000000000000000000000000000000000000008110610bd457610b56828261110c565b604051632f0ad01760e21b8152600a60048201526001600160a01b038316602482015260448101829052738da76515ace04476af4f88e82e04750c255a96f49063bc2b405c9060640160006040518083038186803b158015610bb757600080fd5b505af4158015610bcb573d6000803e3d6000fd5b50505050610c52565b610bdf82600061110c565b60405163131836e760e21b8152600a60048201526001600160a01b0383166024820152738da76515ace04476af4f88e82e04750c255a96f490634c60db9c9060440160006040518083038186803b158015610c3957600080fd5b505af4158015610c4d573d6000803e3d6000fd5b505050505b610c5d826001610a28565b505050565b6005546001600160a01b03163314610c8c5760405162461bcd60e51b81526004016106709061180b565b6001600160a01b038116610cf15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610670565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600a546000908190819080610d6d575050600e5460009250829150610e61565b600e546000805a90506000805b8984108015610d8857508582105b15610e505784610d978161196b565b600a5490965086109050610daa57600094505b6000600a6000018681548110610dc257610dc261199c565b60009182526020808320909101546001600160a01b03168083526010909152604090912054909150610df3906113a0565b15610e1657610e03816001610a28565b15610e165781610e128161196b565b9250505b82610e208161196b565b93505060005a905080851115610e4757610e44610e3d86836111ca565b879061116b565b95505b9350610d7a9050565b600e85905590975095509193505050505b9193909250565b6001600160a01b038316610eca5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610670565b6001600160a01b038216610f2b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610670565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60405162461bcd60e51b815260206004820152602e60248201527f4554484261636b5f4469766964656e645f547261636b65723a204e6f2074726160448201526d1b9cd9995c9cc8185b1b1bddd95960921b6064820152608401610670565b6000818484111561100f5760405162461bcd60e51b815260040161067091906117b6565b50600061101c8486611919565b95945050505050565b6000826110345750600061057b565b600061104083856118bb565b90508261104d8583611899565b146110a45760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610670565b9392505050565b6000818181121561057b57600080fd5b6000806110c88385611840565b9050600083121580156110db5750838112155b806110f057506000831280156110f057508381125b6110a457600080fd5b60008082121561110857600080fd5b5090565b6001600160a01b0382166000908152602081905260409020548082111561114b57600061113983836111ca565b905061114584826113c7565b50505050565b80821015610c5d57600061115f82846111ca565b9050611145848261142b565b6000806111788385611881565b9050838110156110a45760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610670565b60006110a483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610feb565b600080611218836109ef565b90508015611397576001600160a01b038316600090815260086020526040902054611243908261116b565b6001600160a01b038416600081815260086020526040908190209290925590517fee503bee2bb6a87e57bc57db795f98137327401a0e7b7ce42e37926cc1a9ca4d906112929084815260200190565b60405180910390a260405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390526000917f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb90604401602060405180830381600087803b15801561130957600080fd5b505af115801561131d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113419190611780565b905080611390576001600160a01b03841660009081526008602052604090205461136b90836111ca565b6001600160a01b03909416600090815260086020526040812094909455509192915050565b5092915050565b50600092915050565b6000428211156113b257506000919050565b6011546113bf42846111ca565b101592915050565b6113d1828261146f565b61140b6113ec61062c8360065461102590919063ffffffff16565b6001600160a01b0384166000908152600760205260409020549061154e565b6001600160a01b0390921660009081526007602052604090209190915550565b611435828261158b565b61140b61145061062c8360065461102590919063ffffffff16565b6001600160a01b038416600090815260076020526040902054906110bb565b6001600160a01b0382166114c55760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610670565b6002546114d2908261116b565b6002556001600160a01b0382166000908152602081905260409020546114f8908261116b565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b60008061155b83856118da565b90506000831215801561156e5750838113155b806110f057506000831280156110f057508381136110a457600080fd5b6001600160a01b0382166115eb5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610670565b611628816040518060600160405280602281526020016119d6602291396001600160a01b0385166000908152602081905260409020549190610feb565b6001600160a01b03831660009081526020819052604090205560025461164e90826111ca565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611542565b6000602082840312156116a157600080fd5b81356110a4816119b2565b600080604083850312156116bf57600080fd5b82356116ca816119b2565b915060208301356116da816119c7565b809150509250929050565b600080604083850312156116f857600080fd5b8235611703816119b2565b946020939093013593505050565b6000806040838503121561172457600080fd5b823561172f816119b2565b915060208301356116da816119b2565b60008060006060848603121561175457600080fd5b833561175f816119b2565b9250602084013561176f816119b2565b929592945050506040919091013590565b60006020828403121561179257600080fd5b81516110a4816119c7565b6000602082840312156117af57600080fd5b5035919050565b600060208083528351808285015260005b818110156117e3578581018301518582016040015282016117c7565b818111156117f5576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600080821280156001600160ff1b038490038513161561186257611862611986565b600160ff1b839003841281161561187b5761187b611986565b50500190565b6000821982111561189457611894611986565b500190565b6000826118b657634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156118d5576118d5611986565b500290565b60008083128015600160ff1b8501841216156118f8576118f8611986565b6001600160ff1b038401831381161561191357611913611986565b50500390565b60008282101561192b5761192b611986565b500390565b600181811c9082168061194457607f821691505b6020821081141561196557634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561197f5761197f611986565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461086757600080fd5b801515811461086757600080fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122010819c74bf45140620f754b6808fe46a9ae01219ecb6c25d9dbc4ebec61a3cf764736f6c634300080700330000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b4149444f47455a494c4c41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b4149444f47455a494c4c4100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000006ec2c2369d7d17c84751664ccbe7d8aee8549c79000000000000000000000000912ce59144191c1204e64559fe8253a0e49e6548000000000000000000000000c873fecbd354f5a56e00e710b90ef4201db2448d000000000000000000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000adb53acfa41aee12000000000000000000000000000000000000000000000000000000004a9b638448800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040526004361061042a5760003560e01c80637682eefd11610229578063afa4f3b21161012e578063dd62ed3e116100b6578063ee37b5621161007a578063ee37b56214610c6a578063f2fde38b14610c80578063f5c4eeff14610ca0578063f5d588f514610cb6578063fe06b00614610cd057600080fd5b8063dd62ed3e14610bb1578063e2f4560514610bf7578063e32759cf14610c0d578063e5c2b0a614610c23578063e82bef2914610c4357600080fd5b8063c49b9a80116100fd578063c49b9a8014610b15578063c92d567e14610b35578063d598643314610b4f578063d678cbc614610b72578063dac1dcfe14610b9257600080fd5b8063afa4f3b214610a8f578063b02d757f14610aaf578063bc57942f14610acf578063bd25bf2914610ae557600080fd5b806390d1dfa9116101b1578063a457c2d711610180578063a457c2d7146109f9578063a842486114610a19578063a9059cbb14610a39578063aa4bde2814610a59578063aa582b4214610a6f57600080fd5b806390d1dfa91461098d57806395d89b41146109ad5780639c1b8af5146109c2578063a23270d7146109d857600080fd5b806385141a77116101f857806385141a771461090457806385dc30041461092457806388e765ff146109445780638bcb4e171461095a5780638da5cb5b1461096f57600080fd5b80637682eefd1461087a57806379594736146108905780637db1342c146108b05780638322fff2146108d057600080fd5b8063395093511161032f5780635a7ba73c116102b7578063697cfc1911610286578063697cfc19146107e45780636b611368146107f9578063700bb1911461080f57806370a082311461082f578063715018a61461086557600080fd5b80635a7ba73c146107795780635d61e77d146107985780636108a3db146107ae57806366d602ae146107ce57600080fd5b80634a74bb02116102fe5780634a74bb02146106fe5780634d5ce038146107185780634e71d92d1461073857806353f0705a1461074d578063553193ca1461076357600080fd5b806339509351146106785780633c11100d146106985780634188bf5a146106c857806348036508146106e857600080fd5b8063150e4c47116103b2578063255412d911610381578063255412d9146105f05780632c1f5216146106065780632dab693f14610626578063313ce5671461063c57806331e79db01461065857600080fd5b8063150e4c471461056357806318160ddd14610583578063206c17bb1461059857806323b872dd146105d057600080fd5b8063063be69e116103f9578063063be69e146104d757806306fdde03146104ec578063095ea7b31461050e5780630f890b861461052e578063108c336d1461054357600080fd5b806301339c211461043657806301986fad1461044d57806303da2b231461049157806304d8efbe146104b357600080fd5b3661043157005b600080fd5b34801561044257600080fd5b5061044b610ce6565b005b34801561045957600080fd5b5061047c6104683660046134d9565b602080526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561049d57600080fd5b5060165461047c90640100000000900460ff1681565b3480156104bf57600080fd5b506104c960125481565b604051908152602001610488565b3480156104e357600080fd5b5061044b610d75565b3480156104f857600080fd5b50610501610dae565b604051610488919061373c565b34801561051a57600080fd5b5061047c6105293660046135bb565b610e40565b34801561053a57600080fd5b5061044b610e57565b34801561054f57600080fd5b5061044b61055e3660046136ba565b610e92565b34801561056f57600080fd5b5061044b61057e3660046135e7565b610f10565b34801561058f57600080fd5b506002546104c9565b3480156105a457600080fd5b506006546105b8906001600160a01b031681565b6040516001600160a01b039091168152602001610488565b3480156105dc57600080fd5b5061047c6105eb36600461354c565b610fb1565b3480156105fc57600080fd5b506104c960105481565b34801561061257600080fd5b506008546105b8906001600160a01b031681565b34801561063257600080fd5b506104c960185481565b34801561064857600080fd5b5060405160098152602001610488565b34801561066457600080fd5b5061044b6106733660046134d9565b61101a565b34801561068457600080fd5b5061047c6106933660046135bb565b6110a6565b3480156106a457600080fd5b5061047c6106b33660046134d9565b60216020526000908152604090205460ff1681565b3480156106d457600080fd5b506007546105b8906001600160a01b031681565b3480156106f457600080fd5b506104c960145481565b34801561070a57600080fd5b5060225461047c9060ff1681565b34801561072457600080fd5b506104c96107333660046134d9565b6110dc565b34801561074457600080fd5b5061044b61110d565b34801561075957600080fd5b506104c9601d5481565b34801561076f57600080fd5b506104c9601c5481565b34801561078557600080fd5b5060165461047c90610100900460ff1681565b3480156107a457600080fd5b506104c960115481565b3480156107ba57600080fd5b5061044b6107c93660046135e7565b611194565b3480156107da57600080fd5b506104c960195481565b3480156107f057600080fd5b5061044b61128b565b34801561080557600080fd5b506104c960155481565b34801561081b57600080fd5b5061044b61082a3660046136ba565b6112c5565b34801561083b57600080fd5b506104c961084a3660046134d9565b6001600160a01b031660009081526020819052604090205490565b34801561087157600080fd5b5061044b6113a6565b34801561088657600080fd5b506104c9600c5481565b34801561089c57600080fd5b5061044b6108ab366004613680565b61141a565b3480156108bc57600080fd5b5061044b6108cb3660046136ba565b61145e565b3480156108dc57600080fd5b506105b87f000000000000000000000000912ce59144191c1204e64559fe8253a0e49e654881565b34801561091057600080fd5b506009546105b8906001600160a01b031681565b34801561093057600080fd5b5061044b61093f3660046134d9565b61148d565b34801561095057600080fd5b506104c9601a5481565b34801561096657600080fd5b5061044b6114e6565b34801561097b57600080fd5b506005546001600160a01b03166105b8565b34801561099957600080fd5b5061044b6109a83660046136ec565b611733565b3480156109b957600080fd5b506105016117c5565b3480156109ce57600080fd5b506104c9601f5481565b3480156109e457600080fd5b5060165461047c906301000000900460ff1681565b348015610a0557600080fd5b5061047c610a143660046135bb565b6117d4565b348015610a2557600080fd5b5061044b610a3436600461358d565b611823565b348015610a4557600080fd5b5061047c610a543660046135bb565b6118e5565b348015610a6557600080fd5b506104c9601b5481565b348015610a7b57600080fd5b5061044b610a8a36600461363e565b6118f2565b348015610a9b57600080fd5b5061044b610aaa3660046136ba565b611b54565b348015610abb57600080fd5b5060165461047c9062010000900460ff1681565b348015610adb57600080fd5b506104c9600e5481565b348015610af157600080fd5b5061047c610b003660046134d9565b600b6020526000908152604090205460ff1681565b348015610b2157600080fd5b5061044b610b30366004613680565b611b83565b348015610b4157600080fd5b5060165461047c9060ff1681565b348015610b5b57600080fd5b5060165461047c9065010000000000900460ff1681565b348015610b7e57600080fd5b506017546105b8906001600160a01b031681565b348015610b9e57600080fd5b5060225461047c90610100900460ff1681565b348015610bbd57600080fd5b506104c9610bcc366004613513565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610c0357600080fd5b506104c9600a5481565b348015610c1957600080fd5b506104c960235481565b348015610c2f57600080fd5b5061044b610c3e3660046136ba565b611bc0565b348015610c4f57600080fd5b506016546105b890600160301b90046001600160a01b031681565b348015610c7657600080fd5b506104c9600d5481565b348015610c8c57600080fd5b5061044b610c9b3660046134d9565b611c35565b348015610cac57600080fd5b506104c9600f5481565b348015610cc257600080fd5b50601e5461047c9060ff1681565b348015610cdc57600080fd5b506104c960135481565b6005546001600160a01b03163314610d195760405162461bcd60e51b8152600401610d10906137d4565b60405180910390fd5b60165460ff16610d625760405162461bcd60e51b8152602060048201526014602482015273656e61626c654f666654726164652066616c736560601b6044820152606401610d10565b601e805460ff1916600117905543601c55565b6005546001600160a01b03163314610d9f5760405162461bcd60e51b8152600401610d10906137d4565b6016805463ff00000019169055565b606060038054610dbd90613937565b80601f0160208091040260200160405190810160405280929190818152602001828054610de990613937565b8015610e365780601f10610e0b57610100808354040283529160200191610e36565b820191906000526020600020905b815481529060010190602001808311610e1957829003601f168201915b5050505050905090565b6000610e4d338484611d86565b5060015b92915050565b6005546001600160a01b03163314610e815760405162461bcd60e51b8152600401610d10906137d4565b6016805465ff000000000019169055565b6005546001600160a01b03163314610ebc5760405162461bcd60e51b8152600401610d10906137d4565b601654610100900460ff16610f0b5760405162461bcd60e51b8152602060048201526015602482015274656e61626c654b696c6c426c6f636b2066616c736560581b6044820152606401610d10565b601855565b6005546001600160a01b03163314610f3a5760405162461bcd60e51b8152600401610d10906137d4565b60005b82811015610fab578160206000868685818110610f5c57610f5c6139a3565b9050602002016020810190610f7191906134d9565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610fa381613972565b915050610f3d565b50505050565b6000610fbe848484611eab565b611010843361100b85604051806060016040528060288152602001613a03602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612841565b611d86565b5060019392505050565b6005546001600160a01b031633146110445760405162461bcd60e51b8152600401610d10906137d4565b60085460405163031e79db60e41b81526001600160a01b038381166004830152909116906331e79db090602401600060405180830381600087803b15801561108b57600080fd5b505af115801561109f573d6000803e3d6000fd5b5050505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610e4d91859061100b9086611d20565b6001600160a01b0381166000908152600b602052604081205460ff161561110557506001919050565b506000919050565b60085460405163bc4c4b3760e01b8152336004820152600060248201526001600160a01b039091169063bc4c4b3790604401602060405180830381600087803b15801561115957600080fd5b505af115801561116d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611191919061369d565b50565b6005546001600160a01b031633146111be5760405162461bcd60e51b8152600401610d10906137d4565b60165462010000900460ff1661120f5760405162461bcd60e51b8152602060048201526016602482015275656e61626c655265776172644c6973742066616c736560501b6044820152606401610d10565b60c9821061121c57600080fd5b60005b82811015610fab5781600b600086868581811061123e5761123e6139a3565b905060200201602081019061125391906134d9565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561128481613972565b905061121f565b6005546001600160a01b031633146112b55760405162461bcd60e51b8152600401610d10906137d4565b6016805464ff0000000019169055565b6008546040516001624d3b8760e01b0319815260048101839052600091829182916001600160a01b03169063ffb2c47990602401606060405180830381600087803b15801561131357600080fd5b505af1158015611327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134b919061370e565b604080518481526020810184905290810182905260608101889052929550909350915032906000907fc864333d6121033635ab41b29ae52f10a22cf4438c3e4f1c4c68518feb2f8a989060800160405180910390a350505050565b6005546001600160a01b031633146113d05760405162461bcd60e51b8152600401610d10906137d4565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146114445760405162461bcd60e51b8152600401610d10906137d4565b602280549115156101000261ff0019909216919091179055565b6005546001600160a01b031633146114885760405162461bcd60e51b8152600401610d10906137d4565b601b55565b6005546001600160a01b031633146114b75760405162461bcd60e51b8152600401610d10906137d4565b601680546001600160a01b03909216600160301b026601000000000000600160d01b0319909216919091179055565b6005546001600160a01b031633146115105760405162461bcd60e51b8152600401610d10906137d4565b6017546040805163c45a015560e01b815290516001600160a01b0390921691600091839163c45a015591600480820192602092909190829003018186803b15801561155a57600080fd5b505afa15801561156e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159291906134f6565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156115da57600080fd5b505afa1580156115ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161291906134f6565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561165a57600080fd5b505af115801561166e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169291906134f6565b600680546001600160a01b038086166001600160a01b031992831617909255600780549284169290911691909117905590506116cf81600161287b565b60085460405163031e79db60e41b81526001600160a01b038481166004830152909116906331e79db0906024015b600060405180830381600087803b15801561171757600080fd5b505af115801561172b573d6000803e3d6000fd5b505050505050565b6005546001600160a01b0316331461175d5760405162461bcd60e51b8152600401610d10906137d4565b601a8290556019819055818110156117c15760405162461bcd60e51b815260206004820152602160248201527f206d617853656c6c2073686f756c64206265203e207468616e206d61784275796044820152600160fd1b6064820152608401610d10565b5050565b606060048054610dbd90613937565b6000610e4d338461100b85604051806060016040528060258152602001613a2b602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190612841565b6005546001600160a01b0316331461184d5760405162461bcd60e51b8152600401610d10906137d4565b6007546001600160a01b03838116911614156118db5760405162461bcd60e51b815260206004820152604160248201527f4554484261636b3a205468652050616e4554485377617020706169722063616e60448201527f6e6f742062652072656d6f7665642066726f6d205f73776170506169724c69736064820152601d60fa1b608482015260a401610d10565b6117c1828261287b565b6000610e4d338484611eab565b6005546001600160a01b0316331461191c5760405162461bcd60e51b8152600401610d10906137d4565b60165465010000000000900460ff1661196d5760405162461bcd60e51b81526020600482015260136024820152721d185e0818da185b99d948191a5cd8589b1959606a1b6044820152606401610d10565b81816000818110611980576119806139a3565b6020029190910135600c55508181600181811061199f5761199f6139a3565b6020029190910135600d5550818160028181106119be576119be6139a3565b90506020020135600e819055506119ee600c546119e8600d54600e54611d2090919063ffffffff16565b90611d20565b600f5581816003818110611a0457611a046139a3565b60200291909101356010555081816004818110611a2357611a236139a3565b60200291909101356011555081816005818110611a4257611a426139a3565b60200291909101356012555081816006818110611a6157611a616139a3565b90506020020135601381905550611a8b6011546119e8601254601354611d2090919063ffffffff16565b60145581816007818110611aa157611aa16139a3565b602002919091013560155550601054600f546109c491611ac0916138c7565b10611b005760405162461bcd60e51b815260206004820152601060248201526f0c4eaf240cccaca40e8dede40d0d2ced60831b6044820152606401610d10565b6109c4601554601454611b1391906138c7565b106117c15760405162461bcd60e51b81526020600482015260116024820152700e6cad8d840cccaca40e8dede40d0d2ced607b1b6044820152606401610d10565b6005546001600160a01b03163314611b7e5760405162461bcd60e51b8152600401610d10906137d4565b600a55565b6005546001600160a01b03163314611bad5760405162461bcd60e51b8152600401610d10906137d4565b6022805460ff1916911515919091179055565b6005546001600160a01b03163314611bea5760405162461bcd60e51b8152600401610d10906137d4565b6003811115611c305760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b6044820152606401610d10565b602355565b6005546001600160a01b03163314611c5f5760405162461bcd60e51b8152600401610d10906137d4565b6001600160a01b038116611cc45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d10565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600080611d2d83856138c7565b905083811015611d7f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610d10565b9392505050565b6001600160a01b038316611de85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d10565b6001600160a01b038216611e495760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d10565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611ed15760405162461bcd60e51b8152600401610d1090613809565b6001600160a01b038216611ef75760405162461bcd60e51b8152600401610d1090613791565b6000611f02846110dc565b1115611f415760405162461bcd60e51b815260206004820152600e60248201526d6973526577617264203e2030202160901b6044820152606401610d10565b80611f5657611f51838383612979565b505050565b30600090815260208190526040902054600a5481108015908190611f845750600754600160a01b900460ff16155b8015611fa957506001600160a01b03851660009081526021602052604090205460ff16155b8015611fcd57506001600160a01b038516600090815260208052604090205460ff16155b8015611ff157506001600160a01b038416600090815260208052604090205460ff16155b8015611fff575060225460ff165b801561201a57506000601454600f5461201891906138c7565b115b156120ea576007805460ff60a01b1916600160a01b179055601454600f546000916120699161204991906138c7565b612063601154600c5461205c91906138c7565b8690612a82565b90612b01565b9050801561207a5761207a81612b43565b60006120a9601454600f5461208f91906138c7565b612063601254600d546120a291906138c7565b8790612a82565b905080156120ba576120ba81612d3d565b3060009081526020819052604090205480156120d9576120d981612dc4565b50506007805460ff60a01b19169055505b60075460225460ff600160a01b9092048216159161010090910416156121a8576001600160a01b03861660009081526021602052604090205460ff1615801561214c57506001600160a01b03851660009081526021602052604090205460ff16155b801561217057506001600160a01b038616600090815260208052604090205460ff16155b801561219457506001600160a01b038516600090815260208052604090205460ff16155b156121a35780156121a3575060015b61223b565b6001600160a01b03861660009081526021602052604090205460ff161580156121ea57506001600160a01b03851660009081526021602052604090205460ff16155b801561220e57506001600160a01b038616600090815260208052604090205460ff16155b801561223257506001600160a01b038516600090815260208052604090205460ff16155b1561223b575060005b6001600160a01b038616600090815260208052604090205460ff168061227857506001600160a01b038516600090815260208052604090205460ff165b15612281575060005b80156126345760165460ff16156122e457601e5460ff166122e45760405162461bcd60e51b815260206004820152601860248201527f45524332303a205472616e73666572206e6f74206f70656e00000000000000006044820152606401610d10565b6016546301000000900460ff16156123b2576001600160a01b03861660009081526021602052604090205460ff161561236757601a548411156123625760405162461bcd60e51b8152602060048201526016602482015275115490cc8c0e880f881b585e081d1e08185b5bdd5b9d60521b6044820152606401610d10565b6123b2565b6019548411156123b25760405162461bcd60e51b8152602060048201526016602482015275115490cc8c0e880f881b585e081d1e08185b5bdd5b9d60521b6044820152606401610d10565b6007546001600160a01b03878116911614156124b757601654640100000000900460ff161561245557601b54612407612400876001600160a01b031660009081526020819052604090205490565b8690611d20565b11156124555760405162461bcd60e51b815260206004820152601a60248201527f45524332303a203e206d61782077616c6c657420616d6f756e740000000000006044820152606401610d10565b43601854601c5461246691906138c7565b11801561247b575060165462010000900460ff165b801561248e5750601654610100900460ff165b156124b7576001600160a01b0385166000908152600b60205260409020805460ff191660011790555b6001600160a01b03861660009081526021602052604081205460ff16156124fa576124f3612710612063600f5488612a8290919063ffffffff16565b9050612518565b61251561271061206360145488612a8290919063ffffffff16565b90505b6001600160a01b03871660009081526021602052604081205460ff161561255b5761255461271061206360105489612a8290919063ffffffff16565b9050612579565b61257661271061206360155489612a8290919063ffffffff16565b90505b80156125995761258c8861dead83612979565b6125968682612fb9565b95505b6125a38683612fb9565b95506125b0883084612979565b602354156126315760005b60235481101561261f576040805160208101839052439181019190915244606082015242608082015261260d908a9060a0016040516020818303038152906040528051906020012060001c6001612979565b8061261781613972565b9150506125bb565b5060235461262e908790612fb9565b95505b50505b61263f868686612979565b6008546001600160a01b031663e30443bc87612670816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156126b657600080fd5b505af19250505080156126c7575060015b506008546001600160a01b031663e30443bc866126f9816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561273f57600080fd5b505af1925050508015612750575060015b50600754600160a01b900460ff1661172b57601f546008546040516001624d3b8760e01b03198152600481018390526001600160a01b039091169063ffb2c47990602401606060405180830381600087803b1580156127ae57600080fd5b505af19250505080156127de575060408051601f3d908101601f191682019092526127db9181019061370e565b60015b6127e757612838565b60408051848152602081018490529081018290526060810185905232906001907fc864333d6121033635ab41b29ae52f10a22cf4438c3e4f1c4c68518feb2f8a989060800160405180910390a35050505b50505050505050565b600081848411156128655760405162461bcd60e51b8152600401610d10919061373c565b5060006128728486613920565b95945050505050565b6001600160a01b03821660009081526021602052604090205460ff161515811515141561291a5760405162461bcd60e51b815260206004820152604160248201527f4554484261636b3a204175746f6d61746564206d61726b6574206d616b65722060448201527f7061697220697320616c72656164792073657420746f20746861742076616c756064820152606560f81b608482015260a401610d10565b6001600160a01b0382166000908152602160205260409020805460ff191682158015919091179091556117c15760085460405163031e79db60e41b81526001600160a01b038481166004830152909116906331e79db0906024016116fd565b6001600160a01b03831661299f5760405162461bcd60e51b8152600401610d1090613809565b6001600160a01b0382166129c55760405162461bcd60e51b8152600401610d1090613791565b612a02816040518060600160405280602681526020016139dd602691396001600160a01b0386166000908152602081905260409020549190612841565b6001600160a01b038085166000908152602081905260408082209390935590841681522054612a319082611d20565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611e9e565b600082612a9157506000610e51565b6000612a9d8385613901565b905082612aaa85836138df565b14611d7f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610d10565b6000611d7f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ffb565b6040516370a0823160e01b81523060048201526000907f000000000000000000000000912ce59144191c1204e64559fe8253a0e49e65486001600160a01b0316906370a082319060240160206040518083038186803b158015612ba557600080fd5b505afa158015612bb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bdd91906136d3565b9050612be882613029565b6040516370a0823160e01b8152306004820152600090612c8e9083906001600160a01b037f000000000000000000000000912ce59144191c1204e64559fe8253a0e49e654816906370a082319060240160206040518083038186803b158015612c5057600080fd5b505afa158015612c64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c8891906136d3565b90612fb9565b60165460405163a9059cbb60e01b81526001600160a01b03600160301b90920482166004820152602481018390529192507f000000000000000000000000912ce59144191c1204e64559fe8253a0e49e6548169063a9059cbb90604401602060405180830381600087803b158015612d0557600080fd5b505af1158015612d19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab919061369d565b6000612d4a826002612b01565b90506000612d588383612fb9565b905047612d6483613210565b6000612d704783612fb9565b9050612d7c83826133a1565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050505050565b612dcd81613029565b6040516370a0823160e01b81523060048201526000907f000000000000000000000000912ce59144191c1204e64559fe8253a0e49e65486001600160a01b0316906370a082319060240160206040518083038186803b158015612e2f57600080fd5b505afa158015612e43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6791906136d3565b60085460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529192506000917f000000000000000000000000912ce59144191c1204e64559fe8253a0e49e65489091169063a9059cbb90604401602060405180830381600087803b158015612edc57600080fd5b505af1158015612ef0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f14919061369d565b90508015611f51576008546040516351c2a0e360e01b8152600481018490526001600160a01b03909116906351c2a0e390602401600060405180830381600087803b158015612f6257600080fd5b505af1158015612f76573d6000803e3d6000fd5b505060408051868152602081018690527f80195cc573b02cc48460cbca6e6e4cc85ddb91959d946e1c3025ea3d87942dc3935001905060405180910390a1505050565b6000611d7f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612841565b6000818361301c5760405162461bcd60e51b8152600401610d10919061373c565b50600061287284866138df565b60408051600380825260808201909252600091602082016060803683370190505090503081600081518110613060576130606139a3565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156130b457600080fd5b505afa1580156130c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130ec91906134f6565b816001815181106130ff576130ff6139a3565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000912ce59144191c1204e64559fe8253a0e49e654881600281518110613153576131536139a3565b6001600160a01b0392831660209182029290920101526006546131799130911684611d86565b60065460405163561c49dd60e11b81526001600160a01b039091169063ac3893ba906131b4908590600090869030908390429060040161384e565b600060405180830381600087803b1580156131ce57600080fd5b505af19250505080156131df575060015b6117c1576040517ffa4626fc78df02cb8fdea85a8af60ad29e2c95f22e2a91c79d99631c288a8b6c90600090a15050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613245576132456139a3565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561329957600080fd5b505afa1580156132ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d191906134f6565b816001815181106132e4576132e46139a3565b6001600160a01b03928316602091820292909201015260065461330a9130911684611d86565b600654604051632955261160e11b81526001600160a01b03909116906352aa4c2290613345908590600090869030908390429060040161384e565b600060405180830381600087803b15801561335f57600080fd5b505af1925050508015613370575060015b6117c1576040517fe2ca28dff25f053218cef44cd4580a8df8e34fd11ee24e2e45b5394750c20d3c90600090a15050565b6006546133b99030906001600160a01b031684611d86565b60065460165460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b03600160301b909204821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b15801561342b57600080fd5b505af19350505050801561345c575060408051601f3d908101601f191682019092526134599181019061370e565b60015b61109f576040517f7f9722f0fc39b6e3f30aeebd8e67a082ad4dcd92706bfd1f76130f39ba012aec90600090a15050565b60008083601f84011261349f57600080fd5b50813567ffffffffffffffff8111156134b757600080fd5b6020830191508360208260051b85010111156134d257600080fd5b9250929050565b6000602082840312156134eb57600080fd5b8135611d7f816139b9565b60006020828403121561350857600080fd5b8151611d7f816139b9565b6000806040838503121561352657600080fd5b8235613531816139b9565b91506020830135613541816139b9565b809150509250929050565b60008060006060848603121561356157600080fd5b833561356c816139b9565b9250602084013561357c816139b9565b929592945050506040919091013590565b600080604083850312156135a057600080fd5b82356135ab816139b9565b91506020830135613541816139ce565b600080604083850312156135ce57600080fd5b82356135d9816139b9565b946020939093013593505050565b6000806000604084860312156135fc57600080fd5b833567ffffffffffffffff81111561361357600080fd5b61361f8682870161348d565b9094509250506020840135613633816139ce565b809150509250925092565b6000806020838503121561365157600080fd5b823567ffffffffffffffff81111561366857600080fd5b6136748582860161348d565b90969095509350505050565b60006020828403121561369257600080fd5b8135611d7f816139ce565b6000602082840312156136af57600080fd5b8151611d7f816139ce565b6000602082840312156136cc57600080fd5b5035919050565b6000602082840312156136e557600080fd5b5051919050565b600080604083850312156136ff57600080fd5b50508035926020909101359150565b60008060006060848603121561372357600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156137695785810183015185820160400152820161374d565b8181111561377b576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b600060c082018883526020888185015260c0604085015281885180845260e086019150828a01935060005b8181101561389e5784516001600160a01b031683529383019391830191600101613879565b50506001600160a01b039788166060860152959096166080840152505060a00152949350505050565b600082198211156138da576138da61398d565b500190565b6000826138fc57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561391b5761391b61398d565b500290565b6000828210156139325761393261398d565b500390565b600181811c9082168061394b57607f821691505b6020821081141561396c57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156139865761398661398d565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461119157600080fd5b801515811461119157600080fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212201f7caf8bd8677249835dd1bb274c59f21d616c51e245058afde04513e3c2fe9264736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b4149444f47455a494c4c41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b4149444f47455a494c4c4100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000006ec2c2369d7d17c84751664ccbe7d8aee8549c79000000000000000000000000912ce59144191c1204e64559fe8253a0e49e6548000000000000000000000000c873fecbd354f5a56e00e710b90ef4201db2448d000000000000000000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000adb53acfa41aee12000000000000000000000000000000000000000000000000000000004a9b638448800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : stringParams (string[]): AIDOGEZILLA,AIDOGEZILLA
Arg [1] : addressParams (address[]): 0x6ec2C2369d7d17C84751664ccBe7D8AEe8549c79,0x912CE59144191C1204E64559FE8253a0e49E6548,0xc873fEcbd354f5A56E00E710B90EF4201db2448d
Arg [2] : numberParams (uint256[]): 0,0,0,300,100,500,0,300,100,500,0,210000000000000000000000000,21000000000000000,0,0
Arg [3] : boolParams (bool[]): True,False,True,False,False,False,True,False
-----Encoded View---------------
40 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [2] : 00000000000000000000000000000000000000000000000000000000000001e0
Arg [3] : 00000000000000000000000000000000000000000000000000000000000003e0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [7] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [8] : 4149444f47455a494c4c41000000000000000000000000000000000000000000
Arg [9] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [10] : 4149444f47455a494c4c41000000000000000000000000000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [12] : 0000000000000000000000006ec2c2369d7d17c84751664ccbe7d8aee8549c79
Arg [13] : 000000000000000000000000912ce59144191c1204e64559fe8253a0e49e6548
Arg [14] : 000000000000000000000000c873fecbd354f5a56e00e710b90ef4201db2448d
Arg [15] : 000000000000000000000000000000000000000000000000000000000000000f
Arg [16] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [17] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [18] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [19] : 000000000000000000000000000000000000000000000000000000000000012c
Arg [20] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [21] : 00000000000000000000000000000000000000000000000000000000000001f4
Arg [22] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [23] : 000000000000000000000000000000000000000000000000000000000000012c
Arg [24] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [25] : 00000000000000000000000000000000000000000000000000000000000001f4
Arg [26] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [27] : 000000000000000000000000000000000000000000adb53acfa41aee12000000
Arg [28] : 000000000000000000000000000000000000000000000000004a9b6384488000
Arg [29] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [30] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [31] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [32] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [33] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [34] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [35] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [36] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [37] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [38] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [39] : 0000000000000000000000000000000000000000000000000000000000000000
Deployed ByteCode Sourcemap
14368:20611:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21022:168;;;;;;;;;;;;;:::i;:::-;;15752:45;;;;;;;;;;-1:-1:-1;15752:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7718:14:1;;7711:22;7693:41;;7681:2;7666:18;15752:45:0;;;;;;;;15321:29;;;;;;;;;;-1:-1:-1;15321:29:0;;;;;;;;;;;15034:32;;;;;;;;;;;;;;;;;;;17298:25:1;;;17286:2;17271:18;15034:32:0;17152:177:1;20691:129:0;;;;;;;;;;;;;:::i;8614:100::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;9668:208::-;;;;;;;;;;-1:-1:-1;9668:208:0;;;;;:::i;:::-;;:::i;20927:87::-;;;;;;;;;;;;;:::i;21198:163::-;;;;;;;;;;-1:-1:-1;21198:163:0;;;;;:::i;:::-;;:::i;21369:221::-;;;;;;;;;;-1:-1:-1;21369:221:0;;;;;:::i;:::-;;:::i;8936:108::-;;;;;;;;;;-1:-1:-1;9024:12:0;;8936:108;;14443:37;;;;;;;;;;-1:-1:-1;14443:37:0;;;;-1:-1:-1;;;;;14443:37:0;;;;;;-1:-1:-1;;;;;5709:32:1;;;5691:51;;5679:2;5664:18;14443:37:0;5545:203:1;9884:450:0;;;;;;;;;;-1:-1:-1;9884:450:0;;;;;:::i;:::-;;:::i;14960:26::-;;;;;;;;;;;;;;;;14546:45;;;;;;;;;;-1:-1:-1;14546:45:0;;;;-1:-1:-1;;;;;14546:45:0;;;15468:21;;;;;;;;;;;;;;;;8834:94;;;;;;;;;;-1:-1:-1;8834:94:0;;8919:1;19536:36:1;;19524:2;19509:18;8834:94:0;19394:184:1;23624:130:0;;;;;;;;;;-1:-1:-1;23624:130:0;;;;;:::i;:::-;;:::i;10342:296::-;;;;;;;;;;-1:-1:-1;10342:296:0;;;;;:::i;:::-;;:::i;15806:45::-;;;;;;;;;;-1:-1:-1;15806:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14487:24;;;;;;;;;;-1:-1:-1;14487:24:0;;;;-1:-1:-1;;;;;14487:24:0;;;15113:29;;;;;;;;;;;;;;;;24484:40;;;;;;;;;;-1:-1:-1;24484:40:0;;;;;;;;24291:185;;;;;;;;;;-1:-1:-1;24291:185:0;;;;;:::i;:::-;;:::i;24180:103::-;;;;;;;;;;;;;:::i;15639:26::-;;;;;;;;;;;;;;;;15602:30;;;;;;;;;;;;;;;;15218:27;;;;;;;;;;-1:-1:-1;15218:27:0;;;;;;;;;;;14995:32;;;;;;;;;;;;;;;;22915:329;;;;;;;;;;-1:-1:-1;22915:329:0;;;;;:::i;:::-;;:::i;15496:28::-;;;;;;;;;;;;;;;;20828:91;;;;;;;;;;;;;:::i;15149:27::-;;;;;;;;;;;;;;;;23762:410;;;;;;;;;;-1:-1:-1;23762:410:0;;;;;:::i;:::-;;:::i;9052:177::-;;;;;;;;;;-1:-1:-1;9052:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;9203:18:0;9171:7;9203:18;;;;;;;;;;;;9052:177;6553:148;;;;;;;;;;;;;:::i;14810:31::-;;;;;;;;;;;;;;;;24700:105;;;;;;;;;;-1:-1:-1;24700:105:0;;;;;:::i;:::-;;:::i;20458:107::-;;;;;;;;;;-1:-1:-1;20458:107:0;;;;;:::i;:::-;;:::i;14679:28::-;;;;;;;;;;;;;;;14600:70;;;;;;;;;;-1:-1:-1;14600:70:0;;;;-1:-1:-1;;;;;14600:70:0;;;21598:106;;;;;;;;;;-1:-1:-1;21598:106:0;;;;;:::i;:::-;;:::i;15531:27::-;;;;;;;;;;;;;;;;19576:514;;;;;;;;;;;;;:::i;5911:79::-;;;;;;;;;;-1:-1:-1;5976:6:0;;-1:-1:-1;;;;;5976:6:0;5911:79;;20137:313;;;;;;;;;;-1:-1:-1;20137:313:0;;;;;:::i;:::-;;:::i;8722:104::-;;;;;;;;;;;;;:::i;15703:40::-;;;;;;;;;;;;;;;;15287:27;;;;;;;;;;-1:-1:-1;15287:27:0;;;;;;;;;;;10646:396;;;;;;;;;;-1:-1:-1;10646:396:0;;;;;:::i;:::-;;:::i;22634:273::-;;;;;;;;;;-1:-1:-1;22634:273:0;;;;;:::i;:::-;;:::i;9237:214::-;;;;;;;;;;-1:-1:-1;9237:214:0;;;;;:::i;:::-;;:::i;15565:30::-;;;;;;;;;;;;;;;;21712:914;;;;;;;;;;-1:-1:-1;21712:914:0;;;;;:::i;:::-;;:::i;19454:114::-;;;;;;;;;;-1:-1:-1;19454:114:0;;;;;:::i;:::-;;:::i;15252:28::-;;;;;;;;;;-1:-1:-1;15252:28:0;;;;;;;;;;;14886:32;;;;;;;;;;;;;;;;14758:43;;;;;;;;;;-1:-1:-1;14758:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;24533:113;;;;;;;;;;-1:-1:-1;24533:113:0;;;;;:::i;:::-;;:::i;15185:26::-;;;;;;;;;;-1:-1:-1;15185:26:0;;;;;;;;15357:27;;;;;;;;;;-1:-1:-1;15357:27:0;;;;;;;;;;;15426:33;;;;;;;;;;-1:-1:-1;15426:33:0;;;;-1:-1:-1;;;;;15426:33:0;;;24654:37;;;;;;;;;;-1:-1:-1;24654:37:0;;;;;;;;;;;9459:201;;;;;;;;;;-1:-1:-1;9459:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;9625:18:0;;;9593:7;9625:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9459:201;14716:33;;;;;;;;;;;;;;;;24813:31;;;;;;;;;;;;;;;;24853:157;;;;;;;;;;-1:-1:-1;24853:157:0;;;;;:::i;:::-;;:::i;15393:26::-;;;;;;;;;;-1:-1:-1;15393:26:0;;;;-1:-1:-1;;;15393:26:0;;-1:-1:-1;;;;;15393:26:0;;;14848:31;;;;;;;;;;;;;;;;6856:281;;;;;;;;;;-1:-1:-1;6856:281:0;;;;;:::i;:::-;;:::i;14925:28::-;;;;;;;;;;;;;;;;15674:20;;;;;;;;;;-1:-1:-1;15674:20:0;;;;;;;;15073:33;;;;;;;;;;;;;;;;21022:168;6123:6;;-1:-1:-1;;;;;6123:6:0;5129:10;6123:22;6115:67;;;;-1:-1:-1;;;6115:67:0;;;;;;;:::i;:::-;;;;;;;;;21076:14:::1;::::0;::::1;;21068:47;;;::::0;-1:-1:-1;;;21068:47:0;;11695:2:1;21068:47:0::1;::::0;::::1;11677:21:1::0;11734:2;11714:18;;;11707:30;-1:-1:-1;;;11753:18:1;;;11746:50;11813:18;;21068:47:0::1;11493:344:1::0;21068:47:0::1;21126:8;:15:::0;;-1:-1:-1;;21126:15:0::1;21137:4;21126:15;::::0;;21170:12:::1;21152:15;:30:::0;21022:168::o;20691:129::-;6123:6;;-1:-1:-1;;;;;6123:6:0;5129:10;6123:22;6115:67;;;;-1:-1:-1;;;6115:67:0;;;;;;;:::i;:::-;20789:15:::1;:23:::0;;-1:-1:-1;;20789:23:0::1;::::0;;20691:129::o;8614:100::-;8668:13;8701:5;8694:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8614:100;:::o;9668:208::-;9787:4;9809:37;9818:10;9830:7;9839:6;9809:8;:37::i;:::-;-1:-1:-1;9864:4:0;9668:208;;;;;:::o;20927:87::-;6123:6;;-1:-1:-1;;;;;6123:6:0;5129:10;6123:22;6115:67;;;;-1:-1:-1;;;6115:67:0;;;;;;;:::i;:::-;20983:15:::1;:23:::0;;-1:-1:-1;;20983:23:0::1;::::0;;20927:87::o;21198:163::-;6123:6;;-1:-1:-1;;;;;6123:6:0;5129:10;6123:22;6115:67;;;;-1:-1:-1;;;6115:67:0;;;;;;;:::i;:::-;21281:15:::1;::::0;::::1;::::0;::::1;;;21273:49;;;::::0;-1:-1:-1;;;21273:49:0;;10179:2:1;21273:49:0::1;::::0;::::1;10161:21:1::0;10218:2;10198:18;;;10191:30;-1:-1:-1;;;10237:18:1;;;10230:51;10298:18;;21273:49:0::1;9977:345:1::0;21273:49:0::1;21333:2;:20:::0;21198:163::o;21369:221::-;6123:6;;-1:-1:-1;;;;;6123:6:0;5129:10;6123:22;6115:67;;;;-1:-1:-1;;;6115:67:0;;;;;;;:::i;:::-;21488:9:::1;21483:100;21503:15:::0;;::::1;21483:100;;;21565:6;21540:13;:22;21554:4;;21559:1;21554:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21540:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;21540:22:0;:31;;-1:-1:-1;;21540:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21520:3;::::1;::::0;::::1;:::i;:::-;;;;21483:100;;;;21369:221:::0;;;:::o;9884:450::-;10024:4;10041:36;10051:6;10059:9;10070:6;10041:9;:36::i;:::-;10088:216;10111:6;10132:10;10157:136;10211:6;10157:136;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10157:19:0;;;;;;:11;:19;;;;;;;;10177:10;10157:31;;;;;;;;;:136;:35;:136::i;:::-;10088:8;:216::i;:::-;-1:-1:-1;10322:4:0;9884:450;;;;;:::o;23624:130::-;6123:6;;-1:-1:-1;;;;;6123:6:0;5129:10;6123:22;6115:67;;;;-1:-1:-1;;;6115:67:0;;;;;;;:::i;:::-;23701:15:::1;::::0;:45:::1;::::0;-1:-1:-1;;;23701:45:0;;-1:-1:-1;;;;;5709:32:1;;;23701:45:0::1;::::0;::::1;5691:51:1::0;23701:15:0;;::::1;::::0;:36:::1;::::0;5664:18:1;;23701:45:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23624:130:::0;:::o;10342:296::-;10502:10;10457:4;10549:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;10549:32:0;;;;;;;;;;10457:4;;10479:129;;10527:7;;10549:48;;10586:10;10549:36;:48::i;24291:185::-;-1:-1:-1;;;;;24371:20:0;;24347:7;24371:20;;;:11;:20;;;;;;;;24367:102;;;-1:-1:-1;24415:1:0;;24291:185;-1:-1:-1;24291:185:0:o;24367:102::-;-1:-1:-1;24456:1:0;;24291:185;-1:-1:-1;24291:185:0:o;24180:103::-;24217:15;;:58;;-1:-1:-1;;;24217:58:0;;24256:10;24217:58;;;5937:51:1;24217:15:0;6004:18:1;;;5997:50;-1:-1:-1;;;;;24217:15:0;;;;:30;;5910:18:1;;24217:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24180:103::o;22915:329::-;6123:6;;-1:-1:-1;;;;;6123:6:0;5129:10;6123:22;6115:67;;;;-1:-1:-1;;;6115:67:0;;;;;;;:::i;:::-;23038:16:::1;::::0;;;::::1;;;23030:51;;;::::0;-1:-1:-1;;;23030:51:0;;9426:2:1;23030:51:0::1;::::0;::::1;9408:21:1::0;9465:2;9445:18;;;9438:30;-1:-1:-1;;;9484:18:1;;;9477:52;9546:18;;23030:51:0::1;9224:346:1::0;23030:51:0::1;23119:3;23100:22:::0;::::1;23092:31;;;::::0;::::1;;23139:9;23134:103;23150:20:::0;;::::1;23134:103;;;23220:5;23192:11;:25;23204:9;;23214:1;23204:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23192:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;23192:25:0;:33;;-1:-1:-1;;23192:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23172:3:::1;::::0;::::1;:::i;:::-;;;23134:103;;20828:91:::0;6123:6;;-1:-1:-1;;;;;6123:6:0;5129:10;6123:22;6115:67;;;;-1:-1:-1;;;6115:67:0;;;;;;;:::i;:::-;20886:17:::1;:25:::0;;-1:-1:-1;;20886:25:0::1;::::0;;20828:91::o;23762:410::-;23944:15;;:28;;-1:-1:-1;;;;;;23944:28:0;;;;;17298:25:1;;;23842:18:0;;;;;;-1:-1:-1;;;;;23944:15:0;;:23;;17271:18:1;;23944:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23988:176;;;19229:25:1;;;19285:2;19270:18;;19263:34;;;19313:18;;;19306:34;;;19371:2;19356:18;;19349:34;;;23827:145:0;;-1:-1:-1;23827:145:0;;-1:-1:-1;23827:145:0;-1:-1:-1;24144:9:0;;24106:5;;23988:176;;19216:3:1;19201:19;23988:176:0;;;;;;;23816:356;;;23762:410;:::o;6553:148::-;6123:6;;-1:-1:-1;;;;;6123:6:0;5129:10;6123:22;6115:67;;;;-1:-1:-1;;;6115:67:0;;;;;;;:::i;:::-;6644:6:::1;::::0;6623:40:::1;::::0;6660:1:::1;::::0;-1:-1:-1;;;;;6644:6:0::1;::::0;6623:40:::1;::::0;6660:1;;6623:40:::1;6674:6;:19:::0;;-1:-1:-1;;;;;;6674:19:0::1;::::0;;6553:148::o;24700:105::-;6123:6;;-1:-1:-1;;;;;6123:6:0;5129:10;6123:22;6115:67;;;;-1:-1:-1;;;6115:67:0;;;;;;;:::i;:::-;24771:17:::1;:26:::0;;;::::1;;;;-1:-1:-1::0;;24771:26:0;;::::1;::::0;;;::::1;::::0;;24700:105::o;20458:107::-;6123:6;;-1:-1:-1;;;;;6123:6:0;5129:10;6123:22;6115:67;;;;-1:-1:-1;;;6115:67:0;;;;;;;:::i;:::-;20532:15:::1;:25:::0;20458:107::o;21598:106::-;6123:6;;-1:-1:-1;;;;;6123:6:0;5129:10;6123:22;6115:67;;;;-1:-1:-1;;;6115:67:0;;;;;;;:::i;:::-;21676:11:::1;:20:::0;;-1:-1:-1;;;;;21676:20:0;;::::1;-1:-1:-1::0;;;21676:20:0::1;-1:-1:-1::0;;;;;;21676:20:0;;::::1;::::0;;;::::1;::::0;;21598:106::o;19576:514::-;6123:6;;-1:-1:-1;;;;;6123:6:0;5129:10;6123:22;6115:67;;;;-1:-1:-1;;;6115:67:0;;;;;;;:::i;:::-;19700:18:::1;::::0;19781:26:::1;::::0;;-1:-1:-1;;;19781:26:0;;;;-1:-1:-1;;;;;19700:18:0;;::::1;::::0;19629:35:::1;::::0;19700:18;;19781:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;19700:18;19781:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19763:70:0::1;;19842:4;19849:16;-1:-1:-1::0;;;;;19849:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19763:110;::::0;-1:-1:-1;;;;;;19763:110:0::1;::::0;;;;;;-1:-1:-1;;;;;6583:15:1;;;19763:110:0::1;::::0;::::1;6565:34:1::0;6635:15;;6615:18;;;6608:43;6500:18;;19763:110:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19884:11;:30:::0;;-1:-1:-1;;;;;19884:30:0;;::::1;-1:-1:-1::0;;;;;;19884:30:0;;::::1;;::::0;;;19925:9:::1;:22:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;19742:131;-1:-1:-1;19960:46:0::1;19742:131:::0;19884:30;19960:28:::1;:46::i;:::-;20017:15;::::0;:63:::1;::::0;-1:-1:-1;;;20017:63:0;;-1:-1:-1;;;;;5709:32:1;;;20017:63:0::1;::::0;::::1;5691:51:1::0;20017:15:0;;::::1;::::0;:36:::1;::::0;5664:18:1;;20017:63:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19618:472;;19576:514::o:0;20137:313::-;6123:6;;-1:-1:-1;;;;;6123:6:0;5129:10;6123:22;6115:67;;;;-1:-1:-1;;;6115:67:0;;;;;;;:::i;:::-;20256:12:::1;:25:::0;;;20292:13:::1;:27:::0;;;20352:29;;::::1;;20330:112;;;::::0;-1:-1:-1;;;20330:112:0;;9777:2:1;20330:112:0::1;::::0;::::1;9759:21:1::0;9816:2;9796:18;;;9789:30;9855:34;9835:18;;;9828:62;-1:-1:-1;;;9906:18:1;;;9899:31;9947:19;;20330:112:0::1;9575:397:1::0;20330:112:0::1;20137:313:::0;;:::o;8722:104::-;8778:13;8811:7;8804:14;;;;;:::i;10646:396::-;10766:4;10788:224;10811:10;10836:7;10858:143;10913:15;10858:143;;;;;;;;;;;;;;;;;10870:10;10858:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;10858:32:0;;;;;;;;;;;:143;:36;:143::i;22634:273::-;6123:6;;-1:-1:-1;;;;;6123:6:0;5129:10;6123:22;6115:67;;;;-1:-1:-1;;;6115:67:0;;;;;;;:::i;:::-;22744:9:::1;::::0;-1:-1:-1;;;;;22736:17:0;;::::1;22744:9:::0;::::1;22736:17;;22714:132;;;::::0;-1:-1:-1;;;22714:132:0;;15089:2:1;22714:132:0::1;::::0;::::1;15071:21:1::0;15128:2;15108:18;;;15101:30;15167:34;15147:18;;;15140:62;15238:34;15218:18;;;15211:62;-1:-1:-1;;;15289:19:1;;;15282:32;15331:19;;22714:132:0::1;14887:469:1::0;22714:132:0::1;22857:42;22886:4;22892:6;22857:28;:42::i;9237:214::-:0;9359:4;9381:40;9391:10;9403:9;9414:6;9381:9;:40::i;21712:914::-;6123:6;;-1:-1:-1;;;;;6123:6:0;5129:10;6123:22;6115:67;;;;-1:-1:-1;;;6115:67:0;;;;;;;:::i;:::-;21803:15:::1;::::0;;;::::1;;;21795:47;;;::::0;-1:-1:-1;;;21795:47:0;;17006:2:1;21795:47:0::1;::::0;::::1;16988:21:1::0;17045:2;17025:18;;;17018:30;-1:-1:-1;;;17064:18:1;;;17057:49;17123:18;;21795:47:0::1;16804:343:1::0;21795:47:0::1;21872:7;;21880:1;21872:10;;;;;;;:::i;:::-;;;::::0;;;::::1;;21853:16;:29:::0;-1:-1:-1;21912:7:0;;21920:1:::1;21912:10:::0;;::::1;;;;;:::i;:::-;;;::::0;;;::::1;;21893:16;:29:::0;-1:-1:-1;21953:7:0;;21961:1:::1;21953:10:::0;;::::1;;;;;:::i;:::-;;;;;;;21933:17;:30;;;;21990:85;22048:16;;21990:39;22012:16;;21990:17;;:21;;:39;;;;:::i;:::-;:43:::0;::::1;:85::i;:::-;21974:13;:101:::0;22100:7;;22108:1:::1;22100:10:::0;;::::1;;;;;:::i;:::-;;;::::0;;;::::1;;22086:11;:24:::0;-1:-1:-1;22143:7:0;;22151:1:::1;22143:10:::0;;::::1;;;;;:::i;:::-;;;::::0;;;::::1;;22123:17;:30:::0;-1:-1:-1;22184:7:0;;22192:1:::1;22184:10:::0;;::::1;;;;;:::i;:::-;;;::::0;;;::::1;;22164:17;:30:::0;-1:-1:-1;22226:7:0;;22234:1:::1;22226:10:::0;;::::1;;;;;:::i;:::-;;;;;;;22205:18;:31;;;;22264:88;22324:17;;22264:41;22287:17;;22264:18;;:22;;:41;;;;:::i;:88::-;22247:14;:105:::0;22378:7;;22386:1:::1;22378:10:::0;;::::1;;;;;:::i;:::-;;;::::0;;;::::1;;22363:12;:25:::0;-1:-1:-1;22502:11:0::1;::::0;22486:13:::1;::::0;22516:4:::1;::::0;22486:27:::1;::::0;::::1;:::i;:::-;:34;22478:63;;;::::0;-1:-1:-1;;;22478:63:0;;16661:2:1;22478:63:0::1;::::0;::::1;16643:21:1::0;16700:2;16680:18;;;16673:30;-1:-1:-1;;;16719:18:1;;;16712:46;16775:18;;22478:63:0::1;16459:340:1::0;22478:63:0::1;22592:4;22577:12;;22560:14;;:29;;;;:::i;:::-;:36;22552:66;;;::::0;-1:-1:-1;;;22552:66:0;;16315:2:1;22552:66:0::1;::::0;::::1;16297:21:1::0;16354:2;16334:18;;;16327:30;-1:-1:-1;;;16373:18:1;;;16366:47;16430:18;;22552:66:0::1;16113:341:1::0;19454:114:0;6123:6;;-1:-1:-1;;;;;6123:6:0;5129:10;6123:22;6115:67;;;;-1:-1:-1;;;6115:67:0;;;;;;;:::i;:::-;19531:18:::1;:29:::0;19454:114::o;24533:113::-;6123:6;;-1:-1:-1;;;;;6123:6:0;5129:10;6123:22;6115:67;;;;-1:-1:-1;;;6115:67:0;;;;;;;:::i;:::-;24608:21:::1;:30:::0;;-1:-1:-1;;24608:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24533:113::o;24853:157::-;6123:6;;-1:-1:-1;;;;;6123:6:0;5129:10;6123:22;6115:67;;;;-1:-1:-1;;;6115:67:0;;;;;;;:::i;:::-;24944:1:::1;24932:8;:13;;24924:44;;;::::0;-1:-1:-1;;;24924:44:0;;15563:2:1;24924:44:0::1;::::0;::::1;15545:21:1::0;15602:2;15582:18;;;15575:30;-1:-1:-1;;;15621:18:1;;;15614:48;15679:18;;24924:44:0::1;15361:342:1::0;24924:44:0::1;24979:12;:23:::0;24853:157::o;6856:281::-;6123:6;;-1:-1:-1;;;;;6123:6:0;5129:10;6123:22;6115:67;;;;-1:-1:-1;;;6115:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6959:22:0;::::1;6937:110;;;::::0;-1:-1:-1;;;6937:110:0;;10529:2:1;6937:110:0::1;::::0;::::1;10511:21:1::0;10568:2;10548:18;;;10541:30;10607:34;10587:18;;;10580:62;-1:-1:-1;;;10658:18:1;;;10651:36;10704:19;;6937:110:0::1;10327:402:1::0;6937:110:0::1;7084:6;::::0;7063:38:::1;::::0;-1:-1:-1;;;;;7063:38:0;;::::1;::::0;7084:6:::1;::::0;7063:38:::1;::::0;7084:6:::1;::::0;7063:38:::1;7112:6;:17:::0;;-1:-1:-1;;;;;;7112:17:0::1;-1:-1:-1::0;;;;;7112:17:0;;;::::1;::::0;;;::::1;::::0;;6856:281::o;454:181::-;512:7;;544:5;548:1;544;:5;:::i;:::-;532:17;;573:1;568;:6;;560:46;;;;-1:-1:-1;;;560:46:0;;11339:2:1;560:46:0;;;11321:21:1;11378:2;11358:18;;;11351:30;11417:29;11397:18;;;11390:57;11464:18;;560:46:0;11137:351:1;560:46:0;626:1;454:181;-1:-1:-1;;;454:181:0:o;12517:380::-;-1:-1:-1;;;;;12653:19:0;;12645:68;;;;-1:-1:-1;;;12645:68:0;;15910:2:1;12645:68:0;;;15892:21:1;15949:2;15929:18;;;15922:30;15988:34;15968:18;;;15961:62;-1:-1:-1;;;16039:18:1;;;16032:34;16083:19;;12645:68:0;15708:400:1;12645:68:0;-1:-1:-1;;;;;12732:21:0;;12724:68;;;;-1:-1:-1;;;12724:68:0;;10936:2:1;12724:68:0;;;10918:21:1;10975:2;10955:18;;;10948:30;11014:34;10994:18;;;10987:62;-1:-1:-1;;;11065:18:1;;;11058:32;11107:19;;12724:68:0;10734:398:1;12724:68:0;-1:-1:-1;;;;;12805:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;12857:32;;17298:25:1;;;12857:32:0;;17271:18:1;12857:32:0;;;;;;;;12517:380;;;:::o;25018:5939::-;-1:-1:-1;;;;;25150:18:0;;25142:68;;;;-1:-1:-1;;;25142:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25229:16:0;;25221:64;;;;-1:-1:-1;;;25221:64:0;;;;;;;:::i;:::-;25322:1;25304:14;25313:4;25304:8;:14::i;:::-;:19;;25296:46;;;;-1:-1:-1;;;25296:46:0;;12750:2:1;25296:46:0;;;12732:21:1;12789:2;12769:18;;;12762:30;-1:-1:-1;;;12808:18:1;;;12801:44;12862:18;;25296:46:0;12548:338:1;25296:46:0;25359:11;25355:98;;25387:33;25403:4;25409:2;25413:6;25387:15;:33::i;:::-;25018:5939;;;:::o;25355:98::-;25514:4;25465:28;9203:18;;;;;;;;;;;25572;;25548:42;;;;;;;25621:33;;-1:-1:-1;25646:8:0;;-1:-1:-1;;;25646:8:0;;;;25645:9;25621:33;:70;;;;-1:-1:-1;;;;;;25672:19:0;;;;;;:13;:19;;;;;;;;25671:20;25621:70;:107;;;;-1:-1:-1;;;;;;25709:19:0;;;;;;:13;:19;;;;;;;;25708:20;25621:107;:142;;;;-1:-1:-1;;;;;;25746:17:0;;;;;;:13;:17;;;;;;;;25745:18;25621:142;:180;;;;-1:-1:-1;25780:21:0;;;;25621:180;:234;;;;;25854:1;25836:14;;25820:13;;:30;;;;:::i;:::-;25819:36;25621:234;25603:951;;;25882:8;:15;;-1:-1:-1;;;;25882:15:0;-1:-1:-1;;;25882:15:0;;;:8;26059:14;26043:13;;25882:15;;25940:134;;26043:30;;26059:14;26043:30;:::i;:::-;25940:80;26002:17;;25983:16;;:36;;;;:::i;:::-;25940:20;;:42;:80::i;:::-;:102;;:134::i;:::-;25914:160;-1:-1:-1;26093:19:0;;26089:58;;26114:33;26131:15;26114:16;:33::i;:::-;26164:18;26185:134;26304:14;;26288:13;;:30;;;;:::i;:::-;26185:80;26247:17;;26228:16;;:36;;;;:::i;:::-;26185:20;;:42;:80::i;:134::-;26164:155;-1:-1:-1;26338:14:0;;26334:46;;26354:26;26369:10;26354:14;:26::i;:::-;26436:4;26397:18;9203;;;;;;;;;;;26461:14;;26457:52;;26477:32;26498:10;26477:20;:32::i;:::-;-1:-1:-1;;26526:8:0;:16;;-1:-1:-1;;;;26526:16:0;;;-1:-1:-1;25603:951:0;26582:8;;26607:17;;26582:8;-1:-1:-1;;;26582:8:0;;;;;26581:9;;26582:8;26607:17;;;;26603:556;;;-1:-1:-1;;;;;26664:19:0;;;;;;:13;:19;;;;;;;;26663:20;:59;;;;-1:-1:-1;;;;;;26705:17:0;;;;;;:13;:17;;;;;;;;26704:18;26663:59;:100;;;;-1:-1:-1;;;;;;26744:19:0;;;;;;:13;:19;;;;;;;;26743:20;26663:100;:139;;;;-1:-1:-1;;;;;;26785:17:0;;;;;;:13;:17;;;;;;;;26784:18;26663:139;26641:248;;;26841:16;;26837:36;;-1:-1:-1;26869:4:0;26837:36;26603:556;;;-1:-1:-1;;;;;26944:19:0;;;;;;:13;:19;;;;;;;;26943:20;:59;;;;-1:-1:-1;;;;;;26985:17:0;;;;;;:13;:17;;;;;;;;26984:18;26943:59;:100;;;;-1:-1:-1;;;;;;27024:19:0;;;;;;:13;:19;;;;;;;;27023:20;26943:100;:139;;;;-1:-1:-1;;;;;;27065:17:0;;;;;;:13;:17;;;;;;;;27064:18;26943:139;26921:227;;;-1:-1:-1;27127:5:0;26921:227;-1:-1:-1;;;;;27260:19:0;;;;;;:13;:19;;;;;;;;;:40;;-1:-1:-1;;;;;;27283:17:0;;;;;;:13;:17;;;;;;;;27260:40;27256:88;;;-1:-1:-1;27327:5:0;27256:88;27360:7;27356:2808;;;27388:14;;;;27384:100;;;27431:8;;;;27423:45;;;;-1:-1:-1;;;27423:45:0;;14330:2:1;27423:45:0;;;14312:21:1;14369:2;14349:18;;;14342:30;14408:26;14388:18;;;14381:54;14452:18;;27423:45:0;14128:348:1;27423:45:0;27502:15;;;;;;;27498:344;;;-1:-1:-1;;;;;27542:19:0;;;;;;:13;:19;;;;;;;;27538:289;;;27632:12;;27622:6;:22;;27614:57;;;;-1:-1:-1;;;27614:57:0;;12044:2:1;27614:57:0;;;12026:21:1;12083:2;12063:18;;;12056:30;-1:-1:-1;;;12102:18:1;;;12095:52;12164:18;;27614:57:0;11842:346:1;27614:57:0;27538:289;;;27767:13;;27757:6;:23;;27749:58;;;;-1:-1:-1;;;27749:58:0;;12044:2:1;27749:58:0;;;12026:21:1;12083:2;12063:18;;;12056:30;-1:-1:-1;;;12102:18:1;;;12095:52;12164:18;;27749:58:0;11842:346:1;27749:58:0;27868:9;;-1:-1:-1;;;;;27860:17:0;;;27868:9;;27860:17;27856:524;;;27902:17;;;;;;;27898:222;;;28007:15;;27978:25;27989:13;27999:2;-1:-1:-1;;;;;9203:18:0;9171:7;9203:18;;;;;;;;;;;;9052:177;27989:13;27978:6;;:10;:25::i;:::-;:44;;27944:156;;;;-1:-1:-1;;;27944:156:0;;12395:2:1;27944:156:0;;;12377:21:1;12434:2;12414:18;;;12407:30;12473:28;12453:18;;;12446:56;12519:18;;27944:156:0;12193:350:1;27944:156:0;28187:12;28182:2;;28164:15;;:20;;;;:::i;:::-;:35;:76;;;;-1:-1:-1;28224:16:0;;;;;;;28164:76;:116;;;;-1:-1:-1;28265:15:0;;;;;;;28164:116;28138:227;;;-1:-1:-1;;;;;28323:15:0;;;;;;:11;:15;;;;;:22;;-1:-1:-1;;28323:22:0;28341:4;28323:22;;;28138:227;-1:-1:-1;;;;;28427:19:0;;28394:12;28427:19;;;:13;:19;;;;;;;;28423:235;;;28497:36;28527:5;28497:25;28508:13;;28497:6;:10;;:25;;;;:::i;:36::-;28490:43;;28423:235;;;28605:37;28636:5;28605:26;28616:14;;28605:6;:10;;:26;;;;:::i;:37::-;28598:44;;28423:235;-1:-1:-1;;;;;28711:19:0;;28674:18;28711:19;;;:13;:19;;;;;;;;28707:243;;;28787:34;28815:5;28787:23;28798:11;;28787:6;:10;;:23;;;;:::i;:34::-;28774:47;;28707:243;;;28899:35;28928:5;28899:24;28910:12;;28899:6;:10;;:24;;;;:::i;:35::-;28886:48;;28707:243;28968:14;;28964:155;;29003:50;29019:4;29033:6;29042:10;29003:15;:50::i;:::-;29081:22;:6;29092:10;29081;:22::i;:::-;29072:31;;28964:155;29144:16;:6;29155:4;29144:10;:16::i;:::-;29135:25;;29175:42;29191:4;29205;29212;29175:15;:42::i;:::-;29238:12;;:16;29234:919;;29280:9;29275:811;29299:12;;29295:1;:16;29275:811;;;29592:291;;;;;;5375:19:1;;;29703:12:0;5410::1;;;5403:28;;;;29762:16:0;5447:12:1;;;5440:28;29825:15:0;5484:12:1;;;5477:28;29341:725:0;;29383:4;;5521:13:1;;29592:291:0;;;;;;;;;;;;29540:382;;;;;;29494:463;;30042:1;29341:15;:725::i;:::-;29313:3;;;;:::i;:::-;;;;29275:811;;;-1:-1:-1;30124:12:0;;30113:24;;:6;;:10;:24::i;:::-;30104:33;;29234:919;27369:2795;;27356:2808;30176:33;30192:4;30198:2;30202:6;30176:15;:33::i;:::-;30239:15;;-1:-1:-1;;;;;30239:15:0;:26;30274:4;30281:15;30274:4;-1:-1:-1;;;;;9203:18:0;9171:7;9203:18;;;;;;;;;;;;9052:177;30281:15;30239:58;;-1:-1:-1;;;;;;30239:58:0;;;;;;;-1:-1:-1;;;;;6266:32:1;;;30239:58:0;;;6248:51:1;6315:18;;;6308:34;6221:18;;30239:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30222:96;30332:15;;-1:-1:-1;;;;;30332:15:0;:26;30367:2;30372:13;30367:2;-1:-1:-1;;;;;9203:18:0;9171:7;9203:18;;;;;;;;;;;;9052:177;30372:13;30332:54;;-1:-1:-1;;;;;;30332:54:0;;;;;;;-1:-1:-1;;;;;6266:32:1;;;30332:54:0;;;6248:51:1;6315:18;;;6308:34;6221:18;;30332:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30328:70;30415:8;;-1:-1:-1;;;30415:8:0;;;;30410:540;;30454:16;;30491:15;;:28;;-1:-1:-1;;;;;;30491:28:0;;;;;17298:25:1;;;-1:-1:-1;;;;;30491:15:0;;;;:23;;17271:18:1;;30491:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30491:28:0;;;;;;;;-1:-1:-1;;30491:28:0;;;;;;;;;;;;:::i;:::-;;;30487:452;;;;;30683:231;;;19229:25:1;;;19285:2;19270:18;;19263:34;;;19313:18;;;19306:34;;;19371:2;19356:18;;19349:34;;;30886:9:0;;30833:4;;30683:231;;19216:3:1;19201:19;30683:231:0;;;;;;;30520:410;;;30487:452;30425:525;25131:5826;;;25018:5939;;;:::o;1357:226::-;1477:7;1513:12;1505:6;;;;1497:29;;;;-1:-1:-1;;;1497:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1537:9:0;1549:5;1553:1;1549;:5;:::i;:::-;1537:17;1357:226;-1:-1:-1;;;;;1357:226:0:o;23252:364::-;-1:-1:-1;;;;;23357:19:0;;;;;;:13;:19;;;;;;;;:28;;;;;;;23335:143;;;;-1:-1:-1;;;23335:143:0;;13856:2:1;23335:143:0;;;13838:21:1;13895:2;13875:18;;;13868:30;13934:34;13914:18;;;13907:62;14005:34;13985:18;;;13978:62;-1:-1:-1;;;14056:19:1;;;14049:32;14098:19;;23335:143:0;13654:469:1;23335:143:0;-1:-1:-1;;;;;23489:19:0;;;;;;:13;:19;;;;;:27;;-1:-1:-1;;23489:27:0;;;;;;;;;;;;23529:80;;23555:15;;:42;;-1:-1:-1;;;23555:42:0;;-1:-1:-1;;;;;5709:32:1;;;23555:42:0;;;5691:51:1;23555:15:0;;;;:36;;5664:18:1;;23555:42:0;5545:203:1;11050:610:0;-1:-1:-1;;;;;11190:20:0;;11182:70;;;;-1:-1:-1;;;11182:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11271:23:0;;11263:71;;;;-1:-1:-1;;;11263:71:0;;;;;;;:::i;:::-;11427:108;11463:6;11427:108;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11427:17:0;;:9;:17;;;;;;;;;;;;:108;:21;:108::i;:::-;-1:-1:-1;;;;;11407:17:0;;;:9;:17;;;;;;;;;;;:128;;;;11569:20;;;;;;;:32;;11594:6;11569:24;:32::i;:::-;-1:-1:-1;;;;;11546:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;11617:35;17298:25:1;;;11546:20:0;;11617:35;;;;;;17271:18:1;11617:35:0;17152:177:1;1842:471:0;1900:7;2145:6;2141:47;;-1:-1:-1;2175:1:0;2168:8;;2141:47;2200:9;2212:5;2216:1;2212;:5;:::i;:::-;2200:17;-1:-1:-1;2245:1:0;2236:5;2240:1;2200:17;2236:5;:::i;:::-;:10;2228:56;;;;-1:-1:-1;;;2228:56:0;;13093:2:1;2228:56:0;;;13075:21:1;13132:2;13112:18;;;13105:30;13171:34;13151:18;;;13144:62;-1:-1:-1;;;13222:18:1;;;13215:31;13263:19;;2228:56:0;12891:397:1;2789:132:0;2847:7;2874:39;2878:1;2881;2874:39;;;;;;;;;;;;;;;;;:3;:39::i;30965:343::-;31054:36;;-1:-1:-1;;;31054:36:0;;31084:4;31054:36;;;5691:51:1;31026:25:0;;31061:3;-1:-1:-1;;;;;31054:21:0;;;;5664:18:1;;31054:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31026:64;;31103:24;31120:6;31103:16;:24::i;:::-;31160:36;;-1:-1:-1;;;31160:36:0;;31190:4;31160:36;;;5691:51:1;31138:18:0;;31159:85;;31216:17;;-1:-1:-1;;;;;31167:3:0;31160:21;;;;5664:18:1;;31160:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31159:42;;:85::i;:::-;31276:11;;31255:45;;-1:-1:-1;;;31255:45:0;;-1:-1:-1;;;;;;;;31276:11:0;;;;;31255:45;;;6248:51:1;6315:18;;;6308:34;;;;;-1:-1:-1;31262:3:0;31255:20;;;;6221:18:1;;31255:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;31316:923::-;31426:12;31441:13;:6;31452:1;31441:10;:13::i;:::-;31426:28;-1:-1:-1;31465:17:0;31485:16;:6;31426:28;31485:10;:16::i;:::-;31465:36;-1:-1:-1;31804:21:0;31870:22;31887:4;31870:16;:22::i;:::-;32023:18;32044:41;:21;32070:14;32044:25;:41::i;:::-;32023:62;;32135:35;32148:9;32159:10;32135:12;:35::i;:::-;32188:43;;;18876:25:1;;;18932:2;18917:18;;18910:34;;;18960:18;;;18953:34;;;32188:43:0;;18864:2:1;18849:18;32188:43:0;;;;;;;31364:875;;;;31316:923;:::o;34539:437::-;34604:24;34621:6;34604:16;:24::i;:::-;34659:36;;-1:-1:-1;;;34659:36:0;;34689:4;34659:36;;;5691:51:1;34639:17:0;;34666:3;-1:-1:-1;;;;;34659:21:0;;;;5664:18:1;;34659:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34764:15;;34721:94;;-1:-1:-1;;;34721:94:0;;-1:-1:-1;;;;;34764:15:0;;;34721:94;;;6248:51:1;6315:18;;;6308:34;;;34639:56:0;;-1:-1:-1;34706:12:0;;34728:3;34721:20;;;;;;6221:18:1;;34721:94:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34706:109;;34832:7;34828:141;;;34856:15;;:49;;-1:-1:-1;;;34856:49:0;;;;;17298:25:1;;;-1:-1:-1;;;;;34856:15:0;;;;:38;;17271:18:1;;34856:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;34925:32:0;;;18595:25:1;;;18651:2;18636:18;;18629:34;;;34925:32:0;;-1:-1:-1;18568:18:1;;-1:-1:-1;34925:32:0;;;;;;;34593:383;;34539:437;:::o;918:136::-;976:7;1003:43;1007:1;1010;1003:43;;;;;;;;;;;;;;;;;:3;:43::i;3417:312::-;3537:7;3572:12;3565:5;3557:28;;;;-1:-1:-1;;;3557:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3596:9:0;3608:5;3612:1;3608;:5;:::i;33197:698::-;33287:16;;;33301:1;33287:16;;;;;;;;;33263:21;;33287:16;;;;;;;;;;-1:-1:-1;33287:16:0;33263:40;;33332:4;33314;33319:1;33314:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;33314:23:0;;;:7;;;;;;;;;;:23;;;;33358:11;;:18;;;-1:-1:-1;;;33358:18:0;;;;:11;;;;;:16;;:18;;;;;33314:7;;33358:18;;;;;:11;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33348:4;33353:1;33348:7;;;;;;;;:::i;:::-;;;;;;:28;-1:-1:-1;;;;;33348:28:0;;;-1:-1:-1;;;;;33348:28:0;;;;;33397:3;33387:4;33392:1;33387:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;33387:13:0;;;:7;;;;;;;;;:13;33445:11;;33413:58;;33430:4;;33445:11;33459;33413:8;:58::i;:::-;33527:11;;:248;;-1:-1:-1;;;33527:248:0;;-1:-1:-1;;;;;33527:11:0;;;;:65;;:248;;33611:11;;33527;;33661:4;;33692;;33527:11;;33745:15;;33527:248;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33510:378;;33814:62;;;;;;;20137:313;;:::o;32433:756::-;32583:16;;;32597:1;32583:16;;;;;;;;32559:21;;32583:16;;;;;;;;;;-1:-1:-1;32583:16:0;32559:40;;32628:4;32610;32615:1;32610:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;32610:23:0;;;:7;;;;;;;;;;:23;;;;32654:11;;:18;;;-1:-1:-1;;;32654:18:0;;;;:11;;;;;:16;;:18;;;;;32610:7;;32654:18;;;;;:11;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32644:4;32649:1;32644:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;32644:28:0;;;:7;;;;;;;;;:28;32717:11;;32685:58;;32702:4;;32717:11;32731;32685:8;:58::i;:::-;32799:11;;:273;;-1:-1:-1;;;32799:273:0;;-1:-1:-1;;;;;32799:11:0;;;;:62;;:273;;32880:11;;32799;;32958:4;;32989;;32799:11;;33042:15;;32799:273;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32782:400;;33111:59;;;;;;;20137:313;;:::o;33903:628::-;34083:11;;34051:58;;34068:4;;-1:-1:-1;;;;;34083:11:0;34097;34051:8;:58::i;:::-;34169:11;;34389;;34169:280;;-1:-1:-1;;;34169:280:0;;34241:4;34169:280;;;7282:34:1;7332:18;;;7325:34;;;-1:-1:-1;7375:18:1;;;7368:34;;;7418:18;;;7411:34;-1:-1:-1;;;;;;;;34389:11:0;;;;;7461:19:1;;;7454:44;34419:15:0;7514:19:1;;;7507:35;34169:11:0;;;:27;;34204:9;;7216:19:1;;34169:280:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34169:280:0;;;;;;;;-1:-1:-1;;34169:280:0;;;;;;;;;;;;:::i;:::-;;;34152:372;;34488:24;;;;;;;20137:313;;:::o;14:367:1:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:55;;159:1;156;149:12;108:55;-1:-1:-1;182:20:1;;225:18;214:30;;211:50;;;257:1;254;247:12;211:50;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:67;;;371:1;368;361:12;308:67;14:367;;;;;:::o;386:247::-;445:6;498:2;486:9;477:7;473:23;469:32;466:52;;;514:1;511;504:12;466:52;553:9;540:23;572:31;597:5;572:31;:::i;638:251::-;708:6;761:2;749:9;740:7;736:23;732:32;729:52;;;777:1;774;767:12;729:52;809:9;803:16;828:31;853:5;828:31;:::i;1154:388::-;1222:6;1230;1283:2;1271:9;1262:7;1258:23;1254:32;1251:52;;;1299:1;1296;1289:12;1251:52;1338:9;1325:23;1357:31;1382:5;1357:31;:::i;:::-;1407:5;-1:-1:-1;1464:2:1;1449:18;;1436:32;1477:33;1436:32;1477:33;:::i;:::-;1529:7;1519:17;;;1154:388;;;;;:::o;1547:456::-;1624:6;1632;1640;1693:2;1681:9;1672:7;1668:23;1664:32;1661:52;;;1709:1;1706;1699:12;1661:52;1748:9;1735:23;1767:31;1792:5;1767:31;:::i;:::-;1817:5;-1:-1:-1;1874:2:1;1859:18;;1846:32;1887:33;1846:32;1887:33;:::i;:::-;1547:456;;1939:7;;-1:-1:-1;;;1993:2:1;1978:18;;;;1965:32;;1547:456::o;2008:382::-;2073:6;2081;2134:2;2122:9;2113:7;2109:23;2105:32;2102:52;;;2150:1;2147;2140:12;2102:52;2189:9;2176:23;2208:31;2233:5;2208:31;:::i;:::-;2258:5;-1:-1:-1;2315:2:1;2300:18;;2287:32;2328:30;2287:32;2328:30;:::i;2395:315::-;2463:6;2471;2524:2;2512:9;2503:7;2499:23;2495:32;2492:52;;;2540:1;2537;2530:12;2492:52;2579:9;2566:23;2598:31;2623:5;2598:31;:::i;:::-;2648:5;2700:2;2685:18;;;;2672:32;;-1:-1:-1;;;2395:315:1:o;2715:566::-;2807:6;2815;2823;2876:2;2864:9;2855:7;2851:23;2847:32;2844:52;;;2892:1;2889;2882:12;2844:52;2932:9;2919:23;2965:18;2957:6;2954:30;2951:50;;;2997:1;2994;2987:12;2951:50;3036:70;3098:7;3089:6;3078:9;3074:22;3036:70;:::i;:::-;3125:8;;-1:-1:-1;3010:96:1;-1:-1:-1;;3210:2:1;3195:18;;3182:32;3223:28;3182:32;3223:28;:::i;:::-;3270:5;3260:15;;;2715:566;;;;;:::o;3286:437::-;3372:6;3380;3433:2;3421:9;3412:7;3408:23;3404:32;3401:52;;;3449:1;3446;3439:12;3401:52;3489:9;3476:23;3522:18;3514:6;3511:30;3508:50;;;3554:1;3551;3544:12;3508:50;3593:70;3655:7;3646:6;3635:9;3631:22;3593:70;:::i;:::-;3682:8;;3567:96;;-1:-1:-1;3286:437:1;-1:-1:-1;;;;3286:437:1:o;3728:241::-;3784:6;3837:2;3825:9;3816:7;3812:23;3808:32;3805:52;;;3853:1;3850;3843:12;3805:52;3892:9;3879:23;3911:28;3933:5;3911:28;:::i;3974:245::-;4041:6;4094:2;4082:9;4073:7;4069:23;4065:32;4062:52;;;4110:1;4107;4100:12;4062:52;4142:9;4136:16;4161:28;4183:5;4161:28;:::i;4224:180::-;4283:6;4336:2;4324:9;4315:7;4311:23;4307:32;4304:52;;;4352:1;4349;4342:12;4304:52;-1:-1:-1;4375:23:1;;4224:180;-1:-1:-1;4224:180:1:o;4409:184::-;4479:6;4532:2;4520:9;4511:7;4507:23;4503:32;4500:52;;;4548:1;4545;4538:12;4500:52;-1:-1:-1;4571:16:1;;4409:184;-1:-1:-1;4409:184:1:o;4598:248::-;4666:6;4674;4727:2;4715:9;4706:7;4702:23;4698:32;4695:52;;;4743:1;4740;4733:12;4695:52;-1:-1:-1;;4766:23:1;;;4836:2;4821:18;;;4808:32;;-1:-1:-1;4598:248:1:o;4851:306::-;4939:6;4947;4955;5008:2;4996:9;4987:7;4983:23;4979:32;4976:52;;;5024:1;5021;5014:12;4976:52;5053:9;5047:16;5037:26;;5103:2;5092:9;5088:18;5082:25;5072:35;;5147:2;5136:9;5132:18;5126:25;5116:35;;4851:306;;;;;:::o;8218:597::-;8330:4;8359:2;8388;8377:9;8370:21;8420:6;8414:13;8463:6;8458:2;8447:9;8443:18;8436:34;8488:1;8498:140;8512:6;8509:1;8506:13;8498:140;;;8607:14;;;8603:23;;8597:30;8573:17;;;8592:2;8569:26;8562:66;8527:10;;8498:140;;;8656:6;8653:1;8650:13;8647:91;;;8726:1;8721:2;8712:6;8701:9;8697:22;8693:31;8686:42;8647:91;-1:-1:-1;8799:2:1;8778:15;-1:-1:-1;;8774:29:1;8759:45;;;;8806:2;8755:54;;8218:597;-1:-1:-1;;;8218:597:1:o;8820:399::-;9022:2;9004:21;;;9061:2;9041:18;;;9034:30;9100:34;9095:2;9080:18;;9073:62;-1:-1:-1;;;9166:2:1;9151:18;;9144:33;9209:3;9194:19;;8820:399::o;13293:356::-;13495:2;13477:21;;;13514:18;;;13507:30;13573:34;13568:2;13553:18;;13546:62;13640:2;13625:18;;13293:356::o;14481:401::-;14683:2;14665:21;;;14722:2;14702:18;;;14695:30;14761:34;14756:2;14741:18;;14734:62;-1:-1:-1;;;14827:2:1;14812:18;;14805:35;14872:3;14857:19;;14481:401::o;17334:1082::-;17624:4;17672:3;17661:9;17657:19;17703:6;17692:9;17685:25;17729:2;17767:6;17762:2;17751:9;17747:18;17740:34;17810:3;17805:2;17794:9;17790:18;17783:31;17834:6;17869;17863:13;17900:6;17892;17885:22;17938:3;17927:9;17923:19;17916:26;;17977:2;17969:6;17965:15;17951:29;;17998:1;18008:195;18022:6;18019:1;18016:13;18008:195;;;18087:13;;-1:-1:-1;;;;;18083:39:1;18071:52;;18178:15;;;;18143:12;;;;18119:1;18037:9;18008:195;;;-1:-1:-1;;;;;;;18297:15:1;;;18292:2;18277:18;;18270:43;18350:15;;;;18344:3;18329:19;;18322:44;-1:-1:-1;;18250:3:1;18382:19;18375:35;18220:3;17334:1082;-1:-1:-1;;;;17334:1082:1:o;19583:128::-;19623:3;19654:1;19650:6;19647:1;19644:13;19641:39;;;19660:18;;:::i;:::-;-1:-1:-1;19696:9:1;;19583:128::o;19716:217::-;19756:1;19782;19772:132;;19826:10;19821:3;19817:20;19814:1;19807:31;19861:4;19858:1;19851:15;19889:4;19886:1;19879:15;19772:132;-1:-1:-1;19918:9:1;;19716:217::o;19938:168::-;19978:7;20044:1;20040;20036:6;20032:14;20029:1;20026:21;20021:1;20014:9;20007:17;20003:45;20000:71;;;20051:18;;:::i;:::-;-1:-1:-1;20091:9:1;;19938:168::o;20111:125::-;20151:4;20179:1;20176;20173:8;20170:34;;;20184:18;;:::i;:::-;-1:-1:-1;20221:9:1;;20111:125::o;20241:380::-;20320:1;20316:12;;;;20363;;;20384:61;;20438:4;20430:6;20426:17;20416:27;;20384:61;20491:2;20483:6;20480:14;20460:18;20457:38;20454:161;;;20537:10;20532:3;20528:20;20525:1;20518:31;20572:4;20569:1;20562:15;20600:4;20597:1;20590:15;20454:161;;20241:380;;;:::o;20626:135::-;20665:3;-1:-1:-1;;20686:17:1;;20683:43;;;20706:18;;:::i;:::-;-1:-1:-1;20753:1:1;20742:13;;20626:135::o;20766:127::-;20827:10;20822:3;20818:20;20815:1;20808:31;20858:4;20855:1;20848:15;20882:4;20879:1;20872:15;20898:127;20959:10;20954:3;20950:20;20947:1;20940:31;20990:4;20987:1;20980:15;21014:4;21011:1;21004:15;21162:131;-1:-1:-1;;;;;21237:31:1;;21227:42;;21217:70;;21283:1;21280;21273:12;21298:118;21384:5;21377:13;21370:21;21363:5;21360:32;21350:60;;21406:1;21403;21396:12
Metadata Hash
ipfs://10819c74bf45140620f754b6808fe46a9ae01219ecb6c25d9dbc4ebec61a3cf7