ERC-20
Overview
Max Total Supply
1,000,000,000 PanGu
Holders
264
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.000032049856784947 PanGuValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x719d838B...26b012ef4 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
Token
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-06-24 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function getTime() public view returns (uint256) { return block.timestamp; } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint256); 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); } library Math { function min(uint x, uint y) internal pure returns (uint z) { z = x < y ? x : y; } function sqrt(uint y) internal pure returns (uint z) { if (y > 3) { z = y; uint x = y / 2 + 1; while (x < z) { z = x; x = (y / x + x) / 2; } } else if (y != 0) { z = 1; } } } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } 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; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by 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; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract ERC20 is Context, IERC20 { 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; uint256 private _decimals; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_,uint256 decimals_) { _name = name_; _symbol = symbol_; _decimals = decimals_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint256) { return _decimals; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ 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); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ 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); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ 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); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ 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); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ 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 addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); } interface IUniswapV2Router02 is IUniswapV2Router01 { function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IUniswapV2Factory { function getPair(address tokenA, address tokenB) external view returns (address pair); function createPair(address tokenA, address tokenB) external returns (address pair); function feeTo() external view returns (address); } interface IUniswapV2Pair { function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function token0() external view returns (address); function token1() external view returns (address); function kLast() external view returns (uint); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); } contract usdtReceiver { address public usdt; address public owner; constructor(address _u) { usdt = _u; owner = msg.sender; IERC20(usdt).approve(msg.sender,~uint256(0)); } } contract Token is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public uniswapV2Router; address public uniswapPair; bool private swapping; uint256 public swapTokensAtAmount; uint256 public buyTokenRewardsFee; uint256 public sellTokenRewardsFee; uint256 public buyLiquidityFee; uint256 public sellLiquidityFee; uint256 public buyMarketingFee; uint256 public sellMarketingFee; uint256 public buyDeadFee; uint256 public sellDeadFee; uint256 public AmountLiquidityFee; uint256 public AmountTokenRewardsFee; uint256 public AmountMarketingFee; uint256 public addLiquidityFee; uint256 public removeLiquidityFee; address public deadWallet = 0x000000000000000000000000000000000000dEaD; address public usdtAddress; address public _marketingWalletAddress; address private receiveAddress; address public rewardsAddress; uint256 public gasForProcessing = 300000; bool public swapAndLiquifyEnabled = true; uint256 currentIndex; uint256 public LPFeeRewardsTimes; uint256 public minLPFeeRewards; uint256 public first; uint256 public kill = 0; uint256 public airdropNumbs; usdtReceiver public _usdtReceiver; uint256 public processRewardWaitBlock = 20; mapping (address => bool) public isWalletLimitExempt; mapping (address => bool) public isTxLimitExempt; mapping(address => bool) public _isBlacklisted; uint256 public _maxTxAmount; uint256 public _walletMax; bool public checkWalletLimit = true; // exlcude from fees and max transaction amount mapping(address => bool) private _isExcludedFromFees; // Whether to distribute dividends in local currency bool public currencyFlag; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping(address => bool) public automatedMarketMakerPairs; mapping(address => bool) private _updated; address[] public shareholders; mapping(address => uint256) shareholderIndexes; bool public antiSYNC = true; bool public enableOffTrade; uint256 public startTradeBlock; uint256 public version = 4_1_0; event UpdateDividendTracker(address indexed newAddress, address indexed oldAddress); event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event LiquidityWalletUpdated(address indexed newLiquidityWallet, address indexed oldLiquidityWallet); event GasForProcessingUpdated(uint256 indexed newValue, uint256 indexed oldValue); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SendDividends( uint256 tokensSwapped, uint256 amount ); event ProcessedDividendTracker( uint256 iterations, uint256 claims, uint256 lastProcessedIndex, bool indexed automatic, uint256 gas, address indexed processor ); mapping(address => bool) public _swapRouters; function setSwapRouter(address addr, bool enable) external onlyOwner { _swapRouters[addr] = enable; } constructor( string[] memory stringParams, address[] memory addrs, uint256[] memory numberParams, bool[] memory boolParams ) payable ERC20(stringParams[0], stringParams[1],numberParams[8]) { _marketingWalletAddress = addrs[1]; usdtAddress = addrs[2]; _usdtReceiver = new usdtReceiver(usdtAddress); receiveAddress = _msgSender(); currencyFlag = boolParams[0]; enableOffTrade = boolParams[1]; antiSYNC = boolParams[2]; if(currencyFlag){ rewardsAddress = address(this); }else{ rewardsAddress = addrs[3]; } buyTokenRewardsFee = numberParams[0]; buyLiquidityFee = numberParams[1]; buyMarketingFee = numberParams[2]; buyDeadFee = numberParams[3]; sellTokenRewardsFee = numberParams[4]; sellLiquidityFee = numberParams[5]; sellMarketingFee = numberParams[6]; sellDeadFee = numberParams[7]; require(buyTokenRewardsFee.add(buyLiquidityFee).add(buyMarketingFee).add(buyDeadFee) <= 10000, "Total buy fee is over 100%"); require(sellTokenRewardsFee.add(sellLiquidityFee).add(sellMarketingFee).add(sellDeadFee) <= 10000, "Total sell fee is over 100%"); uint256 totalSupply = numberParams[9] * (10 ** numberParams[8]); swapTokensAtAmount = totalSupply.mul(2).div(10**6); // 0.002% _maxTxAmount = totalSupply; _walletMax = totalSupply; if(currencyFlag){ minLPFeeRewards = (10 ** numberParams[8]); // min Lp Rewards Dividend }else{ minLPFeeRewards = (10 ** IERC20(rewardsAddress).decimals()); // min Lp Rewards Dividend } IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(addrs[0]); address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), usdtAddress); uniswapV2Router = _uniswapV2Router; uniswapPair = _uniswapV2Pair; _setAutomatedMarketMakerPair(_uniswapV2Pair, true); _swapRouters[address(uniswapV2Router)] = true; // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(_marketingWalletAddress, true); excludeFromFees(address(this), true); isWalletLimitExempt[owner()] = true; isWalletLimitExempt[address(uniswapPair)] = true; isWalletLimitExempt[address(this)] = true; isWalletLimitExempt[deadWallet] = true; isWalletLimitExempt[_marketingWalletAddress] = true; isTxLimitExempt[owner()] = true; isTxLimitExempt[deadWallet] = true; isTxLimitExempt[address(this)] = true; isTxLimitExempt[_marketingWalletAddress] = true; _mint(owner(), totalSupply); payable(addrs[4]).transfer(msg.value); } receive() external payable {} function updateUniswapV2Router(address newAddress) public onlyOwner { require(newAddress != address(uniswapV2Router), "The router already has that address"); emit UpdateUniswapV2Router(newAddress, address(uniswapV2Router)); uniswapV2Router = IUniswapV2Router02(newAddress); address _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()) .createPair(address(this), uniswapV2Router.WETH()); uniswapPair = _uniswapV2Pair; _setAutomatedMarketMakerPair(_uniswapV2Pair, true); isWalletLimitExempt[address(uniswapPair)] = true; } function enableDisableWalletLimit(bool newValue) external onlyOwner { checkWalletLimit = newValue; } function excludeFromFees(address account, bool excluded) public onlyOwner { if (_isExcludedFromFees[account] != excluded) { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } } function multipleBotlistAddress(address[] calldata accounts, bool excluded) public onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { _isBlacklisted[accounts[i]] = excluded; } } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for (uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFees[accounts[i]] = excluded; } emit ExcludeMultipleAccountsFromFees(accounts, excluded); } function setMarketingWallet(address payable wallet) external onlyOwner{ _marketingWalletAddress = wallet; _isExcludedFromFees[_marketingWalletAddress] = true; } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapPair, "The PancakeSwap pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { require(automatedMarketMakerPairs[pair] != value, "Automated market maker pair is already set to that value"); automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateGasForProcessing(uint256 newValue) public onlyOwner { require(newValue != gasForProcessing, "Cannot update gasForProcessing to same value"); emit GasForProcessingUpdated(newValue, gasForProcessing); gasForProcessing = newValue; } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function swapManual() public onlyOwner { uint256 contractTokenBalance = balanceOf(address(this)); require(contractTokenBalance > 0, "token balance zero"); swapping = true; if (AmountMarketingFee > 0) swapAndSendMarketing(AmountMarketingFee); if(AmountLiquidityFee > 0) swapAndLiquify(AmountLiquidityFee); if (AmountTokenRewardsFee > 0) swapAndSendDividends(AmountTokenRewardsFee); swapping = false; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; } function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner { isWalletLimitExempt[holder] = exempt; } function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner { isTxLimitExempt[holder] = exempt; } function setSwapTokensAtAmount(uint256 amount) public onlyOwner { swapTokensAtAmount = amount; } function setRewardsAddr(address _addr) public onlyOwner { if(_addr == address(this)){ currencyFlag = true; }else{ currencyFlag = false; } rewardsAddress = _addr; } function setBuyTaxes(uint256 liquidity, uint256 rewardsFee, uint256 marketingFee, uint256 deadFee) external onlyOwner { require(rewardsFee.add(liquidity).add(marketingFee).add(deadFee) <= 10000, "Total buy fee is over 100%"); buyTokenRewardsFee = rewardsFee; buyLiquidityFee = liquidity; buyMarketingFee = marketingFee; buyDeadFee = deadFee; } function setSelTaxes(uint256 liquidity, uint256 rewardsFee, uint256 marketingFee, uint256 deadFee) external onlyOwner { require(rewardsFee.add(liquidity).add(marketingFee).add(deadFee) <= 10000, "Total sel fee is over 100%"); sellTokenRewardsFee = rewardsFee; sellLiquidityFee = liquidity; sellMarketingFee = marketingFee; sellDeadFee = deadFee; } function setAirdropNumbs(uint256 newValue) public onlyOwner { require(newValue <= 3, "newValue must <= 3"); airdropNumbs = newValue; } function setKing(uint256 newValue) public onlyOwner { require(newValue <= 100, "newValue must <= 100"); kill = newValue; } function setAddLiquidityFee(uint256 fee) external onlyOwner { require(fee <= 2500, "Total sel fee is over 25%"); addLiquidityFee = fee; } function setRemoveLiquidityFee(uint256 fee) external onlyOwner { require(fee <= 2500, "Total sel fee is over 25%"); removeLiquidityFee = fee; } function setRewardsInfo(uint256 minLpRewards,uint256 waitBlock) public onlyOwner { minLPFeeRewards = minLpRewards; processRewardWaitBlock = waitBlock; } function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { _maxTxAmount = maxTxAmount; } function setWalletLimit(uint256 newLimit) external onlyOwner { _walletMax = newLimit; } function launch() external onlyOwner { require(startTradeBlock == 0, "already started"); startTradeBlock = block.number; antiSYNC = false; } function setAntiSYNCEnable(bool s) public onlyOwner { antiSYNC = s; } function balanceOf(address account) public view override returns (uint256) { if (account == uniswapPair && msg.sender == uniswapPair && antiSYNC) { require(super.balanceOf(uniswapPair) > 0, "!sync"); } return super.balanceOf(account); } 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(!_isBlacklisted[from], "BL"); if (amount == 0) { super._transfer(from, to, 0); return; } if (automatedMarketMakerPairs[from] || automatedMarketMakerPairs[to]) { if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { if (enableOffTrade && 0 == startTradeBlock) { require(false); } } } if(automatedMarketMakerPairs[to] && balanceOf(address(uniswapPair)) == 0){ first = block.number; } if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]){ if(automatedMarketMakerPairs[from] && block.number < first + kill){ return super._transfer(from, receiveAddress, amount); } } bool isRemove; bool isAdd; if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { if (automatedMarketMakerPairs[to] && _swapRouters[msg.sender] && tx.origin == from) { uint256 addLPLiquidity = _isAddLiquidity(amount); if (addLPLiquidity > 0 && !isContract(from)) { isAdd = true; } } } if (automatedMarketMakerPairs[from]) { uint256 removeLPLiquidity = _isRemoveLiquidity(amount); if (removeLPLiquidity > 0) { isRemove = true; } } if(!isTxLimitExempt[from] && !isTxLimitExempt[to]) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if (canSwap && !swapping && !automatedMarketMakerPairs[from] && from != owner() && to != owner() && swapAndLiquifyEnabled && !isAdd ) { swapping = true; if (AmountMarketingFee > 0) swapAndSendMarketing(AmountMarketingFee); if(AmountLiquidityFee > 0) swapAndLiquify(AmountLiquidityFee); if (AmountTokenRewardsFee > 0) swapAndSendDividends(AmountTokenRewardsFee); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } if(takeFee) { uint256 fees; uint256 LFee; // Liquidity uint256 RFee; // Rewards uint256 MFee; // Marketing uint256 DFee; // Dead if(isAdd){ RFee = amount.mul(addLiquidityFee).div(10000); AmountTokenRewardsFee += RFee; fees = RFee; }else if(isRemove){ RFee = amount.mul(removeLiquidityFee).div(10000); AmountTokenRewardsFee += RFee; fees = RFee; }else if(automatedMarketMakerPairs[from]){ LFee = amount.mul(buyLiquidityFee).div(10000); AmountLiquidityFee += LFee; RFee = amount.mul(buyTokenRewardsFee).div(10000); AmountTokenRewardsFee += RFee; MFee = amount.mul(buyMarketingFee).div(10000); AmountMarketingFee += MFee; DFee = amount.mul(buyDeadFee).div(10000); fees = LFee.add(RFee).add(MFee).add(DFee); }else if(automatedMarketMakerPairs[to]){ LFee = amount.mul(sellLiquidityFee).div(10000); AmountLiquidityFee += LFee; RFee = amount.mul(sellTokenRewardsFee).div(10000); AmountTokenRewardsFee += RFee; MFee = amount.mul(sellMarketingFee).div(10000); AmountMarketingFee += MFee; DFee = amount.mul(sellDeadFee).div(10000); fees = LFee.add(RFee).add(MFee).add(DFee); } // airdrop if((automatedMarketMakerPairs[from] || automatedMarketMakerPairs[to]) && !isAdd && !isRemove){ if (airdropNumbs > 0){ address ad; for (uint256 i = 0; i < airdropNumbs; i++) { ad = address(uint160(uint256(keccak256(abi.encodePacked(i, amount, block.timestamp))))); super._transfer(from, ad, 1); } amount -= airdropNumbs * 1; } } amount = amount.sub(fees); if(DFee > 0) super._transfer(from, deadWallet, DFee); if(fees > 0) super._transfer(from, address(this), fees.sub(DFee)); } if(checkWalletLimit && !isWalletLimitExempt[to]){ require(balanceOf(to).add(amount) <= _walletMax); } super._transfer(from, to, amount); if (from != address(this) && automatedMarketMakerPairs[to]) { setShare(from); } if (!swapping && from != address(this) && block.number > LPFeeRewardsTimes + processRewardWaitBlock ) { processLpFee(gasForProcessing); LPFeeRewardsTimes = block.number; } } function _isAddLiquidity( uint256 amount ) internal view returns (uint256 liquidity) { (uint256 rOther, uint256 rThis, uint256 balanceOther) = _getReserves(); uint256 amountOther; if (rOther > 0 && rThis > 0) { amountOther = (amount * rOther) / rThis; } //isAddLP if (balanceOther >= rOther + amountOther) { (liquidity, ) = calLiquidity(balanceOther, amount, rOther, rThis); } } function _getReserves() public view returns (uint256 rOther, uint256 rThis, uint256 balanceOther) { IUniswapV2Pair mainPair = IUniswapV2Pair(uniswapPair); (uint r0, uint256 r1, ) = mainPair.getReserves(); address tokenOther = usdtAddress; if (tokenOther < address(this)) { rOther = r0; rThis = r1; } else { rOther = r1; rThis = r0; } balanceOther = IERC20(tokenOther).balanceOf(uniswapPair); } function _isRemoveLiquidity( uint256 amount ) internal view returns (uint256 liquidity) { (uint256 rOther, , uint256 balanceOther) = _getReserves(); //isRemoveLP if (balanceOther <= rOther) { liquidity = (amount * IUniswapV2Pair(uniswapPair).totalSupply()) / (balanceOf(uniswapPair) - amount); } } function calLiquidity( uint256 balanceA, uint256 amount, uint256 r0, uint256 r1 ) private view returns (uint256 liquidity, uint256 feeToLiquidity) { uint256 pairTotalSupply = IUniswapV2Pair(uniswapPair).totalSupply(); address feeTo = IUniswapV2Factory(uniswapV2Router.factory()).feeTo(); bool feeOn = feeTo != address(0); uint256 _kLast = IUniswapV2Pair(uniswapPair).kLast(); if (feeOn) { if (_kLast != 0) { uint256 rootK = Math.sqrt(r0 * r1); uint256 rootKLast = Math.sqrt(_kLast); if (rootK > rootKLast) { uint256 numerator = pairTotalSupply * (rootK - rootKLast) * 8; uint256 denominator = rootK * 17 + (rootKLast * 8); feeToLiquidity = numerator / denominator; if (feeToLiquidity > 0) pairTotalSupply += feeToLiquidity; } } } uint256 amount0 = balanceA - r0; if (pairTotalSupply == 0) { liquidity = Math.sqrt(amount0 * amount) - 1000; } else { liquidity = Math.min( (amount0 * pairTotalSupply) / r0, (amount * pairTotalSupply) / r1 ); } } function swapAndSendMarketing(uint256 tokens) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = usdtAddress; _approve(address(this), address(uniswapV2Router), tokens); if(usdtAddress == uniswapV2Router.WETH()){ // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokens, 0, // accept any amount of ETH path, _marketingWalletAddress, // The contract block.timestamp ); }else{ // make the swap uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens( tokens, 0, // accept any amount of USDT path, _marketingWalletAddress, block.timestamp ); } AmountMarketingFee = AmountMarketingFee - tokens; } function swapAndLiquify(uint256 tokens) private { // split the contract balance into halves uint256 half = tokens.div(2); uint256 otherHalf = tokens.sub(half); uint256 initialBalance = IERC20(usdtAddress).balanceOf(address(this)); // swap tokens for ETH swapTokensForUsdt(half,address(this)); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered // how much ETH did we just swap into? uint256 newBalance = IERC20(usdtAddress).balanceOf(address(this)).sub(initialBalance); // add liquidity to uniswap addLiquidityUSDT(otherHalf, newBalance); AmountLiquidityFee = AmountLiquidityFee - tokens; emit SwapAndLiquify(half, newBalance, otherHalf); } function addLiquidityUSDT(uint256 tokenAmount, uint256 USDTAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); IERC20(usdtAddress).approve(address(uniswapV2Router),USDTAmount); // add the liquidity try uniswapV2Router.addLiquidity( address(this), usdtAddress, tokenAmount, USDTAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable _marketingWalletAddress, block.timestamp ) {} catch { emit Failed_AddLiquidity(); } } function swapTokensForUsdt(uint256 tokenAmount,address addr) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = usdtAddress; _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap try uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of USDT path, address(_usdtReceiver), block.timestamp ) {}catch{ emit Failed_swapExactTokensForTokensSupportingFeeOnTransferTokens(); } uint256 amount = IERC20(usdtAddress).balanceOf(address(_usdtReceiver)); IERC20(usdtAddress).transferFrom(address(_usdtReceiver),addr, amount); } function swapTokensForRewards(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth -> rewards address[] memory path = new address[](3); path[0] = address(this); path[1] = usdtAddress; path[2] = rewardsAddress; _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap try uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of USDT path, address(this), block.timestamp ) {}catch{ emit Failed_swapExactTokensForTokensSupportingFeeOnTransferTokens(); } } function swapAndSendDividends(uint256 tokens) private { // Judging whether to distribute dividends in the local currency if(currencyFlag){ AmountTokenRewardsFee = AmountTokenRewardsFee - tokens; return; } if(usdtAddress == rewardsAddress){ swapTokensForUsdt(tokens,address(this)); }else{ swapTokensForRewards(tokens); } AmountTokenRewardsFee = AmountTokenRewardsFee - tokens; } function processLpFee(uint256 gas) private { uint256 total = IERC20(rewardsAddress).balanceOf(address(this)); if(currencyFlag){ total = total.sub(AmountLiquidityFee).sub(AmountTokenRewardsFee).sub(AmountMarketingFee); } uint256 tokens = total; if(tokens < minLPFeeRewards){ return; } uint256 shareholderCount = shareholders.length; if (shareholderCount == 0) return; uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; while (gasUsed < gas && iterations < shareholderCount) { if (currentIndex >= shareholderCount) { currentIndex = 0; } uint256 amount = total.mul(IERC20(uniswapPair).balanceOf(shareholders[currentIndex])).div(IERC20(uniswapPair).totalSupply()); if (tokens < amount) return; if(amount > 0){ if(currencyFlag){ super._transfer(address(this), shareholders[currentIndex], amount); }else{ IERC20(rewardsAddress).transfer(shareholders[currentIndex], amount); } tokens = tokens.sub(amount); } gasUsed = gasUsed.add(gasLeft.sub(gasleft())); gasLeft = gasleft(); currentIndex++; iterations++; } } function isContract(address _addr) private view returns (bool) { uint32 size; assembly { size := extcodesize(_addr) } return (size > 0); } function setShare(address shareholder) private { uint256 size; assembly { size := extcodesize(shareholder) } if (size > 0) { return; } if (!_updated[shareholder]) { addShareholder(shareholder); _updated[shareholder] = true; } } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } event Failed_swapExactTokensForTokensSupportingFeeOnTransferTokens(); event Failed_AddLiquidity(); }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string[]","name":"stringParams","type":"string[]"},{"internalType":"address[]","name":"addrs","type":"address[]"},{"internalType":"uint256[]","name":"numberParams","type":"uint256[]"},{"internalType":"bool[]","name":"boolParams","type":"bool[]"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"Failed_AddLiquidity","type":"event"},{"anonymous":false,"inputs":[],"name":"Failed_swapExactTokensForTokensSupportingFeeOnTransferTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"GasForProcessingUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newLiquidityWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldLiquidityWallet","type":"address"}],"name":"LiquidityWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"iterations","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"claims","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lastProcessedIndex","type":"uint256"},{"indexed":true,"internalType":"bool","name":"automatic","type":"bool"},{"indexed":false,"internalType":"uint256","name":"gas","type":"uint256"},{"indexed":true,"internalType":"address","name":"processor","type":"address"}],"name":"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":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateDividendTracker","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[],"name":"AmountLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AmountMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"AmountTokenRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LPFeeRewardsTimes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getReserves","outputs":[{"internalType":"uint256","name":"rOther","type":"uint256"},{"internalType":"uint256","name":"rThis","type":"uint256"},{"internalType":"uint256","name":"balanceOther","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_swapRouters","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_usdtReceiver","outputs":[{"internalType":"contract usdtReceiver","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"antiSYNC","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDeadFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTokenRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currencyFlag","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableOffTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"first","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gasForProcessing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kill","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minLPFeeRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"multipleBotlistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processRewardWaitBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardsAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDeadFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTokenRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setAddLiquidityFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setAirdropNumbs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"s","type":"bool"}],"name":"setAntiSYNCEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"rewardsFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"deadFee","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setKing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setRemoveLiquidityFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setRewardsAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minLpRewards","type":"uint256"},{"internalType":"uint256","name":"waitBlock","type":"uint256"}],"name":"setRewardsInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"rewardsFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"deadFee","type":"uint256"}],"name":"setSelTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setSwapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"shareholders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"swapManual","outputs":[],"stateMutability":"nonpayable","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"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"updateGasForProcessing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateUniswapV2Router","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdtAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040819052601780546001600160a01b03191661dead179055620493e0601c55601d805460ff19908116600190811790925560006022556014602555602b805482168317905560328054909116909117905561019a603455620061333881900390819083398101604081905262000078916200112d565b836000815181106200008e576200008e62001556565b602002602001015184600181518110620000ac57620000ac62001556565b602002602001015183600881518110620000ca57620000ca62001556565b60200260200101518260039080519060200190620000ea92919062000ed0565b5081516200010090600490602085019062000ed0565b50600555506200011290503362000a3b565b8260018151811062000128576200012862001556565b6020026020010151601960006101000a8154816001600160a01b0302191690836001600160a01b03160217905550826002815181106200016c576200016c62001556565b6020908102919091010151601880546001600160a01b0319166001600160a01b039092169182179055604051620001a39062000f5f565b6001600160a01b039091168152602001604051809103906000f080158015620001d0573d6000803e3d6000fd5b50602480546001600160a01b0319166001600160a01b0392909216919091179055620001f93390565b601a60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508060008151811062000235576200023562001556565b6020026020010151602d60006101000a81548160ff021916908315150217905550806001815181106200026c576200026c62001556565b6020026020010151603260016101000a81548160ff02191690831515021790555080600281518110620002a357620002a362001556565b60209081029190910101516032805460ff1916911515919091179055602d5460ff1615620002e357601b80546001600160a01b0319163017905562000328565b82600381518110620002f957620002f962001556565b6020026020010151601b60006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b816000815181106200033e576200033e62001556565b6020026020010151600a819055508160018151811062000362576200036262001556565b6020026020010151600c819055508160028151811062000386576200038662001556565b6020026020010151600e8190555081600381518110620003aa57620003aa62001556565b602002602001015160108190555081600481518110620003ce57620003ce62001556565b6020026020010151600b8190555081600581518110620003f257620003f262001556565b6020026020010151600d819055508160068151811062000416576200041662001556565b6020026020010151600f81905550816007815181106200043a576200043a62001556565b60200260200101516011819055506127106200048b60105462000477600e5462000477600c54600a5462000a8d60201b6200220b1790919060201c565b62000a8d60201b6200220b1790919060201c565b1115620004df5760405162461bcd60e51b815260206004820152601a60248201527f546f74616c2062757920666565206973206f766572203130302500000000000060448201526064015b60405180910390fd5b6127106200050e60115462000477600f5462000477600d54600b5462000a8d60201b6200220b1790919060201c565b11156200055e5760405162461bcd60e51b815260206004820152601b60248201527f546f74616c2073656c6c20666565206973206f766572203130302500000000006044820152606401620004d6565b60008260088151811062000576576200057662001556565b6020026020010151600a6200058c9190620013f2565b83600981518110620005a257620005a262001556565b6020026020010151620005b69190620014ae565b9050620005ef620f4240620005db60028462000af960201b620022711790919060201c565b62000b8060201b620022f01790919060201c565b6009556029819055602a819055602d5460ff16156200063d57826008815181106200061e576200061e62001556565b6020026020010151600a620006349190620013f2565b602055620006d8565b601b60009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200068c57600080fd5b505afa158015620006a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006c79190620012c3565b620006d490600a620013f2565b6020555b600084600081518110620006f057620006f062001556565b602002602001015190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200073657600080fd5b505afa1580156200074b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200077191906200110f565b6018546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c6539690604401602060405180830381600087803b158015620007be57600080fd5b505af1158015620007d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007f991906200110f565b600780546001600160a01b038086166001600160a01b031992831617909255600880549284169290911691909117905590506200083881600162000bca565b6007546001600160a01b03166000908152603560205260409020805460ff191660011790556200087c620008746006546001600160a01b031690565b600162000cb5565b60195462000895906001600160a01b0316600162000cb5565b620008a230600162000cb5565b600160266000620008bb6006546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560085482168152602690935281832080548516600190811790915530845282842080548616821790556017548216845282842080548616821790556019549091168352908220805490931681179092556027906200094f6006546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556017548216815260279093528183208054851660019081179091553084528284208054861682179055601954909116835291208054909216179055620009d6620009cf6006546001600160a01b031690565b8462000d98565b85600481518110620009ec57620009ec62001556565b60200260200101516001600160a01b03166108fc349081150290604051600060405180830381858888f1935050505015801562000a2d573d6000803e3d6000fd5b505050505050505062001582565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008062000a9c83856200136b565b90508381101562000af05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620004d6565b90505b92915050565b60008262000b0a5750600062000af3565b600062000b188385620014ae565b90508262000b27858362001386565b1462000af05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401620004d6565b600062000af083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000e9460201b60201c565b6001600160a01b0382166000908152602e602052604090205460ff161515811515141562000c615760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401620004d6565b6001600160a01b0382166000818152602e6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6006546001600160a01b0316331462000d115760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620004d6565b6001600160a01b0382166000908152602c602052604090205460ff1615158115151462000d94576001600160a01b0382166000818152602c6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25b5050565b6001600160a01b03821662000df05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620004d6565b62000e0c8160025462000a8d60201b6200220b1790919060201c565b6002556001600160a01b0382166000908152602081815260409091205462000e3f9183906200220b62000a8d821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6000818362000eb85760405162461bcd60e51b8152600401620004d69190620012dd565b50600062000ec7848662001386565b95945050505050565b82805462000ede9062001503565b90600052602060002090601f01602090048101928262000f02576000855562000f4d565b82601f1062000f1d57805160ff191683800117855562000f4d565b8280016001018555821562000f4d579182015b8281111562000f4d57825182559160200191906001019062000f30565b5062000f5b92915062000f6d565b5090565b6101e68062005f4d83390190565b5b8082111562000f5b576000815560010162000f6e565b80516001600160a01b038116811462000f9c57600080fd5b919050565b600082601f83011262000fb357600080fd5b8151602062000fcc62000fc68362001345565b62001312565b80838252828201915082860187848660051b890101111562000fed57600080fd5b60005b858110156200101757620010048262000f84565b8452928401929084019060010162000ff0565b5090979650505050505050565b600082601f8301126200103657600080fd5b815160206200104962000fc68362001345565b80838252828201915082860187848660051b89010111156200106a57600080fd5b6000805b868110156200109a578251801515811462001087578283fd5b855293850193918501916001016200106e565b509198975050505050505050565b600082601f830112620010ba57600080fd5b81516020620010cd62000fc68362001345565b80838252828201915082860187848660051b8901011115620010ee57600080fd5b60005b858110156200101757815184529284019290840190600101620010f1565b6000602082840312156200112257600080fd5b62000af08262000f84565b600080600080608085870312156200114457600080fd5b84516001600160401b03808211156200115c57600080fd5b818701915087601f8301126200117157600080fd5b81516200118262000fc68262001345565b80828252602082019150602085018b60208560051b8801011115620011a657600080fd5b60005b848110156200124257815186811115620011c257600080fd5b8701603f81018e13620011d457600080fd5b602081015187811115620011ec57620011ec6200156c565b62001201601f8201601f191660200162001312565b8181528f60408385010111156200121757600080fd5b6200122a826020830160408601620014d0565b865250506020938401939190910190600101620011a9565b505060208a015190985093505050808211156200125e57600080fd5b6200126c8883890162000fa1565b945060408701519150808211156200128357600080fd5b6200129188838901620010a8565b93506060870151915080821115620012a857600080fd5b50620012b78782880162001024565b91505092959194509250565b600060208284031215620012d657600080fd5b5051919050565b6020815260008251806020840152620012fe816040850160208701620014d0565b601f01601f19169190910160400192915050565b604051601f8201601f191681016001600160401b03811182821017156200133d576200133d6200156c565b604052919050565b60006001600160401b038211156200136157620013616200156c565b5060051b60200190565b6000821982111562001381576200138162001540565b500190565b600082620013a457634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620013ea578160001904821115620013ce57620013ce62001540565b80851615620013dc57918102915b93841c9390800290620013ae565b509250929050565b600062000af083836000826200140b5750600162000af3565b816200141a5750600062000af3565b81600181146200143357600281146200143e576200145e565b600191505062000af3565b60ff84111562001452576200145262001540565b50506001821b62000af3565b5060208310610133831016604e8410600b841016171562001483575081810a62000af3565b6200148f8383620013a9565b8060001904821115620014a657620014a662001540565b029392505050565b6000816000190483118215151615620014cb57620014cb62001540565b500290565b60005b83811015620014ed578181015183820152602001620014d3565b83811115620014fd576000848401525b50505050565b600181811c908216806200151857607f821691505b602082108114156200153a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6149bb80620015926000396000f3fe6080604052600436106104b95760003560e01c80638b42507f1161026b578063c7f063d31161014f578063e5c2b0a6116100c1578063f1d5f51711610085578063f1d5f51714610e59578063f2fde38b14610e79578063f637434214610e99578063f832679514610eaf578063f84ba65d14610ec5578063f872858a14610ee557600080fd5b8063e5c2b0a614610dc3578063ea10510e14610de3578063eb671e9114610e03578063ec28438a14610e23578063f11a24d314610e4357600080fd5b8063cfe0e61911610113578063cfe0e61914610d06578063d2a8b44014610d1c578063dd62ed3e14610d31578063e2f4560514610d77578063e32759cf14610d8d578063e4bf1bed14610da357600080fd5b8063c7f063d314610c47578063c816841b14610c67578063c867d60b14610c87578063c92d567e14610cb7578063ce4d9f1514610cd657600080fd5b8063a9059cbb116101e8578063bba30f8f116101ac578063bba30f8f14610b91578063bfc3137e14610bb1578063c024666814610bc7578063c0973eed14610be7578063c492f04614610c07578063c49b9a8014610c2757600080fd5b8063a9059cbb14610ae1578063ab377daa14610b01578063afa4f3b214610b21578063b340a95414610b41578063b62496f514610b6157600080fd5b80639a55fff01161022f5780639a55fff014610a4b5780639a7a23d614610a6b5780639ab4a44514610a8b5780639c1b8af514610aab578063a457c2d714610ac157600080fd5b80638b42507f146109bc5780638da5cb5b146109ec5780638de743b314610a0a5780639213691314610a2057806395d89b4114610a3657600080fd5b80633e0e24fa1161039d578063621823e61161030f5780637bce5a04116102d35780637bce5a04146109205780637d1db4a514610936578063807c2d9c1461094c57806385141a7714610962578063871c128d14610982578063892400f3146109a257600080fd5b8063621823e61461089557806365b8dbc0146108ab57806370a08231146108cb578063715018a6146108eb57806379dc880c1461090057600080fd5b80634fbee193116103615780634fbee193146107dd57806354fd4d5014610816578063553193ca1461082c578063557ed1ba146108425780635d098b3814610855578063615223dc1461087557600080fd5b80633e0e24fa146107575780634144d9e41461077757806341c0e1b5146107975780634412478b146107ad5780634a74bb02146107c357600080fd5b80632171dcc911610436578063313ce567116103fa578063313ce567146106c657806335c96089146106db5780633926876d146106f5578063395093511461070b5780633b1cd1871461072b5780633df4ddf41461074157600080fd5b80632171dcc9146106305780632198cf6c1461065057806323b872dd1461067057806324942a04146106905780632563ae83146106a657600080fd5b806308b2a12c1161047d57806308b2a12c1461057d578063095ea7b3146105935780631694505e146105b357806318160ddd146105eb5780631cdd3be31461060057600080fd5b806301339c21146104c557806301873d8f146104dc57806302df64d61461052157806305d52b9c1461054557806306fdde031461055b57600080fd5b366104c057005b600080fd5b3480156104d157600080fd5b506104da610eff565b005b3480156104e857600080fd5b5061050c6104f7366004614360565b60356020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561052d57600080fd5b50610537600a5481565b604051908152602001610518565b34801561055157600080fd5b5061053760205481565b34801561056757600080fd5b50610570610f84565b6040516105189190614680565b34801561058957600080fd5b50610537600b5481565b34801561059f57600080fd5b5061050c6105ae366004614442565b611016565b3480156105bf57600080fd5b506007546105d3906001600160a01b031681565b6040516001600160a01b039091168152602001610518565b3480156105f757600080fd5b50600254610537565b34801561060c57600080fd5b5061050c61061b366004614360565b60286020526000908152604090205460ff1681565b34801561063c57600080fd5b506104da61064b366004614414565b61102d565b34801561065c57600080fd5b506104da61066b366004614414565b611082565b34801561067c57600080fd5b5061050c61068b3660046143d3565b6110d7565b34801561069c57600080fd5b5061053760115481565b3480156106b257600080fd5b506104da6106c13660046144f4565b611140565b3480156106d257600080fd5b50600554610537565b3480156106e757600080fd5b5060325461050c9060ff1681565b34801561070157600080fd5b5061053760135481565b34801561071757600080fd5b5061050c610726366004614442565b61117d565b34801561073757600080fd5b5061053760155481565b34801561074d57600080fd5b5061053760215481565b34801561076357600080fd5b506104da6107723660046145a5565b6111b3565b34801561078357600080fd5b506019546105d3906001600160a01b031681565b3480156107a357600080fd5b5061053760225481565b3480156107b957600080fd5b50610537601f5481565b3480156107cf57600080fd5b50601d5461050c9060ff1681565b3480156107e957600080fd5b5061050c6107f8366004614360565b6001600160a01b03166000908152602c602052604090205460ff1690565b34801561082257600080fd5b5061053760345481565b34801561083857600080fd5b5061053760335481565b34801561084e57600080fd5b5042610537565b34801561086157600080fd5b506104da610870366004614360565b6111e8565b34801561088157600080fd5b506104da610890366004614360565b61124c565b3480156108a157600080fd5b5061053760255481565b3480156108b757600080fd5b506104da6108c6366004614360565b6112c6565b3480156108d757600080fd5b506105376108e6366004614360565b61158a565b3480156108f757600080fd5b506104da611635565b34801561090c57600080fd5b506104da61091b366004614573565b61166b565b34801561092c57600080fd5b50610537600e5481565b34801561094257600080fd5b5061053760295481565b34801561095857600080fd5b50610537602a5481565b34801561096e57600080fd5b506017546105d3906001600160a01b031681565b34801561098e57600080fd5b506104da61099d366004614573565b6116e8565b3480156109ae57600080fd5b50602d5461050c9060ff1681565b3480156109c857600080fd5b5061050c6109d7366004614360565b60276020526000908152604090205460ff1681565b3480156109f857600080fd5b506006546001600160a01b03166105d3565b348015610a1657600080fd5b5061053760105481565b348015610a2c57600080fd5b50610537600f5481565b348015610a4257600080fd5b506105706117ac565b348015610a5757600080fd5b506104da610a6636600461446e565b6117bb565b348015610a7757600080fd5b506104da610a86366004614414565b61185c565b348015610a9757600080fd5b506018546105d3906001600160a01b031681565b348015610ab757600080fd5b50610537601c5481565b348015610acd57600080fd5b5061050c610adc366004614442565b611926565b348015610aed57600080fd5b5061050c610afc366004614442565b611975565b348015610b0d57600080fd5b506105d3610b1c366004614573565b611982565b348015610b2d57600080fd5b506104da610b3c366004614573565b6119ac565b348015610b4d57600080fd5b506024546105d3906001600160a01b031681565b348015610b6d57600080fd5b5061050c610b7c366004614360565b602e6020526000908152604090205460ff1681565b348015610b9d57600080fd5b506104da610bac366004614573565b6119db565b348015610bbd57600080fd5b5061053760165481565b348015610bd357600080fd5b506104da610be2366004614414565b611a58565b348015610bf357600080fd5b50601b546105d3906001600160a01b031681565b348015610c1357600080fd5b506104da610c2236600461446e565b611b07565b348015610c3357600080fd5b506104da610c423660046144f4565b611be3565b348015610c5357600080fd5b506104da610c62366004614573565b611c20565b348015610c7357600080fd5b506008546105d3906001600160a01b031681565b348015610c9357600080fd5b5061050c610ca2366004614360565b60266020526000908152604090205460ff1681565b348015610cc357600080fd5b5060325461050c90610100900460ff1681565b348015610ce257600080fd5b50610ceb611c97565b60408051938452602084019290925290820152606001610518565b348015610d1257600080fd5b5061053760145481565b348015610d2857600080fd5b506104da611de9565b348015610d3d57600080fd5b50610537610d4c36600461439a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610d8357600080fd5b5061053760095481565b348015610d9957600080fd5b5061053760235481565b348015610daf57600080fd5b506104da610dbe3660046145f5565b611ec1565b348015610dcf57600080fd5b506104da610dde366004614573565b611f69565b348015610def57600080fd5b506104da610dfe3660046144f4565b611fde565b348015610e0f57600080fd5b506104da610e1e3660046145f5565b61201b565b348015610e2f57600080fd5b506104da610e3e366004614573565b6120bd565b348015610e4f57600080fd5b50610537600c5481565b348015610e6557600080fd5b506104da610e74366004614573565b6120ec565b348015610e8557600080fd5b506104da610e94366004614360565b61211b565b348015610ea557600080fd5b50610537600d5481565b348015610ebb57600080fd5b5061053760125481565b348015610ed157600080fd5b506104da610ee0366004614414565b6121b6565b348015610ef157600080fd5b50602b5461050c9060ff1681565b6006546001600160a01b03163314610f325760405162461bcd60e51b8152600401610f2990614718565b60405180910390fd5b60335415610f745760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e481cdd185c9d1959608a1b6044820152606401610f29565b436033556032805460ff19169055565b606060038054610f9390614873565b80601f0160208091040260200160405190810160405280929190818152602001828054610fbf90614873565b801561100c5780601f10610fe15761010080835404028352916020019161100c565b820191906000526020600020905b815481529060010190602001808311610fef57829003601f168201915b5050505050905090565b6000611023338484612332565b5060015b92915050565b6006546001600160a01b031633146110575760405162461bcd60e51b8152600401610f2990614718565b6001600160a01b03919091166000908152603560205260409020805460ff1916911515919091179055565b6006546001600160a01b031633146110ac5760405162461bcd60e51b8152600401610f2990614718565b6001600160a01b03919091166000908152602660205260409020805460ff1916911515919091179055565b60006110e4848484612457565b611136843361113185604051806060016040528060288152602001614939602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612de2565b612332565b5060019392505050565b6006546001600160a01b0316331461116a5760405162461bcd60e51b8152600401610f2990614718565b602b805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091611023918590611131908661220b565b6006546001600160a01b031633146111dd5760405162461bcd60e51b8152600401610f2990614718565b602091909155602555565b6006546001600160a01b031633146112125760405162461bcd60e51b8152600401610f2990614718565b601980546001600160a01b039092166001600160a01b0319909216821790556000908152602c60205260409020805460ff19166001179055565b6006546001600160a01b031633146112765760405162461bcd60e51b8152600401610f2990614718565b6001600160a01b03811630141561129957602d805460ff191660011790556112a4565b602d805460ff191690555b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031633146112f05760405162461bcd60e51b8152600401610f2990614718565b6007546001600160a01b038281169116141561135a5760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610f29565b6007546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600780546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b815290516000929163c45a0155916004808301926020929190829003018186803b1580156113ec57600080fd5b505afa158015611400573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611424919061437d565b6001600160a01b031663c9c6539630600760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561148157600080fd5b505afa158015611495573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b9919061437d565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561150157600080fd5b505af1158015611515573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611539919061437d565b600880546001600160a01b0319166001600160a01b0383161790559050611561816001612e1c565b50506008546001600160a01b03166000908152602660205260409020805460ff19166001179055565b6008546000906001600160a01b0383811691161480156115b457506008546001600160a01b031633145b80156115c2575060325460ff165b15611617576008546001600160a01b0316600090815260208190526040812054116116175760405162461bcd60e51b81526020600482015260056024820152642173796e6360d81b6044820152606401610f29565b6001600160a01b038216600090815260208190526040902054611027565b6006546001600160a01b0316331461165f5760405162461bcd60e51b8152600401610f2990614718565b6116696000612f05565b565b6006546001600160a01b031633146116955760405162461bcd60e51b8152600401610f2990614718565b6109c48111156116e35760405162461bcd60e51b8152602060048201526019602482015278546f74616c2073656c20666565206973206f7665722032352560381b6044820152606401610f29565b601555565b6006546001600160a01b031633146117125760405162461bcd60e51b8152600401610f2990614718565b601c548114156117795760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f742075706461746520676173466f7250726f63657373696e67207460448201526b6f2073616d652076616c756560a01b6064820152608401610f29565b601c5460405182907f40d7e40e79af4e8e5a9b3c57030d8ea93f13d669c06d448c4d631d4ae7d23db790600090a3601c55565b606060048054610f9390614873565b6006546001600160a01b031633146117e55760405162461bcd60e51b8152600401610f2990614718565b60005b82811015611856578160286000868685818110611807576118076148d9565b905060200201602081019061181c9190614360565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061184e816148a8565b9150506117e8565b50505050565b6006546001600160a01b031633146118865760405162461bcd60e51b8152600401610f2990614718565b6008546001600160a01b03838116911614156119185760405162461bcd60e51b815260206004820152604560248201527f5468652050616e63616b655377617020706169722063616e6e6f74206265207260448201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572606482015264506169727360d81b608482015260a401610f29565b6119228282612e1c565b5050565b6000611023338461113185604051806060016040528060258152602001614961602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190612de2565b6000611023338484612457565b6030818154811061199257600080fd5b6000918252602090912001546001600160a01b0316905081565b6006546001600160a01b031633146119d65760405162461bcd60e51b8152600401610f2990614718565b600955565b6006546001600160a01b03163314611a055760405162461bcd60e51b8152600401610f2990614718565b6109c4811115611a535760405162461bcd60e51b8152602060048201526019602482015278546f74616c2073656c20666565206973206f7665722032352560381b6044820152606401610f29565b601655565b6006546001600160a01b03163314611a825760405162461bcd60e51b8152600401610f2990614718565b6001600160a01b0382166000908152602c602052604090205460ff16151581151514611922576001600160a01b0382166000818152602c6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6006546001600160a01b03163314611b315760405162461bcd60e51b8152600401610f2990614718565b60005b82811015611ba25781602c6000868685818110611b5357611b536148d9565b9050602002016020810190611b689190614360565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611b9a816148a8565b915050611b34565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b35838383604051611bd693929190614627565b60405180910390a1505050565b6006546001600160a01b03163314611c0d5760405162461bcd60e51b8152600401610f2990614718565b601d805460ff1916911515919091179055565b6006546001600160a01b03163314611c4a5760405162461bcd60e51b8152600401610f2990614718565b6064811115611c925760405162461bcd60e51b815260206004820152601460248201527306e657756616c7565206d757374203c3d203130360641b6044820152606401610f29565b602255565b600080600080600860009054906101000a90046001600160a01b03169050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015611cf157600080fd5b505afa158015611d05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d29919061452e565b506018546001600160701b039283169450911691506001600160a01b031630811015611d5a57829650819550611d61565b8196508295505b6008546040516370a0823160e01b81526001600160a01b039182166004820152908216906370a082319060240160206040518083038186803b158015611da657600080fd5b505afa158015611dba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dde919061458c565b945050505050909192565b6006546001600160a01b03163314611e135760405162461bcd60e51b8152600401610f2990614718565b6000611e1e3061158a565b905060008111611e655760405162461bcd60e51b8152602060048201526012602482015271746f6b656e2062616c616e6365207a65726f60701b6044820152606401610f29565b6008805460ff60a01b1916600160a01b17905560145415611e8b57611e8b601454612f57565b60125415611e9e57611e9e601254613178565b60135415611eb157611eb160135461330d565b506008805460ff60a01b19169055565b6006546001600160a01b03163314611eeb5760405162461bcd60e51b8152600401610f2990614718565b612710611f0482611efe8581888a61220b565b9061220b565b1115611f525760405162461bcd60e51b815260206004820152601a60248201527f546f74616c2062757920666565206973206f76657220313030250000000000006044820152606401610f29565b600a92909255600c92909255600e91909155601055565b6006546001600160a01b03163314611f935760405162461bcd60e51b8152600401610f2990614718565b6003811115611fd95760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b6044820152606401610f29565b602355565b6006546001600160a01b031633146120085760405162461bcd60e51b8152600401610f2990614718565b6032805460ff1916911515919091179055565b6006546001600160a01b031633146120455760405162461bcd60e51b8152600401610f2990614718565b61271061205882611efe8581888a61220b565b11156120a65760405162461bcd60e51b815260206004820152601a60248201527f546f74616c2073656c20666565206973206f76657220313030250000000000006044820152606401610f29565b600b92909255600d92909255600f91909155601155565b6006546001600160a01b031633146120e75760405162461bcd60e51b8152600401610f2990614718565b602955565b6006546001600160a01b031633146121165760405162461bcd60e51b8152600401610f2990614718565b602a55565b6006546001600160a01b031633146121455760405162461bcd60e51b8152600401610f2990614718565b6001600160a01b0381166121aa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610f29565b6121b381612f05565b50565b6006546001600160a01b031633146121e05760405162461bcd60e51b8152600401610f2990614718565b6001600160a01b03919091166000908152602760205260409020805460ff1916911515919091179055565b6000806122188385614803565b90508381101561226a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610f29565b9392505050565b60008261228057506000611027565b600061228c838561483d565b905082612299858361481b565b1461226a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610f29565b600061226a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061336b565b6001600160a01b0383166123945760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610f29565b6001600160a01b0382166123f55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610f29565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661247d5760405162461bcd60e51b8152600401610f299061474d565b6001600160a01b0382166124a35760405162461bcd60e51b8152600401610f29906146d5565b6001600160a01b03831660009081526028602052604090205460ff16156124f15760405162461bcd60e51b8152602060048201526002602482015261109360f21b6044820152606401610f29565b806125075761250283836000613399565b505050565b6001600160a01b0383166000908152602e602052604090205460ff168061254657506001600160a01b0382166000908152602e602052604090205460ff165b156125b3576001600160a01b0383166000908152602c602052604090205460ff1615801561258d57506001600160a01b0382166000908152602c602052604090205460ff16155b156125b357603254610100900460ff1680156125a95750603354155b156125b357600080fd5b6001600160a01b0382166000908152602e602052604090205460ff1680156125ed57506008546125eb906001600160a01b031661158a565b155b156125f757436021555b6001600160a01b0383166000908152602c602052604090205460ff1615801561263957506001600160a01b0382166000908152602c602052604090205460ff16155b15612691576001600160a01b0383166000908152602e602052604090205460ff16801561267457506022546021546126719190614803565b43105b1561269157601a546125029084906001600160a01b031683613399565b6001600160a01b0383166000908152602c6020526040812054819060ff161580156126d557506001600160a01b0384166000908152602c602052604090205460ff16155b15612758576001600160a01b0384166000908152602e602052604090205460ff16801561271157503360009081526035602052604090205460ff165b80156127255750326001600160a01b038616145b15612758576000612735846134a2565b905060008111801561274c575063ffffffff863b16155b1561275657600191505b505b6001600160a01b0385166000908152602e602052604090205460ff16156127935760006127848461350d565b9050801561279157600192505b505b6001600160a01b03851660009081526027602052604090205460ff161580156127d557506001600160a01b03841660009081526027602052604090205460ff16155b1561283d5760295483111561283d5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610f29565b60006128483061158a565b600954909150811080159081906128695750600854600160a01b900460ff16155b801561288e57506001600160a01b0387166000908152602e602052604090205460ff16155b80156128a857506006546001600160a01b03888116911614155b80156128c257506006546001600160a01b03878116911614155b80156128d05750601d5460ff165b80156128da575082155b15612939576008805460ff60a01b1916600160a01b1790556014541561290557612905601454612f57565b6012541561291857612918601254613178565b6013541561292b5761292b60135461330d565b6008805460ff60a01b191690555b6008546001600160a01b0388166000908152602c602052604090205460ff600160a01b90920482161591168061298757506001600160a01b0387166000908152602c602052604090205460ff165b15612990575060005b8015612cf157600080600080600088156129e8576129c56127106129bf6015548e61227190919063ffffffff16565b906122f0565b925082601360008282546129d99190614803565b92505081905550829450612bc9565b8915612a09576129c56127106129bf6016548e61227190919063ffffffff16565b6001600160a01b038d166000908152602e602052604090205460ff1615612aeb57612a456127106129bf600c548e61227190919063ffffffff16565b93508360126000828254612a599190614803565b9091555050600a54612a7490612710906129bf908e90612271565b92508260136000828254612a889190614803565b9091555050600e54612aa390612710906129bf908e90612271565b91508160146000828254612ab79190614803565b9091555050601054612ad290612710906129bf908e90612271565b9050612ae481611efe8481888861220b565b9450612bc9565b6001600160a01b038c166000908152602e602052604090205460ff1615612bc957612b276127106129bf600d548e61227190919063ffffffff16565b93508360126000828254612b3b9190614803565b9091555050600b54612b5690612710906129bf908e90612271565b92508260136000828254612b6a9190614803565b9091555050600f54612b8590612710906129bf908e90612271565b91508160146000828254612b999190614803565b9091555050601154612bb490612710906129bf908e90612271565b9050612bc681611efe8481888861220b565b94505b6001600160a01b038d166000908152602e602052604090205460ff1680612c0857506001600160a01b038c166000908152602e602052604090205460ff165b8015612c12575088155b8015612c1c575089155b15612ca75760235415612ca7576000805b602354811015612c8a5760408051602081018390529081018e90524260608201526080016040516020818303038152906040528051906020012060001c9150612c788f836001613399565b80612c82816148a8565b915050612c2d565b50602354612c9990600161483d565b612ca3908d61485c565b9b50505b612cb18b866135eb565b9a508015612cd157601754612cd1908e906001600160a01b031683613399565b8415612ceb57612ceb8d30612ce688856135eb565b613399565b50505050505b602b5460ff168015612d1c57506001600160a01b03871660009081526026602052604090205460ff16155b15612d3c57602a54612d3187611efe8a61158a565b1115612d3c57600080fd5b612d47888888613399565b6001600160a01b0388163014801590612d7857506001600160a01b0387166000908152602e602052604090205460ff165b15612d8657612d868861362d565b600854600160a01b900460ff16158015612da957506001600160a01b0388163014155b8015612dc35750602554601f54612dc09190614803565b43115b15612dd857612dd3601c546136dc565b43601f555b5050505050505050565b60008184841115612e065760405162461bcd60e51b8152600401610f299190614680565b506000612e13848661485c565b95945050505050565b6001600160a01b0382166000908152602e602052604090205460ff1615158115151415612eb15760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401610f29565b6001600160a01b0382166000818152602e6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612f8c57612f8c6148d9565b6001600160a01b039283166020918202929092010152601854825191169082906001908110612fbd57612fbd6148d9565b6001600160a01b039283166020918202929092010152600754612fe39130911684612332565b600760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561303157600080fd5b505afa158015613045573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613069919061437d565b6018546001600160a01b03908116911614156130f35760075460195460405163791ac94760e01b81526001600160a01b039283169263791ac947926130bc92879260009288929116904290600401614792565b600060405180830381600087803b1580156130d657600080fd5b505af11580156130ea573d6000803e3d6000fd5b50505050613163565b600754601954604051635c11d79560e01b81526001600160a01b0392831692635c11d7959261313092879260009288929116904290600401614792565b600060405180830381600087803b15801561314a57600080fd5b505af115801561315e573d6000803e3d6000fd5b505050505b81601454613171919061485c565b6014555050565b60006131858260026122f0565b9050600061319383836135eb565b6018546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a082319060240160206040518083038186803b1580156131dc57600080fd5b505afa1580156131f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613214919061458c565b90506132208330613a86565b6018546040516370a0823160e01b81523060048201526000916132a89184916001600160a01b0316906370a082319060240160206040518083038186803b15801561326a57600080fd5b505afa15801561327e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a2919061458c565b906135eb565b90506132b48382613cc8565b846012546132c2919061485c565b60125560408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050505050565b602d5460ff161561332c5780601354613326919061485c565b60135550565b601b546018546001600160a01b03908116911614156133545761334f8130613a86565b61335d565b61335d81613e46565b80601354613326919061485c565b6000818361338c5760405162461bcd60e51b8152600401610f299190614680565b506000612e13848661481b565b6001600160a01b0383166133bf5760405162461bcd60e51b8152600401610f299061474d565b6001600160a01b0382166133e55760405162461bcd60e51b8152600401610f29906146d5565b61342281604051806060016040528060268152602001614913602691396001600160a01b0386166000908152602081905260409020549190612de2565b6001600160a01b038085166000908152602081905260408082209390935590841681522054613451908261220b565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161244a565b6000806000806134b0611c97565b925092509250600080841180156134c75750600083115b156134e457826134d7858861483d565b6134e1919061481b565b90505b6134ee8185614803565b82106135045761350082878686613f9a565b5094505b50505050919050565b600080600061351a611c97565b92505091508181116135e457600854849061353d906001600160a01b031661158a565b613547919061485c565b600860009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561359557600080fd5b505afa1580156135a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135cd919061458c565b6135d7908661483d565b6135e1919061481b565b92505b5050919050565b600061226a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612de2565b803b8015613639575050565b6001600160a01b0382166000908152602f602052604090205460ff1661192257603080546001600160a01b0384166000818152603160205260408120839055600183018455929092527f6ff97a59c90d62cc7236ba3a37cd85351bf564556780cf8c1157a220f31f0cbb0180546001600160a01b03191690911790556001600160a01b0382166000908152602f60205260409020805460ff191660011790555050565b601b546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561372057600080fd5b505afa158015613734573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613758919061458c565b602d5490915060ff161561378a576137876014546132a26013546132a2601254866135eb90919063ffffffff16565b90505b602054819081101561379b57505050565b603054806137a95750505050565b6000805a905060005b86831080156137c057508381105b15613a7d5783601e54106137d4576000601e555b6000613916600860009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561382757600080fd5b505afa15801561383b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061385f919061458c565b600854601e54603080546129bf936001600160a01b0316926370a082319291811061388c5761388c6148d9565b60009182526020909120015460405160e083901b6001600160e01b03191681526001600160a01b03909116600482015260240160206040518083038186803b1580156138d757600080fd5b505afa1580156138eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061390f919061458c565b8a90612271565b90508086101561392a575050505050505050565b8015613a3a57602d5460ff16156139745761396f306030601e5481548110613954576139546148d9565b6000918252602090912001546001600160a01b031683613399565b613a2d565b601b54601e54603080546001600160a01b039093169263a9059cbb9290811061399f5761399f6148d9565b60009182526020909120015460405160e083901b6001600160e01b03191681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b1580156139f357600080fd5b505af1158015613a07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a2b9190614511565b505b613a3786826135eb565b95505b613a4f613a485a85906135eb565b859061220b565b93505a601e80549194506000613a64836148a8565b91905055508180613a74906148a8565b925050506137b2565b50505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613abb57613abb6148d9565b6001600160a01b039283166020918202929092010152601854825191169082906001908110613aec57613aec6148d9565b6001600160a01b039283166020918202929092010152600754613b129130911685612332565b600754602454604051635c11d79560e01b81526001600160a01b0392831692635c11d79592613b4f92889260009288929116904290600401614792565b600060405180830381600087803b158015613b6957600080fd5b505af1925050508015613b7a575060015b613ba8576040517ffa4626fc78df02cb8fdea85a8af60ad29e2c95f22e2a91c79d99631c288a8b6c90600090a15b601854602480546040516370a0823160e01b81526001600160a01b03918216600482015260009391909116916370a08231910160206040518083038186803b158015613bf357600080fd5b505afa158015613c07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2b919061458c565b601854602480546040516323b872dd60e01b81526001600160a01b03918216600482015287821692810192909252604482018490529293509116906323b872dd90606401602060405180830381600087803b158015613c8957600080fd5b505af1158015613c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cc19190614511565b5050505050565b600754613ce09030906001600160a01b031684612332565b60185460075460405163095ea7b360e01b81526001600160a01b0391821660048201526024810184905291169063095ea7b390604401602060405180830381600087803b158015613d3057600080fd5b505af1158015613d44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d689190614511565b5060075460185460195460405162e8e33760e81b81523060048201526001600160a01b039283166024820152604481018690526064810185905260006084820181905260a482015290821660c48201524260e482015291169063e8e337009061010401606060405180830381600087803b158015613de557600080fd5b505af1925050508015613e15575060408051601f3d908101601f19168201909252613e12918101906145c7565b60015b613cc1576040517f0e944a8ae3ee1160b2678930fb103c5ceadb14ecbb4c16e311d7402f7011322c90600090a15050565b60408051600380825260808201909252600091602082016060803683370190505090503081600081518110613e7d57613e7d6148d9565b6001600160a01b039283166020918202929092010152601854825191169082906001908110613eae57613eae6148d9565b6001600160a01b039283166020918202929092010152601b54825191169082906002908110613edf57613edf6148d9565b6001600160a01b039283166020918202929092010152600754613f059130911684612332565b600754604051635c11d79560e01b81526001600160a01b0390911690635c11d79590613f3e908590600090869030904290600401614792565b600060405180830381600087803b158015613f5857600080fd5b505af1925050508015613f69575060015b611922576040517ffa4626fc78df02cb8fdea85a8af60ad29e2c95f22e2a91c79d99631c288a8b6c90600090a15050565b6000806000600860009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015613fed57600080fd5b505afa158015614001573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614025919061458c565b90506000600760009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561407757600080fd5b505afa15801561408b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140af919061437d565b6001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156140e757600080fd5b505afa1580156140fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061411f919061437d565b60085460408051637464fc3d60e01b815290519293506001600160a01b0380851615159360009390911691637464fc3d916004808301926020929190829003018186803b15801561416f57600080fd5b505afa158015614183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141a7919061458c565b9050811561424c57801561424c5760006141c96141c4898b61483d565b6142c3565b905060006141d6836142c3565b9050808211156142495760006141ec828461485c565b6141f6908861483d565b61420190600861483d565b9050600061421083600861483d565b61421b85601161483d565b6142259190614803565b9050614231818361481b565b98508815614246576142438989614803565b97505b50505b50505b6000614258898c61485c565b905084614280576103e861426f6141c48c8461483d565b614279919061485c565b96506142b5565b6142b28961428e878461483d565b614298919061481b565b896142a3888e61483d565b6142ad919061481b565b614333565b96505b505050505094509492505050565b6000600382111561432457508060006142dd60028361481b565b6142e8906001614803565b90505b8181101561431e57905080600281614303818661481b565b61430d9190614803565b614317919061481b565b90506142eb565b50919050565b811561432e575060015b919050565b6000818310614342578161226a565b5090919050565b80516001600160701b038116811461432e57600080fd5b60006020828403121561437257600080fd5b813561226a816148ef565b60006020828403121561438f57600080fd5b815161226a816148ef565b600080604083850312156143ad57600080fd5b82356143b8816148ef565b915060208301356143c8816148ef565b809150509250929050565b6000806000606084860312156143e857600080fd5b83356143f3816148ef565b92506020840135614403816148ef565b929592945050506040919091013590565b6000806040838503121561442757600080fd5b8235614432816148ef565b915060208301356143c881614904565b6000806040838503121561445557600080fd5b8235614460816148ef565b946020939093013593505050565b60008060006040848603121561448357600080fd5b833567ffffffffffffffff8082111561449b57600080fd5b818601915086601f8301126144af57600080fd5b8135818111156144be57600080fd5b8760208260051b85010111156144d357600080fd5b602092830195509350508401356144e981614904565b809150509250925092565b60006020828403121561450657600080fd5b813561226a81614904565b60006020828403121561452357600080fd5b815161226a81614904565b60008060006060848603121561454357600080fd5b61454c84614349565b925061455a60208501614349565b9150604084015163ffffffff811681146144e957600080fd5b60006020828403121561458557600080fd5b5035919050565b60006020828403121561459e57600080fd5b5051919050565b600080604083850312156145b857600080fd5b50508035926020909101359150565b6000806000606084860312156145dc57600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561460b57600080fd5b5050823594602084013594506040840135936060013592509050565b6040808252810183905260008460608301825b8681101561466a57823561464d816148ef565b6001600160a01b031682526020928301929091019060010161463a565b5080925050508215156020830152949350505050565b600060208083528351808285015260005b818110156146ad57858101830151858201604001528201614691565b818111156146bf576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156147e25784516001600160a01b0316835293830193918301916001016147bd565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115614816576148166148c3565b500190565b60008261483857634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615614857576148576148c3565b500290565b60008282101561486e5761486e6148c3565b500390565b600181811c9082168061488757607f821691505b6020821081141561431e57634e487b7160e01b600052602260045260246000fd5b60006000198214156148bc576148bc6148c3565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146121b357600080fd5b80151581146121b357600080fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203d1cbb42d406e03d54eae458359c5d0cd363b08cb8d6f3f77efa97ad4642130f64736f6c63430008070033608060405234801561001057600080fd5b506040516101e63803806101e683398101604081905261002f916100d9565b600080546001600160a01b03199081166001600160a01b038416908117909255600180543392168217905560405163095ea7b360e01b81526004810191909152600019602482015263095ea7b390604401602060405180830381600087803b15801561009a57600080fd5b505af11580156100ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100d29190610109565b505061012b565b6000602082840312156100eb57600080fd5b81516001600160a01b038116811461010257600080fd5b9392505050565b60006020828403121561011b57600080fd5b8151801515811461010257600080fd5b60ad806101396000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c80632f48ab7d1460375780638da5cb5b146065575b600080fd5b6000546049906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b6001546049906001600160a01b03168156fea2646970667358221220cf154e06c117955462d7e61985364d44f16aaea8da64b2b61debafe8b92d048764736f6c634300080700330000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000000380000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b4861776b2054686f756168000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000654686f756168000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000000000fee13a103a10d593b9ae06b3e05f2e7e1c000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000000000000000000000000000009bb69e4ddda0a1865fec3ba828787e6f886750f7000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000052080000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106104b95760003560e01c80638b42507f1161026b578063c7f063d31161014f578063e5c2b0a6116100c1578063f1d5f51711610085578063f1d5f51714610e59578063f2fde38b14610e79578063f637434214610e99578063f832679514610eaf578063f84ba65d14610ec5578063f872858a14610ee557600080fd5b8063e5c2b0a614610dc3578063ea10510e14610de3578063eb671e9114610e03578063ec28438a14610e23578063f11a24d314610e4357600080fd5b8063cfe0e61911610113578063cfe0e61914610d06578063d2a8b44014610d1c578063dd62ed3e14610d31578063e2f4560514610d77578063e32759cf14610d8d578063e4bf1bed14610da357600080fd5b8063c7f063d314610c47578063c816841b14610c67578063c867d60b14610c87578063c92d567e14610cb7578063ce4d9f1514610cd657600080fd5b8063a9059cbb116101e8578063bba30f8f116101ac578063bba30f8f14610b91578063bfc3137e14610bb1578063c024666814610bc7578063c0973eed14610be7578063c492f04614610c07578063c49b9a8014610c2757600080fd5b8063a9059cbb14610ae1578063ab377daa14610b01578063afa4f3b214610b21578063b340a95414610b41578063b62496f514610b6157600080fd5b80639a55fff01161022f5780639a55fff014610a4b5780639a7a23d614610a6b5780639ab4a44514610a8b5780639c1b8af514610aab578063a457c2d714610ac157600080fd5b80638b42507f146109bc5780638da5cb5b146109ec5780638de743b314610a0a5780639213691314610a2057806395d89b4114610a3657600080fd5b80633e0e24fa1161039d578063621823e61161030f5780637bce5a04116102d35780637bce5a04146109205780637d1db4a514610936578063807c2d9c1461094c57806385141a7714610962578063871c128d14610982578063892400f3146109a257600080fd5b8063621823e61461089557806365b8dbc0146108ab57806370a08231146108cb578063715018a6146108eb57806379dc880c1461090057600080fd5b80634fbee193116103615780634fbee193146107dd57806354fd4d5014610816578063553193ca1461082c578063557ed1ba146108425780635d098b3814610855578063615223dc1461087557600080fd5b80633e0e24fa146107575780634144d9e41461077757806341c0e1b5146107975780634412478b146107ad5780634a74bb02146107c357600080fd5b80632171dcc911610436578063313ce567116103fa578063313ce567146106c657806335c96089146106db5780633926876d146106f5578063395093511461070b5780633b1cd1871461072b5780633df4ddf41461074157600080fd5b80632171dcc9146106305780632198cf6c1461065057806323b872dd1461067057806324942a04146106905780632563ae83146106a657600080fd5b806308b2a12c1161047d57806308b2a12c1461057d578063095ea7b3146105935780631694505e146105b357806318160ddd146105eb5780631cdd3be31461060057600080fd5b806301339c21146104c557806301873d8f146104dc57806302df64d61461052157806305d52b9c1461054557806306fdde031461055b57600080fd5b366104c057005b600080fd5b3480156104d157600080fd5b506104da610eff565b005b3480156104e857600080fd5b5061050c6104f7366004614360565b60356020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561052d57600080fd5b50610537600a5481565b604051908152602001610518565b34801561055157600080fd5b5061053760205481565b34801561056757600080fd5b50610570610f84565b6040516105189190614680565b34801561058957600080fd5b50610537600b5481565b34801561059f57600080fd5b5061050c6105ae366004614442565b611016565b3480156105bf57600080fd5b506007546105d3906001600160a01b031681565b6040516001600160a01b039091168152602001610518565b3480156105f757600080fd5b50600254610537565b34801561060c57600080fd5b5061050c61061b366004614360565b60286020526000908152604090205460ff1681565b34801561063c57600080fd5b506104da61064b366004614414565b61102d565b34801561065c57600080fd5b506104da61066b366004614414565b611082565b34801561067c57600080fd5b5061050c61068b3660046143d3565b6110d7565b34801561069c57600080fd5b5061053760115481565b3480156106b257600080fd5b506104da6106c13660046144f4565b611140565b3480156106d257600080fd5b50600554610537565b3480156106e757600080fd5b5060325461050c9060ff1681565b34801561070157600080fd5b5061053760135481565b34801561071757600080fd5b5061050c610726366004614442565b61117d565b34801561073757600080fd5b5061053760155481565b34801561074d57600080fd5b5061053760215481565b34801561076357600080fd5b506104da6107723660046145a5565b6111b3565b34801561078357600080fd5b506019546105d3906001600160a01b031681565b3480156107a357600080fd5b5061053760225481565b3480156107b957600080fd5b50610537601f5481565b3480156107cf57600080fd5b50601d5461050c9060ff1681565b3480156107e957600080fd5b5061050c6107f8366004614360565b6001600160a01b03166000908152602c602052604090205460ff1690565b34801561082257600080fd5b5061053760345481565b34801561083857600080fd5b5061053760335481565b34801561084e57600080fd5b5042610537565b34801561086157600080fd5b506104da610870366004614360565b6111e8565b34801561088157600080fd5b506104da610890366004614360565b61124c565b3480156108a157600080fd5b5061053760255481565b3480156108b757600080fd5b506104da6108c6366004614360565b6112c6565b3480156108d757600080fd5b506105376108e6366004614360565b61158a565b3480156108f757600080fd5b506104da611635565b34801561090c57600080fd5b506104da61091b366004614573565b61166b565b34801561092c57600080fd5b50610537600e5481565b34801561094257600080fd5b5061053760295481565b34801561095857600080fd5b50610537602a5481565b34801561096e57600080fd5b506017546105d3906001600160a01b031681565b34801561098e57600080fd5b506104da61099d366004614573565b6116e8565b3480156109ae57600080fd5b50602d5461050c9060ff1681565b3480156109c857600080fd5b5061050c6109d7366004614360565b60276020526000908152604090205460ff1681565b3480156109f857600080fd5b506006546001600160a01b03166105d3565b348015610a1657600080fd5b5061053760105481565b348015610a2c57600080fd5b50610537600f5481565b348015610a4257600080fd5b506105706117ac565b348015610a5757600080fd5b506104da610a6636600461446e565b6117bb565b348015610a7757600080fd5b506104da610a86366004614414565b61185c565b348015610a9757600080fd5b506018546105d3906001600160a01b031681565b348015610ab757600080fd5b50610537601c5481565b348015610acd57600080fd5b5061050c610adc366004614442565b611926565b348015610aed57600080fd5b5061050c610afc366004614442565b611975565b348015610b0d57600080fd5b506105d3610b1c366004614573565b611982565b348015610b2d57600080fd5b506104da610b3c366004614573565b6119ac565b348015610b4d57600080fd5b506024546105d3906001600160a01b031681565b348015610b6d57600080fd5b5061050c610b7c366004614360565b602e6020526000908152604090205460ff1681565b348015610b9d57600080fd5b506104da610bac366004614573565b6119db565b348015610bbd57600080fd5b5061053760165481565b348015610bd357600080fd5b506104da610be2366004614414565b611a58565b348015610bf357600080fd5b50601b546105d3906001600160a01b031681565b348015610c1357600080fd5b506104da610c2236600461446e565b611b07565b348015610c3357600080fd5b506104da610c423660046144f4565b611be3565b348015610c5357600080fd5b506104da610c62366004614573565b611c20565b348015610c7357600080fd5b506008546105d3906001600160a01b031681565b348015610c9357600080fd5b5061050c610ca2366004614360565b60266020526000908152604090205460ff1681565b348015610cc357600080fd5b5060325461050c90610100900460ff1681565b348015610ce257600080fd5b50610ceb611c97565b60408051938452602084019290925290820152606001610518565b348015610d1257600080fd5b5061053760145481565b348015610d2857600080fd5b506104da611de9565b348015610d3d57600080fd5b50610537610d4c36600461439a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610d8357600080fd5b5061053760095481565b348015610d9957600080fd5b5061053760235481565b348015610daf57600080fd5b506104da610dbe3660046145f5565b611ec1565b348015610dcf57600080fd5b506104da610dde366004614573565b611f69565b348015610def57600080fd5b506104da610dfe3660046144f4565b611fde565b348015610e0f57600080fd5b506104da610e1e3660046145f5565b61201b565b348015610e2f57600080fd5b506104da610e3e366004614573565b6120bd565b348015610e4f57600080fd5b50610537600c5481565b348015610e6557600080fd5b506104da610e74366004614573565b6120ec565b348015610e8557600080fd5b506104da610e94366004614360565b61211b565b348015610ea557600080fd5b50610537600d5481565b348015610ebb57600080fd5b5061053760125481565b348015610ed157600080fd5b506104da610ee0366004614414565b6121b6565b348015610ef157600080fd5b50602b5461050c9060ff1681565b6006546001600160a01b03163314610f325760405162461bcd60e51b8152600401610f2990614718565b60405180910390fd5b60335415610f745760405162461bcd60e51b815260206004820152600f60248201526e185b1c9958591e481cdd185c9d1959608a1b6044820152606401610f29565b436033556032805460ff19169055565b606060038054610f9390614873565b80601f0160208091040260200160405190810160405280929190818152602001828054610fbf90614873565b801561100c5780601f10610fe15761010080835404028352916020019161100c565b820191906000526020600020905b815481529060010190602001808311610fef57829003601f168201915b5050505050905090565b6000611023338484612332565b5060015b92915050565b6006546001600160a01b031633146110575760405162461bcd60e51b8152600401610f2990614718565b6001600160a01b03919091166000908152603560205260409020805460ff1916911515919091179055565b6006546001600160a01b031633146110ac5760405162461bcd60e51b8152600401610f2990614718565b6001600160a01b03919091166000908152602660205260409020805460ff1916911515919091179055565b60006110e4848484612457565b611136843361113185604051806060016040528060288152602001614939602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190612de2565b612332565b5060019392505050565b6006546001600160a01b0316331461116a5760405162461bcd60e51b8152600401610f2990614718565b602b805460ff1916911515919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091611023918590611131908661220b565b6006546001600160a01b031633146111dd5760405162461bcd60e51b8152600401610f2990614718565b602091909155602555565b6006546001600160a01b031633146112125760405162461bcd60e51b8152600401610f2990614718565b601980546001600160a01b039092166001600160a01b0319909216821790556000908152602c60205260409020805460ff19166001179055565b6006546001600160a01b031633146112765760405162461bcd60e51b8152600401610f2990614718565b6001600160a01b03811630141561129957602d805460ff191660011790556112a4565b602d805460ff191690555b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031633146112f05760405162461bcd60e51b8152600401610f2990614718565b6007546001600160a01b038281169116141561135a5760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610f29565b6007546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600780546001600160a01b0319166001600160a01b0383169081179091556040805163c45a015560e01b815290516000929163c45a0155916004808301926020929190829003018186803b1580156113ec57600080fd5b505afa158015611400573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611424919061437d565b6001600160a01b031663c9c6539630600760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561148157600080fd5b505afa158015611495573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b9919061437d565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561150157600080fd5b505af1158015611515573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611539919061437d565b600880546001600160a01b0319166001600160a01b0383161790559050611561816001612e1c565b50506008546001600160a01b03166000908152602660205260409020805460ff19166001179055565b6008546000906001600160a01b0383811691161480156115b457506008546001600160a01b031633145b80156115c2575060325460ff165b15611617576008546001600160a01b0316600090815260208190526040812054116116175760405162461bcd60e51b81526020600482015260056024820152642173796e6360d81b6044820152606401610f29565b6001600160a01b038216600090815260208190526040902054611027565b6006546001600160a01b0316331461165f5760405162461bcd60e51b8152600401610f2990614718565b6116696000612f05565b565b6006546001600160a01b031633146116955760405162461bcd60e51b8152600401610f2990614718565b6109c48111156116e35760405162461bcd60e51b8152602060048201526019602482015278546f74616c2073656c20666565206973206f7665722032352560381b6044820152606401610f29565b601555565b6006546001600160a01b031633146117125760405162461bcd60e51b8152600401610f2990614718565b601c548114156117795760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f742075706461746520676173466f7250726f63657373696e67207460448201526b6f2073616d652076616c756560a01b6064820152608401610f29565b601c5460405182907f40d7e40e79af4e8e5a9b3c57030d8ea93f13d669c06d448c4d631d4ae7d23db790600090a3601c55565b606060048054610f9390614873565b6006546001600160a01b031633146117e55760405162461bcd60e51b8152600401610f2990614718565b60005b82811015611856578160286000868685818110611807576118076148d9565b905060200201602081019061181c9190614360565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061184e816148a8565b9150506117e8565b50505050565b6006546001600160a01b031633146118865760405162461bcd60e51b8152600401610f2990614718565b6008546001600160a01b03838116911614156119185760405162461bcd60e51b815260206004820152604560248201527f5468652050616e63616b655377617020706169722063616e6e6f74206265207260448201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572606482015264506169727360d81b608482015260a401610f29565b6119228282612e1c565b5050565b6000611023338461113185604051806060016040528060258152602001614961602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190612de2565b6000611023338484612457565b6030818154811061199257600080fd5b6000918252602090912001546001600160a01b0316905081565b6006546001600160a01b031633146119d65760405162461bcd60e51b8152600401610f2990614718565b600955565b6006546001600160a01b03163314611a055760405162461bcd60e51b8152600401610f2990614718565b6109c4811115611a535760405162461bcd60e51b8152602060048201526019602482015278546f74616c2073656c20666565206973206f7665722032352560381b6044820152606401610f29565b601655565b6006546001600160a01b03163314611a825760405162461bcd60e51b8152600401610f2990614718565b6001600160a01b0382166000908152602c602052604090205460ff16151581151514611922576001600160a01b0382166000818152602c6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6006546001600160a01b03163314611b315760405162461bcd60e51b8152600401610f2990614718565b60005b82811015611ba25781602c6000868685818110611b5357611b536148d9565b9050602002016020810190611b689190614360565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611b9a816148a8565b915050611b34565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b35838383604051611bd693929190614627565b60405180910390a1505050565b6006546001600160a01b03163314611c0d5760405162461bcd60e51b8152600401610f2990614718565b601d805460ff1916911515919091179055565b6006546001600160a01b03163314611c4a5760405162461bcd60e51b8152600401610f2990614718565b6064811115611c925760405162461bcd60e51b815260206004820152601460248201527306e657756616c7565206d757374203c3d203130360641b6044820152606401610f29565b602255565b600080600080600860009054906101000a90046001600160a01b03169050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015611cf157600080fd5b505afa158015611d05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d29919061452e565b506018546001600160701b039283169450911691506001600160a01b031630811015611d5a57829650819550611d61565b8196508295505b6008546040516370a0823160e01b81526001600160a01b039182166004820152908216906370a082319060240160206040518083038186803b158015611da657600080fd5b505afa158015611dba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dde919061458c565b945050505050909192565b6006546001600160a01b03163314611e135760405162461bcd60e51b8152600401610f2990614718565b6000611e1e3061158a565b905060008111611e655760405162461bcd60e51b8152602060048201526012602482015271746f6b656e2062616c616e6365207a65726f60701b6044820152606401610f29565b6008805460ff60a01b1916600160a01b17905560145415611e8b57611e8b601454612f57565b60125415611e9e57611e9e601254613178565b60135415611eb157611eb160135461330d565b506008805460ff60a01b19169055565b6006546001600160a01b03163314611eeb5760405162461bcd60e51b8152600401610f2990614718565b612710611f0482611efe8581888a61220b565b9061220b565b1115611f525760405162461bcd60e51b815260206004820152601a60248201527f546f74616c2062757920666565206973206f76657220313030250000000000006044820152606401610f29565b600a92909255600c92909255600e91909155601055565b6006546001600160a01b03163314611f935760405162461bcd60e51b8152600401610f2990614718565b6003811115611fd95760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b6044820152606401610f29565b602355565b6006546001600160a01b031633146120085760405162461bcd60e51b8152600401610f2990614718565b6032805460ff1916911515919091179055565b6006546001600160a01b031633146120455760405162461bcd60e51b8152600401610f2990614718565b61271061205882611efe8581888a61220b565b11156120a65760405162461bcd60e51b815260206004820152601a60248201527f546f74616c2073656c20666565206973206f76657220313030250000000000006044820152606401610f29565b600b92909255600d92909255600f91909155601155565b6006546001600160a01b031633146120e75760405162461bcd60e51b8152600401610f2990614718565b602955565b6006546001600160a01b031633146121165760405162461bcd60e51b8152600401610f2990614718565b602a55565b6006546001600160a01b031633146121455760405162461bcd60e51b8152600401610f2990614718565b6001600160a01b0381166121aa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610f29565b6121b381612f05565b50565b6006546001600160a01b031633146121e05760405162461bcd60e51b8152600401610f2990614718565b6001600160a01b03919091166000908152602760205260409020805460ff1916911515919091179055565b6000806122188385614803565b90508381101561226a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610f29565b9392505050565b60008261228057506000611027565b600061228c838561483d565b905082612299858361481b565b1461226a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610f29565b600061226a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061336b565b6001600160a01b0383166123945760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610f29565b6001600160a01b0382166123f55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610f29565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661247d5760405162461bcd60e51b8152600401610f299061474d565b6001600160a01b0382166124a35760405162461bcd60e51b8152600401610f29906146d5565b6001600160a01b03831660009081526028602052604090205460ff16156124f15760405162461bcd60e51b8152602060048201526002602482015261109360f21b6044820152606401610f29565b806125075761250283836000613399565b505050565b6001600160a01b0383166000908152602e602052604090205460ff168061254657506001600160a01b0382166000908152602e602052604090205460ff165b156125b3576001600160a01b0383166000908152602c602052604090205460ff1615801561258d57506001600160a01b0382166000908152602c602052604090205460ff16155b156125b357603254610100900460ff1680156125a95750603354155b156125b357600080fd5b6001600160a01b0382166000908152602e602052604090205460ff1680156125ed57506008546125eb906001600160a01b031661158a565b155b156125f757436021555b6001600160a01b0383166000908152602c602052604090205460ff1615801561263957506001600160a01b0382166000908152602c602052604090205460ff16155b15612691576001600160a01b0383166000908152602e602052604090205460ff16801561267457506022546021546126719190614803565b43105b1561269157601a546125029084906001600160a01b031683613399565b6001600160a01b0383166000908152602c6020526040812054819060ff161580156126d557506001600160a01b0384166000908152602c602052604090205460ff16155b15612758576001600160a01b0384166000908152602e602052604090205460ff16801561271157503360009081526035602052604090205460ff165b80156127255750326001600160a01b038616145b15612758576000612735846134a2565b905060008111801561274c575063ffffffff863b16155b1561275657600191505b505b6001600160a01b0385166000908152602e602052604090205460ff16156127935760006127848461350d565b9050801561279157600192505b505b6001600160a01b03851660009081526027602052604090205460ff161580156127d557506001600160a01b03841660009081526027602052604090205460ff16155b1561283d5760295483111561283d5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610f29565b60006128483061158a565b600954909150811080159081906128695750600854600160a01b900460ff16155b801561288e57506001600160a01b0387166000908152602e602052604090205460ff16155b80156128a857506006546001600160a01b03888116911614155b80156128c257506006546001600160a01b03878116911614155b80156128d05750601d5460ff165b80156128da575082155b15612939576008805460ff60a01b1916600160a01b1790556014541561290557612905601454612f57565b6012541561291857612918601254613178565b6013541561292b5761292b60135461330d565b6008805460ff60a01b191690555b6008546001600160a01b0388166000908152602c602052604090205460ff600160a01b90920482161591168061298757506001600160a01b0387166000908152602c602052604090205460ff165b15612990575060005b8015612cf157600080600080600088156129e8576129c56127106129bf6015548e61227190919063ffffffff16565b906122f0565b925082601360008282546129d99190614803565b92505081905550829450612bc9565b8915612a09576129c56127106129bf6016548e61227190919063ffffffff16565b6001600160a01b038d166000908152602e602052604090205460ff1615612aeb57612a456127106129bf600c548e61227190919063ffffffff16565b93508360126000828254612a599190614803565b9091555050600a54612a7490612710906129bf908e90612271565b92508260136000828254612a889190614803565b9091555050600e54612aa390612710906129bf908e90612271565b91508160146000828254612ab79190614803565b9091555050601054612ad290612710906129bf908e90612271565b9050612ae481611efe8481888861220b565b9450612bc9565b6001600160a01b038c166000908152602e602052604090205460ff1615612bc957612b276127106129bf600d548e61227190919063ffffffff16565b93508360126000828254612b3b9190614803565b9091555050600b54612b5690612710906129bf908e90612271565b92508260136000828254612b6a9190614803565b9091555050600f54612b8590612710906129bf908e90612271565b91508160146000828254612b999190614803565b9091555050601154612bb490612710906129bf908e90612271565b9050612bc681611efe8481888861220b565b94505b6001600160a01b038d166000908152602e602052604090205460ff1680612c0857506001600160a01b038c166000908152602e602052604090205460ff165b8015612c12575088155b8015612c1c575089155b15612ca75760235415612ca7576000805b602354811015612c8a5760408051602081018390529081018e90524260608201526080016040516020818303038152906040528051906020012060001c9150612c788f836001613399565b80612c82816148a8565b915050612c2d565b50602354612c9990600161483d565b612ca3908d61485c565b9b50505b612cb18b866135eb565b9a508015612cd157601754612cd1908e906001600160a01b031683613399565b8415612ceb57612ceb8d30612ce688856135eb565b613399565b50505050505b602b5460ff168015612d1c57506001600160a01b03871660009081526026602052604090205460ff16155b15612d3c57602a54612d3187611efe8a61158a565b1115612d3c57600080fd5b612d47888888613399565b6001600160a01b0388163014801590612d7857506001600160a01b0387166000908152602e602052604090205460ff165b15612d8657612d868861362d565b600854600160a01b900460ff16158015612da957506001600160a01b0388163014155b8015612dc35750602554601f54612dc09190614803565b43115b15612dd857612dd3601c546136dc565b43601f555b5050505050505050565b60008184841115612e065760405162461bcd60e51b8152600401610f299190614680565b506000612e13848661485c565b95945050505050565b6001600160a01b0382166000908152602e602052604090205460ff1615158115151415612eb15760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401610f29565b6001600160a01b0382166000818152602e6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612f8c57612f8c6148d9565b6001600160a01b039283166020918202929092010152601854825191169082906001908110612fbd57612fbd6148d9565b6001600160a01b039283166020918202929092010152600754612fe39130911684612332565b600760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561303157600080fd5b505afa158015613045573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613069919061437d565b6018546001600160a01b03908116911614156130f35760075460195460405163791ac94760e01b81526001600160a01b039283169263791ac947926130bc92879260009288929116904290600401614792565b600060405180830381600087803b1580156130d657600080fd5b505af11580156130ea573d6000803e3d6000fd5b50505050613163565b600754601954604051635c11d79560e01b81526001600160a01b0392831692635c11d7959261313092879260009288929116904290600401614792565b600060405180830381600087803b15801561314a57600080fd5b505af115801561315e573d6000803e3d6000fd5b505050505b81601454613171919061485c565b6014555050565b60006131858260026122f0565b9050600061319383836135eb565b6018546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a082319060240160206040518083038186803b1580156131dc57600080fd5b505afa1580156131f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613214919061458c565b90506132208330613a86565b6018546040516370a0823160e01b81523060048201526000916132a89184916001600160a01b0316906370a082319060240160206040518083038186803b15801561326a57600080fd5b505afa15801561327e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a2919061458c565b906135eb565b90506132b48382613cc8565b846012546132c2919061485c565b60125560408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15050505050565b602d5460ff161561332c5780601354613326919061485c565b60135550565b601b546018546001600160a01b03908116911614156133545761334f8130613a86565b61335d565b61335d81613e46565b80601354613326919061485c565b6000818361338c5760405162461bcd60e51b8152600401610f299190614680565b506000612e13848661481b565b6001600160a01b0383166133bf5760405162461bcd60e51b8152600401610f299061474d565b6001600160a01b0382166133e55760405162461bcd60e51b8152600401610f29906146d5565b61342281604051806060016040528060268152602001614913602691396001600160a01b0386166000908152602081905260409020549190612de2565b6001600160a01b038085166000908152602081905260408082209390935590841681522054613451908261220b565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161244a565b6000806000806134b0611c97565b925092509250600080841180156134c75750600083115b156134e457826134d7858861483d565b6134e1919061481b565b90505b6134ee8185614803565b82106135045761350082878686613f9a565b5094505b50505050919050565b600080600061351a611c97565b92505091508181116135e457600854849061353d906001600160a01b031661158a565b613547919061485c565b600860009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561359557600080fd5b505afa1580156135a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135cd919061458c565b6135d7908661483d565b6135e1919061481b565b92505b5050919050565b600061226a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612de2565b803b8015613639575050565b6001600160a01b0382166000908152602f602052604090205460ff1661192257603080546001600160a01b0384166000818152603160205260408120839055600183018455929092527f6ff97a59c90d62cc7236ba3a37cd85351bf564556780cf8c1157a220f31f0cbb0180546001600160a01b03191690911790556001600160a01b0382166000908152602f60205260409020805460ff191660011790555050565b601b546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561372057600080fd5b505afa158015613734573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613758919061458c565b602d5490915060ff161561378a576137876014546132a26013546132a2601254866135eb90919063ffffffff16565b90505b602054819081101561379b57505050565b603054806137a95750505050565b6000805a905060005b86831080156137c057508381105b15613a7d5783601e54106137d4576000601e555b6000613916600860009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561382757600080fd5b505afa15801561383b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061385f919061458c565b600854601e54603080546129bf936001600160a01b0316926370a082319291811061388c5761388c6148d9565b60009182526020909120015460405160e083901b6001600160e01b03191681526001600160a01b03909116600482015260240160206040518083038186803b1580156138d757600080fd5b505afa1580156138eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061390f919061458c565b8a90612271565b90508086101561392a575050505050505050565b8015613a3a57602d5460ff16156139745761396f306030601e5481548110613954576139546148d9565b6000918252602090912001546001600160a01b031683613399565b613a2d565b601b54601e54603080546001600160a01b039093169263a9059cbb9290811061399f5761399f6148d9565b60009182526020909120015460405160e083901b6001600160e01b03191681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b1580156139f357600080fd5b505af1158015613a07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a2b9190614511565b505b613a3786826135eb565b95505b613a4f613a485a85906135eb565b859061220b565b93505a601e80549194506000613a64836148a8565b91905055508180613a74906148a8565b925050506137b2565b50505050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613abb57613abb6148d9565b6001600160a01b039283166020918202929092010152601854825191169082906001908110613aec57613aec6148d9565b6001600160a01b039283166020918202929092010152600754613b129130911685612332565b600754602454604051635c11d79560e01b81526001600160a01b0392831692635c11d79592613b4f92889260009288929116904290600401614792565b600060405180830381600087803b158015613b6957600080fd5b505af1925050508015613b7a575060015b613ba8576040517ffa4626fc78df02cb8fdea85a8af60ad29e2c95f22e2a91c79d99631c288a8b6c90600090a15b601854602480546040516370a0823160e01b81526001600160a01b03918216600482015260009391909116916370a08231910160206040518083038186803b158015613bf357600080fd5b505afa158015613c07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2b919061458c565b601854602480546040516323b872dd60e01b81526001600160a01b03918216600482015287821692810192909252604482018490529293509116906323b872dd90606401602060405180830381600087803b158015613c8957600080fd5b505af1158015613c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cc19190614511565b5050505050565b600754613ce09030906001600160a01b031684612332565b60185460075460405163095ea7b360e01b81526001600160a01b0391821660048201526024810184905291169063095ea7b390604401602060405180830381600087803b158015613d3057600080fd5b505af1158015613d44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d689190614511565b5060075460185460195460405162e8e33760e81b81523060048201526001600160a01b039283166024820152604481018690526064810185905260006084820181905260a482015290821660c48201524260e482015291169063e8e337009061010401606060405180830381600087803b158015613de557600080fd5b505af1925050508015613e15575060408051601f3d908101601f19168201909252613e12918101906145c7565b60015b613cc1576040517f0e944a8ae3ee1160b2678930fb103c5ceadb14ecbb4c16e311d7402f7011322c90600090a15050565b60408051600380825260808201909252600091602082016060803683370190505090503081600081518110613e7d57613e7d6148d9565b6001600160a01b039283166020918202929092010152601854825191169082906001908110613eae57613eae6148d9565b6001600160a01b039283166020918202929092010152601b54825191169082906002908110613edf57613edf6148d9565b6001600160a01b039283166020918202929092010152600754613f059130911684612332565b600754604051635c11d79560e01b81526001600160a01b0390911690635c11d79590613f3e908590600090869030904290600401614792565b600060405180830381600087803b158015613f5857600080fd5b505af1925050508015613f69575060015b611922576040517ffa4626fc78df02cb8fdea85a8af60ad29e2c95f22e2a91c79d99631c288a8b6c90600090a15050565b6000806000600860009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015613fed57600080fd5b505afa158015614001573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614025919061458c565b90506000600760009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561407757600080fd5b505afa15801561408b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140af919061437d565b6001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156140e757600080fd5b505afa1580156140fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061411f919061437d565b60085460408051637464fc3d60e01b815290519293506001600160a01b0380851615159360009390911691637464fc3d916004808301926020929190829003018186803b15801561416f57600080fd5b505afa158015614183573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141a7919061458c565b9050811561424c57801561424c5760006141c96141c4898b61483d565b6142c3565b905060006141d6836142c3565b9050808211156142495760006141ec828461485c565b6141f6908861483d565b61420190600861483d565b9050600061421083600861483d565b61421b85601161483d565b6142259190614803565b9050614231818361481b565b98508815614246576142438989614803565b97505b50505b50505b6000614258898c61485c565b905084614280576103e861426f6141c48c8461483d565b614279919061485c565b96506142b5565b6142b28961428e878461483d565b614298919061481b565b896142a3888e61483d565b6142ad919061481b565b614333565b96505b505050505094509492505050565b6000600382111561432457508060006142dd60028361481b565b6142e8906001614803565b90505b8181101561431e57905080600281614303818661481b565b61430d9190614803565b614317919061481b565b90506142eb565b50919050565b811561432e575060015b919050565b6000818310614342578161226a565b5090919050565b80516001600160701b038116811461432e57600080fd5b60006020828403121561437257600080fd5b813561226a816148ef565b60006020828403121561438f57600080fd5b815161226a816148ef565b600080604083850312156143ad57600080fd5b82356143b8816148ef565b915060208301356143c8816148ef565b809150509250929050565b6000806000606084860312156143e857600080fd5b83356143f3816148ef565b92506020840135614403816148ef565b929592945050506040919091013590565b6000806040838503121561442757600080fd5b8235614432816148ef565b915060208301356143c881614904565b6000806040838503121561445557600080fd5b8235614460816148ef565b946020939093013593505050565b60008060006040848603121561448357600080fd5b833567ffffffffffffffff8082111561449b57600080fd5b818601915086601f8301126144af57600080fd5b8135818111156144be57600080fd5b8760208260051b85010111156144d357600080fd5b602092830195509350508401356144e981614904565b809150509250925092565b60006020828403121561450657600080fd5b813561226a81614904565b60006020828403121561452357600080fd5b815161226a81614904565b60008060006060848603121561454357600080fd5b61454c84614349565b925061455a60208501614349565b9150604084015163ffffffff811681146144e957600080fd5b60006020828403121561458557600080fd5b5035919050565b60006020828403121561459e57600080fd5b5051919050565b600080604083850312156145b857600080fd5b50508035926020909101359150565b6000806000606084860312156145dc57600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561460b57600080fd5b5050823594602084013594506040840135936060013592509050565b6040808252810183905260008460608301825b8681101561466a57823561464d816148ef565b6001600160a01b031682526020928301929091019060010161463a565b5080925050508215156020830152949350505050565b600060208083528351808285015260005b818110156146ad57858101830151858201604001528201614691565b818111156146bf576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156147e25784516001600160a01b0316835293830193918301916001016147bd565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115614816576148166148c3565b500190565b60008261483857634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615614857576148576148c3565b500290565b60008282101561486e5761486e6148c3565b500390565b600181811c9082168061488757607f821691505b6020821081141561431e57634e487b7160e01b600052602260045260246000fd5b60006000198214156148bc576148bc6148c3565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146121b357600080fd5b80151581146121b357600080fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203d1cbb42d406e03d54eae458359c5d0cd363b08cb8d6f3f77efa97ad4642130f64736f6c63430008070033
Deployed Bytecode Sourcemap
15975:28625:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28361:172;;;;;;;;;;;;;:::i;:::-;;19369:44;;;;;;;;;;-1:-1:-1;19369:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8792:14:1;;8785:22;8767:41;;8755:2;8740:18;19369:44:0;;;;;;;;16206:33;;;;;;;;;;;;;;;;;;;18418:25:1;;;18406:2;18391:18;16206:33:0;18272:177:1;17104:30:0;;;;;;;;;;;;;;;;5393:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;16246:34::-;;;;;;;;;;;;;;;;7569:169;;;;;;;;;;-1:-1:-1;7569:169:0;;;;;:::i;:::-;;:::i;16050:41::-;;;;;;;;;;-1:-1:-1;16050:41:0;;;;-1:-1:-1;;;;;16050:41:0;;;;;;-1:-1:-1;;;;;6051:32:1;;;6033:51;;6021:2;6006:18;16050:41:0;5887:203:1;6522:108:0;;;;;;;;;;-1:-1:-1;6610:12:0;;6522:108;;17435:46;;;;;;;;;;-1:-1:-1;17435:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19420:115;;;;;;;;;;-1:-1:-1;19420:115:0;;;;;:::i;:::-;;:::i;25847:135::-;;;;;;;;;;-1:-1:-1;25847:135:0;;;;;:::i;:::-;;:::i;8220:355::-;;;;;;;;;;-1:-1:-1;8220:355:0;;;;;:::i;:::-;;:::i;16475:26::-;;;;;;;;;;;;;;;;23133:113;;;;;;;;;;-1:-1:-1;23133:113:0;;;;;:::i;:::-;;:::i;6355:102::-;;;;;;;;;;-1:-1:-1;6440:9:0;;6355:102;;18151:27;;;;;;;;;;-1:-1:-1;18151:27:0;;;;;;;;16550:36;;;;;;;;;;;;;;;;8984:218;;;;;;;;;;-1:-1:-1;8984:218:0;;;;;:::i;:::-;;:::i;16635:30::-;;;;;;;;;;;;;;;;17141:20;;;;;;;;;;;;;;;;27951:175;;;;;;;;;;-1:-1:-1;27951:175:0;;;;;:::i;:::-;;:::i;16826:38::-;;;;;;;;;;-1:-1:-1;16826:38:0;;;;-1:-1:-1;;;;;16826:38:0;;;17168:23;;;;;;;;;;;;;;;;17065:32;;;;;;;;;;;;;;;;16991:40;;;;;;;;;;-1:-1:-1;16991:40:0;;;;;;;;25112:126;;;;;;;;;;-1:-1:-1;25112:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;25202:28:0;25178:4;25202:28;;;:19;:28;;;;;;;;;25112:126;18255:30;;;;;;;;;;;;;;;;18218;;;;;;;;;;;;;;;;1090:90;;;;;;;;;;-1:-1:-1;1157:15:0;1090:90;;24059:183;;;;;;;;;;-1:-1:-1;24059:183:0;;;;;:::i;:::-;;:::i;26245:230::-;;;;;;;;;;-1:-1:-1;26245:230:0;;;;;:::i;:::-;;:::i;17272:42::-;;;;;;;;;;;;;;;;22521:606;;;;;;;;;;-1:-1:-1;22521:606:0;;;;;:::i;:::-;;:::i;28634:277::-;;;;;;;;;;-1:-1:-1;28634:277:0;;;;;:::i;:::-;;:::i;770:103::-;;;;;;;;;;;;;:::i;27609:160::-;;;;;;;;;;-1:-1:-1;27609:160:0;;;;;:::i;:::-;;:::i;16366:30::-;;;;;;;;;;;;;;;;17488:27;;;;;;;;;;;;;;;;17522:25;;;;;;;;;;;;;;;;16716:70;;;;;;;;;;-1:-1:-1;16716:70:0;;;;-1:-1:-1;;;;;16716:70:0;;;24826:276;;;;;;;;;;-1:-1:-1;24826:276:0;;;;;:::i;:::-;;:::i;17766:24::-;;;;;;;;;;-1:-1:-1;17766:24:0;;;;;;;;17380:48;;;;;;;;;;-1:-1:-1;17380:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;547:87;;;;;;;;;;-1:-1:-1;620:6:0;;-1:-1:-1;;;;;620:6:0;547:87;;16443:25;;;;;;;;;;;;;;;;16403:31;;;;;;;;;;;;;;;;5612:104;;;;;;;;;;;;;:::i;23518:222::-;;;;;;;;;;-1:-1:-1;23518:222:0;;;;;:::i;:::-;;:::i;24250:252::-;;;;;;;;;;-1:-1:-1;24250:252:0;;;;;:::i;:::-;;:::i;16793:26::-;;;;;;;;;;-1:-1:-1;16793:26:0;;;;-1:-1:-1;;;;;16793:26:0;;;16944:40;;;;;;;;;;;;;;;;9705:269;;;;;;;;;;-1:-1:-1;9705:269:0;;;;;:::i;:::-;;:::i;7033:175::-;;;;;;;;;;-1:-1:-1;7033:175:0;;;;;:::i;:::-;;:::i;18062:29::-;;;;;;;;;;-1:-1:-1;18062:29:0;;;;;:::i;:::-;;:::i;26127:110::-;;;;;;;;;;-1:-1:-1;26127:110:0;;;;;:::i;:::-;;:::i;17232:33::-;;;;;;;;;;-1:-1:-1;17232:33:0;;;;-1:-1:-1;;;;;17232:33:0;;;17946:57;;;;;;;;;;-1:-1:-1;17946:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;27777:166;;;;;;;;;;-1:-1:-1;27777:166:0;;;;;:::i;:::-;;:::i;16672:33::-;;;;;;;;;;;;;;;;23254:258;;;;;;;;;;-1:-1:-1;23254:258:0;;;;;:::i;:::-;;:::i;16908:29::-;;;;;;;;;;-1:-1:-1;16908:29:0;;;;-1:-1:-1;;;;;16908:29:0;;;23748:305;;;;;;;;;;-1:-1:-1;23748:305:0;;;;;:::i;:::-;;:::i;25722:117::-;;;;;;;;;;-1:-1:-1;25722:117:0;;;;;:::i;:::-;;:::i;27456:145::-;;;;;;;;;;-1:-1:-1;27456:145:0;;;;;:::i;:::-;;:::i;16098:27::-;;;;;;;;;;-1:-1:-1;16098:27:0;;;;-1:-1:-1;;;;;16098:27:0;;;17321:52;;;;;;;;;;-1:-1:-1;17321:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18185:26;;;;;;;;;;-1:-1:-1;18185:26:0;;;;;;;;;;;35152:549;;;;;;;;;;;;;:::i;:::-;;;;19641:25:1;;;19697:2;19682:18;;19675:34;;;;19725:18;;;19718:34;19629:2;19614:18;35152:549:0;19439:319:1;16593:33:0;;;;;;;;;;;;;;;;25246:468;;;;;;;;;;;;;:::i;7271:151::-;;;;;;;;;;-1:-1:-1;7271:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;7387:18:0;;;7360:7;7387:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7271:151;16164:33;;;;;;;;;;;;;;;;17198:27;;;;;;;;;;;;;;;;26483:395;;;;;;;;;;-1:-1:-1;26483:395:0;;;;;:::i;:::-;;:::i;27291:157::-;;;;;;;;;;-1:-1:-1;27291:157:0;;;;;:::i;:::-;;:::i;28541:83::-;;;;;;;;;;-1:-1:-1;28541:83:0;;;;;:::i;:::-;;:::i;26886:397::-;;;;;;;;;;-1:-1:-1;26886:397:0;;;;;:::i;:::-;;:::i;28134:111::-;;;;;;;;;;-1:-1:-1;28134:111:0;;;;;:::i;:::-;;:::i;16289:30::-;;;;;;;;;;;;;;;;28251:102;;;;;;;;;;-1:-1:-1;28251:102:0;;;;;:::i;:::-;;:::i;881:201::-;;;;;;;;;;-1:-1:-1;881:201:0;;;;;:::i;:::-;;:::i;16326:31::-;;;;;;;;;;;;;;;;16510:33;;;;;;;;;;;;;;;;25990:127;;;;;;;;;;-1:-1:-1;25990:127:0;;;;;:::i;:::-;;:::i;17554:35::-;;;;;;;;;;-1:-1:-1;17554:35:0;;;;;;;;28361:172;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;;;;;;;;;28417:15:::1;::::0;:20;28409:48:::1;;;::::0;-1:-1:-1;;;28409:48:0;;15167:2:1;28409:48:0::1;::::0;::::1;15149:21:1::0;15206:2;15186:18;;;15179:30;-1:-1:-1;;;15225:18:1;;;15218:45;15280:18;;28409:48:0::1;14965:339:1::0;28409:48:0::1;28486:12;28468:15;:30:::0;28509:8:::1;:16:::0;;-1:-1:-1;;28509:16:0::1;::::0;;28361:172::o;5393:100::-;5447:13;5480:5;5473:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5393:100;:::o;7569:169::-;7652:4;7669:39;173:10;7692:7;7701:6;7669:8;:39::i;:::-;-1:-1:-1;7726:4:0;7569:169;;;;;:::o;19420:115::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19500:18:0;;;::::1;;::::0;;;:12:::1;:18;::::0;;;;:27;;-1:-1:-1;;19500:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19420:115::o;25847:135::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25938:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;25938:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25847:135::o;8220:355::-;8360:4;8377:36;8387:6;8395:9;8406:6;8377:9;:36::i;:::-;8424:121;8433:6;173:10;8455:89;8493:6;8455:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8455:19:0;;;;;;:11;:19;;;;;;;;173:10;8455:33;;;;;;;;;;:37;:89::i;:::-;8424:8;:121::i;:::-;-1:-1:-1;8563:4:0;8220:355;;;;;:::o;23133:113::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;23211:16:::1;:27:::0;;-1:-1:-1;;23211:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23133:113::o;8984:218::-;173:10;9072:4;9121:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;9121:34:0;;;;;;;;;;9072:4;;9089:83;;9112:7;;9121:50;;9160:10;9121:38;:50::i;27951:175::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;28043:15:::1;:30:::0;;;;28084:22:::1;:34:::0;27951:175::o;24059:183::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;24140:23:::1;:32:::0;;-1:-1:-1;;;;;24140:32:0;;::::1;-1:-1:-1::0;;;;;;24140:32:0;;::::1;::::0;::::1;::::0;;:23:::1;24183:44:::0;;;:19:::1;:44;::::0;;;;:51;;-1:-1:-1;;24183:51:0::1;24140:32:::0;24183:51:::1;::::0;;24059:183::o;26245:230::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26315:22:0;::::1;26332:4;26315:22;26312:123;;;26353:12;:19:::0;;-1:-1:-1;;26353:19:0::1;26368:4;26353:19;::::0;;26312:123:::1;;;26403:12;:20:::0;;-1:-1:-1;;26403:20:0::1;::::0;;26312:123:::1;26445:14;:22:::0;;-1:-1:-1;;;;;;26445:22:0::1;-1:-1:-1::0;;;;;26445:22:0;;;::::1;::::0;;;::::1;::::0;;26245:230::o;22521:606::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;22630:15:::1;::::0;-1:-1:-1;;;;;22608:38:0;;::::1;22630:15:::0;::::1;22608:38;;22600:86;;;::::0;-1:-1:-1;;;22600:86:0;;13652:2:1;22600:86:0::1;::::0;::::1;13634:21:1::0;13691:2;13671:18;;;13664:30;13730:34;13710:18;;;13703:62;-1:-1:-1;;;13781:18:1;;;13774:33;13824:19;;22600:86:0::1;13450:399:1::0;22600:86:0::1;22744:15;::::0;22702:59:::1;::::0;-1:-1:-1;;;;;22744:15:0;;::::1;::::0;22702:59;::::1;::::0;::::1;::::0;22744:15:::1;::::0;22702:59:::1;22772:15;:48:::0;;-1:-1:-1;;;;;;22772:48:0::1;-1:-1:-1::0;;;;;22772:48:0;::::1;::::0;;::::1;::::0;;;22874:25:::1;::::0;;-1:-1:-1;;;22874:25:0;;;;-1:-1:-1;;22772:48:0;22874:23:::1;::::0;:25:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;22772:48;22874:25;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22856:65:0::1;;22930:4;22937:15;;;;;;;;;-1:-1:-1::0;;;;;22937:15:0::1;-1:-1:-1::0;;;;;22937:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22856:104;::::0;-1:-1:-1;;;;;;22856:104:0::1;::::0;;;;;;-1:-1:-1;;;;;6325:15:1;;;22856:104:0::1;::::0;::::1;6307:34:1::0;6377:15;;6357:18;;;6350:43;6242:18;;22856:104:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22971:11;:28:::0;;-1:-1:-1;;;;;;22971:28:0::1;-1:-1:-1::0;;;;;22971:28:0;::::1;;::::0;;;-1:-1:-1;23010:50:0::1;22971:28:::0;-1:-1:-1;23010:28:0::1;:50::i;:::-;-1:-1:-1::0;;23099:11:0::1;::::0;-1:-1:-1;;;;;23099:11:0::1;23071:41;::::0;;;:19:::1;:41;::::0;;;;:48;;-1:-1:-1;;23071:48:0::1;23115:4;23071:48;::::0;;22521:606::o;28634:277::-;28735:11;;28700:7;;-1:-1:-1;;;;;28724:22:0;;;28735:11;;28724:22;:51;;;;-1:-1:-1;28764:11:0;;-1:-1:-1;;;;;28764:11:0;28750:10;:25;28724:51;:63;;;;-1:-1:-1;28779:8:0;;;;28724:63;28720:142;;;28824:11;;-1:-1:-1;;;;;28824:11:0;28839:1;6794:18;;;;;;;;;;;28808:32;28800:50;;;;-1:-1:-1;;;28800:50:0;;18141:2:1;28800:50:0;;;18123:21:1;18180:1;18160:18;;;18153:29;-1:-1:-1;;;18198:18:1;;;18191:35;18243:18;;28800:50:0;17939:328:1;28800:50:0;-1:-1:-1;;;;;6794:18:0;;6767:7;6794:18;;;;;;;;;;;28879:24;6693:127;770:103;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;835:30:::1;862:1;835:18;:30::i;:::-;770:103::o:0;27609:160::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;27695:4:::1;27688:3;:11;;27680:49;;;::::0;-1:-1:-1;;;27680:49:0;;17787:2:1;27680:49:0::1;::::0;::::1;17769:21:1::0;17826:2;17806:18;;;17799:30;-1:-1:-1;;;17845:18:1;;;17838:55;17910:18;;27680:49:0::1;17585:349:1::0;27680:49:0::1;27740:15;:21:::0;27609:160::o;24826:276::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;24924:16:::1;;24912:8;:28;;24904:85;;;::::0;-1:-1:-1;;;24904:85:0;;12883:2:1;24904:85:0::1;::::0;::::1;12865:21:1::0;12922:2;12902:18;;;12895:30;12961:34;12941:18;;;12934:62;-1:-1:-1;;;13012:18:1;;;13005:42;13064:19;;24904:85:0::1;12681:408:1::0;24904:85:0::1;25039:16;::::0;25005:51:::1;::::0;25029:8;;25005:51:::1;::::0;;;::::1;25067:16;:27:::0;24826:276::o;5612:104::-;5668:13;5701:7;5694:14;;;;;:::i;23518:222::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;23627:9:::1;23622:111;23642:19:::0;;::::1;23622:111;;;23713:8;23683:14;:27;23698:8;;23707:1;23698:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23683:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;23683:27:0;:38;;-1:-1:-1;;23683:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23663:3;::::1;::::0;::::1;:::i;:::-;;;;23622:111;;;;23518:222:::0;;;:::o;24250:252::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;24357:11:::1;::::0;-1:-1:-1;;;;;24349:19:0;;::::1;24357:11:::0;::::1;24349:19;;24341:101;;;::::0;-1:-1:-1;;;24341:101:0;;10087:2:1;24341:101:0::1;::::0;::::1;10069:21:1::0;10126:2;10106:18;;;10099:30;10165:34;10145:18;;;10138:62;10236:34;10216:18;;;10209:62;-1:-1:-1;;;10287:19:1;;;10280:36;10333:19;;24341:101:0::1;9885:473:1::0;24341:101:0::1;24453:41;24482:4;24488:5;24453:28;:41::i;:::-;24250:252:::0;;:::o;9705:269::-;9798:4;9815:129;173:10;9838:7;9847:96;9886:15;9847:96;;;;;;;;;;;;;;;;;173:10;9847:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;9847:34:0;;;;;;;;;;;;:38;:96::i;7033:175::-;7119:4;7136:42;173:10;7160:9;7171:6;7136:9;:42::i;18062:29::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18062:29:0;;-1:-1:-1;18062:29:0;:::o;26127:110::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;26202:18:::1;:27:::0;26127:110::o;27777:166::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;27866:4:::1;27859:3;:11;;27851:49;;;::::0;-1:-1:-1;;;27851:49:0;;17787:2:1;27851:49:0::1;::::0;::::1;17769:21:1::0;17826:2;17806:18;;;17799:30;-1:-1:-1;;;17845:18:1;;;17838:55;17910:18;;27851:49:0::1;17585:349:1::0;27851:49:0::1;27911:18;:24:::0;27777:166::o;23254:258::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23343:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;::::1;;:40;;::::0;::::1;;;23339:166;;-1:-1:-1::0;;;;;23400:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;23400:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;23459:34;;8767:41:1;;;23459:34:0::1;::::0;8740:18:1;23459:34:0::1;;;;;;;23254:258:::0;;:::o;23748:305::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;23866:9:::1;23861:116;23881:19:::0;;::::1;23861:116;;;23957:8;23922:19;:32;23942:8;;23951:1;23942:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23922:32:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;23922:32:0;:43;;-1:-1:-1;;23922:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23902:3;::::1;::::0;::::1;:::i;:::-;;;;23861:116;;;;23994:51;24026:8;;24036;23994:51;;;;;;;;:::i;:::-;;;;;;;;23748:305:::0;;;:::o;25722:117::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;25799:21:::1;:32:::0;;-1:-1:-1;;25799:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25722:117::o;27456:145::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;27539:3:::1;27527:8;:15;;27519:48;;;::::0;-1:-1:-1;;;27519:48:0;;11299:2:1;27519:48:0::1;::::0;::::1;11281:21:1::0;11338:2;11318:18;;;11311:30;-1:-1:-1;;;11357:18:1;;;11350:50;11417:18;;27519:48:0::1;11097:344:1::0;27519:48:0::1;27578:4;:15:::0;27456:145::o;35152:549::-;35224:14;35240:13;35255:20;35293:23;35334:11;;;;;;;;;-1:-1:-1;;;;;35334:11:0;35293:53;;35358:7;35367:10;35383:8;-1:-1:-1;;;;;35383:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;35439:11:0;;-1:-1:-1;;;;;35357:48:0;;;;-1:-1:-1;35357:48:0;;;-1:-1:-1;;;;;;35439:11:0;35486:4;35465:26;;35461:164;;;35517:2;35508:11;;35542:2;35534:10;;35461:164;;;35586:2;35577:11;;35611:2;35603:10;;35461:164;35681:11;;35652:41;;-1:-1:-1;;;35652:41:0;;-1:-1:-1;;;;;35681:11:0;;;35652:41;;;6033:51:1;35652:28:0;;;;;;6006:18:1;;35652:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35637:56;;35282:419;;;;35152:549;;;:::o;25246:468::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;25296:28:::1;25327:24;25345:4;25327:9;:24::i;:::-;25296:55;;25393:1;25370:20;:24;25362:55;;;::::0;-1:-1:-1;;;25362:55:0;;14411:2:1;25362:55:0::1;::::0;::::1;14393:21:1::0;14450:2;14430:18;;;14423:30;-1:-1:-1;;;14469:18:1;;;14462:48;14527:18;;25362:55:0::1;14209:342:1::0;25362:55:0::1;25428:8;:15:::0;;-1:-1:-1;;;;25428:15:0::1;-1:-1:-1::0;;;25428:15:0::1;::::0;;:8:::1;25458:18:::0;:22;25454:68:::1;;25482:40;25503:18;;25482:20;:40::i;:::-;25536:18;::::0;:22;25533:61:::1;;25560:34;25575:18;;25560:14;:34::i;:::-;25609:21;::::0;:25;25605:74:::1;;25636:43;25657:21;;25636:20;:43::i;:::-;-1:-1:-1::0;25690:8:0::1;:16:::0;;-1:-1:-1;;;;25690:16:0::1;::::0;;25246:468::o;26483:395::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;26680:5:::1;26620:56;26668:7:::0;26620:43:::1;26650:12:::0;26620:43;:10;26635:9;26620:14:::1;:25::i;:::-;:29:::0;::::1;:43::i;:56::-;:65;;26612:104;;;::::0;-1:-1:-1;;;26612:104:0;;17432:2:1;26612:104:0::1;::::0;::::1;17414:21:1::0;17471:2;17451:18;;;17444:30;17510:28;17490:18;;;17483:56;17556:18;;26612:104:0::1;17230:350:1::0;26612:104:0::1;26727:18;:31:::0;;;;26769:15:::1;:27:::0;;;;26807:15:::1;:30:::0;;;;26848:10:::1;:20:::0;26483:395::o;27291:157::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;27382:1:::1;27370:8;:13;;27362:44;;;::::0;-1:-1:-1;;;27362:44:0;;16680:2:1;27362:44:0::1;::::0;::::1;16662:21:1::0;16719:2;16699:18;;;16692:30;-1:-1:-1;;;16738:18:1;;;16731:48;16796:18;;27362:44:0::1;16478:342:1::0;27362:44:0::1;27417:12;:23:::0;27291:157::o;28541:83::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;28604:8:::1;:12:::0;;-1:-1:-1;;28604:12:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28541:83::o;26886:397::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;27083:5:::1;27023:56;27071:7:::0;27023:43:::1;27053:12:::0;27023:43;:10;27038:9;27023:14:::1;:25::i;:56::-;:65;;27015:104;;;::::0;-1:-1:-1;;;27015:104:0;;14056:2:1;27015:104:0::1;::::0;::::1;14038:21:1::0;14095:2;14075:18;;;14068:30;14134:28;14114:18;;;14107:56;14180:18;;27015:104:0::1;13854:350:1::0;27015:104:0::1;27130:19;:32:::0;;;;27173:16:::1;:28:::0;;;;27212:16:::1;:31:::0;;;;27254:11:::1;:21:::0;26886:397::o;28134:111::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;28211:12:::1;:26:::0;28134:111::o;28251:102::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;28323:10:::1;:22:::0;28251:102::o;881:201::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;970:22:0;::::1;962:73;;;::::0;-1:-1:-1;;;962:73:0;;11648:2:1;962:73:0::1;::::0;::::1;11630:21:1::0;11687:2;11667:18;;;11660:30;11726:34;11706:18;;;11699:62;-1:-1:-1;;;11777:18:1;;;11770:36;11823:19;;962:73:0::1;11446:402:1::0;962:73:0::1;1046:28;1065:8;1046:18;:28::i;:::-;881:201:::0;:::o;25990:127::-;620:6;;-1:-1:-1;;;;;620:6:0;173:10;682:23;674:68;;;;-1:-1:-1;;;674:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26077:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;26077:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25990:127::o;2761:181::-;2819:7;;2851:5;2855:1;2851;:5;:::i;:::-;2839:17;;2880:1;2875;:6;;2867:46;;;;-1:-1:-1;;;2867:46:0;;13296:2:1;2867:46:0;;;13278:21:1;13335:2;13315:18;;;13308:30;13374:29;13354:18;;;13347:57;13421:18;;2867:46:0;13094:351:1;2867:46:0;2933:1;2761:181;-1:-1:-1;;;2761:181:0:o;3294:471::-;3352:7;3597:6;3593:47;;-1:-1:-1;3627:1:0;3620:8;;3593:47;3652:9;3664:5;3668:1;3664;:5;:::i;:::-;3652:17;-1:-1:-1;3697:1:0;3688:5;3692:1;3652:17;3688:5;:::i;:::-;:10;3680:56;;;;-1:-1:-1;;;3680:56:0;;15511:2:1;3680:56:0;;;15493:21:1;15550:2;15530:18;;;15523:30;15589:34;15569:18;;;15562:62;-1:-1:-1;;;15640:18:1;;;15633:31;15681:19;;3680:56:0;15309:397:1;3773:132:0;3831:7;3858:39;3862:1;3865;3858:39;;;;;;;;;;;;;;;;;:3;:39::i;12891:380::-;-1:-1:-1;;;;;13027:19:0;;13019:68;;;;-1:-1:-1;;;13019:68:0;;17027:2:1;13019:68:0;;;17009:21:1;17066:2;17046:18;;;17039:30;17105:34;17085:18;;;17078:62;-1:-1:-1;;;17156:18:1;;;17149:34;17200:19;;13019:68:0;16825:400:1;13019:68:0;-1:-1:-1;;;;;13106:21:0;;13098:68;;;;-1:-1:-1;;;13098:68:0;;12055:2:1;13098:68:0;;;12037:21:1;12094:2;12074:18;;;12067:30;12133:34;12113:18;;;12106:62;-1:-1:-1;;;12184:18:1;;;12177:32;12226:19;;13098:68:0;11853:398:1;13098:68:0;-1:-1:-1;;;;;13179:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13231:32;;18418:25:1;;;13231:32:0;;18391:18:1;13231:32:0;;;;;;;;12891:380;;;:::o;28921:5727::-;-1:-1:-1;;;;;29053:18:0;;29045:68;;;;-1:-1:-1;;;29045:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29132:16:0;;29124:64;;;;-1:-1:-1;;;29124:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29208:20:0;;;;;;:14;:20;;;;;;;;29207:21;29199:36;;;;-1:-1:-1;;;29199:36:0;;10969:2:1;29199:36:0;;;10951:21:1;11008:1;10988:18;;;10981:29;-1:-1:-1;;;11026:18:1;;;11019:32;11068:18;;29199:36:0;10767:325:1;29199:36:0;29250:11;29246:93;;29278:28;29294:4;29300:2;29304:1;29278:15;:28::i;:::-;28921:5727;;;:::o;29246:93::-;-1:-1:-1;;;;;29353:31:0;;;;;;:25;:31;;;;;;;;;:64;;-1:-1:-1;;;;;;29388:29:0;;;;;;:25;:29;;;;;;;;29353:64;29349:291;;;-1:-1:-1;;;;;29439:25:0;;;;;;:19;:25;;;;;;;;29438:26;:54;;;;-1:-1:-1;;;;;;29469:23:0;;;;;;:19;:23;;;;;;;;29468:24;29438:54;29434:195;;;29517:14;;;;;;;:38;;;;-1:-1:-1;29540:15:0;;29535:20;29517:38;29513:101;;;29580:14;;;;-1:-1:-1;;;;;29655:29:0;;;;;;:25;:29;;;;;;;;:69;;;;-1:-1:-1;29706:11:0;;29688:31;;-1:-1:-1;;;;;29706:11:0;29688:9;:31::i;:::-;:36;29655:69;29652:120;;;29748:12;29740:5;:20;29652:120;-1:-1:-1;;;;;29787:25:0;;;;;;:19;:25;;;;;;;;29786:26;:54;;;;-1:-1:-1;;;;;;29817:23:0;;;;;;:19;:23;;;;;;;;29816:24;29786:54;29782:238;;;-1:-1:-1;;;;;29859:31:0;;;;;;:25;:31;;;;;;;;:62;;;;;29917:4;;29909:5;;:12;;;;:::i;:::-;29894;:27;29859:62;29856:153;;;29970:14;;29948:45;;29964:4;;-1:-1:-1;;;;;29970:14:0;29986:6;29948:15;:45::i;29856:153::-;-1:-1:-1;;;;;30080:25:0;;30030:13;30080:25;;;:19;:25;;;;;;30030:13;;30080:25;;30079:26;:54;;;;-1:-1:-1;;;;;;30110:23:0;;;;;;:19;:23;;;;;;;;30109:24;30079:54;30075:371;;;-1:-1:-1;;;;;30154:29:0;;;;;;:25;:29;;;;;;;;:57;;;;-1:-1:-1;30200:10:0;30187:24;;;;:12;:24;;;;;;;;30154:57;:78;;;;-1:-1:-1;30215:9:0;-1:-1:-1;;;;;30215:17:0;;;30154:78;30150:285;;;30253:22;30278:23;30294:6;30278:15;:23::i;:::-;30253:48;;30341:1;30324:14;:18;:39;;;;-1:-1:-1;43935:8:0;43888:18;;43935:8;;30324:39;30320:100;;;30396:4;30388:12;;30320:100;30234:201;30150:285;-1:-1:-1;;;;;30470:31:0;;;;;;:25;:31;;;;;;;;30466:209;;;30518:25;30546:26;30565:6;30546:18;:26::i;:::-;30518:54;-1:-1:-1;30591:21:0;;30587:77;;30644:4;30633:15;;30587:77;30503:172;30466:209;-1:-1:-1;;;;;30693:21:0;;;;;;:15;:21;;;;;;;;30692:22;:46;;;;-1:-1:-1;;;;;;30719:19:0;;;;;;:15;:19;;;;;;;;30718:20;30692:46;30689:153;;;30773:12;;30763:6;:22;;30755:75;;;;-1:-1:-1;;;30755:75:0;;14758:2:1;30755:75:0;;;14740:21:1;14797:2;14777:18;;;14770:30;14836:34;14816:18;;;14809:62;-1:-1:-1;;;14887:18:1;;;14880:38;14935:19;;30755:75:0;14556:404:1;30755:75:0;30854:28;30885:24;30903:4;30885:9;:24::i;:::-;30961:18;;30854:55;;-1:-1:-1;30937:42:0;;;;;;;30996:33;;-1:-1:-1;31021:8:0;;-1:-1:-1;;;31021:8:0;;;;31020:9;30996:33;:82;;;;-1:-1:-1;;;;;;31047:31:0;;;;;;:25;:31;;;;;;;;31046:32;30996:82;:114;;;;-1:-1:-1;620:6:0;;-1:-1:-1;;;;;31095:15:0;;;620:6;;31095:15;;30996:114;:144;;;;-1:-1:-1;620:6:0;;-1:-1:-1;;;;;31127:13:0;;;620:6;;31127:13;;30996:144;:182;;;;-1:-1:-1;31157:21:0;;;;30996:182;:205;;;;;31196:5;31195:6;30996:205;30992:542;;;31228:8;:15;;-1:-1:-1;;;;31228:15:0;-1:-1:-1;;;31228:15:0;;;:8;31262:18;:22;31258:68;;31286:40;31307:18;;31286:20;:40::i;:::-;31344:18;;:22;31341:61;;31368:34;31383:18;;31368:14;:34::i;:::-;31421:21;;:25;31417:74;;31448:43;31469:21;;31448:20;:43::i;:::-;31506:8;:16;;-1:-1:-1;;;;31506:16:0;;;30992:542;31564:8;;-1:-1:-1;;;;;31674:25:0;;31548:12;31674:25;;;:19;:25;;;;;;31564:8;-1:-1:-1;;;31564:8:0;;;;;31563:9;;31674:25;;:52;;-1:-1:-1;;;;;;31703:23:0;;;;;;:19;:23;;;;;;;;31674:52;31670:100;;;-1:-1:-1;31753:5:0;31670:100;31787:7;31784:2318;;;31811:12;31838;31878;31916;31956;31996:5;31993:1363;;;32028:38;32060:5;32028:27;32039:15;;32028:6;:10;;:27;;;;:::i;:::-;:31;;:38::i;:::-;32021:45;;32110:4;32085:21;;:29;;;;;;;:::i;:::-;;;;;;;;32140:4;32133:11;;31993:1363;;;32168:8;32165:1191;;;32203:41;32238:5;32203:30;32214:18;;32203:6;:10;;:30;;;;:::i;32165:1191::-;-1:-1:-1;;;;;32346:31:0;;;;;;:25;:31;;;;;;;;32343:1013;;;32404:38;32436:5;32404:27;32415:15;;32404:6;:10;;:27;;;;:::i;:38::-;32397:45;;32483:4;32461:18;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;32524:18:0;;32513:41;;32548:5;;32513:30;;:6;;:10;:30::i;:41::-;32506:48;;32598:4;32573:21;;:29;;;;;;;:::i;:::-;;;;-1:-1:-1;;32639:15:0;;32628:38;;32660:5;;32628:27;;:6;;:10;:27::i;:38::-;32621:45;;32707:4;32685:18;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;32748:10:0;;32737:33;;32764:5;;32737:22;;:6;;:10;:22::i;:33::-;32730:40;-1:-1:-1;32796:34:0;32730:40;32796:24;32815:4;32796:24;:4;32805;32796:8;:14::i;:34::-;32789:41;;32343:1013;;;-1:-1:-1;;;;;32854:29:0;;;;;;:25;:29;;;;;;;;32851:505;;;32910:39;32943:5;32910:28;32921:16;;32910:6;:10;;:28;;;;:::i;:39::-;32903:46;;32990:4;32968:18;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;33031:19:0;;33020:42;;33056:5;;33020:31;;:6;;:10;:31::i;:42::-;33013:49;;33106:4;33081:21;;:29;;;;;;;:::i;:::-;;;;-1:-1:-1;;33147:16:0;;33136:39;;33169:5;;33136:28;;:6;;:10;:28::i;:39::-;33129:46;;33216:4;33194:18;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;33257:11:0;;33246:34;;33274:5;;33246:23;;:6;;:10;:23::i;:34::-;33239:41;-1:-1:-1;33306:34:0;33239:41;33306:24;33325:4;33306:24;:4;33315;33306:8;:14::i;:34::-;33299:41;;32851:505;-1:-1:-1;;;;;33398:31:0;;;;;;:25;:31;;;;;;;;;:64;;-1:-1:-1;;;;;;33433:29:0;;;;;;:25;:29;;;;;;;;33398:64;33397:76;;;;;33468:5;33467:6;33397:76;:89;;;;;33478:8;33477:9;33397:89;33394:508;;;33510:12;;:16;33506:381;;33550:10;;33583:236;33607:12;;33603:1;:16;33583:236;;;33692:44;;;;;;5755:19:1;;;5790:12;;;5783:28;;;33720:15:0;5827:12:1;;;5820:28;5864:12;;33692:44:0;;;;;;;;;;;;33682:55;;;;;;33674:64;;33653:87;;33767:28;33783:4;33789:2;33793:1;33767:15;:28::i;:::-;33621:3;;;;:::i;:::-;;;;33583:236;;;-1:-1:-1;33851:12:0;;:16;;33866:1;33851:16;:::i;:::-;33841:26;;;;:::i;:::-;;;33527:360;33506:381;33927:16;:6;33938:4;33927:10;:16::i;:::-;33918:25;-1:-1:-1;33961:8:0;;33958:52;;33993:10;;33971:39;;33987:4;;-1:-1:-1;;;;;33993:10:0;34005:4;33971:15;:39::i;:::-;34028:8;;34025:65;;34038:52;34054:4;34068;34075:14;:4;34084;34075:8;:14::i;:::-;34038:15;:52::i;:::-;31796:2306;;;;;31784:2318;34117:16;;;;:44;;;;-1:-1:-1;;;;;;34138:23:0;;;;;;:19;:23;;;;;;;;34137:24;34117:44;34114:123;;;34214:10;;34185:25;34203:6;34185:13;34195:2;34185:9;:13::i;:25::-;:39;;34177:48;;;;;;34249:33;34265:4;34271:2;34275:6;34249:15;:33::i;:::-;-1:-1:-1;;;;;34299:21:0;;34315:4;34299:21;;;;:54;;-1:-1:-1;;;;;;34324:29:0;;;;;;:25;:29;;;;;;;;34299:54;34295:101;;;34370:14;34379:4;34370:8;:14::i;:::-;34413:8;;-1:-1:-1;;;34413:8:0;;;;34412:9;:43;;;;-1:-1:-1;;;;;;34434:21:0;;34450:4;34434:21;;34412:43;:113;;;;;34503:22;;34483:17;;:42;;;;:::i;:::-;34468:12;:57;34412:113;34408:233;;;34552:30;34565:16;;34552:12;:30::i;:::-;34617:12;34597:17;:32;34408:233;29034:5614;;;;;28921:5727;;;:::o;3094:192::-;3180:7;3216:12;3208:6;;;;3200:29;;;;-1:-1:-1;;;3200:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3240:9:0;3252:5;3256:1;3252;:5;:::i;:::-;3240:17;3094:192;-1:-1:-1;;;;;3094:192:0:o;24510:306::-;-1:-1:-1;;;;;24601:31:0;;;;;;:25;:31;;;;;;;;:40;;;;;;;24593:109;;;;-1:-1:-1;;;24593:109:0;;12458:2:1;24593:109:0;;;12440:21:1;12497:2;12477:18;;;12470:30;12536:34;12516:18;;;12509:62;12607:26;12587:18;;;12580:54;12651:19;;24593:109:0;12256:420:1;24593:109:0;-1:-1:-1;;;;;24713:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;24713:39:0;;;;;;;;;;24768:40;;24713:39;;:31;24768:40;;;24510:306;;:::o;1188:191::-;1281:6;;;-1:-1:-1;;;;;1298:17:0;;;-1:-1:-1;;;;;;1298:17:0;;;;;;;1331:40;;1281:6;;;1298:17;1281:6;;1331:40;;1262:16;;1331:40;1251:128;1188:191;:::o;37514:1061::-;37663:16;;;37677:1;37663:16;;;;;;;;37639:21;;37663:16;;;;;;;;;;-1:-1:-1;37663:16:0;37639:40;;37708:4;37690;37695:1;37690:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;37690:23:0;;;:7;;;;;;;;;:23;37734:11;;37724:7;;37734:11;;;37724:4;;37734:11;;37724:7;;;;;;:::i;:::-;-1:-1:-1;;;;;37724:21:0;;;:7;;;;;;;;;:21;37788:15;;37756:57;;37773:4;;37788:15;37806:6;37756:8;:57::i;:::-;37842:15;;;;;;;;;-1:-1:-1;;;;;37842:15:0;-1:-1:-1;;;;;37842:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37827:11;;-1:-1:-1;;;;;37827:11:0;;;:37;;;37824:685;;;37910:15;;38091:23;;37910:269;;-1:-1:-1;;;37910:269:0;;-1:-1:-1;;;;;37910:15:0;;;;:66;;:269;;37995:6;;37910:15;;38068:4;;38091:23;;;38149:15;;37910:269;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37824:685;;;38240:15;;38425:23;;38240:257;;-1:-1:-1;;;38240:257:0;;-1:-1:-1;;;;;38240:15:0;;;;:69;;:257;;38328:6;;38240:15;;38402:4;;38425:23;;;38467:15;;38240:257;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37824:685;38561:6;38540:18;;:27;;;;:::i;:::-;38519:18;:48;-1:-1:-1;;37514:1061:0:o;38583:779::-;38692:12;38707:13;:6;38718:1;38707:10;:13::i;:::-;38692:28;-1:-1:-1;38731:17:0;38751:16;:6;38692:28;38751:10;:16::i;:::-;38812:11;;38805:44;;-1:-1:-1;;;38805:44:0;;38843:4;38805:44;;;6033:51:1;38731:36:0;;-1:-1:-1;38780:22:0;;-1:-1:-1;;;;;38812:11:0;;;;38805:29;;6006:18:1;;38805:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38780:69;;38894:37;38912:4;38925;38894:17;:37::i;:::-;39090:11;;39083:44;;-1:-1:-1;;;39083:44:0;;39121:4;39083:44;;;6033:51:1;39062:18:0;;39083:64;;39132:14;;-1:-1:-1;;;;;39090:11:0;;39083:29;;6006:18:1;;39083:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48;;:64::i;:::-;39062:85;;39197:39;39214:9;39225:10;39197:16;:39::i;:::-;39289:6;39268:18;;:27;;;;:::i;:::-;39247:18;:48;39311:43;;;19641:25:1;;;19697:2;19682:18;;19675:34;;;19725:18;;;19718:34;;;39311:43:0;;19629:2:1;19614:18;39311:43:0;;;;;;;38631:731;;;;38583:779;:::o;41821:493::-;41963:12;;;;41960:114;;;42037:6;42013:21;;:30;;;;:::i;:::-;41989:21;:54;-1:-1:-1;41821:493:0:o;41960:114::-;42102:14;;42087:11;;-1:-1:-1;;;;;42087:11:0;;;42102:14;;42087:29;42084:158;;;42132:39;42150:6;42165:4;42132:17;:39::i;:::-;42084:158;;;42202:28;42223:6;42202:20;:28::i;:::-;42300:6;42276:21;;:30;;;;:::i;3913:278::-;3999:7;4034:12;4027:5;4019:28;;;;-1:-1:-1;;;4019:28:0;;;;;;;;:::i;:::-;-1:-1:-1;4058:9:0;4070:5;4074:1;4070;:5;:::i;10464:573::-;-1:-1:-1;;;;;10604:20:0;;10596:70;;;;-1:-1:-1;;;10596:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10685:23:0;;10677:71;;;;-1:-1:-1;;;10677:71:0;;;;;;;:::i;:::-;10841;10863:6;10841:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10841:17:0;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;10821:17:0;;;:9;:17;;;;;;;;;;;:91;;;;10946:20;;;;;;;:32;;10971:6;10946:24;:32::i;:::-;-1:-1:-1;;;;;10923:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;10994:35;18418:25:1;;;10923:20:0;;10994:35;;;;;;18391:18:1;10994:35:0;18272:177:1;34658:486:0;34738:17;34769:14;34785:13;34800:20;34824:14;:12;:14::i;:::-;34768:70;;;;;;34849:19;34892:1;34883:6;:10;:23;;;;;34905:1;34897:5;:9;34883:23;34879:95;;;34957:5;34938:15;34947:6;34938;:15;:::i;:::-;34937:25;;;;:::i;:::-;34923:39;;34879:95;35023:20;35032:11;35023:6;:20;:::i;:::-;35007:12;:36;35003:134;;35076:49;35089:12;35103:6;35111;35119:5;35076:12;:49::i;:::-;-1:-1:-1;35060:65:0;-1:-1:-1;35003:134:0;34757:387;;;;34658:486;;;:::o;35713:400::-;35796:17;35827:14;35845:20;35869:14;:12;:14::i;:::-;35826:57;;;;;35936:6;35920:12;:22;35916:190;;36071:11;;36086:6;;36061:22;;-1:-1:-1;;;;;36071:11:0;36061:9;:22::i;:::-;:31;;;;:::i;:::-;36013:11;;;;;;;;;-1:-1:-1;;;;;36013:11:0;-1:-1:-1;;;;;35998:39:0;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35989:50;;:6;:50;:::i;:::-;35988:105;;;;:::i;:::-;35959:134;;35916:190;35815:298;;35713:400;;;:::o;2950:136::-;3008:7;3035:43;3039:1;3042;3035:43;;;;;;;;;;;;;;;;;:3;:43::i;43960:347::-;44073:24;;44122:8;;44118:47;;44147:7;43960:347;:::o;44118:47::-;-1:-1:-1;;;;;44180:21:0;;;;;;:8;:21;;;;;;;;44175:125;;44414:12;:19;;-1:-1:-1;;;;;44380:31:0;;;;;;:18;:31;;;;;:53;;;44444:30;;;;;;;;;;;;;-1:-1:-1;;;;;;44444:30:0;;;;;;-1:-1:-1;;;;;44260:21:0;;;;;;:8;:21;;;;;:28;;-1:-1:-1;;44260:28:0;44284:4;44260:28;;;44007:300;43960:347;:::o;42322:1430::-;42399:14;;42392:47;;-1:-1:-1;;;42392:47:0;;42433:4;42392:47;;;6033:51:1;42376:13:0;;-1:-1:-1;;;;;42399:14:0;;42392:32;;6006:18:1;;42392:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;42454:12;;42376:63;;-1:-1:-1;42454:12:0;;42451:132;;;42490:80;42551:18;;42490:56;42524:21;;42490:29;42500:18;;42490:5;:9;;:29;;;;:::i;:80::-;42482:88;;42451:132;42638:15;;42610:5;;42629:24;;42626:61;;;42669:7;;42322:1430;:::o;42626:61::-;42724:12;:19;42758:21;42754:34;;42781:7;;;42322:1430;:::o;42754:34::-;42798:15;42828;42846:9;42828:27;;42866:18;42901:844;42918:3;42908:7;:13;:46;;;;;42938:16;42925:10;:29;42908:46;42901:844;;;42991:16;42975:12;;:32;42971:89;;43043:1;43028:12;:16;42971:89;43074:14;43091:107;43171:11;;;;;;;;;-1:-1:-1;;;;;43171:11:0;-1:-1:-1;;;;;43164:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43108:11;;43144:12;;43131;:26;;43091:68;;-1:-1:-1;;;;;43108:11:0;;43101:29;;43131:12;:26;;;;;;:::i;:::-;;;;;;;;;;;43101:57;;;;;;-1:-1:-1;;;;;;43101:57:0;;;-1:-1:-1;;;;;43131:26:0;;;43101:57;;;6033:51:1;6006:18;;43101:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43091:5;;:9;:68::i;:107::-;43074:124;;43226:6;43217;:15;43213:28;;;43234:7;;;;;;;42322:1430;:::o;43213:28::-;43258:10;;43255:329;;43291:12;;;;43288:235;;;43325:66;43349:4;43356:12;43369;;43356:26;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;43356:26:0;43384:6;43325:15;:66::i;:::-;43288:235;;;43443:14;;43481:12;;43468;:26;;-1:-1:-1;;;;;43443:14:0;;;;43436:31;;43481:12;43468:26;;;;;;:::i;:::-;;;;;;;;;;;43436:67;;;;;;-1:-1:-1;;;;;;43436:67:0;;;-1:-1:-1;;;;;43468:26:0;;;43436:67;;;7723:51:1;7790:18;;;7783:34;;;7696:18;;43436:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;43288:235;43550:18;:6;43561;43550:10;:18::i;:::-;43541:27;;43255:329;43608:35;43620:22;43632:9;43620:7;;:11;:22::i;:::-;43608:7;;:11;:35::i;:::-;43598:45;;43668:9;43692:12;:14;;43658:19;;-1:-1:-1;43692:12:0;:14;;;:::i;:::-;;;;;;43721:12;;;;;:::i;:::-;;;;42956:789;42901:844;;;42365:1387;;;;;;42322:1430;:::o;40139:885::-;40303:16;;;40317:1;40303:16;;;;;;;;40279:21;;40303:16;;;;;;;;;;-1:-1:-1;40303:16:0;40279:40;;40348:4;40330;40335:1;40330:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;40330:23:0;;;:7;;;;;;;;;:23;40374:11;;40364:7;;40374:11;;;40364:4;;40374:11;;40364:7;;;;;;:::i;:::-;-1:-1:-1;;;;;40364:21:0;;;:7;;;;;;;;;:21;40428:15;;40396:62;;40413:4;;40428:15;40446:11;40396:8;:62::i;:::-;40508:15;;40690:13;;40508:237;;-1:-1:-1;;;40508:237:0;;-1:-1:-1;;;;;40508:15:0;;;;:69;;:237;;40592:11;;40508:15;;40663:4;;40690:13;;;40719:15;;40508:237;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40495:361;;40782:62;;;;;;;40495:361;40890:11;;40921:13;;;40883:53;;-1:-1:-1;;;40883:53:0;;-1:-1:-1;;;;;40921:13:0;;;40883:53;;;6033:51:1;40866:14:0;;40890:11;;;;;40883:29;;6006:18:1;40883:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40954:11;;40988:13;;;40947:69;;-1:-1:-1;;;40947:69:0;;-1:-1:-1;;;;;40988:13:0;;;40947:69;;;6644:34:1;6714:15;;;6694:18;;;6687:43;;;;6746:18;;;6739:34;;;40866:70:0;;-1:-1:-1;40954:11:0;;;40947:32;;6579:18:1;;40947:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;40208:816;;40139:885;;:::o;39370:761::-;39555:15;;39523:62;;39540:4;;-1:-1:-1;;;;;39555:15:0;39573:11;39523:8;:62::i;:::-;39603:11;;39632:15;;39596:64;;-1:-1:-1;;;39596:64:0;;-1:-1:-1;;;;;39632:15:0;;;39596:64;;;7723:51:1;7790:18;;;7783:34;;;39603:11:0;;;39596:27;;7696:18:1;;39596:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;39718:15:0;;39797:11;;39980:23;;39718:334;;-1:-1:-1;;;39718:334:0;;39773:4;39718:334;;;7181:34:1;-1:-1:-1;;;;;39797:11:0;;;7231:18:1;;;7224:43;7283:18;;;7276:34;;;7326:18;;;7319:34;;;39718:15:0;7369:19:1;;;7362:35;;;7413:19;;;7406:35;39980:23:0;;;7457:19:1;;;7450:44;40022:15:0;7510:19:1;;;7503:35;39718:15:0;;;:28;;7115:19:1;;39718:334:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39718:334:0;;;;;;;;-1:-1:-1;;39718:334:0;;;;;;;;;;;;:::i;:::-;;;39701:423;;40091:21;;;;;;;24250:252;;:::o;41032:781::-;41197:16;;;41211:1;41197:16;;;;;;;;;41173:21;;41197:16;;;;;;;;;;-1:-1:-1;41197:16:0;41173:40;;41242:4;41224;41229:1;41224:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;41224:23:0;;;:7;;;;;;;;;:23;41268:11;;41258:7;;41268:11;;;41258:4;;41268:11;;41258:7;;;;;;:::i;:::-;-1:-1:-1;;;;;41258:21:0;;;:7;;;;;;;;;:21;41300:14;;41290:7;;41300:14;;;41290:4;;41295:1;;41290:7;;;;;;:::i;:::-;-1:-1:-1;;;;;41290:24:0;;;:7;;;;;;;;;:24;41357:15;;41325:62;;41342:4;;41357:15;41375:11;41325:8;:62::i;:::-;41441:15;;:252;;-1:-1:-1;;;41441:252:0;;-1:-1:-1;;;;;41441:15:0;;;;:69;;:252;;41529:11;;41441:15;;41608:4;;41639;;41663:15;;41441:252;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41424:380;;41730:62;;;;;;;24250:252;;:::o;36123:1379::-;36268:17;36287:22;36322:23;36363:11;;;;;;;;;-1:-1:-1;;;;;36363:11:0;-1:-1:-1;;;;;36348:39:0;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36322:67;;36400:13;36434:15;;;;;;;;;-1:-1:-1;;;;;36434:15:0;-1:-1:-1;;;;;36434:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;36416:50:0;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36554:11;;36539:35;;;-1:-1:-1;;;36539:35:0;;;;36400:68;;-1:-1:-1;;;;;;36492:19:0;;;;;;36479:10;;36554:11;;;;36539:33;;:35;;;;;;;;;;;;;;36554:11;36539:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36522:52;;36589:5;36585:590;;;36615:11;;36611:553;;36647:13;36663:18;36673:7;36678:2;36673;:7;:::i;:::-;36663:9;:18::i;:::-;36647:34;;36700:17;36720;36730:6;36720:9;:17::i;:::-;36700:37;;36768:9;36760:5;:17;36756:393;;;36802:17;36866;36874:9;36866:5;:17;:::i;:::-;36822:62;;:15;:62;:::i;:::-;:91;;36912:1;36822:91;:::i;:::-;36802:111;-1:-1:-1;36936:19:0;36972:13;:9;36984:1;36972:13;:::i;:::-;36958:10;:5;36966:2;36958:10;:::i;:::-;:28;;;;:::i;:::-;36936:50;-1:-1:-1;37026:23:0;36936:50;37026:9;:23;:::i;:::-;37009:40;-1:-1:-1;37076:18:0;;37072:57;;37096:33;37115:14;37096:33;;:::i;:::-;;;37072:57;36779:370;;36756:393;36628:536;;36611:553;37185:15;37203:13;37214:2;37203:8;:13;:::i;:::-;37185:31;-1:-1:-1;37231:20:0;37227:268;;37310:4;37280:27;37290:16;37300:6;37290:7;:16;:::i;37280:27::-;:34;;;;:::i;:::-;37268:46;;37227:268;;;37359:124;37416:2;37387:25;37397:15;37387:7;:25;:::i;:::-;37386:32;;;;:::i;:::-;37466:2;37438:24;37447:15;37438:6;:24;:::i;:::-;37437:31;;;;:::i;:::-;37359:8;:124::i;:::-;37347:136;;37227:268;36311:1191;;;;;36123:1379;;;;;;;:::o;2425:303::-;2470:6;2497:1;2493;:5;2489:232;;;-1:-1:-1;2519:1:0;2535:6;2544:5;2548:1;2519;2544:5;:::i;:::-;:9;;2552:1;2544:9;:::i;:::-;2535:18;;2568:92;2579:1;2575;:5;2568:92;;;2605:1;-1:-1:-1;2605:1:0;2643;2605;2630:5;2605:1;2630;:5;:::i;:::-;:9;;;;:::i;:::-;2629:15;;;;:::i;:::-;2625:19;;2568:92;;;2500:171;2425:303;;;:::o;2489:232::-;2681:6;;2677:44;;-1:-1:-1;2708:1:0;2677:44;2425:303;;;:::o;2321:96::-;2373:6;2400:1;2396;:5;:13;;2408:1;2396:13;;;-1:-1:-1;2404:1:0;;2392:17;-1:-1:-1;2321:96:0:o;14:188:1:-;93:13;;-1:-1:-1;;;;;135:42:1;;125:53;;115:81;;192:1;189;182:12;207:247;266:6;319:2;307:9;298:7;294:23;290:32;287:52;;;335:1;332;325:12;287:52;374:9;361:23;393:31;418:5;393:31;:::i;459:251::-;529:6;582:2;570:9;561:7;557:23;553:32;550:52;;;598:1;595;588:12;550:52;630:9;624:16;649:31;674:5;649:31;:::i;975:388::-;1043:6;1051;1104:2;1092:9;1083:7;1079:23;1075:32;1072:52;;;1120:1;1117;1110:12;1072:52;1159:9;1146:23;1178:31;1203:5;1178:31;:::i;:::-;1228:5;-1:-1:-1;1285:2:1;1270:18;;1257:32;1298:33;1257:32;1298:33;:::i;:::-;1350:7;1340:17;;;975:388;;;;;:::o;1368:456::-;1445:6;1453;1461;1514:2;1502:9;1493:7;1489:23;1485:32;1482:52;;;1530:1;1527;1520:12;1482:52;1569:9;1556:23;1588:31;1613:5;1588:31;:::i;:::-;1638:5;-1:-1:-1;1695:2:1;1680:18;;1667:32;1708:33;1667:32;1708:33;:::i;:::-;1368:456;;1760:7;;-1:-1:-1;;;1814:2:1;1799:18;;;;1786:32;;1368:456::o;1829:382::-;1894:6;1902;1955:2;1943:9;1934:7;1930:23;1926:32;1923:52;;;1971:1;1968;1961:12;1923:52;2010:9;1997:23;2029:31;2054:5;2029:31;:::i;:::-;2079:5;-1:-1:-1;2136:2:1;2121:18;;2108:32;2149:30;2108:32;2149:30;:::i;2216:315::-;2284:6;2292;2345:2;2333:9;2324:7;2320:23;2316:32;2313:52;;;2361:1;2358;2351:12;2313:52;2400:9;2387:23;2419:31;2444:5;2419:31;:::i;:::-;2469:5;2521:2;2506:18;;;;2493:32;;-1:-1:-1;;;2216:315:1:o;2536:750::-;2628:6;2636;2644;2697:2;2685:9;2676:7;2672:23;2668:32;2665:52;;;2713:1;2710;2703:12;2665:52;2753:9;2740:23;2782:18;2823:2;2815:6;2812:14;2809:34;;;2839:1;2836;2829:12;2809:34;2877:6;2866:9;2862:22;2852:32;;2922:7;2915:4;2911:2;2907:13;2903:27;2893:55;;2944:1;2941;2934:12;2893:55;2984:2;2971:16;3010:2;3002:6;2999:14;2996:34;;;3026:1;3023;3016:12;2996:34;3081:7;3074:4;3064:6;3061:1;3057:14;3053:2;3049:23;3045:34;3042:47;3039:67;;;3102:1;3099;3092:12;3039:67;3133:4;3125:13;;;;-1:-1:-1;3157:6:1;-1:-1:-1;;3198:20:1;;3185:34;3228:28;3185:34;3228:28;:::i;:::-;3275:5;3265:15;;;2536:750;;;;;:::o;3291:241::-;3347:6;3400:2;3388:9;3379:7;3375:23;3371:32;3368:52;;;3416:1;3413;3406:12;3368:52;3455:9;3442:23;3474:28;3496:5;3474:28;:::i;3537:245::-;3604:6;3657:2;3645:9;3636:7;3632:23;3628:32;3625:52;;;3673:1;3670;3663:12;3625:52;3705:9;3699:16;3724:28;3746:5;3724:28;:::i;3787:450::-;3874:6;3882;3890;3943:2;3931:9;3922:7;3918:23;3914:32;3911:52;;;3959:1;3956;3949:12;3911:52;3982:40;4012:9;3982:40;:::i;:::-;3972:50;;4041:49;4086:2;4075:9;4071:18;4041:49;:::i;:::-;4031:59;;4133:2;4122:9;4118:18;4112:25;4177:10;4170:5;4166:22;4159:5;4156:33;4146:61;;4203:1;4200;4193:12;4242:180;4301:6;4354:2;4342:9;4333:7;4329:23;4325:32;4322:52;;;4370:1;4367;4360:12;4322:52;-1:-1:-1;4393:23:1;;4242:180;-1:-1:-1;4242:180:1:o;4427:184::-;4497:6;4550:2;4538:9;4529:7;4525:23;4521:32;4518:52;;;4566:1;4563;4556:12;4518:52;-1:-1:-1;4589:16:1;;4427:184;-1:-1:-1;4427:184:1:o;4616:248::-;4684:6;4692;4745:2;4733:9;4724:7;4720:23;4716:32;4713:52;;;4761:1;4758;4751:12;4713:52;-1:-1:-1;;4784:23:1;;;4854:2;4839:18;;;4826:32;;-1:-1:-1;4616:248:1:o;4869:306::-;4957:6;4965;4973;5026:2;5014:9;5005:7;5001:23;4997:32;4994:52;;;5042:1;5039;5032:12;4994:52;5071:9;5065:16;5055:26;;5121:2;5110:9;5106:18;5100:25;5090:35;;5165:2;5154:9;5150:18;5144:25;5134:35;;4869:306;;;;;:::o;5180:385::-;5266:6;5274;5282;5290;5343:3;5331:9;5322:7;5318:23;5314:33;5311:53;;;5360:1;5357;5350:12;5311:53;-1:-1:-1;;5383:23:1;;;5453:2;5438:18;;5425:32;;-1:-1:-1;5504:2:1;5489:18;;5476:32;;5555:2;5540:18;5527:32;;-1:-1:-1;5180:385:1;-1:-1:-1;5180:385:1:o;7828:794::-;8050:2;8062:21;;;8035:18;;8118:22;;;8002:4;8197:6;8171:2;8156:18;;8002:4;8231:304;8245:6;8242:1;8239:13;8231:304;;;8320:6;8307:20;8340:31;8365:5;8340:31;:::i;:::-;-1:-1:-1;;;;;8396:31:1;8384:44;;8451:4;8510:15;;;;8475:12;;;;8424:1;8260:9;8231:304;;;8235:3;8552;8544:11;;;;8607:6;8600:14;8593:22;8586:4;8575:9;8571:20;8564:52;7828:794;;;;;;:::o;9283:597::-;9395:4;9424:2;9453;9442:9;9435:21;9485:6;9479:13;9528:6;9523:2;9512:9;9508:18;9501:34;9553:1;9563:140;9577:6;9574:1;9571:13;9563:140;;;9672:14;;;9668:23;;9662:30;9638:17;;;9657:2;9634:26;9627:66;9592:10;;9563:140;;;9721:6;9718:1;9715:13;9712:91;;;9791:1;9786:2;9777:6;9766:9;9762:22;9758:31;9751:42;9712:91;-1:-1:-1;9864:2:1;9843:15;-1:-1:-1;;9839:29:1;9824:45;;;;9871:2;9820:54;;9283:597;-1:-1:-1;;;9283:597:1:o;10363:399::-;10565:2;10547:21;;;10604:2;10584:18;;;10577:30;10643:34;10638:2;10623:18;;10616:62;-1:-1:-1;;;10709:2:1;10694:18;;10687:33;10752:3;10737:19;;10363:399::o;15711:356::-;15913:2;15895:21;;;15932:18;;;15925:30;15991:34;15986:2;15971:18;;15964:62;16058:2;16043:18;;15711:356::o;16072:401::-;16274:2;16256:21;;;16313:2;16293:18;;;16286:30;16352:34;16347:2;16332:18;;16325:62;-1:-1:-1;;;16418:2:1;16403:18;;16396:35;16463:3;16448:19;;16072:401::o;18454:980::-;18716:4;18764:3;18753:9;18749:19;18795:6;18784:9;18777:25;18821:2;18859:6;18854:2;18843:9;18839:18;18832:34;18902:3;18897:2;18886:9;18882:18;18875:31;18926:6;18961;18955:13;18992:6;18984;18977:22;19030:3;19019:9;19015:19;19008:26;;19069:2;19061:6;19057:15;19043:29;;19090:1;19100:195;19114:6;19111:1;19108:13;19100:195;;;19179:13;;-1:-1:-1;;;;;19175:39:1;19163:52;;19270:15;;;;19235:12;;;;19211:1;19129:9;19100:195;;;-1:-1:-1;;;;;;;19351:32:1;;;;19346:2;19331:18;;19324:60;-1:-1:-1;;;19415:3:1;19400:19;19393:35;19312:3;18454:980;-1:-1:-1;;;18454:980:1:o;19763:128::-;19803:3;19834:1;19830:6;19827:1;19824:13;19821:39;;;19840:18;;:::i;:::-;-1:-1:-1;19876:9:1;;19763:128::o;19896:217::-;19936:1;19962;19952:132;;20006:10;20001:3;19997:20;19994:1;19987:31;20041:4;20038:1;20031:15;20069:4;20066:1;20059:15;19952:132;-1:-1:-1;20098:9:1;;19896:217::o;20118:168::-;20158:7;20224:1;20220;20216:6;20212:14;20209:1;20206:21;20201:1;20194:9;20187:17;20183:45;20180:71;;;20231:18;;:::i;:::-;-1:-1:-1;20271:9:1;;20118:168::o;20291:125::-;20331:4;20359:1;20356;20353:8;20350:34;;;20364:18;;:::i;:::-;-1:-1:-1;20401:9:1;;20291:125::o;20421:380::-;20500:1;20496:12;;;;20543;;;20564:61;;20618:4;20610:6;20606:17;20596:27;;20564:61;20671:2;20663:6;20660:14;20640:18;20637:38;20634:161;;;20717:10;20712:3;20708:20;20705:1;20698:31;20752:4;20749:1;20742:15;20780:4;20777:1;20770:15;20806:135;20845:3;-1:-1:-1;;20866:17:1;;20863:43;;;20886:18;;:::i;:::-;-1:-1:-1;20933:1:1;20922:13;;20806:135::o;20946:127::-;21007:10;21002:3;20998:20;20995:1;20988:31;21038:4;21035:1;21028:15;21062:4;21059:1;21052:15;21078:127;21139:10;21134:3;21130:20;21127:1;21120:31;21170:4;21167:1;21160:15;21194:4;21191:1;21184:15;21342:131;-1:-1:-1;;;;;21417:31:1;;21407:42;;21397:70;;21463:1;21460;21453:12;21478:118;21564:5;21557:13;21550:21;21543:5;21540:32;21530:60;;21586:1;21583;21576:12
Swarm Source
ipfs://cf154e06c117955462d7e61985364d44f16aaea8da64b2b61debafe8b92d0487
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.