BEP-20
Source Code
Overview
Max Total Supply
1,000,000,000,000铁哥们
Holders
197,490
Market
Price
$0.00 @ 0.000000 BNB
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
692,690,449,440.29069804703265932 铁哥们Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xf6CD04d4...9F847A444 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
FatTokenV5
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/**
*Submitted for verification at BscScan.com on 2025-12-03
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
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;
}
}
}
interface IERC20 {
function decimals() external view returns (uint256);
function symbol() external view returns (string memory);
function name() external view returns (string memory);
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(
address recipient,
uint256 amount
) external returns (bool);
function allowance(
address owner,
address spender
) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
}
interface ISwapRouter {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
function addLiquidity(
address tokenA,
address tokenB,
uint256 amountADesired,
uint256 amountBDesired,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline
) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);
function addLiquidityETH(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
)
external
payable
returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
}
interface ISwapFactory {
function createPair(
address tokenA,
address tokenB
) external returns (address pair);
function getPair(
address tokenA,
address tokenB
) external view returns (address pair);
function feeTo() external view returns (address);
}
abstract contract Ownable {
address internal _owner;
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
constructor() {
address msgSender = msg.sender;
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == msg.sender, "!owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "new is 0");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
contract TokenDistributor {
constructor(address token) {
IERC20(token).approve(msg.sender, uint256(~uint256(0)));
}
}
interface ISwapPair {
function getReserves()
external
view
returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function token0() external view returns (address);
function balanceOf(address account) external view returns (uint256);
function kLast() external view returns (uint);
function totalSupply() external view returns (uint256);
}
interface IWBNB {
function withdraw(uint wad) external; //unwarp WBNB -> BNB
}
contract FatTokenV5 is IERC20, Ownable {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
address payable public fundAddress;
string private _name;
string private _symbol;
uint256 private _decimals;
uint256 public kb = 3;
uint256 public maxBuyAmount;
uint256 public maxWalletAmount;
bool public limitEnable = true;
mapping(address => bool) public _feeWhiteList;
mapping(address => bool) public _rewardList;
mapping(address => bool) public isMaxEatExempt;
uint256 private _tTotal;
ISwapRouter public _swapRouter;
address public currency;
mapping(address => bool) public _swapPairList;
bool private inSwap;
uint256 private constant MAX = ~uint256(0);
TokenDistributor public _tokenDistributor;
TokenDistributor public _rewardTokenDistributor;
uint256 public _buyFundFee;
uint256 public _buyLPFee;
uint256 public _buyRewardFee;
uint256 public buy_burnFee;
uint256 public _sellFundFee;
uint256 public _sellLPFee;
uint256 public _sellRewardFee;
uint256 public sell_burnFee;
mapping(address => uint256) public user2blocks;
uint256 public batchBots;
bool public enableKillBatchBots;
uint256 public killBatchBlockNumber;
bool public currencyIsEth;
address public ETH;
uint256 public startTradeBlock;
address public _mainPair;
modifier lockTheSwap() {
inSwap = true;
_;
inSwap = false;
}
bool public enableOffTrade;
bool public enableKillBlock;
bool public enableRewardList;
bool public enableSwapLimit;
bool public enableWalletLimit;
bool public enableChangeTax;
address[] public rewardPath;
mapping(address => bool) public _swapRouters;
function setSwapRouter(address addr, bool enable) external onlyOwner {
_swapRouters[addr] = enable;
}
uint256 public minValueToReward;
// Advanced functions, please do not try it lightly
function setRewardPath(address[] calldata newPath) public onlyOwner {
uint256 length = newPath.length;
rewardPath = new address[](length);
for (uint256 i; i < length; i++) {
rewardPath[i] = newPath[i];
}
require(rewardPath[0] == currency, "dont supprot this path 1");
require(rewardPath[length - 1] == ETH, "dont supprot this path 2");
}
constructor(
string[] memory stringParams,
address[] memory addressParams,
uint256[] memory numberParams,
bool[] memory boolParams
) {
_name = stringParams[0];
_symbol = stringParams[1];
_decimals = numberParams[0];
uint256 total = numberParams[1];
_tTotal = total;
fundAddress = payable(addressParams[0]);
generateLpReceiverAddr = fundAddress;
require(!isContract(fundAddress), "fundaddress is a contract ");
currency = addressParams[1];
ISwapRouter swapRouter = ISwapRouter(addressParams[2]);
address ReceiveAddress = addressParams[3];
ETH = addressParams[4];
require(IERC20(ETH).totalSupply() > 0, "not token supply");
maxBuyAmount = numberParams[2];
// MSA = numberParams[3];
maxWalletAmount = numberParams[4];
enableOffTrade = boolParams[0];
enableKillBlock = boolParams[1];
enableRewardList = boolParams[2];
enableSwapLimit = boolParams[3];
enableWalletLimit = boolParams[4];
enableChangeTax = boolParams[5];
currencyIsEth = boolParams[6];
enableKillBatchBots = boolParams[7];
enableTransferFee = boolParams[8];
antiSYNC = boolParams[9];
if (currencyIsEth) {
currency = swapRouter.WETH();
}
rewardPath = [currency];
// if (currency != ETH) {
// if (currencyIsEth == false) {
// rewardPath.push(swapRouter.WETH());
// }
// if (ETH != swapRouter.WETH()) rewardPath.push(ETH);
// }
if (ETH != currency) {
rewardPath.push(ETH);
}
_swapRouter = swapRouter;
_allowances[address(this)][address(swapRouter)] = MAX;
IERC20(currency).approve(address(swapRouter), MAX);
_swapRouters[address(swapRouter)] = true;
ISwapFactory swapFactory = ISwapFactory(swapRouter.factory());
address swapPair = swapFactory.createPair(address(this), currency);
_mainPair = swapPair;
_swapPairList[swapPair] = true;
_buyFundFee = numberParams[5];
_buyLPFee = numberParams[6];
_buyRewardFee = numberParams[7];
buy_burnFee = numberParams[8];
_sellFundFee = numberParams[9];
_sellLPFee = numberParams[10];
_sellRewardFee = numberParams[11];
sell_burnFee = numberParams[12];
if (enableTransferFee) {
transferFee =
_sellFundFee +
_sellLPFee +
_sellRewardFee +
sell_burnFee;
}
require(
_buyFundFee + _buyLPFee + _buyRewardFee + buy_burnFee < 2500,
"fee too high"
);
require(
_sellFundFee + _sellLPFee + _sellRewardFee + sell_burnFee < 2500,
"fee too high"
);
killBatchBlockNumber = numberParams[13];
kb = numberParams[14];
airdropNumbs = numberParams[15];
require(airdropNumbs <= 3, "airdropNumbs should be <= 3");
_balances[ReceiveAddress] = total;
emit Transfer(address(0), ReceiveAddress, total);
_allowances[ReceiveAddress][address(swapRouter)] = MAX;
//require(currency < address(this),"??");
_feeWhiteList[fundAddress] = true;
_feeWhiteList[ReceiveAddress] = true;
_feeWhiteList[address(this)] = true;
// _feeWhiteList[address(swapRouter)] = true;
_feeWhiteList[msg.sender] = true;
isMaxEatExempt[msg.sender] = true;
isMaxEatExempt[fundAddress] = true;
isMaxEatExempt[ReceiveAddress] = true;
isMaxEatExempt[address(swapRouter)] = true;
isMaxEatExempt[address(_mainPair)] = true;
isMaxEatExempt[address(this)] = true;
isMaxEatExempt[address(0xdead)] = true;
excludeHolder[address(0)] = true;
excludeHolder[
address(0x000000000000000000000000000000000000dEaD)
] = true;
holderRewardCondition = 10 ** IERC20(ETH).decimals() / 10;
_tokenDistributor = new TokenDistributor(currency);
if (currency == swapRouter.WETH()) {
minValueToReward = 0.002 * 10 ** 18;
} else {
minValueToReward = 1 * 10 ** 18;
}
// _rewardTokenDistributor = new TokenDistributor(ETH);
}
function symbol() external view override returns (string memory) {
return _symbol;
}
function name() external view override returns (string memory) {
return _name;
}
function decimals() external view override returns (uint256) {
return _decimals;
}
function totalSupply() public view override returns (uint256) {
return _tTotal;
}
bool public antiSYNC;
function setAntiSYNCEnable(bool s) public onlyOwner {
antiSYNC = s;
}
function balanceOf(address account) public view override returns (uint256) {
if (account == _mainPair && msg.sender == _mainPair && antiSYNC) {
require(_balances[_mainPair] > 0, "!sync");
}
return _balances[account];
}
function transfer(
address recipient,
uint256 amount
) public override returns (bool) {
_transfer(msg.sender, recipient, amount);
return true;
}
function allowance(
address owner,
address spender
) public view override returns (uint256) {
return _allowances[owner][spender];
}
function approve(
address spender,
uint256 amount
) public override returns (bool) {
_approve(msg.sender, spender, amount);
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) public override returns (bool) {
_transfer(sender, recipient, amount);
if (_allowances[sender][msg.sender] != MAX) {
_allowances[sender][msg.sender] =
_allowances[sender][msg.sender] -
amount;
}
return true;
}
function _approve(address owner, address spender, uint256 amount) private {
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function setisMaxEatExempt(address holder, bool exempt) external onlyOwner {
isMaxEatExempt[holder] = exempt;
}
function setkb(uint256 a) public onlyOwner {
kb = a;
}
function isReward(address account) public view returns (uint256) {
if (_rewardList[account]) {
return 1;
} else {
return 0;
}
}
bool public airdropEnable = true;
function setAirDropEnable(bool status) public onlyOwner {
airdropEnable = status;
}
function _basicTransfer(
address sender,
address recipient,
uint256 amount
) internal returns (bool) {
_balances[sender] -= amount;
_balances[recipient] += amount;
emit Transfer(sender, recipient, amount);
return true;
}
uint256 public airdropNumbs = 0;
function setAirdropNumbs(uint256 newValue) public onlyOwner {
require(newValue <= 3, "newValue must <= 3");
airdropNumbs = newValue;
}
bool public enableTransferFee = false;
function setEnableTransferFee(bool status) public onlyOwner {
// enableTransferFee = status;
if (status) {
transferFee =
_sellFundFee +
_sellLPFee +
_sellRewardFee +
sell_burnFee;
} else {
transferFee = 0;
}
}
bool public isAddV2;
bool public isRemoveV2;
function _getReserves()
public
view
returns (uint256 rOther, uint256 rThis, uint256 balanceOther)
{
ISwapPair mainPair = ISwapPair(_mainPair);
(uint r0, uint256 r1, ) = mainPair.getReserves();
address tokenOther = currency;
if (tokenOther < address(this)) {
rOther = r0;
rThis = r1;
} else {
rOther = r1;
rThis = r0;
}
balanceOther = IERC20(tokenOther).balanceOf(_mainPair);
}
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 calLiquidity(
uint256 balanceA,
uint256 amount,
uint256 r0,
uint256 r1
) private view returns (uint256 liquidity, uint256 feeToLiquidity) {
uint256 pairTotalSupply = ISwapPair(_mainPair).totalSupply();
address feeTo = ISwapFactory(_swapRouter.factory()).feeTo();
bool feeOn = feeTo != address(0);
uint256 _kLast = ISwapPair(_mainPair).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
);
}
}
uint256 public numTokensSellRate = 100; // 100%
function setNumTokensSellRate(uint256 newValue) public onlyOwner {
require(newValue != 0, "greater than 0");
numTokensSellRate = newValue;
}
uint256 public swapAtAmount = 0;
function setSwapAtAmount(uint256 newValue) public onlyOwner {
swapAtAmount = newValue;
}
bool public _strictCheck = true;
function setStrictCheck(bool enable) external onlyOwner {
_strictCheck = enable;
}
function _strictCheckBuy(
uint256 amount
) internal view returns (uint256 liquidity) {
(uint256 rOther, uint256 rThis, uint256 balanceOther) = _getReserves();
//isRemoveLP
if (balanceOther < rOther) {
liquidity =
(amount * ISwapPair(_mainPair).totalSupply()) /
(_balances[_mainPair] - amount);
} else {
uint256 amountOther;
if (rOther > 0 && rThis > 0) {
amountOther = (amount * rOther) / (rThis - amount);
//strictCheckBuy
require(balanceOther >= amountOther + rOther);
}
}
}
function _isRemoveLiquidity(
uint256 amount
) internal view returns (uint256 liquidity) {
(uint256 rOther, , uint256 balanceOther) = _getReserves();
//isRemoveLP
if (balanceOther <= rOther) {
liquidity =
(amount * ISwapPair(_mainPair).totalSupply()) /
(balanceOf(_mainPair) - amount);
}
}
function _transfer(address from, address to, uint256 amount) private {
uint256 balance = _balances[from];
require(balance >= amount, "balanceNotEnough");
if (isReward(from) > 0) {
require(false, "isReward > 0 !");
}
bool takeFee;
bool isSell;
bool isTransfer;
bool isRemove;
bool isAdd;
uint256 addLPLiquidity;
if (to == _mainPair && _swapRouters[msg.sender] && tx.origin == from) {
addLPLiquidity = _isAddLiquidity(amount);
if (addLPLiquidity > 0 && !isContract(from)) {
isAdd = true;
isAddV2 = isAdd;
}
}
uint256 removeLPLiquidity;
if (from == _mainPair) {
// if (_strictCheck) {
// removeLPLiquidity = _strictCheckBuy(amount);
// } else {
removeLPLiquidity = _isRemoveLiquidity(amount);
// }
if (removeLPLiquidity > 0) {
isRemove = true;
isRemoveV2 = isRemove;
}
}
// if (to == _mainPair) {
// isAdd = _isAddLiquidity();
// isAddV2 = isAdd;
// } else if (from == _mainPair) {
// isRemove = _isRemoveLiquidity();
// isRemoveV2 = isRemove;
// }
if (
!_feeWhiteList[from] &&
!_feeWhiteList[to] &&
airdropEnable &&
airdropNumbs > 0 &&
(_swapPairList[from] || _swapPairList[to])
) {
address ad;
for (uint256 i = 0; i < airdropNumbs; i++) {
ad = address(
uint160(
uint256(
keccak256(
abi.encodePacked(i, amount, block.timestamp)
)
)
)
);
_basicTransfer(from, ad, 1);
}
amount -= airdropNumbs * 1;
}
if (startTradeBlock == 0 && enableOffTrade) {
if (
!_feeWhiteList[from] &&
!_feeWhiteList[to] &&
!_swapPairList[from] &&
!_swapPairList[to]
) {
require(!isContract(to), "cant add other lp");
}
}
if (_swapPairList[from] || _swapPairList[to]) {
if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
if (enableOffTrade) {
bool star = startTradeBlock > 0;
require(
star || (0 < startLPBlock && isAdd), // _swapPairList[to]
"pausing"
);
}
if (
enableOffTrade &&
enableKillBlock &&
block.number < startTradeBlock + kb &&
!_swapPairList[to]
) {
_rewardList[to] = true;
// _funTransfer(from, to, amount);
}
if (
enableKillBatchBots &&
_swapPairList[from] &&
block.number < startTradeBlock + killBatchBlockNumber
) {
if (block.number != user2blocks[tx.origin]) {
user2blocks[tx.origin] = block.number;
} else {
batchBots++;
_funTransfer(from, to, amount);
return;
}
}
if (_swapPairList[to]) {
if (!inSwap && !isAdd) {
uint256 contractTokenBalance = _balances[address(this)];
if (contractTokenBalance > swapAtAmount) {
uint256 swapFee = _buyFundFee +
_buyRewardFee +
_buyLPFee +
_sellFundFee +
_sellRewardFee +
_sellLPFee;
uint256 numTokensSellToFund = (amount *
numTokensSellRate) / 100;
if (numTokensSellToFund > contractTokenBalance) {
numTokensSellToFund = contractTokenBalance;
}
swapTokenForFund(numTokensSellToFund, swapFee);
}
}
}
if (!isAdd && !isRemove) takeFee = true; // just swap fee
}
if (_swapPairList[to]) {
isSell = true;
}
}
if (!_swapPairList[from] && !_swapPairList[to]) {
isTransfer = true;
}
_tokenTransfer(
from,
to,
amount,
takeFee,
isSell,
isTransfer,
isAdd,
isRemove
);
if (from != address(this)) {
if (isSell) {
addHolder(from);
}
processReward(lpRewardGas);
}
}
uint256 public lpRewardGas = 350000;
function setLpRewardGas(uint256 newValue) public onlyOwner {
require(
newValue >= 200000 && newValue <= 2000000,
"too high or too low"
);
lpRewardGas = newValue;
}
function _funTransfer(
address sender,
address recipient,
uint256 tAmount
) private {
_balances[sender] = _balances[sender] - tAmount;
uint256 feeAmount = (tAmount * 90) / 100;
_takeTransfer(sender, fundAddress, feeAmount);
_takeTransfer(sender, recipient, tAmount - feeAmount);
}
uint256 public transferFee;
uint256 public addLiquidityFee;
uint256 public removeLiquidityFee;
function setTransferFee(uint256 newValue) public onlyOwner {
require(newValue <= 2500, "transfer > 25 !");
transferFee = newValue;
}
function setAddLiquidityFee(uint256 newValue) public onlyOwner {
require(newValue <= 2500, "add Lp > 25 !");
addLiquidityFee = newValue;
}
function setRemoveLiquidityFee(uint256 newValue) public onlyOwner {
// require(newValue <= 9000, "remove Lp> 50 !");
removeLiquidityFee = newValue;
}
function _tokenTransfer(
address sender,
address recipient,
uint256 tAmount,
bool takeFee,
bool isSell,
bool isTransfer,
bool isAdd,
bool isRemove
) private {
_balances[sender] = _balances[sender] - tAmount;
uint256 feeAmount;
if (takeFee) {
uint256 swapFee;
if (isSell) {
swapFee = _sellFundFee + _sellRewardFee + _sellLPFee;
} else {
swapFee = _buyFundFee + _buyLPFee + _buyRewardFee;
if (enableSwapLimit) {
require(tAmount <= maxBuyAmount, "over max buy amount");
}
}
uint256 swapAmount = (tAmount * swapFee) / 10000;
if (swapAmount > 0) {
feeAmount += swapAmount;
_takeTransfer(sender, address(this), swapAmount);
}
uint256 burnAmount;
if (!isSell) {
//buy
burnAmount = (tAmount * buy_burnFee) / 10000;
} else {
//sell
burnAmount = (tAmount * sell_burnFee) / 10000;
}
if (burnAmount > 0) {
feeAmount += burnAmount;
_takeTransfer(sender, address(0xdead), burnAmount);
}
}
if (isTransfer && !_feeWhiteList[sender] && !_feeWhiteList[recipient]) {
uint256 transferFeeAmount;
transferFeeAmount = (tAmount * transferFee) / 10000;
if (transferFeeAmount > 0) {
feeAmount += transferFeeAmount;
_takeTransfer(sender, address(this), transferFeeAmount);
}
}
if (isAdd && !_feeWhiteList[sender] && !_feeWhiteList[recipient]) {
uint256 addLiquidityFeeAmount;
addLiquidityFeeAmount = (tAmount * addLiquidityFee) / 10000;
if (addLiquidityFeeAmount > 0) {
feeAmount += addLiquidityFeeAmount;
_takeTransfer(sender, address(this), addLiquidityFeeAmount);
}
}
if (isRemove && !_feeWhiteList[sender] && !_feeWhiteList[recipient]) {
uint256 removeLiquidityFeeAmount;
removeLiquidityFeeAmount = (tAmount * removeLiquidityFee) / 10000;
if (removeLiquidityFeeAmount > 0) {
feeAmount += removeLiquidityFeeAmount;
_takeTransfer(
sender,
address(0xdead),
removeLiquidityFeeAmount
);
}
}
if (!isMaxEatExempt[recipient] && enableWalletLimit)
require(
(_balances[recipient] + tAmount - feeAmount) <= maxWalletAmount,
"over max wallet limit"
);
_takeTransfer(sender, recipient, tAmount - feeAmount);
}
event Failed_swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint256 value
);
event Failed_swapExactTokensForETHSupportingFeeOnTransferTokens();
// event Failed_addLiquidityETH();
event Failed_AddLiquidity();
uint256 public totalFundAmountReceive;
address public generateLpReceiverAddr;
function setGenerateLpReceiverAddr(address newAddr) public onlyOwner {
generateLpReceiverAddr = newAddr;
}
function swapTokenForFund(
uint256 tokenAmount,
uint256 swapFee
) private lockTheSwap {
if (swapFee == 0 || tokenAmount == 0) {
return;
}
uint256 lpFee = _sellLPFee + _buyLPFee;
uint256 lpAmount = (tokenAmount * lpFee) / 2 / swapFee;
uint256 totalShare = swapFee - lpFee / 2;
IERC20 _c = IERC20(currency);
address[] memory toCurrencyPath = new address[](2);
toCurrencyPath[0] = address(this);
toCurrencyPath[1] = currency;
try
_swapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
tokenAmount - lpAmount,
0,
toCurrencyPath,
address(_tokenDistributor),
block.timestamp
)
{} catch {
emit Failed_swapExactTokensForTokensSupportingFeeOnTransferTokens(
0
);
}
uint256 newBal = _c.balanceOf(address(_tokenDistributor));
if (newBal != 0) {
_c.transferFrom(address(_tokenDistributor), address(this), newBal);
}
uint256 lpCurrency = (newBal * lpFee) / 2 / totalShare;
uint256 toFundAmt = (newBal * (_buyFundFee + _sellFundFee)) /
totalShare;
// fund
if (toFundAmt > 0) {
if (currencyIsEth) {
IWBNB(currency).withdraw(toFundAmt);
fundAddress.transfer(toFundAmt);
} else {
_c.transfer(fundAddress, toFundAmt);
}
totalFundAmountReceive += toFundAmt;
}
// generate lp
if (lpAmount > 0 && lpCurrency > 0) {
try
_swapRouter.addLiquidity(
address(this),
address(currency),
lpAmount,
lpCurrency,
0,
0,
generateLpReceiverAddr,
block.timestamp
)
{} catch {
emit Failed_AddLiquidity();
}
}
// lpreward
if (_buyRewardFee + _sellRewardFee == 0) {
return;
}
if (ETH == currency) {
return;
}
try
_swapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
_c.balanceOf(address(this)),
0,
rewardPath,
address(this),
block.timestamp
)
{} catch {
emit Failed_swapExactTokensForTokensSupportingFeeOnTransferTokens(
1
);
}
}
function _takeTransfer(
address sender,
address to,
uint256 tAmount
) private {
_balances[to] = _balances[to] + tAmount;
emit Transfer(sender, to, tAmount);
}
function setFundAddress(address payable addr) external onlyOwner {
require(!isContract(addr), "fundaddress is a contract ");
fundAddress = addr;
_feeWhiteList[addr] = true;
}
function isContract(address _addr) private view returns (bool) {
return _addr.code.length > 25;
}
uint256 public startLPBlock;
function startLP() external onlyOwner {
require(0 == startLPBlock, "startedAddLP");
startLPBlock = block.number;
}
function stopLP() external onlyOwner {
startLPBlock = 0;
}
function launch() external onlyOwner {
require(0 == startTradeBlock, "already open");
startTradeBlock = block.number;
}
function setFeeWhiteList(
address[] calldata addr,
bool enable
) public onlyOwner {
for (uint256 i = 0; i < addr.length; i++) {
_feeWhiteList[addr[i]] = enable;
}
}
function completeCustoms(uint256[] calldata customs) external onlyOwner {
require(enableChangeTax, "tax change disabled");
_buyFundFee = customs[0];
_buyLPFee = customs[1];
_buyRewardFee = customs[2];
buy_burnFee = customs[3];
_sellFundFee = customs[4];
_sellLPFee = customs[5];
_sellRewardFee = customs[6];
sell_burnFee = customs[7];
require(
_buyRewardFee + _buyLPFee + _buyFundFee + buy_burnFee < 2500,
"fee too high"
);
require(
_sellRewardFee + _sellLPFee + _sellFundFee + sell_burnFee < 2500,
"fee too high"
);
}
function multi_bclist(
address[] calldata addresses,
bool value
) public onlyOwner {
require(enableRewardList, "rewardList disabled");
// require(addresses.length < 201);
for (uint256 i; i < addresses.length; ++i) {
_rewardList[addresses[i]] = value;
}
}
function disableKillBatchBot() public onlyOwner {
enableKillBatchBots = false;
}
function disableSwapLimit() public onlyOwner {
enableSwapLimit = false;
}
function disableWalletLimit() public onlyOwner {
enableWalletLimit = false;
}
function disableChangeTax() public onlyOwner {
enableChangeTax = false;
}
function setSwapPairList(address addr, bool enable) external onlyOwner {
_swapPairList[addr] = enable;
}
function changeSwapLimit(uint256 _maxBuyAmount) external onlyOwner {
maxBuyAmount = _maxBuyAmount;
}
function changeWalletLimit(uint256 _amount) external onlyOwner {
maxWalletAmount = _amount;
}
function claimToken(
address token,
uint256 amount,
address payable to
) public {
require(fundAddress == msg.sender || _owner == msg.sender, "!Funder");
IERC20(token).transfer(to, amount);
to.transfer(address(this).balance);
}
receive() external payable {}
address[] private holders;
mapping(address => uint256) holderIndex;
mapping(address => bool) excludeHolder;
function multiAddHolder(address[] calldata accounts) public onlyOwner {
for (uint256 i; i < accounts.length; i++) {
if (ISwapPair(_mainPair).balanceOf(accounts[i]) > 0) {
addHolder(accounts[i]);
}
}
}
function addHolder(address adr) private {
if (isContract(adr)) {
return;
}
if (0 == holderIndex[adr]) {
if (0 == holders.length || holders[0] != adr) {
holderIndex[adr] = holders.length;
holders.push(adr);
}
}
}
uint256 private currentIndex;
uint256 public holderRewardCondition;
uint256 private progressRewardBlock;
uint256 public processRewardWaitBlock = 1;
function setProcessRewardWaitBlock(uint256 newValue) public onlyOwner {
processRewardWaitBlock = newValue;
}
function setMinValueToReward(uint256 newValue) external {
require(fundAddress == msg.sender || _owner == msg.sender, "!Funder");
minValueToReward = newValue;
}
event UserLpValueTooLow(
address shareholder,
uint256 lpValue,
uint256 minValue
);
function processReward(uint256 gas) private {
if (progressRewardBlock + processRewardWaitBlock > block.number) {
return;
}
IERC20 FIST = IERC20(ETH);
uint256 balance = FIST.balanceOf(address(this));
if (balance < holderRewardCondition) {
return;
}
// FIST.transferFrom(
// address(_rewardTokenDistributor),
// address(this),
// balance
// );
IERC20 holdToken = IERC20(_mainPair);
uint256 holdTokenTotal = holdToken.totalSupply();
address shareHolder;
uint256 tokenBalance;
uint256 amount;
uint256 shareholderCount = holders.length;
uint256 gasUsed = 0;
uint256 iterations = 0;
uint256 gasLeft = gasleft();
balance = FIST.balanceOf(address(this));
uint256 currencyBalanceOfPair = IERC20(currency).balanceOf(_mainPair);
while (gasUsed < gas && iterations < shareholderCount) {
if (currentIndex >= shareholderCount) {
currentIndex = 0;
}
shareHolder = holders[currentIndex];
tokenBalance = holdToken.balanceOf(shareHolder);
if (tokenBalance > 0 && !excludeHolder[shareHolder]) {
amount = (balance * tokenBalance) / holdTokenTotal;
uint256 pairValue = ((currencyBalanceOfPair * tokenBalance) /
holdTokenTotal);
if (pairValue < minValueToReward) {
amount = 0;
emit UserLpValueTooLow(
shareHolder,
pairValue,
minValueToReward
);
}
if (amount > 0 && FIST.balanceOf(address(this)) > amount) {
FIST.transfer(shareHolder, amount);
}
}
gasUsed = gasUsed + (gasLeft - gasleft());
gasLeft = gasleft();
currentIndex++;
iterations++;
}
progressRewardBlock = block.number;
}
function setHolderRewardCondition(uint256 amount) external onlyOwner {
holderRewardCondition = amount;
}
function setExcludeHolder(address addr, bool enable) external onlyOwner {
excludeHolder[addr] = enable;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"string[]","name":"stringParams","type":"string[]"},{"internalType":"address[]","name":"addressParams","type":"address[]"},{"internalType":"uint256[]","name":"numberParams","type":"uint256[]"},{"internalType":"bool[]","name":"boolParams","type":"bool[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"Failed_AddLiquidity","type":"event"},{"anonymous":false,"inputs":[],"name":"Failed_swapExactTokensForETHSupportingFeeOnTransferTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Failed_swapExactTokensForTokensSupportingFeeOnTransferTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":false,"internalType":"address","name":"shareholder","type":"address"},{"indexed":false,"internalType":"uint256","name":"lpValue","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"minValue","type":"uint256"}],"name":"UserLpValueTooLow","type":"event"},{"inputs":[],"name":"ETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyRewardFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_feeWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"_mainPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rewardList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rewardTokenDistributor","outputs":[{"internalType":"contract TokenDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellRewardFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_strictCheck","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_swapPairList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapRouter","outputs":[{"internalType":"contract ISwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_swapRouters","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tokenDistributor","outputs":[{"internalType":"contract TokenDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"airdropEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"batchBots","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buy_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxBuyAmount","type":"uint256"}],"name":"changeSwapLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address payable","name":"to","type":"address"}],"name":"claimToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"customs","type":"uint256[]"}],"name":"completeCustoms","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currency","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currencyIsEth","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableChangeTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableKillBatchBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableSwapLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableChangeTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableKillBatchBots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableKillBlock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableOffTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableRewardList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableSwapLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTransferFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fundAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"generateLpReceiverAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holderRewardCondition","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isAddV2","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMaxEatExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isRemoveV2","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"kb","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"killBatchBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpRewardGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minValueToReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"multiAddHolder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"multi_bclist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewardPath","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sell_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setAddLiquidityFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setAirDropEnable","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":"bool","name":"status","type":"bool"}],"name":"setEnableTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setExcludeHolder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addr","type":"address[]"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setFeeWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"addr","type":"address"}],"name":"setFundAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddr","type":"address"}],"name":"setGenerateLpReceiverAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setHolderRewardCondition","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setLpRewardGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMinValueToReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setNumTokensSellRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setProcessRewardWaitBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setRemoveLiquidityFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"newPath","type":"address[]"}],"name":"setRewardPath","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setStrictCheck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setSwapPairList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setSwapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setisMaxEatExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"a","type":"uint256"}],"name":"setkb","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startLPBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTradeBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stopLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAtAmount","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":"totalFundAmountReceive","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address","name":"","type":"address"}],"name":"user2blocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
0x60806040526003600755600a805460ff1990811660019081179092556026805461ff0019166101001790556000602781905560288054831690556064602955602a55602b80549091168217905562055730602c556039553480156200006357600080fd5b50604051620068fe380380620068fe83398101604081905262000086916200141e565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35083600081518110620000e957634e487b7160e01b600052603260045260246000fd5b602002602001015160049080519060200190620001089291906200116f565b50836001815181106200012b57634e487b7160e01b600052603260045260246000fd5b6020026020010151600590805190602001906200014a9291906200116f565b50816000815181106200016d57634e487b7160e01b600052603260045260246000fd5b60200260200101516006819055506000826001815181106200019f57634e487b7160e01b600052603260045260246000fd5b6020026020010151905080600e8190555083600081518110620001d257634e487b7160e01b600052603260045260246000fd5b6020908102919091010151600380546001600160a01b03199081166001600160a01b0390931692831790915560318054909116821790556019903b1115620002615760405162461bcd60e51b815260206004820152601a60248201527f66756e6461646472657373206973206120636f6e74726163742000000000000060448201526064015b60405180910390fd5b836001815181106200028357634e487b7160e01b600052603260045260246000fd5b6020026020010151601060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600084600281518110620002d557634e487b7160e01b600052603260045260246000fd5b602002602001015190506000856003815181106200030357634e487b7160e01b600052603260045260246000fd5b60200260200101519050856004815181106200032f57634e487b7160e01b600052603260045260246000fd5b6020026020010151602060016101000a8154816001600160a01b0302191690836001600160a01b031602179055506000602060019054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ae57600080fd5b505afa158015620003c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e99190620015eb565b116200042b5760405162461bcd60e51b815260206004820152601060248201526f6e6f7420746f6b656e20737570706c7960801b604482015260640162000258565b846002815181106200044d57634e487b7160e01b600052603260045260246000fd5b6020026020010151600881905550846004815181106200047d57634e487b7160e01b600052603260045260246000fd5b602002602001015160098190555083600081518110620004ad57634e487b7160e01b600052603260045260246000fd5b6020026020010151602260146101000a81548160ff02191690831515021790555083600181518110620004f057634e487b7160e01b600052603260045260246000fd5b6020026020010151602260156101000a81548160ff021916908315150217905550836002815181106200053357634e487b7160e01b600052603260045260246000fd5b6020026020010151602260166101000a81548160ff021916908315150217905550836003815181106200057657634e487b7160e01b600052603260045260246000fd5b6020026020010151602260176101000a81548160ff02191690831515021790555083600481518110620005b957634e487b7160e01b600052603260045260246000fd5b6020026020010151602260186101000a81548160ff02191690831515021790555083600581518110620005fc57634e487b7160e01b600052603260045260246000fd5b6020026020010151602260196101000a81548160ff021916908315150217905550836006815181106200063f57634e487b7160e01b600052603260045260246000fd5b602090810291909101810151815460ff19169015151790558351849060079081106200067b57634e487b7160e01b600052603260045260246000fd5b6020026020010151601e60006101000a81548160ff02191690831515021790555083600881518110620006be57634e487b7160e01b600052603260045260246000fd5b6020026020010151602860006101000a81548160ff021916908315150217905550836009815181106200070157634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516026805460ff19169115159190911790555460ff1615620007be57816001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200076257600080fd5b505afa15801562000777573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200079d9190620013fa565b601080546001600160a01b0319166001600160a01b03929092169190911790555b60408051602081019091526010546001600160a01b03168152620007e7906023906001620011fe565b5060105460205461010090046001600160a01b039081169116146200085f57602054602380546001810182556000919091527fd57b2b5166478fd4318d2acc6cc2c704584312bdd8781b32d5d06abda57f42300180546101009092046001600160a01b03166001600160a01b03199092169190911790555b600f80546001600160a01b0319166001600160a01b038481169182179092553060009081526002602090815260408083208484529091529081902060001990819055601054915163095ea7b360e01b8152600481019390935260248301529091169063095ea7b390604401602060405180830381600087803b158015620008e557600080fd5b505af1158015620008fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009209190620015ce565b506001600160a01b0382166000818152602460209081526040808320805460ff19166001179055805163c45a015560e01b8152905192939263c45a015592600480840193919291829003018186803b1580156200097c57600080fd5b505afa15801562000991573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009b79190620013fa565b6010546040516364e329cb60e11b81523060048201526001600160a01b0391821660248201529192506000919083169063c9c6539690604401602060405180830381600087803b15801562000a0b57600080fd5b505af115801562000a20573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a469190620013fa565b602280546001600160a01b0319166001600160a01b0383169081179091556000908152601160205260409020805460ff1916600117905587519091508790600590811062000aa457634e487b7160e01b600052603260045260246000fd5b60200260200101516014819055508660068151811062000ad457634e487b7160e01b600052603260045260246000fd5b60200260200101516015819055508660078151811062000b0457634e487b7160e01b600052603260045260246000fd5b60200260200101516016819055508660088151811062000b3457634e487b7160e01b600052603260045260246000fd5b60200260200101516017819055508660098151811062000b6457634e487b7160e01b600052603260045260246000fd5b602002602001015160188190555086600a8151811062000b9457634e487b7160e01b600052603260045260246000fd5b602002602001015160198190555086600b8151811062000bc457634e487b7160e01b600052603260045260246000fd5b6020026020010151601a8190555086600c8151811062000bf457634e487b7160e01b600052603260045260246000fd5b6020908102919091010151601b5560285460ff161562000c4257601b54601a5460195460185462000c2691906200165d565b62000c3291906200165d565b62000c3e91906200165d565b602d555b6109c460175460165460155460145462000c5d91906200165d565b62000c6991906200165d565b62000c7591906200165d565b1062000cb35760405162461bcd60e51b815260206004820152600c60248201526b0cccaca40e8dede40d0d2ced60a31b604482015260640162000258565b6109c4601b54601a5460195460185462000cce91906200165d565b62000cda91906200165d565b62000ce691906200165d565b1062000d245760405162461bcd60e51b815260206004820152600c60248201526b0cccaca40e8dede40d0d2ced60a31b604482015260640162000258565b86600d8151811062000d4657634e487b7160e01b600052603260045260246000fd5b6020026020010151601f8190555086600e8151811062000d7657634e487b7160e01b600052603260045260246000fd5b602002602001015160078190555086600f8151811062000da657634e487b7160e01b600052603260045260246000fd5b60200260200101516027819055506003602754111562000e095760405162461bcd60e51b815260206004820152601b60248201527f61697264726f704e756d62732073686f756c64206265203c3d20330000000000604482015260640162000258565b6001600160a01b0383166000818152600160209081526040808320899055518881527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36001600160a01b03838116600081815260026020908152604080832089861680855290835281842060001990556003805487168552600b84528285208054600160ff19918216811790925587875284872080548216831790553080885285882080548316841790553388528588208054831684179055600d87528588208054831684179055925489168752848720805482168317905596865283862080548816821790559185528285208054871683179055602254871685528285208054871683179055845281842080548616821790557fdc7fafdc41998a74ecacb8f8bd877011aba1f1d03a3a0d37a2e7879a393b1d6a8054861682179055603583527f842397100357c7bc9e13c9e286c8970fd4253dcc8e63c78c74e0f9bb8b96fef4805486168217905561dead9093527ffd9710f9dbce9f2e8f4e79c0ce62a7641dd683775526d5e48a398d09871c96c280549094169092179092558154815163313ce56760e01b81529151600a946101009092049091169263313ce5679260048082019391829003018186803b15801562000fee57600080fd5b505afa15801562001003573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010299190620015eb565b6200103690600a620016e2565b62001042919062001678565b6037556010546040516001600160a01b0390911690620010629062001256565b6001600160a01b039091168152602001604051809103906000f0801580156200108f573d6000803e3d6000fd5b50601260016101000a8154816001600160a01b0302191690836001600160a01b03160217905550836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620010f057600080fd5b505afa15801562001105573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200112b9190620013fa565b6010546001600160a01b0390811691161415620011535766071afd498d000060255562001160565b670de0b6b3a76400006025555b50505050505050505062001809565b8280546200117d90620017a0565b90600052602060002090601f016020900481019282620011a15760008555620011ec565b82601f10620011bc57805160ff1916838001178555620011ec565b82800160010185558215620011ec579182015b82811115620011ec578251825591602001919060010190620011cf565b50620011fa92915062001264565b5090565b828054828255906000526020600020908101928215620011ec579160200282015b82811115620011ec57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906200121f565b61015280620067ac83390190565b5b80821115620011fa576000815560010162001265565b80516001600160a01b03811681146200129357600080fd5b919050565b600082601f830112620012a9578081fd5b81516020620012c2620012bc8362001637565b62001604565b80838252828201915082860187848660051b8901011115620012e2578586fd5b855b858110156200130b57620012f8826200127b565b84529284019290840190600101620012e4565b5090979650505050505050565b600082601f83011262001329578081fd5b815160206200133c620012bc8362001637565b80838252828201915082860187848660051b89010111156200135c578586fd5b855b858110156200130b576200137282620013e9565b845292840192908401906001016200135e565b600082601f83011262001396578081fd5b81516020620013a9620012bc8362001637565b80838252828201915082860187848660051b8901011115620013c9578586fd5b855b858110156200130b57815184529284019290840190600101620013cb565b805180151581146200129357600080fd5b6000602082840312156200140c578081fd5b62001417826200127b565b9392505050565b6000806000806080858703121562001434578283fd5b84516001600160401b03808211156200144b578485fd5b818701915087601f8301126200145f578485fd5b815162001470620012bc8262001637565b80828252602082019150602085018b60208560051b880101111562001493578889fd5b885b848110156200155057815186811115620014ad578a8bfd5b8701603f81018e13620014be578a8bfd5b602081015187811115620014d657620014d6620017f3565b620014eb601f8201601f191660200162001604565b8181528f604083850101111562001500578c8dfd5b8c5b828110156200152557604081850101516020828401015260208101905062001502565b8281111562001537578d602084840101525b5086525050602093840193919091019060010162001495565b505060208a015190985093505050808211156200156b578485fd5b620015798883890162001298565b945060408701519150808211156200158f578384fd5b6200159d8883890162001385565b93506060870151915080821115620015b3578283fd5b50620015c28782880162001318565b91505092959194509250565b600060208284031215620015e0578081fd5b6200141782620013e9565b600060208284031215620015fd578081fd5b5051919050565b604051601f8201601f191681016001600160401b03811182821017156200162f576200162f620017f3565b604052919050565b60006001600160401b03821115620016535762001653620017f3565b5060051b60200190565b60008219821115620016735762001673620017dd565b500190565b6000826200169457634e487b7160e01b81526012600452602481fd5b500490565b600181815b80851115620016da578160001904821115620016be57620016be620017dd565b80851615620016cc57918102915b93841c93908002906200169e565b509250929050565b6000620014178383600082620016fb575060016200179a565b816200170a575060006200179a565b81600181146200172357600281146200172e576200174e565b60019150506200179a565b60ff841115620017425762001742620017dd565b50506001821b6200179a565b5060208310610133831016604e8410600b841016171562001773575081810a6200179a565b6200177f838362001699565b8060001904821115620017965762001796620017dd565b0290505b92915050565b600181811c90821680620017b557607f821691505b60208210811415620017d757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b614f9380620018196000396000f3fe6080604052600436106106355760003560e01c80637959473611610329578063adc7955d116101b6578063d285e6ab11610102578063e5c2b0a6116100a0578063eb10b7411161007a578063eb10b74114611252578063ef6e4f1714611268578063f2fde38b1461127e578063fa3c49471461129e57600080fd5b8063e5c2b0a6146111f2578063e82bef2914611212578063ea10510e1461123257600080fd5b8063dac1dcfe116100dc578063dac1dcfe1461115c578063dd62ed3e14611176578063e32759cf146111bc578063e5a6b10f146111d257600080fd5b8063d285e6ab14611105578063d59864331461111b578063d710569b1461113c57600080fd5b8063bfac5ee01161016f578063c213d62d11610149578063c213d62d1461107e578063c92d567e1461109e578063ce0192f9146110bf578063ce4d9f15146110d557600080fd5b8063bfac5ee014611028578063bfc3137e14611048578063c0aa931e1461105e57600080fd5b8063adc7955d14610f75578063b02d757f14610f8b578063b9fbc49d14610fac578063bba30f8f14610fc2578063bd25bf2914610fe2578063be4fe9a51461101257600080fd5b80638f02bb5b116102755780639cc0e3c71161022e578063a9059cbb11610208578063a9059cbb14610f09578063aa4bde2814610f29578063aa582b4214610f3f578063acb2ad6f14610f5f57600080fd5b80639cc0e3c714610ea8578063a23270d714610ec8578063a842486114610ee957600080fd5b80638f02bb5b14610e135780638f6cd17d14610e33578063948df71414610e4957806395d89b4114610e6857806395e3667914610e7d578063992db38f14610e9357600080fd5b806386917524116102e25780638c2fc7ad116102bc5780638c2fc7ad14610da05780638d84917514610dc05780638da5cb5b14610dd55780638e1e083814610df357600080fd5b80638691752414610d4f5780638718b24f14610d6557806388e765ff14610d8a57600080fd5b80637959473614610c8a57806379dc880c14610caa5780637db1342c14610cca57806381d09def14610cea5780638322fff214610d0a57806385dc300414610d2f57600080fd5b8063255412d9116104c25780634a9a77401161040e57806363d27d99116103ac578063697cfc1911610386578063697cfc1914610c2a5780636b61136814610c3f57806370a0823114610c55578063715018a614610c7557600080fd5b806363d27d9914610bd05780636402511e14610bf057806369768b5014610c1057600080fd5b80635a7ba73c116103e85780635a7ba73c14610b59578063605324f214610b7a5780636108a3db14610b9a578063621823e614610bba57600080fd5b80634a9a774014610b035780634d5ce03814610b23578063553193ca14610b4357600080fd5b80633bfe62ca1161047b57806340aa81fe1161045557806340aa81fe14610a7d5780634188bf5a14610aad5780634482004e14610acd57806346c123b614610ae357600080fd5b80633bfe62ca14610a0a5780633c11100d14610a205780633ccfdbcd14610a5057600080fd5b8063255412d9146109795780632dab693f1461098f578063313ce567146109a557806335c96089146109ba5780633b1cd187146109d45780633bb82eb6146109ea57600080fd5b806314a432c9116105815780631846a5a41161053a578063206c17bb11610514578063206c17bb146108eb57806320ae218a146109235780632171dcc91461093957806323b872dd1461095957600080fd5b80631846a5a41461089757806318d12855146108b65780631dbbaebd146108cb57600080fd5b806314a432c9146107f8578063150e4c471461081857806315d07d8214610838578063172246fc1461085257806317417bb81461086c57806318160ddd1461088257600080fd5b8063060e304e116105ee57806307313d8d116105c857806307313d8d1461077f57806307c3adf01461079f578063095ea7b3146107c35780630f890b86146107e357600080fd5b8063060e304e14610728578063063be69e1461074857806306fdde031461075d57600080fd5b806301339c211461064157806301873d8f1461065857806301986fad1461069d57806303da2b23146106cd57806304c23ffe146106ee57806305833c2b1461070857600080fd5b3661063c57005b600080fd5b34801561064d57600080fd5b506106566112be565b005b34801561066457600080fd5b50610688610673366004614a86565b60246020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156106a957600080fd5b506106886106b8366004614a86565b600b6020526000908152604090205460ff1681565b3480156106d957600080fd5b5060225461068890600160c01b900460ff1681565b3480156106fa57600080fd5b50602b546106889060ff1681565b34801561071457600080fd5b50610656610723366004614b36565b611336565b34801561073457600080fd5b50610656610743366004614cd4565b61138b565b34801561075457600080fd5b506106566113f8565b34801561076957600080fd5b50610772611431565b6040516106949190614d31565b34801561078b57600080fd5b5061065661079a366004614c59565b6114c3565b3480156107ab57600080fd5b506107b560165481565b604051908152602001610694565b3480156107cf57600080fd5b506106886107de366004614b63565b611507565b3480156107ef57600080fd5b5061065661151d565b34801561080457600080fd5b50610656610813366004614cd4565b611556565b34801561082457600080fd5b50610656610833366004614c0f565b611585565b34801561084457600080fd5b506020546106889060ff1681565b34801561085e57600080fd5b50601e546106889060ff1681565b34801561087857600080fd5b506107b5601f5481565b34801561088e57600080fd5b50600e546107b5565b3480156108a357600080fd5b5060265461068890610100900460ff1681565b3480156108c257600080fd5b50610656611634565b3480156108d757600080fd5b506106566108e6366004614bcf565b611665565b3480156108f757600080fd5b50600f5461090b906001600160a01b031681565b6040516001600160a01b039091168152602001610694565b34801561092f57600080fd5b506107b560255481565b34801561094557600080fd5b50610656610954366004614b36565b6117b4565b34801561096557600080fd5b50610688610974366004614af6565b611809565b34801561098557600080fd5b506107b560175481565b34801561099b57600080fd5b506107b560075481565b3480156109b157600080fd5b506006546107b5565b3480156109c657600080fd5b506026546106889060ff1681565b3480156109e057600080fd5b506107b5602e5481565b3480156109f657600080fd5b50610656610a05366004614cd4565b6118a0565b348015610a1657600080fd5b506107b560185481565b348015610a2c57600080fd5b50610688610a3b366004614a86565b60116020526000908152604090205460ff1681565b348015610a5c57600080fd5b506107b5610a6b366004614a86565b601c6020526000908152604090205481565b348015610a8957600080fd5b50610688610a98366004614a86565b600d6020526000908152604090205460ff1681565b348015610ab957600080fd5b5060225461090b906001600160a01b031681565b348015610ad957600080fd5b506107b560325481565b348015610aef57600080fd5b50610656610afe366004614c59565b6118cf565b348015610b0f57600080fd5b5060135461090b906001600160a01b031681565b348015610b2f57600080fd5b506107b5610b3e366004614a86565b61190c565b348015610b4f57600080fd5b506107b560215481565b348015610b6557600080fd5b5060225461068890600160a81b900460ff1681565b348015610b8657600080fd5b50610656610b95366004614cd4565b611942565b348015610ba657600080fd5b50610656610bb5366004614c0f565b6119c9565b348015610bc657600080fd5b506107b560395481565b348015610bdc57600080fd5b50610656610beb366004614cd4565b611abf565b348015610bfc57600080fd5b50610656610c0b366004614cd4565b611b1d565b348015610c1c57600080fd5b50600a546106889060ff1681565b348015610c3657600080fd5b50610656611b4c565b348015610c4b57600080fd5b506107b5601b5481565b348015610c6157600080fd5b506107b5610c70366004614a86565b611b85565b348015610c8157600080fd5b50610656611c2d565b348015610c9657600080fd5b50610656610ca5366004614c59565b611ca1565b348015610cb657600080fd5b50610656610cc5366004614cd4565b611d0a565b348015610cd657600080fd5b50610656610ce5366004614cd4565b611d7b565b348015610cf657600080fd5b50610656610d05366004614bcf565b611daa565b348015610d1657600080fd5b5060205461090b9061010090046001600160a01b031681565b348015610d3b57600080fd5b50610656610d4a366004614a86565b612008565b348015610d5b57600080fd5b506107b5602a5481565b348015610d7157600080fd5b5060125461090b9061010090046001600160a01b031681565b348015610d9657600080fd5b506107b560085481565b348015610dac57600080fd5b50610656610dbb366004614b36565b6120c7565b348015610dcc57600080fd5b5061065661211c565b348015610de157600080fd5b506000546001600160a01b031661090b565b348015610dff57600080fd5b5060315461090b906001600160a01b031681565b348015610e1f57600080fd5b50610656610e2e366004614cd4565b612152565b348015610e3f57600080fd5b506107b560295481565b348015610e5557600080fd5b5060285461068890610100900460ff1681565b348015610e7457600080fd5b506107726121c5565b348015610e8957600080fd5b506107b5601d5481565b348015610e9f57600080fd5b506106566121d4565b348015610eb457600080fd5b5061090b610ec3366004614cd4565b612243565b348015610ed457600080fd5b5060225461068890600160b81b900460ff1681565b348015610ef557600080fd5b50610656610f04366004614b36565b61226d565b348015610f1557600080fd5b50610688610f24366004614b63565b6122c2565b348015610f3557600080fd5b506107b560095481565b348015610f4b57600080fd5b50610656610f5a366004614bcf565b6122cf565b348015610f6b57600080fd5b506107b5602d5481565b348015610f8157600080fd5b506107b560195481565b348015610f9757600080fd5b5060225461068890600160b01b900460ff1681565b348015610fb857600080fd5b506107b560155481565b348015610fce57600080fd5b50610656610fdd366004614cd4565b612587565b348015610fee57600080fd5b50610688610ffd366004614a86565b600c6020526000908152604090205460ff1681565b34801561101e57600080fd5b506107b5601a5481565b34801561103457600080fd5b50610656611043366004614b8e565b6125b6565b34801561105457600080fd5b506107b5602f5481565b34801561106a57600080fd5b50610656611079366004614cd4565b6126c7565b34801561108a57600080fd5b50610656611099366004614cd4565b6126f6565b3480156110aa57600080fd5b5060225461068890600160a01b900460ff1681565b3480156110cb57600080fd5b506107b560145481565b3480156110e157600080fd5b506110ea612725565b60408051938452602084019290925290820152606001610694565b34801561111157600080fd5b506107b5602c5481565b34801561112757600080fd5b5060225461068890600160c81b900460ff1681565b34801561114857600080fd5b50610656611157366004614a86565b612877565b34801561116857600080fd5b506028546106889060ff1681565b34801561118257600080fd5b506107b5611191366004614abe565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156111c857600080fd5b506107b560275481565b3480156111de57600080fd5b5060105461090b906001600160a01b031681565b3480156111fe57600080fd5b5061065661120d366004614cd4565b6128c3565b34801561121e57600080fd5b5060035461090b906001600160a01b031681565b34801561123e57600080fd5b5061065661124d366004614c59565b612938565b34801561125e57600080fd5b506107b560375481565b34801561127457600080fd5b506107b560305481565b34801561128a57600080fd5b50610656611299366004614a86565b612975565b3480156112aa57600080fd5b506028546106889062010000900460ff1681565b6000546001600160a01b031633146112f15760405162461bcd60e51b81526004016112e890614d84565b60405180910390fd5b602154156113305760405162461bcd60e51b815260206004820152600c60248201526b30b63932b0b23c9037b832b760a11b60448201526064016112e8565b43602155565b6000546001600160a01b031633146113605760405162461bcd60e51b81526004016112e890614d84565b6001600160a01b03919091166000908152603560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146113b55760405162461bcd60e51b81526004016112e890614d84565b806113f35760405162461bcd60e51b815260206004820152600e60248201526d067726561746572207468616e20360941b60448201526064016112e8565b602955565b6000546001600160a01b031633146114225760405162461bcd60e51b81526004016112e890614d84565b6022805460ff60b81b19169055565b60606004805461144090614ed4565b80601f016020809104026020016040519081016040528092919081815260200182805461146c90614ed4565b80156114b95780601f1061148e576101008083540402835291602001916114b9565b820191906000526020600020905b81548152906001019060200180831161149c57829003601f168201915b5050505050905090565b6000546001600160a01b031633146114ed5760405162461bcd60e51b81526004016112e890614d84565b602680549115156101000261ff0019909216919091179055565b6000611514338484612a3b565b50600192915050565b6000546001600160a01b031633146115475760405162461bcd60e51b81526004016112e890614d84565b6022805460ff60c81b19169055565b6000546001600160a01b031633146115805760405162461bcd60e51b81526004016112e890614d84565b600755565b6000546001600160a01b031633146115af5760405162461bcd60e51b81526004016112e890614d84565b60005b8281101561162e5781600b60008686858181106115df57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906115f49190614a86565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061162681614f09565b9150506115b2565b50505050565b6000546001600160a01b0316331461165e5760405162461bcd60e51b81526004016112e890614d84565b6000603255565b6000546001600160a01b0316331461168f5760405162461bcd60e51b81526004016112e890614d84565b60005b818110156117af576022546000906001600160a01b03166370a082318585858181106116ce57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906116e39190614a86565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b15801561172257600080fd5b505afa158015611736573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175a9190614cec565b111561179d5761179d83838381811061178357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906117989190614a86565b612a9d565b806117a781614f09565b915050611692565b505050565b6000546001600160a01b031633146117de5760405162461bcd60e51b81526004016112e890614d84565b6001600160a01b03919091166000908152602460205260409020805460ff1916911515919091179055565b6000611816848484612b82565b6001600160a01b038416600090815260026020908152604080832033845290915290205460001914611896576001600160a01b0384166000908152600260209081526040808320338452909152902054611871908390614ebd565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b5060019392505050565b6000546001600160a01b031633146118ca5760405162461bcd60e51b81526004016112e890614d84565b603955565b6000546001600160a01b031633146118f95760405162461bcd60e51b81526004016112e890614d84565b602b805460ff1916911515919091179055565b6001600160a01b0381166000908152600c602052604081205460ff161561193557506001919050565b506000919050565b919050565b6000546001600160a01b0316331461196c5760405162461bcd60e51b81526004016112e890614d84565b62030d4081101580156119825750621e84808111155b6119c45760405162461bcd60e51b8152602060048201526013602482015272746f6f2068696768206f7220746f6f206c6f7760681b60448201526064016112e8565b602c55565b6000546001600160a01b031633146119f35760405162461bcd60e51b81526004016112e890614d84565b602254600160b01b900460ff16611a425760405162461bcd60e51b81526020600482015260136024820152721c995dd85c99131a5cdd08191a5cd8589b1959606a1b60448201526064016112e8565b60005b8281101561162e5781600c6000868685818110611a7257634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611a879190614a86565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611ab881614f09565b9050611a45565b6003546001600160a01b0316331480611ae257506000546001600160a01b031633145b611b185760405162461bcd60e51b815260206004820152600760248201526610a33ab73232b960c91b60448201526064016112e8565b602555565b6000546001600160a01b03163314611b475760405162461bcd60e51b81526004016112e890614d84565b602a55565b6000546001600160a01b03163314611b765760405162461bcd60e51b81526004016112e890614d84565b6022805460ff60c01b19169055565b6022546000906001600160a01b038381169116148015611baf57506022546001600160a01b031633145b8015611bbd575060265460ff165b15611c11576022546001600160a01b0316600090815260016020526040902054611c115760405162461bcd60e51b81526020600482015260056024820152642173796e6360d81b60448201526064016112e8565b506001600160a01b031660009081526001602052604090205490565b6000546001600160a01b03163314611c575760405162461bcd60e51b81526004016112e890614d84565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314611ccb5760405162461bcd60e51b81526004016112e890614d84565b8015611d0157601b54601a54601954601854611ce79190614e66565b611cf19190614e66565b611cfb9190614e66565b602d5550565b6000602d555b50565b6000546001600160a01b03163314611d345760405162461bcd60e51b81526004016112e890614d84565b6109c4811115611d765760405162461bcd60e51b815260206004820152600d60248201526c616464204c70203e203235202160981b60448201526064016112e8565b602e55565b6000546001600160a01b03163314611da55760405162461bcd60e51b81526004016112e890614d84565b600955565b6000546001600160a01b03163314611dd45760405162461bcd60e51b81526004016112e890614d84565b808067ffffffffffffffff811115611dfc57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611e25578160200160208202803683370190505b508051611e3a916023916020909101906149ab565b5060005b81811015611ed757838382818110611e6657634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611e7b9190614a86565b60238281548110611e9c57634e487b7160e01b600052603260045260246000fd5b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905580611ecf81614f09565b915050611e3e565b50601054602380546001600160a01b0390921691600090611f0857634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614611f6a5760405162461bcd60e51b815260206004820152601860248201527f646f6e742073757070726f74207468697320706174682031000000000000000060448201526064016112e8565b60205461010090046001600160a01b03166023611f88600184614ebd565b81548110611fa657634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316146117af5760405162461bcd60e51b815260206004820152601860248201527f646f6e742073757070726f74207468697320706174682032000000000000000060448201526064016112e8565b6000546001600160a01b031633146120325760405162461bcd60e51b81526004016112e890614d84565b60196001600160a01b0382163b111561208d5760405162461bcd60e51b815260206004820152601a60248201527f66756e6461646472657373206973206120636f6e74726163742000000000000060448201526064016112e8565b600380546001600160a01b039092166001600160a01b0319909216821790556000908152600b60205260409020805460ff19166001179055565b6000546001600160a01b031633146120f15760405162461bcd60e51b81526004016112e890614d84565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146121465760405162461bcd60e51b81526004016112e890614d84565b601e805460ff19169055565b6000546001600160a01b0316331461217c5760405162461bcd60e51b81526004016112e890614d84565b6109c48111156121c05760405162461bcd60e51b815260206004820152600f60248201526e7472616e73666572203e203235202160881b60448201526064016112e8565b602d55565b60606005805461144090614ed4565b6000546001600160a01b031633146121fe5760405162461bcd60e51b81526004016112e890614d84565b6032541561223d5760405162461bcd60e51b815260206004820152600c60248201526b0737461727465644164644c560a41b60448201526064016112e8565b43603255565b6023818154811061225357600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031633146122975760405162461bcd60e51b81526004016112e890614d84565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6000611514338484612b82565b6000546001600160a01b031633146122f95760405162461bcd60e51b81526004016112e890614d84565b602254600160c81b900460ff166123485760405162461bcd60e51b81526020600482015260136024820152721d185e0818da185b99d948191a5cd8589b1959606a1b60448201526064016112e8565b8181600081811061236957634e487b7160e01b600052603260045260246000fd5b6020029190910135601455508181600181811061239657634e487b7160e01b600052603260045260246000fd5b602002919091013560155550818160028181106123c357634e487b7160e01b600052603260045260246000fd5b602002919091013560165550818160038181106123f057634e487b7160e01b600052603260045260246000fd5b6020029190910135601755508181600481811061241d57634e487b7160e01b600052603260045260246000fd5b6020029190910135601855508181600581811061244a57634e487b7160e01b600052603260045260246000fd5b6020029190910135601955508181600681811061247757634e487b7160e01b600052603260045260246000fd5b6020029190910135601a5550818160078181106124a457634e487b7160e01b600052603260045260246000fd5b90506020020135601b819055506109c46017546014546015546016546124ca9190614e66565b6124d49190614e66565b6124de9190614e66565b1061251a5760405162461bcd60e51b815260206004820152600c60248201526b0cccaca40e8dede40d0d2ced60a31b60448201526064016112e8565b6109c4601b54601854601954601a546125339190614e66565b61253d9190614e66565b6125479190614e66565b106125835760405162461bcd60e51b815260206004820152600c60248201526b0cccaca40e8dede40d0d2ced60a31b60448201526064016112e8565b5050565b6000546001600160a01b031633146125b15760405162461bcd60e51b81526004016112e890614d84565b602f55565b6003546001600160a01b03163314806125d957506000546001600160a01b031633145b61260f5760405162461bcd60e51b815260206004820152600760248201526610a33ab73232b960c91b60448201526064016112e8565b60405163a9059cbb60e01b81526001600160a01b0382811660048301526024820184905284169063a9059cbb90604401602060405180830381600087803b15801561265957600080fd5b505af115801561266d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126919190614c75565b506040516001600160a01b038216904780156108fc02916000818181858888f1935050505015801561162e573d6000803e3d6000fd5b6000546001600160a01b031633146126f15760405162461bcd60e51b81526004016112e890614d84565b600855565b6000546001600160a01b031633146127205760405162461bcd60e51b81526004016112e890614d84565b603755565b600080600080602260009054906101000a90046001600160a01b03169050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561277f57600080fd5b505afa158015612793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127b79190614c91565b506010546001600160701b039283169450911691506001600160a01b0316308110156127e8578296508195506127ef565b8196508295505b6022546040516370a0823160e01b81526001600160a01b039182166004820152908216906370a082319060240160206040518083038186803b15801561283457600080fd5b505afa158015612848573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286c9190614cec565b945050505050909192565b6000546001600160a01b031633146128a15760405162461bcd60e51b81526004016112e890614d84565b603180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146128ed5760405162461bcd60e51b81526004016112e890614d84565b60038111156129335760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b60448201526064016112e8565b602755565b6000546001600160a01b031633146129625760405162461bcd60e51b81526004016112e890614d84565b6026805460ff1916911515919091179055565b6000546001600160a01b0316331461299f5760405162461bcd60e51b81526004016112e890614d84565b6001600160a01b0381166129e05760405162461bcd60e51b815260206004820152600860248201526706e657720697320360c41b60448201526064016112e8565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60196001600160a01b0382163b1115612ab35750565b6001600160a01b038116600090815260346020526040902054611d07576033541580612b1e5750806001600160a01b03166033600081548110612b0657634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614155b15611d0757603380546001600160a01b0383166000818152603460205260408120839055600183018455929092527f82a75bdeeae8604d839476ae9efd8b0e15aa447e21bfd7f41283bb54e22c9a820180546001600160a01b031916909117905550565b6001600160a01b03831660009081526001602052604090205481811015612bde5760405162461bcd60e51b815260206004820152601060248201526f0c4c2d8c2dcc6ca9cdee88adcdeeaced60831b60448201526064016112e8565b6000612be98561190c565b1115612c285760405162461bcd60e51b815260206004820152600e60248201526d6973526577617264203e2030202160901b60448201526064016112e8565b602254600090819081908190819081906001600160a01b038a81169116148015612c6157503360009081526024602052604090205460ff165b8015612c755750326001600160a01b038b16145b15612cb957612c83886132d4565b9050600081118015612ca0575060196001600160a01b038b163b11155b15612cb9576028805461ff001916610100179055600191505b6022546000906001600160a01b038c811691161415612cf957612cdb8961333f565b90508015612cf9576028805462ff0000191662010000179055600193505b6001600160a01b038b166000908152600b602052604090205460ff16158015612d3b57506001600160a01b038a166000908152600b602052604090205460ff16155b8015612d4e5750602654610100900460ff165b8015612d5c57506000602754115b8015612da257506001600160a01b038b1660009081526011602052604090205460ff1680612da257506001600160a01b038a1660009081526011602052604090205460ff165b15612e26576000805b602754811015612e095760408051602081018390529081018c90524260608201526080016040516020818303038152906040528051906020012060001c9150612df68d83600161341d565b5080612e0181614f09565b915050612dab565b50602754612e18906001614e9e565b612e22908b614ebd565b9950505b602154158015612e3f5750602254600160a01b900460ff165b15612f24576001600160a01b038b166000908152600b602052604090205460ff16158015612e8657506001600160a01b038a166000908152600b602052604090205460ff16155b8015612eab57506001600160a01b038b1660009081526011602052604090205460ff16155b8015612ed057506001600160a01b038a1660009081526011602052604090205460ff16155b15612f245760196001600160a01b038b163b1115612f245760405162461bcd60e51b8152602060048201526011602482015270063616e7420616464206f74686572206c7607c1b60448201526064016112e8565b6001600160a01b038b1660009081526011602052604090205460ff1680612f6357506001600160a01b038a1660009081526011602052604090205460ff165b1561324e576001600160a01b038b166000908152600b602052604090205460ff16158015612faa57506001600160a01b038a166000908152600b602052604090205460ff16155b1561322857602254600160a01b900460ff16156130145760215415158080612fdc57506032546000108015612fdc5750835b6130125760405162461bcd60e51b815260206004820152600760248201526670617573696e6760c81b60448201526064016112e8565b505b602254600160a01b900460ff1680156130365750602254600160a81b900460ff165b8015613050575060075460215461304d9190614e66565b43105b801561307557506001600160a01b038a1660009081526011602052604090205460ff16155b1561309e576001600160a01b038a166000908152600c60205260409020805460ff191660011790555b601e5460ff1680156130c857506001600160a01b038b1660009081526011602052604090205460ff165b80156130e25750601f546021546130df9190614e66565b43105b1561314157326000908152601c6020526040902054431461311457326000908152601c60205260409020439055613141565b601d805490600061312483614f09565b91905055506131348b8b8b6134d2565b5050505050505050505050565b6001600160a01b038a1660009081526011602052604090205460ff16156132125760125460ff16158015613173575082155b156132125730600090815260016020526040902054602a54811115613210576000601954601a546018546015546016546014546131b09190614e66565b6131ba9190614e66565b6131c49190614e66565b6131ce9190614e66565b6131d89190614e66565b9050600060646029548d6131ec9190614e9e565b6131f69190614e7e565b9050828111156132035750815b61320d8183613558565b50505b505b8215801561321e575083155b1561322857600196505b6001600160a01b038a1660009081526011602052604090205460ff161561324e57600195505b6001600160a01b038b1660009081526011602052604090205460ff1615801561329057506001600160a01b038a1660009081526011602052604090205460ff16155b1561329a57600194505b6132aa8b8b8b8a8a8a898b613c4b565b6001600160a01b038b1630146131345785156132c9576132c98b612a9d565b613134602c5461404f565b6000806000806132e2612725565b925092509250600080841180156132f95750600083115b1561331657826133098588614e9e565b6133139190614e7e565b90505b6133208185614e66565b82106133365761333282878686614583565b5094505b50505050919050565b600080600061334c612725565b925050915081811161341657602254849061336f906001600160a01b0316611b85565b6133799190614ebd565b602260009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156133c757600080fd5b505afa1580156133db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ff9190614cec565b6134099086614e9e565b6134139190614e7e565b92505b5050919050565b6001600160a01b038316600090815260016020526040812080548391908390613447908490614ebd565b90915550506001600160a01b03831660009081526001602052604081208054849290613474908490614e66565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134c091815260200190565b60405180910390a35060019392505050565b6001600160a01b0383166000908152600160205260409020546134f6908290614ebd565b6001600160a01b038416600090815260016020526040812091909155606461351f83605a614e9e565b6135299190614e7e565b6003549091506135449085906001600160a01b0316836148ac565b61162e84846135538486614ebd565b6148ac565b6012805460ff19166001179055801580613570575081155b1561357a57613c3d565b600060155460195461358c9190614e66565b9050600082600261359d8487614e9e565b6135a79190614e7e565b6135b19190614e7e565b905060006135c0600284614e7e565b6135ca9085614ebd565b6010546040805160028082526060820183529394506001600160a01b039092169260009291602083019080368337019050509050308160008151811061362057634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260105482519116908290600190811061365f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152600f5416635c11d795613688868a614ebd565b60125460405160e084901b6001600160e01b03191681526136c29291600091879161010090046001600160a01b0316904290600401614da4565b600060405180830381600087803b1580156136dc57600080fd5b505af19250505080156136ed575060015b61372657604051600081527f6c37756e80daba6f4df0d5bfa6cddadfe23601acc1a27dc8d4aa427de91467889060200160405180910390a15b6012546040516370a0823160e01b81526001600160a01b03610100909204821660048201526000918416906370a082319060240160206040518083038186803b15801561377257600080fd5b505afa158015613786573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137aa9190614cec565b90508015613845576012546040516323b872dd60e01b81526101009091046001600160a01b039081166004830152306024830152604482018390528416906323b872dd90606401602060405180830381600087803b15801561380b57600080fd5b505af115801561381f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138439190614c75565b505b60008460026138548985614e9e565b61385e9190614e7e565b6138689190614e7e565b905060008560185460145461387d9190614e66565b6138879085614e9e565b6138919190614e7e565b905080156139e25760205460ff161561394257601054604051632e1a7d4d60e01b8152600481018390526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b1580156138ea57600080fd5b505af11580156138fe573d6000803e3d6000fd5b50506003546040516001600160a01b03909116925083156108fc02915083906000818181858888f1935050505015801561393c573d6000803e3d6000fd5b506139ca565b60035460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529086169063a9059cbb90604401602060405180830381600087803b15801561399057600080fd5b505af11580156139a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c89190614c75565b505b80603060008282546139dc9190614e66565b90915550505b6000871180156139f25750600082115b15613ad957600f5460105460315460405162e8e33760e81b81523060048201526001600160a01b039283166024820152604481018b90526064810186905260006084820181905260a482015290821660c48201524260e482015291169063e8e337009061010401606060405180830381600087803b158015613a7357600080fd5b505af1925050508015613aa3575060408051601f3d908101601f19168201909252613aa091810190614d04565b60015b613ad5576040517f0e944a8ae3ee1160b2678930fb103c5ceadb14ecbb4c16e311d7402f7011322c90600090a1613ad9565b5050505b601a54601654613ae99190614e66565b613afa575050505050505050613c3d565b60105460205461010090046001600160a01b0390811691161415613b25575050505050505050613c3d565b600f546040516370a0823160e01b81523060048201526001600160a01b0391821691635c11d79591908816906370a082319060240160206040518083038186803b158015613b7257600080fd5b505afa158015613b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613baa9190614cec565b6000602330426040518663ffffffff1660e01b8152600401613bd0959493929190614e14565b600060405180830381600087803b158015613bea57600080fd5b505af1925050508015613bfb575060015b613c3457604051600181527f6c37756e80daba6f4df0d5bfa6cddadfe23601acc1a27dc8d4aa427de91467889060200160405180910390a15b50505050505050505b50506012805460ff19169055565b6001600160a01b038816600090815260016020526040902054613c6f908790614ebd565b6001600160a01b0389166000908152600160205260408120919091558515613dd95760008515613cbd57601954601a54601854613cac9190614e66565b613cb69190614e66565b9050613d37565b601654601554601454613cd09190614e66565b613cda9190614e66565b602254909150600160b81b900460ff1615613d3757600854881115613d375760405162461bcd60e51b81526020600482015260136024820152721bdd995c881b585e08189d5e48185b5bdd5b9d606a1b60448201526064016112e8565b6000612710613d46838b614e9e565b613d509190614e7e565b90508015613d6f57613d628184614e66565b9250613d6f8b30836148ac565b600087613d98576127106017548b613d879190614e9e565b613d919190614e7e565b9050613db6565b612710601b548b613da99190614e9e565b613db39190614e7e565b90505b8015613dd557613dc68185614e66565b9350613dd58c61dead836148ac565b5050505b838015613dff57506001600160a01b0389166000908152600b602052604090205460ff16155b8015613e2457506001600160a01b0388166000908152600b602052604090205460ff16155b15613e67576000612710602d5489613e3c9190614e9e565b613e469190614e7e565b90508015613e6557613e588183614e66565b9150613e658a30836148ac565b505b828015613e8d57506001600160a01b0389166000908152600b602052604090205460ff16155b8015613eb257506001600160a01b0388166000908152600b602052604090205460ff16155b15613ef5576000612710602e5489613eca9190614e9e565b613ed49190614e7e565b90508015613ef357613ee68183614e66565b9150613ef38a30836148ac565b505b818015613f1b57506001600160a01b0389166000908152600b602052604090205460ff16155b8015613f4057506001600160a01b0388166000908152600b602052604090205460ff16155b15613f85576000612710602f5489613f589190614e9e565b613f629190614e7e565b90508015613f8357613f748183614e66565b9150613f838a61dead836148ac565b505b6001600160a01b0388166000908152600d602052604090205460ff16158015613fb75750602254600160c01b900460ff165b15614035576009546001600160a01b0389166000908152600160205260409020548290613fe5908a90614e66565b613fef9190614ebd565b11156140355760405162461bcd60e51b81526020600482015260156024820152741bdd995c881b585e081dd85b1b195d081b1a5b5a5d605a1b60448201526064016112e8565b6140448989613553848b614ebd565b505050505050505050565b436039546038546140609190614e66565b11156140695750565b6020546040516370a0823160e01b81523060048201526101009091046001600160a01b03169060009082906370a082319060240160206040518083038186803b1580156140b557600080fd5b505afa1580156140c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140ed9190614cec565b90506037548110156140fe57505050565b602254604080516318160ddd60e01b815290516001600160a01b039092169160009183916318160ddd91600480820192602092909190829003018186803b15801561414857600080fd5b505afa15801561415c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141809190614cec565b603354909150600090819081908180805a6040516370a0823160e01b81523060048201529091506001600160a01b038c16906370a082319060240160206040518083038186803b1580156141d357600080fd5b505afa1580156141e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061420b9190614cec565b6010546022546040516370a0823160e01b81526001600160a01b039182166004820152929c506000929116906370a082319060240160206040518083038186803b15801561425857600080fd5b505afa15801561426c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142909190614cec565b90505b8c841080156142a157508483105b156145705784603654106142b55760006036555b6033603654815481106142d857634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03918216600482018190529950908b16906370a082319060240160206040518083038186803b15801561432a57600080fd5b505afa15801561433e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143629190614cec565b965060008711801561438d57506001600160a01b03881660009081526035602052604090205460ff16155b1561452e578861439d888d614e9e565b6143a79190614e7e565b95506000896143b68984614e9e565b6143c09190614e7e565b905060255481101561441d57602554604080516001600160a01b038c168152602081018490528082019290925251600098507f9d1c4d86117dec85bf2a2b3b7bc515e3cd3c677dcd1578b97f0831d5621d8b079181900360600190a15b6000871180156144a357506040516370a0823160e01b815230600482015287906001600160a01b038f16906370a082319060240160206040518083038186803b15801561446957600080fd5b505afa15801561447d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144a19190614cec565b115b1561452c5760405163a9059cbb60e01b81526001600160a01b038a81166004830152602482018990528e169063a9059cbb90604401602060405180830381600087803b1580156144f257600080fd5b505af1158015614506573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061452a9190614c75565b505b505b5a6145399083614ebd565b6145439085614e66565b93505a60368054919350600061455883614f09565b9190505550828061456890614f09565b935050614293565b5050436038555050505050505050505050565b6000806000602260009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156145d657600080fd5b505afa1580156145ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061460e9190614cec565b90506000600f60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561466057600080fd5b505afa158015614674573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146989190614aa2565b6001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156146d057600080fd5b505afa1580156146e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147089190614aa2565b60225460408051637464fc3d60e01b815290519293506001600160a01b0380851615159360009390911691637464fc3d916004808301926020929190829003018186803b15801561475857600080fd5b505afa15801561476c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147909190614cec565b905081156148355780156148355760006147b26147ad898b614e9e565b614924565b905060006147bf83614924565b9050808211156148325760006147d58284614ebd565b6147df9088614e9e565b6147ea906008614e9e565b905060006147f9836008614e9e565b614804856011614e9e565b61480e9190614e66565b905061481a8183614e7e565b9850881561482f5761482c8989614e66565b97505b50505b50505b6000614841898c614ebd565b905084614869576103e86148586147ad8c84614e9e565b6148629190614ebd565b965061489e565b61489b896148778784614e9e565b6148819190614e7e565b8961488c888e614e9e565b6148969190614e7e565b614993565b96505b505050505094509492505050565b6001600160a01b0382166000908152600160205260409020546148d0908290614e66565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612a909085815260200190565b60006003821115614985575080600061493e600283614e7e565b614949906001614e66565b90505b8181101561497f579050806002816149648186614e7e565b61496e9190614e66565b6149789190614e7e565b905061494c565b50919050565b811561193d57506001919050565b60008183106149a257816149a4565b825b9392505050565b828054828255906000526020600020908101928215614a00579160200282015b82811115614a0057825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906149cb565b50614a0c929150614a10565b5090565b5b80821115614a0c5760008155600101614a11565b60008083601f840112614a36578182fd5b50813567ffffffffffffffff811115614a4d578182fd5b6020830191508360208260051b8501011115614a6857600080fd5b9250929050565b80516001600160701b038116811461193d57600080fd5b600060208284031215614a97578081fd5b81356149a481614f3a565b600060208284031215614ab3578081fd5b81516149a481614f3a565b60008060408385031215614ad0578081fd5b8235614adb81614f3a565b91506020830135614aeb81614f3a565b809150509250929050565b600080600060608486031215614b0a578081fd5b8335614b1581614f3a565b92506020840135614b2581614f3a565b929592945050506040919091013590565b60008060408385031215614b48578182fd5b8235614b5381614f3a565b91506020830135614aeb81614f4f565b60008060408385031215614b75578182fd5b8235614b8081614f3a565b946020939093013593505050565b600080600060608486031215614ba2578283fd5b8335614bad81614f3a565b9250602084013591506040840135614bc481614f3a565b809150509250925092565b60008060208385031215614be1578182fd5b823567ffffffffffffffff811115614bf7578283fd5b614c0385828601614a25565b90969095509350505050565b600080600060408486031215614c23578283fd5b833567ffffffffffffffff811115614c39578384fd5b614c4586828701614a25565b9094509250506020840135614bc481614f4f565b600060208284031215614c6a578081fd5b81356149a481614f4f565b600060208284031215614c86578081fd5b81516149a481614f4f565b600080600060608486031215614ca5578081fd5b614cae84614a6f565b9250614cbc60208501614a6f565b9150604084015163ffffffff81168114614bc4578182fd5b600060208284031215614ce5578081fd5b5035919050565b600060208284031215614cfd578081fd5b5051919050565b600080600060608486031215614d18578081fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b81811015614d5d57858101830151858201604001528201614d41565b81811115614d6e5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510b7bbb732b960d11b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015614df35784516001600160a01b031683529383019391830191600101614dce565b50506001600160a01b03969096166060850152505050608001529392505050565b600060a082018783526020878185015260a0604085015281875480845260c0860191508885528285209350845b81811015614df35784546001600160a01b031683526001948501949284019201614e41565b60008219821115614e7957614e79614f24565b500190565b600082614e9957634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615614eb857614eb8614f24565b500290565b600082821015614ecf57614ecf614f24565b500390565b600181811c90821680614ee857607f821691505b6020821081141561497f57634e487b7160e01b600052602260045260246000fd5b6000600019821415614f1d57614f1d614f24565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114611d0757600080fd5b8015158114611d0757600080fdfea2646970667358221220e4a786dad0bd789e0fc62375265a90d6af703c60fd9d33e2baa4c0b4888db6c064736f6c63430008040033608060405234801561001057600080fd5b5060405161015238038061015283398101604081905261002f916100b7565b60405163095ea7b360e01b815233600482015260001960248201526001600160a01b0382169063095ea7b390604401602060405180830381600087803b15801561007857600080fd5b505af115801561008c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b091906100e5565b5050610105565b6000602082840312156100c8578081fd5b81516001600160a01b03811681146100de578182fd5b9392505050565b6000602082840312156100f6578081fd5b815180151581146100de578182fd5b603f806101136000396000f3fe6080604052600080fdfea26469706673582212201b80c92196d7354931bcbde01e6935fb1a47c74de670789e8b63ececcb307a1464736f6c6343000804003300000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000009e99381e593a5e4bbac00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009e99381e593a5e4bbac00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000000000000000000000a269f45076947a652064bcea3ea448424d595af400000000000000000000000055d398326f99059ff775485246999027b319795500000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e0000000000000000000000004edde409dbe096e3c41c6a8c9ac079aa4be2c0a700000000000000000000000055d398326f99059ff775485246999027b319795500000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000c9f2c9cd04674edea40000000000000000000000000000000000000000000000002e87669c308736a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e87669c308736a0400000000000000000000000000000000000000000000000000000000000000000000960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000096000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106106355760003560e01c80637959473611610329578063adc7955d116101b6578063d285e6ab11610102578063e5c2b0a6116100a0578063eb10b7411161007a578063eb10b74114611252578063ef6e4f1714611268578063f2fde38b1461127e578063fa3c49471461129e57600080fd5b8063e5c2b0a6146111f2578063e82bef2914611212578063ea10510e1461123257600080fd5b8063dac1dcfe116100dc578063dac1dcfe1461115c578063dd62ed3e14611176578063e32759cf146111bc578063e5a6b10f146111d257600080fd5b8063d285e6ab14611105578063d59864331461111b578063d710569b1461113c57600080fd5b8063bfac5ee01161016f578063c213d62d11610149578063c213d62d1461107e578063c92d567e1461109e578063ce0192f9146110bf578063ce4d9f15146110d557600080fd5b8063bfac5ee014611028578063bfc3137e14611048578063c0aa931e1461105e57600080fd5b8063adc7955d14610f75578063b02d757f14610f8b578063b9fbc49d14610fac578063bba30f8f14610fc2578063bd25bf2914610fe2578063be4fe9a51461101257600080fd5b80638f02bb5b116102755780639cc0e3c71161022e578063a9059cbb11610208578063a9059cbb14610f09578063aa4bde2814610f29578063aa582b4214610f3f578063acb2ad6f14610f5f57600080fd5b80639cc0e3c714610ea8578063a23270d714610ec8578063a842486114610ee957600080fd5b80638f02bb5b14610e135780638f6cd17d14610e33578063948df71414610e4957806395d89b4114610e6857806395e3667914610e7d578063992db38f14610e9357600080fd5b806386917524116102e25780638c2fc7ad116102bc5780638c2fc7ad14610da05780638d84917514610dc05780638da5cb5b14610dd55780638e1e083814610df357600080fd5b80638691752414610d4f5780638718b24f14610d6557806388e765ff14610d8a57600080fd5b80637959473614610c8a57806379dc880c14610caa5780637db1342c14610cca57806381d09def14610cea5780638322fff214610d0a57806385dc300414610d2f57600080fd5b8063255412d9116104c25780634a9a77401161040e57806363d27d99116103ac578063697cfc1911610386578063697cfc1914610c2a5780636b61136814610c3f57806370a0823114610c55578063715018a614610c7557600080fd5b806363d27d9914610bd05780636402511e14610bf057806369768b5014610c1057600080fd5b80635a7ba73c116103e85780635a7ba73c14610b59578063605324f214610b7a5780636108a3db14610b9a578063621823e614610bba57600080fd5b80634a9a774014610b035780634d5ce03814610b23578063553193ca14610b4357600080fd5b80633bfe62ca1161047b57806340aa81fe1161045557806340aa81fe14610a7d5780634188bf5a14610aad5780634482004e14610acd57806346c123b614610ae357600080fd5b80633bfe62ca14610a0a5780633c11100d14610a205780633ccfdbcd14610a5057600080fd5b8063255412d9146109795780632dab693f1461098f578063313ce567146109a557806335c96089146109ba5780633b1cd187146109d45780633bb82eb6146109ea57600080fd5b806314a432c9116105815780631846a5a41161053a578063206c17bb11610514578063206c17bb146108eb57806320ae218a146109235780632171dcc91461093957806323b872dd1461095957600080fd5b80631846a5a41461089757806318d12855146108b65780631dbbaebd146108cb57600080fd5b806314a432c9146107f8578063150e4c471461081857806315d07d8214610838578063172246fc1461085257806317417bb81461086c57806318160ddd1461088257600080fd5b8063060e304e116105ee57806307313d8d116105c857806307313d8d1461077f57806307c3adf01461079f578063095ea7b3146107c35780630f890b86146107e357600080fd5b8063060e304e14610728578063063be69e1461074857806306fdde031461075d57600080fd5b806301339c211461064157806301873d8f1461065857806301986fad1461069d57806303da2b23146106cd57806304c23ffe146106ee57806305833c2b1461070857600080fd5b3661063c57005b600080fd5b34801561064d57600080fd5b506106566112be565b005b34801561066457600080fd5b50610688610673366004614a86565b60246020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156106a957600080fd5b506106886106b8366004614a86565b600b6020526000908152604090205460ff1681565b3480156106d957600080fd5b5060225461068890600160c01b900460ff1681565b3480156106fa57600080fd5b50602b546106889060ff1681565b34801561071457600080fd5b50610656610723366004614b36565b611336565b34801561073457600080fd5b50610656610743366004614cd4565b61138b565b34801561075457600080fd5b506106566113f8565b34801561076957600080fd5b50610772611431565b6040516106949190614d31565b34801561078b57600080fd5b5061065661079a366004614c59565b6114c3565b3480156107ab57600080fd5b506107b560165481565b604051908152602001610694565b3480156107cf57600080fd5b506106886107de366004614b63565b611507565b3480156107ef57600080fd5b5061065661151d565b34801561080457600080fd5b50610656610813366004614cd4565b611556565b34801561082457600080fd5b50610656610833366004614c0f565b611585565b34801561084457600080fd5b506020546106889060ff1681565b34801561085e57600080fd5b50601e546106889060ff1681565b34801561087857600080fd5b506107b5601f5481565b34801561088e57600080fd5b50600e546107b5565b3480156108a357600080fd5b5060265461068890610100900460ff1681565b3480156108c257600080fd5b50610656611634565b3480156108d757600080fd5b506106566108e6366004614bcf565b611665565b3480156108f757600080fd5b50600f5461090b906001600160a01b031681565b6040516001600160a01b039091168152602001610694565b34801561092f57600080fd5b506107b560255481565b34801561094557600080fd5b50610656610954366004614b36565b6117b4565b34801561096557600080fd5b50610688610974366004614af6565b611809565b34801561098557600080fd5b506107b560175481565b34801561099b57600080fd5b506107b560075481565b3480156109b157600080fd5b506006546107b5565b3480156109c657600080fd5b506026546106889060ff1681565b3480156109e057600080fd5b506107b5602e5481565b3480156109f657600080fd5b50610656610a05366004614cd4565b6118a0565b348015610a1657600080fd5b506107b560185481565b348015610a2c57600080fd5b50610688610a3b366004614a86565b60116020526000908152604090205460ff1681565b348015610a5c57600080fd5b506107b5610a6b366004614a86565b601c6020526000908152604090205481565b348015610a8957600080fd5b50610688610a98366004614a86565b600d6020526000908152604090205460ff1681565b348015610ab957600080fd5b5060225461090b906001600160a01b031681565b348015610ad957600080fd5b506107b560325481565b348015610aef57600080fd5b50610656610afe366004614c59565b6118cf565b348015610b0f57600080fd5b5060135461090b906001600160a01b031681565b348015610b2f57600080fd5b506107b5610b3e366004614a86565b61190c565b348015610b4f57600080fd5b506107b560215481565b348015610b6557600080fd5b5060225461068890600160a81b900460ff1681565b348015610b8657600080fd5b50610656610b95366004614cd4565b611942565b348015610ba657600080fd5b50610656610bb5366004614c0f565b6119c9565b348015610bc657600080fd5b506107b560395481565b348015610bdc57600080fd5b50610656610beb366004614cd4565b611abf565b348015610bfc57600080fd5b50610656610c0b366004614cd4565b611b1d565b348015610c1c57600080fd5b50600a546106889060ff1681565b348015610c3657600080fd5b50610656611b4c565b348015610c4b57600080fd5b506107b5601b5481565b348015610c6157600080fd5b506107b5610c70366004614a86565b611b85565b348015610c8157600080fd5b50610656611c2d565b348015610c9657600080fd5b50610656610ca5366004614c59565b611ca1565b348015610cb657600080fd5b50610656610cc5366004614cd4565b611d0a565b348015610cd657600080fd5b50610656610ce5366004614cd4565b611d7b565b348015610cf657600080fd5b50610656610d05366004614bcf565b611daa565b348015610d1657600080fd5b5060205461090b9061010090046001600160a01b031681565b348015610d3b57600080fd5b50610656610d4a366004614a86565b612008565b348015610d5b57600080fd5b506107b5602a5481565b348015610d7157600080fd5b5060125461090b9061010090046001600160a01b031681565b348015610d9657600080fd5b506107b560085481565b348015610dac57600080fd5b50610656610dbb366004614b36565b6120c7565b348015610dcc57600080fd5b5061065661211c565b348015610de157600080fd5b506000546001600160a01b031661090b565b348015610dff57600080fd5b5060315461090b906001600160a01b031681565b348015610e1f57600080fd5b50610656610e2e366004614cd4565b612152565b348015610e3f57600080fd5b506107b560295481565b348015610e5557600080fd5b5060285461068890610100900460ff1681565b348015610e7457600080fd5b506107726121c5565b348015610e8957600080fd5b506107b5601d5481565b348015610e9f57600080fd5b506106566121d4565b348015610eb457600080fd5b5061090b610ec3366004614cd4565b612243565b348015610ed457600080fd5b5060225461068890600160b81b900460ff1681565b348015610ef557600080fd5b50610656610f04366004614b36565b61226d565b348015610f1557600080fd5b50610688610f24366004614b63565b6122c2565b348015610f3557600080fd5b506107b560095481565b348015610f4b57600080fd5b50610656610f5a366004614bcf565b6122cf565b348015610f6b57600080fd5b506107b5602d5481565b348015610f8157600080fd5b506107b560195481565b348015610f9757600080fd5b5060225461068890600160b01b900460ff1681565b348015610fb857600080fd5b506107b560155481565b348015610fce57600080fd5b50610656610fdd366004614cd4565b612587565b348015610fee57600080fd5b50610688610ffd366004614a86565b600c6020526000908152604090205460ff1681565b34801561101e57600080fd5b506107b5601a5481565b34801561103457600080fd5b50610656611043366004614b8e565b6125b6565b34801561105457600080fd5b506107b5602f5481565b34801561106a57600080fd5b50610656611079366004614cd4565b6126c7565b34801561108a57600080fd5b50610656611099366004614cd4565b6126f6565b3480156110aa57600080fd5b5060225461068890600160a01b900460ff1681565b3480156110cb57600080fd5b506107b560145481565b3480156110e157600080fd5b506110ea612725565b60408051938452602084019290925290820152606001610694565b34801561111157600080fd5b506107b5602c5481565b34801561112757600080fd5b5060225461068890600160c81b900460ff1681565b34801561114857600080fd5b50610656611157366004614a86565b612877565b34801561116857600080fd5b506028546106889060ff1681565b34801561118257600080fd5b506107b5611191366004614abe565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156111c857600080fd5b506107b560275481565b3480156111de57600080fd5b5060105461090b906001600160a01b031681565b3480156111fe57600080fd5b5061065661120d366004614cd4565b6128c3565b34801561121e57600080fd5b5060035461090b906001600160a01b031681565b34801561123e57600080fd5b5061065661124d366004614c59565b612938565b34801561125e57600080fd5b506107b560375481565b34801561127457600080fd5b506107b560305481565b34801561128a57600080fd5b50610656611299366004614a86565b612975565b3480156112aa57600080fd5b506028546106889062010000900460ff1681565b6000546001600160a01b031633146112f15760405162461bcd60e51b81526004016112e890614d84565b60405180910390fd5b602154156113305760405162461bcd60e51b815260206004820152600c60248201526b30b63932b0b23c9037b832b760a11b60448201526064016112e8565b43602155565b6000546001600160a01b031633146113605760405162461bcd60e51b81526004016112e890614d84565b6001600160a01b03919091166000908152603560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146113b55760405162461bcd60e51b81526004016112e890614d84565b806113f35760405162461bcd60e51b815260206004820152600e60248201526d067726561746572207468616e20360941b60448201526064016112e8565b602955565b6000546001600160a01b031633146114225760405162461bcd60e51b81526004016112e890614d84565b6022805460ff60b81b19169055565b60606004805461144090614ed4565b80601f016020809104026020016040519081016040528092919081815260200182805461146c90614ed4565b80156114b95780601f1061148e576101008083540402835291602001916114b9565b820191906000526020600020905b81548152906001019060200180831161149c57829003601f168201915b5050505050905090565b6000546001600160a01b031633146114ed5760405162461bcd60e51b81526004016112e890614d84565b602680549115156101000261ff0019909216919091179055565b6000611514338484612a3b565b50600192915050565b6000546001600160a01b031633146115475760405162461bcd60e51b81526004016112e890614d84565b6022805460ff60c81b19169055565b6000546001600160a01b031633146115805760405162461bcd60e51b81526004016112e890614d84565b600755565b6000546001600160a01b031633146115af5760405162461bcd60e51b81526004016112e890614d84565b60005b8281101561162e5781600b60008686858181106115df57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906115f49190614a86565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061162681614f09565b9150506115b2565b50505050565b6000546001600160a01b0316331461165e5760405162461bcd60e51b81526004016112e890614d84565b6000603255565b6000546001600160a01b0316331461168f5760405162461bcd60e51b81526004016112e890614d84565b60005b818110156117af576022546000906001600160a01b03166370a082318585858181106116ce57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906116e39190614a86565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b15801561172257600080fd5b505afa158015611736573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061175a9190614cec565b111561179d5761179d83838381811061178357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906117989190614a86565b612a9d565b806117a781614f09565b915050611692565b505050565b6000546001600160a01b031633146117de5760405162461bcd60e51b81526004016112e890614d84565b6001600160a01b03919091166000908152602460205260409020805460ff1916911515919091179055565b6000611816848484612b82565b6001600160a01b038416600090815260026020908152604080832033845290915290205460001914611896576001600160a01b0384166000908152600260209081526040808320338452909152902054611871908390614ebd565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b5060019392505050565b6000546001600160a01b031633146118ca5760405162461bcd60e51b81526004016112e890614d84565b603955565b6000546001600160a01b031633146118f95760405162461bcd60e51b81526004016112e890614d84565b602b805460ff1916911515919091179055565b6001600160a01b0381166000908152600c602052604081205460ff161561193557506001919050565b506000919050565b919050565b6000546001600160a01b0316331461196c5760405162461bcd60e51b81526004016112e890614d84565b62030d4081101580156119825750621e84808111155b6119c45760405162461bcd60e51b8152602060048201526013602482015272746f6f2068696768206f7220746f6f206c6f7760681b60448201526064016112e8565b602c55565b6000546001600160a01b031633146119f35760405162461bcd60e51b81526004016112e890614d84565b602254600160b01b900460ff16611a425760405162461bcd60e51b81526020600482015260136024820152721c995dd85c99131a5cdd08191a5cd8589b1959606a1b60448201526064016112e8565b60005b8281101561162e5781600c6000868685818110611a7257634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611a879190614a86565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055611ab881614f09565b9050611a45565b6003546001600160a01b0316331480611ae257506000546001600160a01b031633145b611b185760405162461bcd60e51b815260206004820152600760248201526610a33ab73232b960c91b60448201526064016112e8565b602555565b6000546001600160a01b03163314611b475760405162461bcd60e51b81526004016112e890614d84565b602a55565b6000546001600160a01b03163314611b765760405162461bcd60e51b81526004016112e890614d84565b6022805460ff60c01b19169055565b6022546000906001600160a01b038381169116148015611baf57506022546001600160a01b031633145b8015611bbd575060265460ff165b15611c11576022546001600160a01b0316600090815260016020526040902054611c115760405162461bcd60e51b81526020600482015260056024820152642173796e6360d81b60448201526064016112e8565b506001600160a01b031660009081526001602052604090205490565b6000546001600160a01b03163314611c575760405162461bcd60e51b81526004016112e890614d84565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314611ccb5760405162461bcd60e51b81526004016112e890614d84565b8015611d0157601b54601a54601954601854611ce79190614e66565b611cf19190614e66565b611cfb9190614e66565b602d5550565b6000602d555b50565b6000546001600160a01b03163314611d345760405162461bcd60e51b81526004016112e890614d84565b6109c4811115611d765760405162461bcd60e51b815260206004820152600d60248201526c616464204c70203e203235202160981b60448201526064016112e8565b602e55565b6000546001600160a01b03163314611da55760405162461bcd60e51b81526004016112e890614d84565b600955565b6000546001600160a01b03163314611dd45760405162461bcd60e51b81526004016112e890614d84565b808067ffffffffffffffff811115611dfc57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015611e25578160200160208202803683370190505b508051611e3a916023916020909101906149ab565b5060005b81811015611ed757838382818110611e6657634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611e7b9190614a86565b60238281548110611e9c57634e487b7160e01b600052603260045260246000fd5b600091825260209091200180546001600160a01b0319166001600160a01b039290921691909117905580611ecf81614f09565b915050611e3e565b50601054602380546001600160a01b0390921691600090611f0857634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614611f6a5760405162461bcd60e51b815260206004820152601860248201527f646f6e742073757070726f74207468697320706174682031000000000000000060448201526064016112e8565b60205461010090046001600160a01b03166023611f88600184614ebd565b81548110611fa657634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316146117af5760405162461bcd60e51b815260206004820152601860248201527f646f6e742073757070726f74207468697320706174682032000000000000000060448201526064016112e8565b6000546001600160a01b031633146120325760405162461bcd60e51b81526004016112e890614d84565b60196001600160a01b0382163b111561208d5760405162461bcd60e51b815260206004820152601a60248201527f66756e6461646472657373206973206120636f6e74726163742000000000000060448201526064016112e8565b600380546001600160a01b039092166001600160a01b0319909216821790556000908152600b60205260409020805460ff19166001179055565b6000546001600160a01b031633146120f15760405162461bcd60e51b81526004016112e890614d84565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146121465760405162461bcd60e51b81526004016112e890614d84565b601e805460ff19169055565b6000546001600160a01b0316331461217c5760405162461bcd60e51b81526004016112e890614d84565b6109c48111156121c05760405162461bcd60e51b815260206004820152600f60248201526e7472616e73666572203e203235202160881b60448201526064016112e8565b602d55565b60606005805461144090614ed4565b6000546001600160a01b031633146121fe5760405162461bcd60e51b81526004016112e890614d84565b6032541561223d5760405162461bcd60e51b815260206004820152600c60248201526b0737461727465644164644c560a41b60448201526064016112e8565b43603255565b6023818154811061225357600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031633146122975760405162461bcd60e51b81526004016112e890614d84565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6000611514338484612b82565b6000546001600160a01b031633146122f95760405162461bcd60e51b81526004016112e890614d84565b602254600160c81b900460ff166123485760405162461bcd60e51b81526020600482015260136024820152721d185e0818da185b99d948191a5cd8589b1959606a1b60448201526064016112e8565b8181600081811061236957634e487b7160e01b600052603260045260246000fd5b6020029190910135601455508181600181811061239657634e487b7160e01b600052603260045260246000fd5b602002919091013560155550818160028181106123c357634e487b7160e01b600052603260045260246000fd5b602002919091013560165550818160038181106123f057634e487b7160e01b600052603260045260246000fd5b6020029190910135601755508181600481811061241d57634e487b7160e01b600052603260045260246000fd5b6020029190910135601855508181600581811061244a57634e487b7160e01b600052603260045260246000fd5b6020029190910135601955508181600681811061247757634e487b7160e01b600052603260045260246000fd5b6020029190910135601a5550818160078181106124a457634e487b7160e01b600052603260045260246000fd5b90506020020135601b819055506109c46017546014546015546016546124ca9190614e66565b6124d49190614e66565b6124de9190614e66565b1061251a5760405162461bcd60e51b815260206004820152600c60248201526b0cccaca40e8dede40d0d2ced60a31b60448201526064016112e8565b6109c4601b54601854601954601a546125339190614e66565b61253d9190614e66565b6125479190614e66565b106125835760405162461bcd60e51b815260206004820152600c60248201526b0cccaca40e8dede40d0d2ced60a31b60448201526064016112e8565b5050565b6000546001600160a01b031633146125b15760405162461bcd60e51b81526004016112e890614d84565b602f55565b6003546001600160a01b03163314806125d957506000546001600160a01b031633145b61260f5760405162461bcd60e51b815260206004820152600760248201526610a33ab73232b960c91b60448201526064016112e8565b60405163a9059cbb60e01b81526001600160a01b0382811660048301526024820184905284169063a9059cbb90604401602060405180830381600087803b15801561265957600080fd5b505af115801561266d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126919190614c75565b506040516001600160a01b038216904780156108fc02916000818181858888f1935050505015801561162e573d6000803e3d6000fd5b6000546001600160a01b031633146126f15760405162461bcd60e51b81526004016112e890614d84565b600855565b6000546001600160a01b031633146127205760405162461bcd60e51b81526004016112e890614d84565b603755565b600080600080602260009054906101000a90046001600160a01b03169050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561277f57600080fd5b505afa158015612793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127b79190614c91565b506010546001600160701b039283169450911691506001600160a01b0316308110156127e8578296508195506127ef565b8196508295505b6022546040516370a0823160e01b81526001600160a01b039182166004820152908216906370a082319060240160206040518083038186803b15801561283457600080fd5b505afa158015612848573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061286c9190614cec565b945050505050909192565b6000546001600160a01b031633146128a15760405162461bcd60e51b81526004016112e890614d84565b603180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146128ed5760405162461bcd60e51b81526004016112e890614d84565b60038111156129335760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b60448201526064016112e8565b602755565b6000546001600160a01b031633146129625760405162461bcd60e51b81526004016112e890614d84565b6026805460ff1916911515919091179055565b6000546001600160a01b0316331461299f5760405162461bcd60e51b81526004016112e890614d84565b6001600160a01b0381166129e05760405162461bcd60e51b815260206004820152600860248201526706e657720697320360c41b60448201526064016112e8565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60196001600160a01b0382163b1115612ab35750565b6001600160a01b038116600090815260346020526040902054611d07576033541580612b1e5750806001600160a01b03166033600081548110612b0657634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031614155b15611d0757603380546001600160a01b0383166000818152603460205260408120839055600183018455929092527f82a75bdeeae8604d839476ae9efd8b0e15aa447e21bfd7f41283bb54e22c9a820180546001600160a01b031916909117905550565b6001600160a01b03831660009081526001602052604090205481811015612bde5760405162461bcd60e51b815260206004820152601060248201526f0c4c2d8c2dcc6ca9cdee88adcdeeaced60831b60448201526064016112e8565b6000612be98561190c565b1115612c285760405162461bcd60e51b815260206004820152600e60248201526d6973526577617264203e2030202160901b60448201526064016112e8565b602254600090819081908190819081906001600160a01b038a81169116148015612c6157503360009081526024602052604090205460ff165b8015612c755750326001600160a01b038b16145b15612cb957612c83886132d4565b9050600081118015612ca0575060196001600160a01b038b163b11155b15612cb9576028805461ff001916610100179055600191505b6022546000906001600160a01b038c811691161415612cf957612cdb8961333f565b90508015612cf9576028805462ff0000191662010000179055600193505b6001600160a01b038b166000908152600b602052604090205460ff16158015612d3b57506001600160a01b038a166000908152600b602052604090205460ff16155b8015612d4e5750602654610100900460ff165b8015612d5c57506000602754115b8015612da257506001600160a01b038b1660009081526011602052604090205460ff1680612da257506001600160a01b038a1660009081526011602052604090205460ff165b15612e26576000805b602754811015612e095760408051602081018390529081018c90524260608201526080016040516020818303038152906040528051906020012060001c9150612df68d83600161341d565b5080612e0181614f09565b915050612dab565b50602754612e18906001614e9e565b612e22908b614ebd565b9950505b602154158015612e3f5750602254600160a01b900460ff165b15612f24576001600160a01b038b166000908152600b602052604090205460ff16158015612e8657506001600160a01b038a166000908152600b602052604090205460ff16155b8015612eab57506001600160a01b038b1660009081526011602052604090205460ff16155b8015612ed057506001600160a01b038a1660009081526011602052604090205460ff16155b15612f245760196001600160a01b038b163b1115612f245760405162461bcd60e51b8152602060048201526011602482015270063616e7420616464206f74686572206c7607c1b60448201526064016112e8565b6001600160a01b038b1660009081526011602052604090205460ff1680612f6357506001600160a01b038a1660009081526011602052604090205460ff165b1561324e576001600160a01b038b166000908152600b602052604090205460ff16158015612faa57506001600160a01b038a166000908152600b602052604090205460ff16155b1561322857602254600160a01b900460ff16156130145760215415158080612fdc57506032546000108015612fdc5750835b6130125760405162461bcd60e51b815260206004820152600760248201526670617573696e6760c81b60448201526064016112e8565b505b602254600160a01b900460ff1680156130365750602254600160a81b900460ff165b8015613050575060075460215461304d9190614e66565b43105b801561307557506001600160a01b038a1660009081526011602052604090205460ff16155b1561309e576001600160a01b038a166000908152600c60205260409020805460ff191660011790555b601e5460ff1680156130c857506001600160a01b038b1660009081526011602052604090205460ff165b80156130e25750601f546021546130df9190614e66565b43105b1561314157326000908152601c6020526040902054431461311457326000908152601c60205260409020439055613141565b601d805490600061312483614f09565b91905055506131348b8b8b6134d2565b5050505050505050505050565b6001600160a01b038a1660009081526011602052604090205460ff16156132125760125460ff16158015613173575082155b156132125730600090815260016020526040902054602a54811115613210576000601954601a546018546015546016546014546131b09190614e66565b6131ba9190614e66565b6131c49190614e66565b6131ce9190614e66565b6131d89190614e66565b9050600060646029548d6131ec9190614e9e565b6131f69190614e7e565b9050828111156132035750815b61320d8183613558565b50505b505b8215801561321e575083155b1561322857600196505b6001600160a01b038a1660009081526011602052604090205460ff161561324e57600195505b6001600160a01b038b1660009081526011602052604090205460ff1615801561329057506001600160a01b038a1660009081526011602052604090205460ff16155b1561329a57600194505b6132aa8b8b8b8a8a8a898b613c4b565b6001600160a01b038b1630146131345785156132c9576132c98b612a9d565b613134602c5461404f565b6000806000806132e2612725565b925092509250600080841180156132f95750600083115b1561331657826133098588614e9e565b6133139190614e7e565b90505b6133208185614e66565b82106133365761333282878686614583565b5094505b50505050919050565b600080600061334c612725565b925050915081811161341657602254849061336f906001600160a01b0316611b85565b6133799190614ebd565b602260009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156133c757600080fd5b505afa1580156133db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ff9190614cec565b6134099086614e9e565b6134139190614e7e565b92505b5050919050565b6001600160a01b038316600090815260016020526040812080548391908390613447908490614ebd565b90915550506001600160a01b03831660009081526001602052604081208054849290613474908490614e66565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134c091815260200190565b60405180910390a35060019392505050565b6001600160a01b0383166000908152600160205260409020546134f6908290614ebd565b6001600160a01b038416600090815260016020526040812091909155606461351f83605a614e9e565b6135299190614e7e565b6003549091506135449085906001600160a01b0316836148ac565b61162e84846135538486614ebd565b6148ac565b6012805460ff19166001179055801580613570575081155b1561357a57613c3d565b600060155460195461358c9190614e66565b9050600082600261359d8487614e9e565b6135a79190614e7e565b6135b19190614e7e565b905060006135c0600284614e7e565b6135ca9085614ebd565b6010546040805160028082526060820183529394506001600160a01b039092169260009291602083019080368337019050509050308160008151811061362057634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260105482519116908290600190811061365f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152600f5416635c11d795613688868a614ebd565b60125460405160e084901b6001600160e01b03191681526136c29291600091879161010090046001600160a01b0316904290600401614da4565b600060405180830381600087803b1580156136dc57600080fd5b505af19250505080156136ed575060015b61372657604051600081527f6c37756e80daba6f4df0d5bfa6cddadfe23601acc1a27dc8d4aa427de91467889060200160405180910390a15b6012546040516370a0823160e01b81526001600160a01b03610100909204821660048201526000918416906370a082319060240160206040518083038186803b15801561377257600080fd5b505afa158015613786573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137aa9190614cec565b90508015613845576012546040516323b872dd60e01b81526101009091046001600160a01b039081166004830152306024830152604482018390528416906323b872dd90606401602060405180830381600087803b15801561380b57600080fd5b505af115801561381f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138439190614c75565b505b60008460026138548985614e9e565b61385e9190614e7e565b6138689190614e7e565b905060008560185460145461387d9190614e66565b6138879085614e9e565b6138919190614e7e565b905080156139e25760205460ff161561394257601054604051632e1a7d4d60e01b8152600481018390526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b1580156138ea57600080fd5b505af11580156138fe573d6000803e3d6000fd5b50506003546040516001600160a01b03909116925083156108fc02915083906000818181858888f1935050505015801561393c573d6000803e3d6000fd5b506139ca565b60035460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529086169063a9059cbb90604401602060405180830381600087803b15801561399057600080fd5b505af11580156139a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139c89190614c75565b505b80603060008282546139dc9190614e66565b90915550505b6000871180156139f25750600082115b15613ad957600f5460105460315460405162e8e33760e81b81523060048201526001600160a01b039283166024820152604481018b90526064810186905260006084820181905260a482015290821660c48201524260e482015291169063e8e337009061010401606060405180830381600087803b158015613a7357600080fd5b505af1925050508015613aa3575060408051601f3d908101601f19168201909252613aa091810190614d04565b60015b613ad5576040517f0e944a8ae3ee1160b2678930fb103c5ceadb14ecbb4c16e311d7402f7011322c90600090a1613ad9565b5050505b601a54601654613ae99190614e66565b613afa575050505050505050613c3d565b60105460205461010090046001600160a01b0390811691161415613b25575050505050505050613c3d565b600f546040516370a0823160e01b81523060048201526001600160a01b0391821691635c11d79591908816906370a082319060240160206040518083038186803b158015613b7257600080fd5b505afa158015613b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613baa9190614cec565b6000602330426040518663ffffffff1660e01b8152600401613bd0959493929190614e14565b600060405180830381600087803b158015613bea57600080fd5b505af1925050508015613bfb575060015b613c3457604051600181527f6c37756e80daba6f4df0d5bfa6cddadfe23601acc1a27dc8d4aa427de91467889060200160405180910390a15b50505050505050505b50506012805460ff19169055565b6001600160a01b038816600090815260016020526040902054613c6f908790614ebd565b6001600160a01b0389166000908152600160205260408120919091558515613dd95760008515613cbd57601954601a54601854613cac9190614e66565b613cb69190614e66565b9050613d37565b601654601554601454613cd09190614e66565b613cda9190614e66565b602254909150600160b81b900460ff1615613d3757600854881115613d375760405162461bcd60e51b81526020600482015260136024820152721bdd995c881b585e08189d5e48185b5bdd5b9d606a1b60448201526064016112e8565b6000612710613d46838b614e9e565b613d509190614e7e565b90508015613d6f57613d628184614e66565b9250613d6f8b30836148ac565b600087613d98576127106017548b613d879190614e9e565b613d919190614e7e565b9050613db6565b612710601b548b613da99190614e9e565b613db39190614e7e565b90505b8015613dd557613dc68185614e66565b9350613dd58c61dead836148ac565b5050505b838015613dff57506001600160a01b0389166000908152600b602052604090205460ff16155b8015613e2457506001600160a01b0388166000908152600b602052604090205460ff16155b15613e67576000612710602d5489613e3c9190614e9e565b613e469190614e7e565b90508015613e6557613e588183614e66565b9150613e658a30836148ac565b505b828015613e8d57506001600160a01b0389166000908152600b602052604090205460ff16155b8015613eb257506001600160a01b0388166000908152600b602052604090205460ff16155b15613ef5576000612710602e5489613eca9190614e9e565b613ed49190614e7e565b90508015613ef357613ee68183614e66565b9150613ef38a30836148ac565b505b818015613f1b57506001600160a01b0389166000908152600b602052604090205460ff16155b8015613f4057506001600160a01b0388166000908152600b602052604090205460ff16155b15613f85576000612710602f5489613f589190614e9e565b613f629190614e7e565b90508015613f8357613f748183614e66565b9150613f838a61dead836148ac565b505b6001600160a01b0388166000908152600d602052604090205460ff16158015613fb75750602254600160c01b900460ff165b15614035576009546001600160a01b0389166000908152600160205260409020548290613fe5908a90614e66565b613fef9190614ebd565b11156140355760405162461bcd60e51b81526020600482015260156024820152741bdd995c881b585e081dd85b1b195d081b1a5b5a5d605a1b60448201526064016112e8565b6140448989613553848b614ebd565b505050505050505050565b436039546038546140609190614e66565b11156140695750565b6020546040516370a0823160e01b81523060048201526101009091046001600160a01b03169060009082906370a082319060240160206040518083038186803b1580156140b557600080fd5b505afa1580156140c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140ed9190614cec565b90506037548110156140fe57505050565b602254604080516318160ddd60e01b815290516001600160a01b039092169160009183916318160ddd91600480820192602092909190829003018186803b15801561414857600080fd5b505afa15801561415c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141809190614cec565b603354909150600090819081908180805a6040516370a0823160e01b81523060048201529091506001600160a01b038c16906370a082319060240160206040518083038186803b1580156141d357600080fd5b505afa1580156141e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061420b9190614cec565b6010546022546040516370a0823160e01b81526001600160a01b039182166004820152929c506000929116906370a082319060240160206040518083038186803b15801561425857600080fd5b505afa15801561426c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906142909190614cec565b90505b8c841080156142a157508483105b156145705784603654106142b55760006036555b6033603654815481106142d857634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546040516370a0823160e01b81526001600160a01b03918216600482018190529950908b16906370a082319060240160206040518083038186803b15801561432a57600080fd5b505afa15801561433e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143629190614cec565b965060008711801561438d57506001600160a01b03881660009081526035602052604090205460ff16155b1561452e578861439d888d614e9e565b6143a79190614e7e565b95506000896143b68984614e9e565b6143c09190614e7e565b905060255481101561441d57602554604080516001600160a01b038c168152602081018490528082019290925251600098507f9d1c4d86117dec85bf2a2b3b7bc515e3cd3c677dcd1578b97f0831d5621d8b079181900360600190a15b6000871180156144a357506040516370a0823160e01b815230600482015287906001600160a01b038f16906370a082319060240160206040518083038186803b15801561446957600080fd5b505afa15801561447d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144a19190614cec565b115b1561452c5760405163a9059cbb60e01b81526001600160a01b038a81166004830152602482018990528e169063a9059cbb90604401602060405180830381600087803b1580156144f257600080fd5b505af1158015614506573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061452a9190614c75565b505b505b5a6145399083614ebd565b6145439085614e66565b93505a60368054919350600061455883614f09565b9190505550828061456890614f09565b935050614293565b5050436038555050505050505050505050565b6000806000602260009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156145d657600080fd5b505afa1580156145ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061460e9190614cec565b90506000600f60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561466057600080fd5b505afa158015614674573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146989190614aa2565b6001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156146d057600080fd5b505afa1580156146e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147089190614aa2565b60225460408051637464fc3d60e01b815290519293506001600160a01b0380851615159360009390911691637464fc3d916004808301926020929190829003018186803b15801561475857600080fd5b505afa15801561476c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147909190614cec565b905081156148355780156148355760006147b26147ad898b614e9e565b614924565b905060006147bf83614924565b9050808211156148325760006147d58284614ebd565b6147df9088614e9e565b6147ea906008614e9e565b905060006147f9836008614e9e565b614804856011614e9e565b61480e9190614e66565b905061481a8183614e7e565b9850881561482f5761482c8989614e66565b97505b50505b50505b6000614841898c614ebd565b905084614869576103e86148586147ad8c84614e9e565b6148629190614ebd565b965061489e565b61489b896148778784614e9e565b6148819190614e7e565b8961488c888e614e9e565b6148969190614e7e565b614993565b96505b505050505094509492505050565b6001600160a01b0382166000908152600160205260409020546148d0908290614e66565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612a909085815260200190565b60006003821115614985575080600061493e600283614e7e565b614949906001614e66565b90505b8181101561497f579050806002816149648186614e7e565b61496e9190614e66565b6149789190614e7e565b905061494c565b50919050565b811561193d57506001919050565b60008183106149a257816149a4565b825b9392505050565b828054828255906000526020600020908101928215614a00579160200282015b82811115614a0057825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906149cb565b50614a0c929150614a10565b5090565b5b80821115614a0c5760008155600101614a11565b60008083601f840112614a36578182fd5b50813567ffffffffffffffff811115614a4d578182fd5b6020830191508360208260051b8501011115614a6857600080fd5b9250929050565b80516001600160701b038116811461193d57600080fd5b600060208284031215614a97578081fd5b81356149a481614f3a565b600060208284031215614ab3578081fd5b81516149a481614f3a565b60008060408385031215614ad0578081fd5b8235614adb81614f3a565b91506020830135614aeb81614f3a565b809150509250929050565b600080600060608486031215614b0a578081fd5b8335614b1581614f3a565b92506020840135614b2581614f3a565b929592945050506040919091013590565b60008060408385031215614b48578182fd5b8235614b5381614f3a565b91506020830135614aeb81614f4f565b60008060408385031215614b75578182fd5b8235614b8081614f3a565b946020939093013593505050565b600080600060608486031215614ba2578283fd5b8335614bad81614f3a565b9250602084013591506040840135614bc481614f3a565b809150509250925092565b60008060208385031215614be1578182fd5b823567ffffffffffffffff811115614bf7578283fd5b614c0385828601614a25565b90969095509350505050565b600080600060408486031215614c23578283fd5b833567ffffffffffffffff811115614c39578384fd5b614c4586828701614a25565b9094509250506020840135614bc481614f4f565b600060208284031215614c6a578081fd5b81356149a481614f4f565b600060208284031215614c86578081fd5b81516149a481614f4f565b600080600060608486031215614ca5578081fd5b614cae84614a6f565b9250614cbc60208501614a6f565b9150604084015163ffffffff81168114614bc4578182fd5b600060208284031215614ce5578081fd5b5035919050565b600060208284031215614cfd578081fd5b5051919050565b600080600060608486031215614d18578081fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b81811015614d5d57858101830151858201604001528201614d41565b81811115614d6e5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510b7bbb732b960d11b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015614df35784516001600160a01b031683529383019391830191600101614dce565b50506001600160a01b03969096166060850152505050608001529392505050565b600060a082018783526020878185015260a0604085015281875480845260c0860191508885528285209350845b81811015614df35784546001600160a01b031683526001948501949284019201614e41565b60008219821115614e7957614e79614f24565b500190565b600082614e9957634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615614eb857614eb8614f24565b500290565b600082821015614ecf57614ecf614f24565b500390565b600181811c90821680614ee857607f821691505b6020821081141561497f57634e487b7160e01b600052602260045260246000fd5b6000600019821415614f1d57614f1d614f24565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114611d0757600080fd5b8015158114611d0757600080fdfea2646970667358221220e4a786dad0bd789e0fc62375265a90d6af703c60fd9d33e2baa4c0b4888db6c064736f6c63430008040033
Deployed Bytecode Sourcemap
4610:34581:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32901:142;;;;;;;;;;;;;:::i;:::-;;6457:44;;;;;;;;;;-1:-1:-1;6457:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9681:14:1;;9674:22;9656:41;;9644:2;9629:18;6457:44:0;;;;;;;;5055:45;;;;;;;;;;-1:-1:-1;5055:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6349:29;;;;;;;;;;-1:-1:-1;6349:29:0;;;;-1:-1:-1;;;6349:29:0;;;;;;17935:31;;;;;;;;;;-1:-1:-1;17935:31:0;;;;;;;;39069:119;;;;;;;;;;-1:-1:-1;39069:119:0;;;;;:::i;:::-;;:::i;17614:163::-;;;;;;;;;;-1:-1:-1;17614:163:0;;;;;:::i;:::-;;:::i;34427:87::-;;;;;;;;;;;;;:::i;11789:94::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;14095:97::-;;;;;;;;;;-1:-1:-1;14095:97:0;;;;;:::i;:::-;;:::i;5610:28::-;;;;;;;;;;;;;;;;;;;10321:25:1;;;10309:2;10294:18;5610:28:0;10276:76:1;12863:184:0;;;;;;;;;;-1:-1:-1;12863:184:0;;;;;:::i;:::-;;:::i;34621:87::-;;;;;;;;;;;;;:::i;13785:68::-;;;;;;;;;;-1:-1:-1;13785:68:0;;;;;:::i;:::-;;:::i;33051:223::-;;;;;;;;;;-1:-1:-1;33051:223:0;;;;;:::i;:::-;;:::i;5982:25::-;;;;;;;;;;-1:-1:-1;5982:25:0;;;;;;;;5900:31;;;;;;;;;;-1:-1:-1;5900:31:0;;;;;;;;5938:35;;;;;;;;;;;;;;;;11995:95;;;;;;;;;;-1:-1:-1;12075:7:0;;11995:95;;14054:32;;;;;;;;;;-1:-1:-1;14054:32:0;;;;;;;;;;;32821:72;;;;;;;;;;;;;:::i;35539:266::-;;;;;;;;;;-1:-1:-1;35539:266:0;;;;;:::i;:::-;;:::i;5244:30::-;;;;;;;;;;-1:-1:-1;5244:30:0;;;;-1:-1:-1;;;;;5244:30:0;;;;;;-1:-1:-1;;;;;7187:32:1;;;7169:51;;7157:2;7142:18;5244:30:0;7124:102:1;6631:31:0;;;;;;;;;;;;;;;;6508:115;;;;;;;;;;-1:-1:-1;6508:115:0;;;;;:::i;:::-;;:::i;13055:404::-;;;;;;;;;;-1:-1:-1;13055:404:0;;;;;:::i;:::-;;:::i;5645:26::-;;;;;;;;;;;;;;;;4915:21;;;;;;;;;;;;;;;;11891:96;;;;;;;;;;-1:-1:-1;11970:9:0;;11891:96;;12098:20;;;;;;;;;;-1:-1:-1;12098:20:0;;;;;;;;25260:30;;;;;;;;;;;;;;;;36316:122;;;;;;;;;;-1:-1:-1;36316:122:0;;;;;:::i;:::-;;:::i;5678:27::-;;;;;;;;;;;;;;;;5311:45;;;;;;;;;;-1:-1:-1;5311:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5816:46;;;;;;;;;;-1:-1:-1;5816:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;5157;;;;;;;;;;-1:-1:-1;5157:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6080:24;;;;;;;;;;-1:-1:-1;6080:24:0;;;;-1:-1:-1;;;;;6080:24:0;;;32640:27;;;;;;;;;;;;;;;;17973:96;;;;;;;;;;-1:-1:-1;17973:96:0;;;;;:::i;:::-;;:::i;5490:47::-;;;;;;;;;;-1:-1:-1;5490:47:0;;;;-1:-1:-1;;;;;5490:47:0;;;13861:185;;;;;;;;;;-1:-1:-1;13861:185:0;;;;;:::i;:::-;;:::i;6041:30::-;;;;;;;;;;;;;;;;6246:27;;;;;;;;;;-1:-1:-1;6246:27:0;;;;-1:-1:-1;;;6246:27:0;;;;;;24637:221;;;;;;;;;;-1:-1:-1;24637:221:0;;;;;:::i;:::-;;:::i;33986:331::-;;;;;;;;;;-1:-1:-1;33986:331:0;;;;;:::i;:::-;;:::i;36266:41::-;;;;;;;;;;;;;;;;36446:182;;;;;;;;;;-1:-1:-1;36446:182:0;;;;;:::i;:::-;;:::i;17825:102::-;;;;;;;;;;-1:-1:-1;17825:102:0;;;;;:::i;:::-;;:::i;5016:30::-;;;;;;;;;;-1:-1:-1;5016:30:0;;;;;;;;34522:91;;;;;;;;;;;;;:::i;5780:27::-;;;;;;;;;;;;;;;;12218:263;;;;;;;;;;-1:-1:-1;12218:263:0;;;;;:::i;:::-;;:::i;3583:148::-;;;;;;;;;;;;;:::i;14752:344::-;;;;;;;;;;-1:-1:-1;14752:344:0;;;;;:::i;:::-;;:::i;25502:161::-;;;;;;;;;;-1:-1:-1;25502:161:0;;;;;:::i;:::-;;:::i;34964:107::-;;;;;;;;;;-1:-1:-1;34964:107:0;;;;;:::i;:::-;;:::i;6728:409::-;;;;;;;;;;-1:-1:-1;6728:409:0;;;;;:::i;:::-;;:::i;6016:18::-;;;;;;;;;;-1:-1:-1;6016:18:0;;;;;;;-1:-1:-1;;;;;6016:18:0;;;32307:206;;;;;;;;;;-1:-1:-1;32307:206:0;;;;;:::i;:::-;;:::i;17785:31::-;;;;;;;;;;;;;;;;5442:41;;;;;;;;;;-1:-1:-1;5442:41:0;;;;;;;-1:-1:-1;;;;;5442:41:0;;;4943:27;;;;;;;;;;;;;;;;13652:125;;;;;;;;;;-1:-1:-1;13652:125:0;;;;;:::i;:::-;;:::i;34325:94::-;;;;;;;;;;;;;:::i;3397:79::-;;;;;;;;;;-1:-1:-1;3435:7:0;3462:6;-1:-1:-1;;;;;3462:6:0;3397:79;;29132:37;;;;;;;;;;-1:-1:-1;29132:37:0;;;;-1:-1:-1;;;;;29132:37:0;;;25339:155;;;;;;;;;;-1:-1:-1;25339:155:0;;;;;:::i;:::-;;:::i;17559:38::-;;;;;;;;;;;;;;;;15104:19;;;;;;;;;;-1:-1:-1;15104:19:0;;;;;;;;;;;11683:98;;;;;;;;;;;;;:::i;5869:24::-;;;;;;;;;;;;;;;;32676:137;;;;;;;;;;;;;:::i;6421:27::-;;;;;;;;;;-1:-1:-1;6421:27:0;;;;;:::i;:::-;;:::i;6315:::-;;;;;;;;;;-1:-1:-1;6315:27:0;;;;-1:-1:-1;;;6315:27:0;;;;;;34716:118;;;;;;;;;;-1:-1:-1;34716:118:0;;;;;:::i;:::-;;:::i;12489:190::-;;;;;;;;;;-1:-1:-1;12489:190:0;;;;;:::i;:::-;;:::i;4979:30::-;;;;;;;;;;;;;;;;33282:696;;;;;;;;;;-1:-1:-1;33282:696:0;;;;;:::i;:::-;;:::i;25227:26::-;;;;;;;;;;;;;;;;5712:25;;;;;;;;;;;;;;;;6280:28;;;;;;;;;;-1:-1:-1;6280:28:0;;;;-1:-1:-1;;;6280:28:0;;;;;;5579:24;;;;;;;;;;;;;;;;25671:172;;;;;;;;;;-1:-1:-1;25671:172:0;;;;;:::i;:::-;;:::i;5107:43::-;;;;;;;;;;-1:-1:-1;5107:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5744:29;;;;;;;;;;;;;;;;35079:290;;;;;;;;;;-1:-1:-1;35079:290:0;;;;;:::i;:::-;;:::i;25297:33::-;;;;;;;;;;;;;;;;34842:114;;;;;;;;;;-1:-1:-1;34842:114:0;;;;;:::i;:::-;;:::i;38943:118::-;;;;;;;;;;-1:-1:-1;38943:118:0;;;;;:::i;:::-;;:::i;6213:26::-;;;;;;;;;;-1:-1:-1;6213:26:0;;;;-1:-1:-1;;;6213:26:0;;;;;;5546;;;;;;;;;;;;;;;;15161:532;;;;;;;;;;;;;:::i;:::-;;;;21453:25:1;;;21509:2;21494:18;;21487:34;;;;21537:18;;;21530:34;21441:2;21426:18;15161:532:0;21408:162:1;24593:35:0;;;;;;;;;;;;;;;;6385:27;;;;;;;;;;-1:-1:-1;6385:27:0;;;;-1:-1:-1;;;6385:27:0;;;;;;29178:120;;;;;;;;;;-1:-1:-1;29178:120:0;;;;;:::i;:::-;;:::i;14706:37::-;;;;;;;;;;-1:-1:-1;14706:37:0;;;;;;;;12687:168;;;;;;;;;;-1:-1:-1;12687:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;12820:18:0;;;12793:7;12820:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12687:168;14501:31;;;;;;;;;;;;;;;;5281:23;;;;;;;;;;-1:-1:-1;5281:23:0;;;;-1:-1:-1;;;;;5281:23:0;;;14541:157;;;;;;;;;;-1:-1:-1;14541:157:0;;;;;:::i;:::-;;:::i;4784:34::-;;;;;;;;;;-1:-1:-1;4784:34:0;;;;-1:-1:-1;;;;;4784:34:0;;;12127:83;;;;;;;;;;-1:-1:-1;12127:83:0;;;;;:::i;:::-;;:::i;36181:36::-;;;;;;;;;;;;;;;;29086:37;;;;;;;;;;;;;;;;3739:214;;;;;;;;;;-1:-1:-1;3739:214:0;;;;;:::i;:::-;;:::i;15130:22::-;;;;;;;;;;-1:-1:-1;15130:22:0;;;;;;;;;;;32901:142;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;;;;;;;;;32962:15:::1;::::0;32957:20;32949:45:::1;;;::::0;-1:-1:-1;;;32949:45:0;;13789:2:1;32949:45:0::1;::::0;::::1;13771:21:1::0;13828:2;13808:18;;;13801:30;-1:-1:-1;;;13847:18:1;;;13840:42;13899:18;;32949:45:0::1;13761:162:1::0;32949:45:0::1;33023:12;33005:15;:30:::0;32901:142::o;39069:119::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;39152:19:0;;;::::1;;::::0;;;:13:::1;:19;::::0;;;;:28;;-1:-1:-1;;39152:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;39069:119::o;17614:163::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;17698:13;17690:40:::1;;;::::0;-1:-1:-1;;;17690:40:0;;12754:2:1;17690:40:0::1;::::0;::::1;12736:21:1::0;12793:2;12773:18;;;12766:30;-1:-1:-1;;;12812:18:1;;;12805:44;12866:18;;17690:40:0::1;12726:164:1::0;17690:40:0::1;17741:17;:28:::0;17614:163::o;34427:87::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;34483:15:::1;:23:::0;;-1:-1:-1;;;;34483:23:0::1;::::0;;34427:87::o;11789:94::-;11837:13;11870:5;11863:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11789:94;:::o;14095:97::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;14162:13:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;14162:22:0;;::::1;::::0;;;::::1;::::0;;14095:97::o;12863:184::-;12963:4;12980:37;12989:10;13001:7;13010:6;12980:8;:37::i;:::-;-1:-1:-1;13035:4:0;12863:184;;;;:::o;34621:87::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;34677:15:::1;:23:::0;;-1:-1:-1;;;;34677:23:0::1;::::0;;34621:87::o;13785:68::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;13839:2:::1;:6:::0;13785:68::o;33051:223::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;33172:9:::1;33167:100;33187:15:::0;;::::1;33167:100;;;33249:6;33224:13;:22;33238:4;;33243:1;33238:7;;;;;-1:-1:-1::0;;;33238:7:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;33224:22:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;33224:22:0;:31;;-1:-1:-1;;33224:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;33204:3;::::1;::::0;::::1;:::i;:::-;;;;33167:100;;;;33051:223:::0;;;:::o;32821:72::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;32884:1:::1;32869:12;:16:::0;32821:72::o;35539:266::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;35625:9:::1;35620:178;35636:19:::0;;::::1;35620:178;;;35691:9;::::0;35727:1:::1;::::0;-1:-1:-1;;;;;35691:9:0::1;35681:30;35712:8:::0;;35721:1;35712:11;;::::1;;;-1:-1:-1::0;;;35712:11:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35681:43;::::0;-1:-1:-1;;;;;;35681:43:0::1;::::0;;;;;;-1:-1:-1;;;;;7187:32:1;;;35681:43:0::1;::::0;::::1;7169:51:1::0;7142:18;;35681:43:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:47;35677:110;;;35749:22;35759:8;;35768:1;35759:11;;;;;-1:-1:-1::0;;;35759:11:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35749:9;:22::i;:::-;35657:3:::0;::::1;::::0;::::1;:::i;:::-;;;;35620:178;;;;35539:266:::0;;:::o;6508:115::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6588:18:0;;;::::1;;::::0;;;:12:::1;:18;::::0;;;;:27;;-1:-1:-1;;6588:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;6508:115::o;13055:404::-;13187:4;13204:36;13214:6;13222:9;13233:6;13204:9;:36::i;:::-;-1:-1:-1;;;;;13255:19:0;;5433:1;13255:19;;;:11;:19;;;;;;;;13275:10;13255:31;;;;;;;;-1:-1:-1;;13255:38:0;13251:179;;-1:-1:-1;;;;;13361:19:0;;;;;;:11;:19;;;;;;;;13381:10;13361:31;;;;;;;;:57;;13412:6;;13361:57;:::i;:::-;-1:-1:-1;;;;;13310:19:0;;;;;;:11;:19;;;;;;;;13330:10;13310:31;;;;;;;:108;13251:179;-1:-1:-1;13447:4:0;13055:404;;;;;:::o;36316:122::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;36397:22:::1;:33:::0;36316:122::o;17973:96::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;18040:12:::1;:21:::0;;-1:-1:-1;;18040:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17973:96::o;13861:185::-;-1:-1:-1;;;;;13941:20:0;;13917:7;13941:20;;;:11;:20;;;;;;;;13937:102;;;-1:-1:-1;13985:1:0;;13861:185;-1:-1:-1;13861:185:0:o;13937:102::-;-1:-1:-1;14026:1:0;;13861:185;-1:-1:-1;13861:185:0:o;13937:102::-;13861:185;;;:::o;24637:221::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;24741:6:::1;24729:8;:18;;:41;;;;;24763:7;24751:8;:19;;24729:41;24707:110;;;::::0;-1:-1:-1;;;24707:110:0;;16520:2:1;24707:110:0::1;::::0;::::1;16502:21:1::0;16559:2;16539:18;;;16532:30;-1:-1:-1;;;16578:18:1;;;16571:49;16637:18;;24707:110:0::1;16492:169:1::0;24707:110:0::1;24828:11;:22:::0;24637:221::o;33986:331::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;34111:16:::1;::::0;-1:-1:-1;;;34111:16:0;::::1;;;34103:48;;;::::0;-1:-1:-1;;;34103:48:0;;18251:2:1;34103:48:0::1;::::0;::::1;18233:21:1::0;18290:2;18270:18;;;18263:30;-1:-1:-1;;;18309:18:1;;;18302:49;18368:18;;34103:48:0::1;18223:169:1::0;34103:48:0::1;34212:9;34207:103;34223:20:::0;;::::1;34207:103;;;34293:5;34265:11;:25;34277:9;;34287:1;34277:12;;;;;-1:-1:-1::0;;;34277:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;34265:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;34265:25:0;:33;;-1:-1:-1;;34265:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34245:3:::1;::::0;::::1;:::i;:::-;;;34207:103;;36446:182:::0;36521:11;;-1:-1:-1;;;;;36521:11:0;36536:10;36521:25;;:49;;-1:-1:-1;36550:6:0;;-1:-1:-1;;;;;36550:6:0;36560:10;36550:20;36521:49;36513:69;;;;-1:-1:-1;;;36513:69:0;;17568:2:1;36513:69:0;;;17550:21:1;17607:1;17587:18;;;17580:29;-1:-1:-1;;;17625:18:1;;;17618:37;17672:18;;36513:69:0;17540:156:1;36513:69:0;36593:16;:27;36446:182::o;17825:102::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;17896:12:::1;:23:::0;17825:102::o;34522:91::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;34580:17:::1;:25:::0;;-1:-1:-1;;;;34580:25:0::1;::::0;;34522:91::o;12218:263::-;12319:9;;12284:7;;-1:-1:-1;;;;;12308:20:0;;;12319:9;;12308:20;:47;;;;-1:-1:-1;12346:9:0;;-1:-1:-1;;;;;12346:9:0;12332:10;:23;12308:47;:59;;;;-1:-1:-1;12359:8:0;;;;12308:59;12304:134;;;12402:9;;-1:-1:-1;;;;;12402:9:0;12415:1;12392:20;;;:9;:20;;;;;;12384:42;;;;-1:-1:-1;;;12384:42:0;;18599:2:1;12384:42:0;;;18581:21:1;18638:1;18618:18;;;18611:29;-1:-1:-1;;;18656:18:1;;;18649:35;18701:18;;12384:42:0;18571:154:1;12384:42:0;-1:-1:-1;;;;;;12455:18:0;;;;;:9;:18;;;;;;;12218:263::o;3583:148::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;3690:1:::1;3674:6:::0;;3653:40:::1;::::0;-1:-1:-1;;;;;3674:6:0;;::::1;::::0;3653:40:::1;::::0;3690:1;;3653:40:::1;3721:1;3704:19:::0;;-1:-1:-1;;;;;;3704:19:0::1;::::0;;3583:148::o;14752:344::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;14867:6:::1;14863:226;;;15017:12;;14983:14;;14953:10;;14921:12;;:42;;;;:::i;:::-;:76;;;;:::i;:::-;:108;;;;:::i;:::-;14890:11;:139:::0;14752:344;:::o;14863:226::-:1;15076:1;15062:11;:15:::0;14863:226:::1;14752:344:::0;:::o;25502:161::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;25596:4:::1;25584:8;:16;;25576:42;;;::::0;-1:-1:-1;;;25576:42:0;;13097:2:1;25576:42:0::1;::::0;::::1;13079:21:1::0;13136:2;13116:18;;;13109:30;-1:-1:-1;;;13155:18:1;;;13148:43;13208:18;;25576:42:0::1;13069:163:1::0;25576:42:0::1;25629:15;:26:::0;25502:161::o;34964:107::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;35038:15:::1;:25:::0;34964:107::o;6728:409::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;6824:7;;6862:21:::1;::::0;::::1;;;;-1:-1:-1::0;;;6862:21:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;6862:21:0::1;-1:-1:-1::0;6849:34:0;;::::1;::::0;:10:::1;::::0;:34:::1;::::0;;::::1;::::0;::::1;:::i;:::-;;6899:9;6894:86;6914:6;6910:1;:10;6894:86;;;6958:7;;6966:1;6958:10;;;;;-1:-1:-1::0;;;6958:10:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6942;6953:1;6942:13;;;;;;-1:-1:-1::0;;;6942:13:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;:26:::0;;-1:-1:-1;;;;;;6942:26:0::1;-1:-1:-1::0;;;;;6942:26:0;;;::::1;::::0;;;::::1;::::0;;6922:3;::::1;::::0;::::1;:::i;:::-;;;;6894:86;;;-1:-1:-1::0;7015:8:0::1;::::0;6998:10:::1;:13:::0;;-1:-1:-1;;;;;7015:8:0;;::::1;::::0;::::1;::::0;6998:13:::1;;-1:-1:-1::0;;;6998:13:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;6998:13:0::1;:25;6990:62;;;::::0;-1:-1:-1;;;6990:62:0;;16868:2:1;6990:62:0::1;::::0;::::1;16850:21:1::0;16907:2;16887:18;;;16880:30;16946:26;16926:18;;;16919:54;16990:18;;6990:62:0::1;16840:174:1::0;6990:62:0::1;7097:3;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;7097:3:0::1;7071:10;7082;7097:3;7082:6:::0;:10:::1;:::i;:::-;7071:22;;;;;;-1:-1:-1::0;;;7071:22:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;7071:22:0::1;:29;7063:66;;;::::0;-1:-1:-1;;;7063:66:0;;12401:2:1;7063:66:0::1;::::0;::::1;12383:21:1::0;12440:2;12420:18;;;12413:30;12479:26;12459:18;;;12452:54;12523:18;;7063:66:0::1;12373:174:1::0;32307:206:0;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;32622:2;-1:-1:-1;;;;;32602:17:0;;;:22;32391:17:::1;32383:56;;;::::0;-1:-1:-1;;;32383:56:0;;11357:2:1;32383:56:0::1;::::0;::::1;11339:21:1::0;11396:2;11376:18;;;11369:30;11435:28;11415:18;;;11408:56;11481:18;;32383:56:0::1;11329:176:1::0;32383:56:0::1;32450:11;:18:::0;;-1:-1:-1;;;;;32450:18:0;;::::1;-1:-1:-1::0;;;;;;32450:18:0;;::::1;::::0;::::1;::::0;;:11:::1;32479:19:::0;;;:13:::1;:19;::::0;;;;:26;;-1:-1:-1;;32479:26:0::1;32450:18:::0;32479:26:::1;::::0;;32307:206::o;13652:125::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13738:22:0;;;::::1;;::::0;;;:14:::1;:22;::::0;;;;:31;;-1:-1:-1;;13738:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13652:125::o;34325:94::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;34384:19:::1;:27:::0;;-1:-1:-1;;34384:27:0::1;::::0;;34325:94::o;25339:155::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;25429:4:::1;25417:8;:16;;25409:44;;;::::0;-1:-1:-1;;;25409:44:0;;15500:2:1;25409:44:0::1;::::0;::::1;15482:21:1::0;15539:2;15519:18;;;15512:30;-1:-1:-1;;;15558:18:1;;;15551:45;15613:18;;25409:44:0::1;15472:165:1::0;25409:44:0::1;25464:11;:22:::0;25339:155::o;11683:98::-;11733:13;11766:7;11759:14;;;;;:::i;32676:137::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;32738:12:::1;::::0;32733:17;32725:42:::1;;;::::0;-1:-1:-1;;;32725:42:0;;11712:2:1;32725:42:0::1;::::0;::::1;11694:21:1::0;11751:2;11731:18;;;11724:30;-1:-1:-1;;;11770:18:1;;;11763:42;11822:18;;32725:42:0::1;11684:162:1::0;32725:42:0::1;32793:12;32778;:27:::0;32676:137::o;6421:27::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6421:27:0;;-1:-1:-1;6421:27:0;:::o;34716:118::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34798:19:0;;;::::1;;::::0;;;:13:::1;:19;::::0;;;;:28;;-1:-1:-1;;34798:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34716:118::o;12489:190::-;12592:4;12609:40;12619:10;12631:9;12642:6;12609:9;:40::i;33282:696::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;33373:15:::1;::::0;-1:-1:-1;;;33373:15:0;::::1;;;33365:47;;;::::0;-1:-1:-1;;;33365:47:0;;17903:2:1;33365:47:0::1;::::0;::::1;17885:21:1::0;17942:2;17922:18;;;17915:30;-1:-1:-1;;;17961:18:1;;;17954:49;18020:18;;33365:47:0::1;17875:169:1::0;33365:47:0::1;33437:7;;33445:1;33437:10;;;;;-1:-1:-1::0;;;33437:10:0::1;;;;;;;;;;;::::0;;;::::1;;33423:11;:24:::0;-1:-1:-1;33470:7:0;;33478:1:::1;33470:10:::0;;::::1;;;-1:-1:-1::0;;;33470:10:0::1;;;;;;;;;;;::::0;;;::::1;;33458:9;:22:::0;-1:-1:-1;33507:7:0;;33515:1:::1;33507:10:::0;;::::1;;;-1:-1:-1::0;;;33507:10:0::1;;;;;;;;;;;::::0;;;::::1;;33491:13;:26:::0;-1:-1:-1;33542:7:0;;33550:1:::1;33542:10:::0;;::::1;;;-1:-1:-1::0;;;33542:10:0::1;;;;;;;;;;;::::0;;;::::1;;33528:11;:24:::0;-1:-1:-1;33580:7:0;;33588:1:::1;33580:10:::0;;::::1;;;-1:-1:-1::0;;;33580:10:0::1;;;;;;;;;;;::::0;;;::::1;;33565:12;:25:::0;-1:-1:-1;33614:7:0;;33622:1:::1;33614:10:::0;;::::1;;;-1:-1:-1::0;;;33614:10:0::1;;;;;;;;;;;::::0;;;::::1;;33601;:23:::0;-1:-1:-1;33652:7:0;;33660:1:::1;33652:10:::0;;::::1;;;-1:-1:-1::0;;;33652:10:0::1;;;;;;;;;;;::::0;;;::::1;;33635:14;:27:::0;-1:-1:-1;33688:7:0;;33696:1:::1;33688:10:::0;;::::1;;;-1:-1:-1::0;;;33688:10:0::1;;;;;;;;;;;;;;;33673:12;:25;;;;33789:4;33775:11;;33761;;33749:9;;33733:13;;:25;;;;:::i;:::-;:39;;;;:::i;:::-;:53;;;;:::i;:::-;:60;33711:122;;;::::0;-1:-1:-1;;;33711:122:0;;16179:2:1;33711:122:0::1;::::0;::::1;16161:21:1::0;16218:2;16198:18;;;16191:30;-1:-1:-1;;;16237:18:1;;;16230:42;16289:18;;33711:122:0::1;16151:162:1::0;33711:122:0::1;33926:4;33911:12;;33896;;33883:10;;33866:14;;:27;;;;:::i;:::-;:42;;;;:::i;:::-;:57;;;;:::i;:::-;:64;33844:126;;;::::0;-1:-1:-1;;;33844:126:0;;16179:2:1;33844:126:0::1;::::0;::::1;16161:21:1::0;16218:2;16198:18;;;16191:30;-1:-1:-1;;;16237:18:1;;;16230:42;16289:18;;33844:126:0::1;16151:162:1::0;33844:126:0::1;33282:696:::0;;:::o;25671:172::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;25806:18:::1;:29:::0;25671:172::o;35079:290::-;35210:11;;-1:-1:-1;;;;;35210:11:0;35225:10;35210:25;;:49;;-1:-1:-1;35239:6:0;;-1:-1:-1;;;;;35239:6:0;35249:10;35239:20;35210:49;35202:69;;;;-1:-1:-1;;;35202:69:0;;17568:2:1;35202:69:0;;;17550:21:1;17607:1;17587:18;;;17580:29;-1:-1:-1;;;17625:18:1;;;17618:37;17672:18;;35202:69:0;17540:156:1;35202:69:0;35282:34;;-1:-1:-1;;;35282:34:0;;-1:-1:-1;;;;;7655:32:1;;;35282:34:0;;;7637:51:1;7704:18;;;7697:34;;;35282:22:0;;;;;7610:18:1;;35282:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;35327:34:0;;-1:-1:-1;;;;;35327:11:0;;;35339:21;35327:34;;;;;;;;;35339:21;35327:11;:34;;;;;;;;;;;;;;;;;;;34842:114;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;34920:12:::1;:28:::0;34842:114::o;38943:118::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;39023:21:::1;:30:::0;38943:118::o;15161:532::-;15233:14;15249:13;15264:20;15302:18;15333:9;;;;;;;;;-1:-1:-1;;;;;15333:9:0;15302:41;;15355:7;15364:10;15380:8;-1:-1:-1;;;;;15380:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;15436:8:0;;-1:-1:-1;;;;;15354:48:0;;;;-1:-1:-1;15354:48:0;;;-1:-1:-1;;;;;;15436:8:0;15480:4;15459:26;;15455:164;;;15511:2;15502:11;;15536:2;15528:10;;15455:164;;;15580:2;15571:11;;15605:2;15597:10;;15455:164;15675:9;;15646:39;;-1:-1:-1;;;15646:39:0;;-1:-1:-1;;;;;15675:9:0;;;15646:39;;;7169:51:1;15646:28:0;;;;;;7142:18:1;;15646:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15631:54;;15161:532;;;;;;;:::o;29178:120::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;29258:22:::1;:32:::0;;-1:-1:-1;;;;;;29258:32:0::1;-1:-1:-1::0;;;;;29258:32:0;;;::::1;::::0;;;::::1;::::0;;29178:120::o;14541:157::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;14632:1:::1;14620:8;:13;;14612:44;;;::::0;-1:-1:-1;;;14612:44:0;;17221:2:1;14612:44:0::1;::::0;::::1;17203:21:1::0;17260:2;17240:18;;;17233:30;-1:-1:-1;;;17279:18:1;;;17272:48;17337:18;;14612:44:0::1;17193:168:1::0;14612:44:0::1;14667:12;:23:::0;14541:157::o;12127:83::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;12190:8:::1;:12:::0;;-1:-1:-1;;12190:12:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12127:83::o;3739:214::-;3524:6;;-1:-1:-1;;;;;3524:6:0;3534:10;3524:20;3516:39;;;;-1:-1:-1;;;3516:39:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3828:22:0;::::1;3820:43;;;::::0;-1:-1:-1;;;3820:43:0;;15164:2:1;3820:43:0::1;::::0;::::1;15146:21:1::0;15203:1;15183:18;;;15176:29;-1:-1:-1;;;15221:18:1;;;15214:38;15269:18;;3820:43:0::1;15136:157:1::0;3820:43:0::1;3900:6;::::0;;3879:38:::1;::::0;-1:-1:-1;;;;;3879:38:0;;::::1;::::0;3900:6;::::1;::::0;3879:38:::1;::::0;::::1;3928:6;:17:::0;;-1:-1:-1;;;;;;3928:17:0::1;-1:-1:-1::0;;;;;3928:17:0;;;::::1;::::0;;;::::1;::::0;;3739:214::o;13467:177::-;-1:-1:-1;;;;;13552:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13604:32;;10321:25:1;;;13604:32:0;;10294:18:1;13604:32:0;;;;;;;;13467:177;;;:::o;35813:325::-;32622:2;-1:-1:-1;;;;;32602:17:0;;;:22;35864:54;;;35813:325;:::o;35864:54::-;-1:-1:-1;;;;;35937:16:0;;;;;;:11;:16;;;;;;35928:203;;35979:7;:14;35974:19;;:40;;;36011:3;-1:-1:-1;;;;;35997:17:0;:7;36005:1;35997:10;;;;;;-1:-1:-1;;;35997:10:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;35997:10:0;:17;;35974:40;35970:150;;;36054:7;:14;;-1:-1:-1;;;;;36035:16:0;;;;;;:11;:16;;;;;:33;;;36087:17;;;;;;;;;;;;;-1:-1:-1;;;;;;36087:17:0;;;;;;35813:325;:::o;19160:5425::-;-1:-1:-1;;;;;19258:15:0;;19240;19258;;;:9;:15;;;;;;19292:17;;;;19284:46;;;;-1:-1:-1;;;19284:46:0;;14476:2:1;19284:46:0;;;14458:21:1;14515:2;14495:18;;;14488:30;-1:-1:-1;;;14534:18:1;;;14527:46;14590:18;;19284:46:0;14448:166:1;19284:46:0;19364:1;19347:14;19356:4;19347:8;:14::i;:::-;:18;19343:83;;;19382:32;;-1:-1:-1;;;19382:32:0;;14821:2:1;19382:32:0;;;14803:21:1;14860:2;14840:18;;;14833:30;-1:-1:-1;;;14879:18:1;;;14872:44;14933:18;;19382:32:0;14793:164:1;19382:32:0;19601:9;;19438:12;;;;;;;;;;;;-1:-1:-1;;;;;19595:15:0;;;19601:9;;19595:15;:43;;;;-1:-1:-1;19627:10:0;19614:24;;;;:12;:24;;;;;;;;19595:43;:64;;;;-1:-1:-1;19642:9:0;-1:-1:-1;;;;;19642:17:0;;;19595:64;19591:277;;;19693:23;19709:6;19693:15;:23::i;:::-;19676:40;;19752:1;19735:14;:18;:39;;;;-1:-1:-1;32622:2:0;-1:-1:-1;;;;;32602:17:0;;;:22;19757:17;19735:39;19731:126;;;19826:7;:15;;-1:-1:-1;;19826:15:0;;;;;19803:4;;-1:-1:-1;19731:126:0;19928:9;;19880:25;;-1:-1:-1;;;;;19920:17:0;;;19928:9;;19920:17;19916:384;;;20111:26;20130:6;20111:18;:26::i;:::-;20091:46;-1:-1:-1;20176:21:0;;20172:117;;20252:10;:21;;-1:-1:-1;;20252:21:0;;;;;20229:4;;-1:-1:-1;20172:117:0;-1:-1:-1;;;;;20590:19:0;;;;;;:13;:19;;;;;;;;20589:20;:55;;;;-1:-1:-1;;;;;;20627:17:0;;;;;;:13;:17;;;;;;;;20626:18;20589:55;:85;;;;-1:-1:-1;20661:13:0;;;;;;;20589:85;:118;;;;;20706:1;20691:12;;:16;20589:118;:177;;;;-1:-1:-1;;;;;;20725:19:0;;;;;;:13;:19;;;;;;;;;:40;;-1:-1:-1;;;;;;20748:17:0;;;;;;:13;:17;;;;;;;;20725:40;20571:718;;;20793:10;;20818:419;20842:12;;20838:1;:16;20818:419;;;21031:44;;;;;;6891:19:1;;;6926:12;;;6919:28;;;21059:15:0;6963:12:1;;;6956:28;7000:12;;21031:44:0;;;;;;;;;;;;20987:119;;;;;;20949:184;;20880:295;;21194:27;21209:4;21215:2;21219:1;21194:14;:27::i;:::-;-1:-1:-1;20856:3:0;;;;:::i;:::-;;;;20818:419;;;-1:-1:-1;21261:12:0;;:16;;21276:1;21261:16;:::i;:::-;21251:26;;;;:::i;:::-;;;20571:718;;21305:15;;:20;:38;;;;-1:-1:-1;21329:14:0;;-1:-1:-1;;;21329:14:0;;;;21305:38;21301:327;;;-1:-1:-1;;;;;21383:19:0;;;;;;:13;:19;;;;;;;;21382:20;:59;;;;-1:-1:-1;;;;;;21424:17:0;;;;;;:13;:17;;;;;;;;21423:18;21382:59;:100;;;;-1:-1:-1;;;;;;21463:19:0;;;;;;:13;:19;;;;;;;;21462:20;21382:100;:139;;;;-1:-1:-1;;;;;;21504:17:0;;;;;;:13;:17;;;;;;;;21503:18;21382:139;21360:257;;;32622:2;-1:-1:-1;;;;;32602:17:0;;;:22;21564:15;21556:45;;;;-1:-1:-1;;;21556:45:0;;14130:2:1;21556:45:0;;;14112:21:1;14169:2;14149:18;;;14142:30;-1:-1:-1;;;14188:18:1;;;14181:47;14245:18;;21556:45:0;14102:167:1;21556:45:0;-1:-1:-1;;;;;21644:19:0;;;;;;:13;:19;;;;;;;;;:40;;-1:-1:-1;;;;;;21667:17:0;;;;;;:13;:17;;;;;;;;21644:40;21640:2460;;;-1:-1:-1;;;;;21706:19:0;;;;;;:13;:19;;;;;;;;21705:20;:42;;;;-1:-1:-1;;;;;;21730:17:0;;;;;;:13;:17;;;;;;;;21729:18;21705:42;21701:2303;;;21772:14;;-1:-1:-1;;;21772:14:0;;;;21768:266;;;21823:15;;:19;;;;21899:35;;;21912:12;;21908:1;:16;:25;;;;;21928:5;21908:25;21865:149;;;;-1:-1:-1;;;21865:149:0;;15844:2:1;21865:149:0;;;15826:21:1;15883:1;15863:18;;;15856:29;-1:-1:-1;;;15901:18:1;;;15894:37;15948:18;;21865:149:0;15816:156:1;21865:149:0;21768:266;;22078:14;;-1:-1:-1;;;22078:14:0;;;;:54;;;;-1:-1:-1;22117:15:0;;-1:-1:-1;;;22117:15:0;;;;22078:54;:114;;;;;22190:2;;22172:15;;:20;;;;:::i;:::-;22157:12;:35;22078:114;:157;;;;-1:-1:-1;;;;;;22218:17:0;;;;;;:13;:17;;;;;;;;22217:18;22078:157;22052:324;;;-1:-1:-1;;;;;22278:15:0;;;;;;:11;:15;;;;;:22;;-1:-1:-1;;22278:22:0;22296:4;22278:22;;;22052:324;22422:19;;;;:63;;;;-1:-1:-1;;;;;;22466:19:0;;;;;;:13;:19;;;;;;;;22422:63;:141;;;;;22543:20;;22525:15;;:38;;;;:::i;:::-;22510:12;:53;22422:141;22396:519;;;22638:9;22626:22;;;;:11;:22;;;;;;22610:12;:38;22606:290;;22689:9;22677:22;;;;:11;:22;;;;;22702:12;22677:37;;22606:290;;;22771:9;:11;;;:9;:11;;;:::i;:::-;;;;;;22809:30;22822:4;22828:2;22832:6;22809:12;:30::i;:::-;22866:7;;;;;;;;19160:5425;;;:::o;22606:290::-;-1:-1:-1;;;;;22939:17:0;;;;;;:13;:17;;;;;;;;22935:979;;;22986:6;;;;22985:7;:17;;;;;22997:5;22996:6;22985:17;22981:914;;;23080:4;23031:28;23062:24;;;:9;:24;;;;;;23140:12;;23117:35;;23113:759;;;23185:15;23442:10;;23392:14;;23344:12;;23299:9;;23250:13;;23203:11;;:60;;;;:::i;:::-;:105;;;;:::i;:::-;:153;;;;:::i;:::-;:203;;;;:::i;:::-;:249;;;;:::i;:::-;23185:267;;23483:27;23577:3;23556:17;;23514:6;:59;;;;:::i;:::-;23513:67;;;;:::i;:::-;23483:97;;23637:20;23615:19;:42;23611:157;;;-1:-1:-1;23716:20:0;23611:157;23798:46;23815:19;23836:7;23798:16;:46::i;:::-;23113:759;;;22981:914;;23937:5;23936:6;:19;;;;;23947:8;23946:9;23936:19;23932:39;;;23967:4;23957:14;;23932:39;-1:-1:-1;;;;;24022:17:0;;;;;;:13;:17;;;;;;;;24018:71;;;24069:4;24060:13;;24018:71;-1:-1:-1;;;;;24117:19:0;;;;;;:13;:19;;;;;;;;24116:20;:42;;;;-1:-1:-1;;;;;;24141:17:0;;;;;;:13;:17;;;;;;;;24140:18;24116:42;24112:92;;;24188:4;24175:17;;24112:92;24216:193;24245:4;24264:2;24281:6;24302:7;24324:6;24345:10;24370:5;24390:8;24216:14;:193::i;:::-;-1:-1:-1;;;;;24426:21:0;;24442:4;24426:21;24422:156;;24468:6;24464:62;;;24495:15;24505:4;24495:9;:15::i;:::-;24540:26;24554:11;;24540:13;:26::i;15701:486::-;15781:17;15812:14;15828:13;15843:20;15867:14;:12;:14::i;:::-;15811:70;;;;;;15892:19;15935:1;15926:6;:10;:23;;;;;15948:1;15940:5;:9;15926:23;15922:95;;;16000:5;15981:15;15990:6;15981;:15;:::i;:::-;15980:25;;;;:::i;:::-;15966:39;;15922:95;16066:20;16075:11;16066:6;:20;:::i;:::-;16050:12;:36;16046:134;;16119:49;16132:12;16146:6;16154;16162:5;16119:12;:49::i;:::-;-1:-1:-1;16103:65:0;-1:-1:-1;16046:134:0;15701:486;;;;;;;:::o;18762:390::-;18845:17;18876:14;18894:20;18918:14;:12;:14::i;:::-;18875:57;;;;;18985:6;18969:12;:22;18965:180;;19113:9;;19126:6;;19103:20;;-1:-1:-1;;;;;19113:9:0;19103;:20::i;:::-;:29;;;;:::i;:::-;19057:9;;;;;;;;;-1:-1:-1;;;;;19057:9:0;-1:-1:-1;;;;;19047:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19038:43;;:6;:43;:::i;:::-;19037:96;;;;:::i;:::-;19008:125;;18965:180;18762:390;;;;;:::o;14200:293::-;-1:-1:-1;;;;;14344:17:0;;14327:4;14344:17;;;:9;:17;;;;;:27;;14365:6;;14344:17;14327:4;;14344:27;;14365:6;;14344:27;:::i;:::-;;;;-1:-1:-1;;;;;;;14382:20:0;;;;;;:9;:20;;;;;:30;;14406:6;;14382:20;:30;;14406:6;;14382:30;:::i;:::-;;;;;;;;14445:9;-1:-1:-1;;;;;14428:35:0;14437:6;-1:-1:-1;;;;;14428:35:0;;14456:6;14428:35;;;;10321:25:1;;10309:2;10294:18;;10276:76;14428:35:0;;;;;;;;-1:-1:-1;14481:4:0;14200:293;;;;;:::o;24866:353::-;-1:-1:-1;;;;;25013:17:0;;;;;;:9;:17;;;;;;:27;;25033:7;;25013:27;:::i;:::-;-1:-1:-1;;;;;24993:17:0;;;;;;:9;:17;;;;;:47;;;;25088:3;25072:12;:7;25082:2;25072:12;:::i;:::-;25071:20;;;;:::i;:::-;25124:11;;25051:40;;-1:-1:-1;25102:45:0;;25116:6;;-1:-1:-1;;;;;25124:11:0;25051:40;25102:13;:45::i;:::-;25158:53;25172:6;25180:9;25191:19;25201:9;25191:7;:19;:::i;:::-;25158:13;:53::i;29306:2772::-;6147:6;:13;;-1:-1:-1;;6147:13:0;6156:4;6147:13;;;29430:12;;;:32:::1;;-1:-1:-1::0;29446:16:0;;29430:32:::1;29426:71;;;29479:7;;29426:71;29509:13;29538:9;;29525:10;;:22;;;;:::i;:::-;29509:38:::0;-1:-1:-1;29558:16:0::1;29605:7:::0;29601:1:::1;29578:19;29509:38:::0;29578:11;:19:::1;:::i;:::-;29577:25;;;;:::i;:::-;:35;;;;:::i;:::-;29558:54:::0;-1:-1:-1;29623:18:0::1;29654:9;29662:1;29654:5:::0;:9:::1;:::i;:::-;29644:19;::::0;:7;:19:::1;:::i;:::-;29695:8;::::0;29751:16:::1;::::0;;29765:1:::1;29751:16:::0;;;;;::::1;::::0;;29623:40;;-1:-1:-1;;;;;;29695:8:0;;::::1;::::0;29676:9:::1;::::0;29751:16;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;29751:16:0::1;29717:50;;29806:4;29778:14;29793:1;29778:17;;;;;;-1:-1:-1::0;;;29778:17:0::1;;;;;;;;;-1:-1:-1::0;;;;;29778:33:0;;::::1;:17;::::0;;::::1;::::0;;;;;:33;29842:8:::1;::::0;29822:17;;29842:8;::::1;::::0;29822:14;;29842:8;;29822:17;::::1;;;-1:-1:-1::0;;;29822:17:0::1;;;;;;;;;-1:-1:-1::0;;;;;29822:28:0;;::::1;:17;::::0;;::::1;::::0;;;;;:28;29878:11:::1;::::0;::::1;:65;29962:22;29976:8:::0;29962:11;:22:::1;:::i;:::-;30064:17;::::0;29878:253:::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;;29878:253:0;;;::::1;::::0;;30003:1:::1;::::0;30023:14;;30064:17:::1;::::0;::::1;-1:-1:-1::0;;;;;30064:17:0::1;::::0;30101:15:::1;::::0;29878:253:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;29861:416;;30170:95;::::0;30249:1:::1;10321:25:1::0;;30170:95:0::1;::::0;10309:2:1;10294:18;30170:95:0::1;;;;;;;29861:416;30325:17;::::0;30304:40:::1;::::0;-1:-1:-1;;;30304:40:0;;-1:-1:-1;;;;;30325:17:0::1;::::0;;::::1;::::0;::::1;30304:40;::::0;::::1;7169:51:1::0;-1:-1:-1;;30304:12:0;::::1;::::0;::::1;::::0;7142:18:1;;30304:40:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30287:57:::0;-1:-1:-1;30359:11:0;;30355:110:::1;;30411:17;::::0;30387:66:::1;::::0;-1:-1:-1;;;30387:66:0;;30411:17:::1;::::0;;::::1;-1:-1:-1::0;;;;;30411:17:0;;::::1;30387:66;::::0;::::1;7982:34:1::0;30439:4:0::1;8032:18:1::0;;;8025:43;8084:18;;;8077:34;;;30387:15:0;::::1;::::0;::::1;::::0;7917:18:1;;30387:66:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30355:110;30477:18;30521:10:::0;30517:1:::1;30499:14;30508:5:::0;30499:6;:14:::1;:::i;:::-;30498:20;;;;:::i;:::-;:33;;;;:::i;:::-;30477:54;;30542:17;30617:10;30587:12;;30573:11;;:26;;;;:::i;:::-;30563:37;::::0;:6;:37:::1;:::i;:::-;30562:65;;;;:::i;:::-;30542:85:::0;-1:-1:-1;30661:13:0;;30657:310:::1;;30695:13;::::0;::::1;;30691:215;;;30735:8;::::0;30729:35:::1;::::0;-1:-1:-1;;;30729:35:0;;::::1;::::0;::::1;10321:25:1::0;;;-1:-1:-1;;;;;30735:8:0;;::::1;::::0;30729:24:::1;::::0;10294:18:1;;30729:35:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;30783:11:0::1;::::0;:31:::1;::::0;-1:-1:-1;;;;;30783:11:0;;::::1;::::0;-1:-1:-1;30783:31:0;::::1;;;::::0;-1:-1:-1;30804:9:0;;30783:11:::1;:31:::0;:11;:31;30804:9;30783:11;:31;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;30691:215;;;30867:11;::::0;30855:35:::1;::::0;-1:-1:-1;;;30855:35:0;;-1:-1:-1;;;;;30867:11:0;;::::1;30855:35;::::0;::::1;7637:51:1::0;7704:18;;;7697:34;;;30855:11:0;;::::1;::::0;::::1;::::0;7610:18:1;;30855:35:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30691:215;30946:9;30920:22;;:35;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;30657:310:0::1;31018:1;31007:8;:12;:30;;;;;31036:1;31023:10;:14;31007:30;31003:481;;;31075:11;::::0;31166:8:::1;::::0;31310:22:::1;::::0;31075:314:::1;::::0;-1:-1:-1;;;31075:314:0;;31130:4:::1;31075:314;::::0;::::1;8519:34:1::0;-1:-1:-1;;;;;31166:8:0;;::::1;8569:18:1::0;;;8562:43;8621:18;;;8614:34;;;8664:18;;;8657:34;;;31075:11:0::1;8707:19:1::0;;;8700:35;;;8751:19;;;8744:35;31310:22:0;;::::1;8795:19:1::0;;;8788:44;31355:15:0::1;8848:19:1::0;;;8841:35;31075:11:0;::::1;::::0;:24:::1;::::0;8453:19:1;;31075:314:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;31075:314:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;31075:314:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;31054:419;;31436:21;::::0;::::1;::::0;;;::::1;31054:419;;;;;;;31535:14;;31519:13;;:30;;;;:::i;:::-;31515:74;;31571:7;;;;;;;;;;31515:74;31612:8;::::0;31605:3:::1;::::0;31612:8:::1;31605:3:::0;::::1;-1:-1:-1::0;;;;;31605:3:0;;::::1;31612:8:::0;::::1;31605:15;31601:54;;;31637:7;;;;;;;;;;31601:54;31684:11;::::0;31768:27:::1;::::0;-1:-1:-1;;;31768:27:0;;31789:4:::1;31768:27;::::0;::::1;7169:51:1::0;-1:-1:-1;;;;;31684:11:0;;::::1;::::0;:65:::1;::::0;31768:12;;::::1;::::0;::::1;::::0;7142:18:1;;31768:27:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31814:1;31834:10;31871:4;31895:15;31684:241;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;31667:404;;31964:95;::::0;32043:1:::1;10321:25:1::0;;31964:95:0::1;::::0;10309:2:1;10294:18;31964:95:0::1;;;;;;;31667:404;6171:1;;;;;;;;;-1:-1:-1::0;;6183:6:0;:14;;-1:-1:-1;;6183:14:0;;;29306:2772::o;25851:2975::-;-1:-1:-1;;;;;26116:17:0;;;;;;:9;:17;;;;;;:27;;26136:7;;26116:27;:::i;:::-;-1:-1:-1;;;;;26096:17:0;;;;;;:9;:17;;;;;:47;;;;26184:1054;;;;26212:15;26246:6;26242:326;;;26315:10;;26298:14;;26283:12;;:29;;;;:::i;:::-;:42;;;;:::i;:::-;26273:52;;26242:326;;;26402:13;;26390:9;;26376:11;;:23;;;;:::i;:::-;:39;;;;:::i;:::-;26438:15;;26366:49;;-1:-1:-1;;;;26438:15:0;;;;26434:119;;;26497:12;;26486:7;:23;;26478:55;;;;-1:-1:-1;;;26478:55:0;;12053:2:1;26478:55:0;;;12035:21:1;12092:2;12072:18;;;12065:30;-1:-1:-1;;;12111:18:1;;;12104:49;12170:18;;26478:55:0;12025:169:1;26478:55:0;26584:18;26627:5;26606:17;26616:7;26606;:17;:::i;:::-;26605:27;;;;:::i;:::-;26584:48;-1:-1:-1;26651:14:0;;26647:145;;26686:23;26699:10;26686:23;;:::i;:::-;;;26728:48;26742:6;26758:4;26765:10;26728:13;:48::i;:::-;26808:18;26846:6;26841:225;;26935:5;26920:11;;26910:7;:21;;;;:::i;:::-;26909:31;;;;:::i;:::-;26896:44;;26841:225;;;27045:5;27029:12;;27019:7;:22;;;;:::i;:::-;27018:32;;;;:::i;:::-;27005:45;;26841:225;27084:14;;27080:147;;27119:23;27132:10;27119:23;;:::i;:::-;;;27161:50;27175:6;27191;27200:10;27161:13;:50::i;:::-;26184:1054;;;;27254:10;:36;;;;-1:-1:-1;;;;;;27269:21:0;;;;;;:13;:21;;;;;;;;27268:22;27254:36;:65;;;;-1:-1:-1;;;;;;27295:24:0;;;;;;:13;:24;;;;;;;;27294:25;27254:65;27250:371;;;27336:25;27422:5;27407:11;;27397:7;:21;;;;:::i;:::-;27396:31;;;;:::i;:::-;27376:51;-1:-1:-1;27448:21:0;;27444:166;;27490:30;27503:17;27490:30;;:::i;:::-;;;27539:55;27553:6;27569:4;27576:17;27539:13;:55::i;:::-;27250:371;;27637:5;:31;;;;-1:-1:-1;;;;;;27647:21:0;;;;;;:13;:21;;;;;;;;27646:22;27637:31;:60;;;;-1:-1:-1;;;;;;27673:24:0;;;;;;:13;:24;;;;;;;;27672:25;27637:60;27633:390;;;27714:29;27812:5;27793:15;;27783:7;:25;;;;:::i;:::-;27782:35;;;;:::i;:::-;27758:59;-1:-1:-1;27838:25:0;;27834:178;;27884:34;27897:21;27884:34;;:::i;:::-;;;27937:59;27951:6;27967:4;27974:21;27937:13;:59::i;:::-;27633:390;;28039:8;:34;;;;-1:-1:-1;;;;;;28052:21:0;;;;;;:13;:21;;;;;;;;28051:22;28039:34;:63;;;;-1:-1:-1;;;;;;28078:24:0;;;;;;:13;:24;;;;;;;;28077:25;28039:63;28035:495;;;28119:32;28226:5;28204:18;;28194:7;:28;;;;:::i;:::-;28193:38;;;;:::i;:::-;28166:65;-1:-1:-1;28252:28:0;;28248:271;;28301:37;28314:24;28301:37;;:::i;:::-;;;28357:146;28393:6;28430;28460:24;28357:13;:146::i;:::-;28035:495;;-1:-1:-1;;;;;28547:25:0;;;;;;:14;:25;;;;;;;;28546:26;:47;;;;-1:-1:-1;28576:17:0;;-1:-1:-1;;;28576:17:0;;;;28546:47;28542:212;;;28682:15;;-1:-1:-1;;;;;28635:20:0;;;;;;:9;:20;;;;;;28668:9;;28635:30;;28658:7;;28635:30;:::i;:::-;:42;;;;:::i;:::-;28634:63;;28608:146;;;;-1:-1:-1;;;28608:146:0;;13439:2:1;28608:146:0;;;13421:21:1;13478:2;13458:18;;;13451:30;-1:-1:-1;;;13497:18:1;;;13490:51;13558:18;;28608:146:0;13411:171:1;28608:146:0;28765:53;28779:6;28787:9;28798:19;28808:9;28798:7;:19;:::i;28765:53::-;25851:2975;;;;;;;;;:::o;36758:2177::-;36864:12;36839:22;;36817:19;;:44;;;;:::i;:::-;:59;36813:98;;;36758:2177;:::o;36813:98::-;36944:3;;36979:29;;-1:-1:-1;;;36979:29:0;;37002:4;36979:29;;;7169:51:1;36944:3:0;;;;-1:-1:-1;;;;;36944:3:0;;36923:11;;36944:3;;36979:14;;7142:18:1;;36979:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36961:47;;37033:21;;37023:7;:31;37019:70;;;37071:7;;36758:2177;:::o;37019:70::-;37280:9;;37326:23;;;-1:-1:-1;;;37326:23:0;;;;-1:-1:-1;;;;;37280:9:0;;;;37254:16;;37280:9;;37326:21;;:23;;;;;;;;;;;;;;;37280:9;37326:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37477:7;:14;37301:48;;-1:-1:-1;37362:19:0;;;;;;;;;37585:9;37615:29;;-1:-1:-1;;;37615:29:0;;37638:4;37615:29;;;7169:51:1;37567:27:0;;-1:-1:-1;;;;;;37615:14:0;;;;;7142:18:1;;37615:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37696:8;;37716:9;;37689:37;;-1:-1:-1;;;37689:37:0;;-1:-1:-1;;;;;37716:9:0;;;37689:37;;;7169:51:1;37605:39:0;;-1:-1:-1;37657:29:0;;37696:8;;;37689:26;;7142:18:1;;37689:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37657:69;;37739:1142;37756:3;37746:7;:13;:46;;;;;37776:16;37763:10;:29;37746:46;37739:1142;;;37829:16;37813:12;;:32;37809:89;;37881:1;37866:12;:16;37809:89;37926:7;37934:12;;37926:21;;;;;;-1:-1:-1;;;37926:21:0;;;;;;;;;;;;;;;;;;;37977:32;;-1:-1:-1;;;37977:32:0;;-1:-1:-1;;;;;37926:21:0;;;37977:32;;;7169:51:1;;;37926:21:0;-1:-1:-1;37977:19:0;;;;;;7142:18:1;;37977:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37962:47;;38043:1;38028:12;:16;:47;;;;-1:-1:-1;;;;;;38049:26:0;;;;;;:13;:26;;;;;;;;38048:27;38028:47;38024:698;;;38132:14;38106:22;38116:12;38106:7;:22;:::i;:::-;38105:41;;;;:::i;:::-;38096:50;-1:-1:-1;38165:17:0;38248:14;38187:36;38211:12;38187:21;:36;:::i;:::-;38186:76;;;;:::i;:::-;38165:98;;38298:16;;38286:9;:28;38282:272;;;38495:16;;38377:157;;;-1:-1:-1;;;;;9386:32:1;;9368:51;;9450:2;9435:18;;9428:34;;;9478:18;;;9471:34;;;;38377:157:0;-1:-1:-1;;;38377:157:0;;;;;9356:2:1;38377:157:0;;;38282:272;38585:1;38576:6;:10;:52;;;;-1:-1:-1;38590:29:0;;-1:-1:-1;;;38590:29:0;;38613:4;38590:29;;;7169:51:1;38622:6:0;;-1:-1:-1;;;;;38590:14:0;;;;;7142:18:1;;38590:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:38;38576:52;38572:135;;;38653:34;;-1:-1:-1;;;38653:34:0;;-1:-1:-1;;;;;7655:32:1;;;38653:34:0;;;7637:51:1;7704:18;;;7697:34;;;38653:13:0;;;;;7610:18:1;;38653:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;38572:135;38024:698;;38769:9;38759:19;;:7;:19;:::i;:::-;38748:31;;:7;:31;:::i;:::-;38738:41;;38804:9;38828:12;:14;;38794:19;;-1:-1:-1;38828:12:0;:14;;;:::i;:::-;;;;;;38857:12;;;;;:::i;:::-;;;;37739:1142;;;-1:-1:-1;;38915:12:0;38893:19;:34;-1:-1:-1;;;;;;;;;;;36758:2177:0:o;16195:1356::-;16340:17;16359:22;16394:23;16430:9;;;;;;;;;-1:-1:-1;;;;;16430:9:0;-1:-1:-1;;;;;16420:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16394:60;;16465:13;16494:11;;;;;;;;;-1:-1:-1;;;;;16494:11:0;-1:-1:-1;;;;;16494:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16481:41:0;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16605:9;;16595:28;;;-1:-1:-1;;;16595:28:0;;;;16465:59;;-1:-1:-1;;;;;;16548:19:0;;;;;;16535:10;;16605:9;;;;16595:26;;:28;;;;;;;;;;;;;;16605:9;16595:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16578:45;;16638:5;16634:590;;;16664:11;;16660:553;;16696:13;16712:18;16722:7;16727:2;16722;:7;:::i;:::-;16712:9;:18::i;:::-;16696:34;;16749:17;16769;16779:6;16769:9;:17::i;:::-;16749:37;;16817:9;16809:5;:17;16805:393;;;16851:17;16915;16923:9;16915:5;:17;:::i;:::-;16871:62;;:15;:62;:::i;:::-;:91;;16961:1;16871:91;:::i;:::-;16851:111;-1:-1:-1;16985:19:0;17021:13;:9;17033:1;17021:13;:::i;:::-;17007:10;:5;17015:2;17007:10;:::i;:::-;:28;;;;:::i;:::-;16985:50;-1:-1:-1;17075:23:0;16985:50;17075:9;:23;:::i;:::-;17058:40;-1:-1:-1;17125:18:0;;17121:57;;17145:33;17164:14;17145:33;;:::i;:::-;;;17121:57;16805:393;;;16660:553;;;17234:15;17252:13;17263:2;17252:8;:13;:::i;:::-;17234:31;-1:-1:-1;17280:20:0;17276:268;;17359:4;17329:27;17339:16;17349:6;17339:7;:16;:::i;17329:27::-;:34;;;;:::i;:::-;17317:46;;17276:268;;;17408:124;17465:2;17436:25;17446:15;17436:7;:25;:::i;:::-;17435:32;;;;:::i;:::-;17515:2;17487:24;17496:15;17487:6;:24;:::i;:::-;17486:31;;;;:::i;:::-;17408:8;:124::i;:::-;17396:136;;17276:268;16195:1356;;;;;;;;;;;;:::o;32086:213::-;-1:-1:-1;;;;;32223:13:0;;;;;;:9;:13;;;;;;:23;;32239:7;;32223:23;:::i;:::-;-1:-1:-1;;;;;32207:13:0;;;;;;;:9;:13;;;;;;;:39;;;;32262:29;;;;;;;;;;32283:7;10321:25:1;;10309:2;10294:18;;10276:76;184:303:0;229:6;256:1;252;:5;248:232;;;-1:-1:-1;278:1:0;294:6;303:5;307:1;278;303:5;:::i;:::-;:9;;311:1;303:9;:::i;:::-;294:18;;327:92;338:1;334;:5;327:92;;;364:1;-1:-1:-1;364:1:0;402;364;389:5;364:1;389;:5;:::i;:::-;:9;;;;:::i;:::-;388:15;;;;:::i;:::-;384:19;;327:92;;;248:232;13861:185;;;:::o;248:232::-;440:6;;436:44;;-1:-1:-1;467:1:0;184:303;;;:::o;80:96::-;132:6;159:1;155;:5;:13;;167:1;155:13;;;163:1;155:13;151:17;80:96;-1:-1:-1;;;80:96:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:395:1;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:2;;166:8;156;149:26;108:2;-1:-1:-1;196:20:1;;239:18;228:30;;225:2;;;278:8;268;261:26;225:2;322:4;314:6;310:17;298:29;;382:3;375:4;365:6;362:1;358:14;350:6;346:27;342:38;339:47;336:2;;;399:1;396;389:12;336:2;98:311;;;;;:::o;414:188::-;493:13;;-1:-1:-1;;;;;535:42:1;;525:53;;515:2;;592:1;589;582:12;607:257;666:6;719:2;707:9;698:7;694:23;690:32;687:2;;;740:6;732;725:22;687:2;784:9;771:23;803:31;828:5;803:31;:::i;869:261::-;939:6;992:2;980:9;971:7;967:23;963:32;960:2;;;1013:6;1005;998:22;960:2;1050:9;1044:16;1069:31;1094:5;1069:31;:::i;1405:398::-;1473:6;1481;1534:2;1522:9;1513:7;1509:23;1505:32;1502:2;;;1555:6;1547;1540:22;1502:2;1599:9;1586:23;1618:31;1643:5;1618:31;:::i;:::-;1668:5;-1:-1:-1;1725:2:1;1710:18;;1697:32;1738:33;1697:32;1738:33;:::i;:::-;1790:7;1780:17;;;1492:311;;;;;:::o;1808:466::-;1885:6;1893;1901;1954:2;1942:9;1933:7;1929:23;1925:32;1922:2;;;1975:6;1967;1960:22;1922:2;2019:9;2006:23;2038:31;2063:5;2038:31;:::i;:::-;2088:5;-1:-1:-1;2145:2:1;2130:18;;2117:32;2158:33;2117:32;2158:33;:::i;:::-;1912:362;;2210:7;;-1:-1:-1;;;2264:2:1;2249:18;;;;2236:32;;1912:362::o;2279:392::-;2344:6;2352;2405:2;2393:9;2384:7;2380:23;2376:32;2373:2;;;2426:6;2418;2411:22;2373:2;2470:9;2457:23;2489:31;2514:5;2489:31;:::i;:::-;2539:5;-1:-1:-1;2596:2:1;2581:18;;2568:32;2609:30;2568:32;2609:30;:::i;2676:325::-;2744:6;2752;2805:2;2793:9;2784:7;2780:23;2776:32;2773:2;;;2826:6;2818;2811:22;2773:2;2870:9;2857:23;2889:31;2914:5;2889:31;:::i;:::-;2939:5;2991:2;2976:18;;;;2963:32;;-1:-1:-1;;;2763:238:1:o;3006:474::-;3091:6;3099;3107;3160:2;3148:9;3139:7;3135:23;3131:32;3128:2;;;3181:6;3173;3166:22;3128:2;3225:9;3212:23;3244:31;3269:5;3244:31;:::i;:::-;3294:5;-1:-1:-1;3346:2:1;3331:18;;3318:32;;-1:-1:-1;3402:2:1;3387:18;;3374:32;3415:33;3374:32;3415:33;:::i;:::-;3467:7;3457:17;;;3118:362;;;;;:::o;3485:457::-;3571:6;3579;3632:2;3620:9;3611:7;3607:23;3603:32;3600:2;;;3653:6;3645;3638:22;3600:2;3698:9;3685:23;3731:18;3723:6;3720:30;3717:2;;;3768:6;3760;3753:22;3717:2;3812:70;3874:7;3865:6;3854:9;3850:22;3812:70;:::i;:::-;3901:8;;3786:96;;-1:-1:-1;3590:352:1;-1:-1:-1;;;;3590:352:1:o;3947:586::-;4039:6;4047;4055;4108:2;4096:9;4087:7;4083:23;4079:32;4076:2;;;4129:6;4121;4114:22;4076:2;4174:9;4161:23;4207:18;4199:6;4196:30;4193:2;;;4244:6;4236;4229:22;4193:2;4288:70;4350:7;4341:6;4330:9;4326:22;4288:70;:::i;:::-;4377:8;;-1:-1:-1;4262:96:1;-1:-1:-1;;4462:2:1;4447:18;;4434:32;4475:28;4434:32;4475:28;:::i;5000:251::-;5056:6;5109:2;5097:9;5088:7;5084:23;5080:32;5077:2;;;5130:6;5122;5115:22;5077:2;5174:9;5161:23;5193:28;5215:5;5193:28;:::i;5256:255::-;5323:6;5376:2;5364:9;5355:7;5351:23;5347:32;5344:2;;;5397:6;5389;5382:22;5344:2;5434:9;5428:16;5453:28;5475:5;5453:28;:::i;5516:470::-;5603:6;5611;5619;5672:2;5660:9;5651:7;5647:23;5643:32;5640:2;;;5693:6;5685;5678:22;5640:2;5721:40;5751:9;5721:40;:::i;:::-;5711:50;;5780:49;5825:2;5814:9;5810:18;5780:49;:::i;:::-;5770:59;;5872:2;5861:9;5857:18;5851:25;5916:10;5909:5;5905:22;5898:5;5895:33;5885:2;;5947:6;5939;5932:22;5991:190;6050:6;6103:2;6091:9;6082:7;6078:23;6074:32;6071:2;;;6124:6;6116;6109:22;6071:2;-1:-1:-1;6152:23:1;;6061:120;-1:-1:-1;6061:120:1:o;6186:194::-;6256:6;6309:2;6297:9;6288:7;6284:23;6280:32;6277:2;;;6330:6;6322;6315:22;6277:2;-1:-1:-1;6358:16:1;;6267:113;-1:-1:-1;6267:113:1:o;6385:316::-;6473:6;6481;6489;6542:2;6530:9;6521:7;6517:23;6513:32;6510:2;;;6563:6;6555;6548:22;6510:2;6597:9;6591:16;6581:26;;6647:2;6636:9;6632:18;6626:25;6616:35;;6691:2;6680:9;6676:18;6670:25;6660:35;;6500:201;;;;;:::o;10547:603::-;10659:4;10688:2;10717;10706:9;10699:21;10749:6;10743:13;10792:6;10787:2;10776:9;10772:18;10765:34;10817:4;10830:140;10844:6;10841:1;10838:13;10830:140;;;10939:14;;;10935:23;;10929:30;10905:17;;;10924:2;10901:26;10894:66;10859:10;;10830:140;;;10988:6;10985:1;10982:13;10979:2;;;11058:4;11053:2;11044:6;11033:9;11029:22;11025:31;11018:45;10979:2;-1:-1:-1;11134:2:1;11113:15;-1:-1:-1;;11109:29:1;11094:45;;;;11141:2;11090:54;;10668:482;-1:-1:-1;;;10668:482:1:o;18730:329::-;18932:2;18914:21;;;18971:1;18951:18;;;18944:29;-1:-1:-1;;;19004:2:1;18989:18;;18982:36;19050:2;19035:18;;18904:155::o;19246:983::-;19508:4;19556:3;19545:9;19541:19;19587:6;19576:9;19569:25;19613:2;19651:6;19646:2;19635:9;19631:18;19624:34;19694:3;19689:2;19678:9;19674:18;19667:31;19718:6;19753;19747:13;19784:6;19776;19769:22;19822:3;19811:9;19807:19;19800:26;;19861:2;19853:6;19849:15;19835:29;;19882:4;19895:195;19909:6;19906:1;19903:13;19895:195;;;19974:13;;-1:-1:-1;;;;;19970:39:1;19958:52;;20065:15;;;;20030:12;;;;20006:1;19924:9;19895:195;;;-1:-1:-1;;;;;;;20146:32:1;;;;20141:2;20126:18;;20119:60;-1:-1:-1;;;20210:3:1;20195:19;20188:35;20107:3;19517:712;-1:-1:-1;;;19517:712:1:o;20234:1012::-;20493:4;20541:3;20530:9;20526:19;20572:6;20561:9;20554:25;20598:2;20636:6;20631:2;20620:9;20616:18;20609:34;20679:3;20674:2;20663:9;20659:18;20652:31;20703:6;20738;20732:13;20769:6;20761;20754:22;20807:3;20796:9;20792:19;20785:26;;20833:6;20827:4;20820:20;20879:2;20873:4;20863:19;20849:33;;20900:4;20913:194;20927:6;20924:1;20921:13;20913:194;;;20992:13;;-1:-1:-1;;;;;20988:39:1;20976:52;;21024:1;21083:14;;;;21048:12;;;;20942:9;20913:194;;21575:128;21615:3;21646:1;21642:6;21639:1;21636:13;21633:2;;;21652:18;;:::i;:::-;-1:-1:-1;21688:9:1;;21623:80::o;21708:217::-;21748:1;21774;21764:2;;-1:-1:-1;;;21799:31:1;;21853:4;21850:1;21843:15;21881:4;21806:1;21871:15;21764:2;-1:-1:-1;21910:9:1;;21754:171::o;21930:168::-;21970:7;22036:1;22032;22028:6;22024:14;22021:1;22018:21;22013:1;22006:9;21999:17;21995:45;21992:2;;;22043:18;;:::i;:::-;-1:-1:-1;22083:9:1;;21982:116::o;22103:125::-;22143:4;22171:1;22168;22165:8;22162:2;;;22176:18;;:::i;:::-;-1:-1:-1;22213:9:1;;22152:76::o;22233:380::-;22312:1;22308:12;;;;22355;;;22376:2;;22430:4;22422:6;22418:17;22408:27;;22376:2;22483;22475:6;22472:14;22452:18;22449:38;22446:2;;;22529:10;22524:3;22520:20;22517:1;22510:31;22564:4;22561:1;22554:15;22592:4;22589:1;22582:15;22618:135;22657:3;-1:-1:-1;;22678:17:1;;22675:2;;;22698:18;;:::i;:::-;-1:-1:-1;22745:1:1;22734:13;;22665:88::o;22758:127::-;22819:10;22814:3;22810:20;22807:1;22800:31;22850:4;22847:1;22840:15;22874:4;22871:1;22864:15;22890:131;-1:-1:-1;;;;;22965:31:1;;22955:42;;22945:2;;23011:1;23008;23001:12;23026:118;23112:5;23105:13;23098:21;23091:5;23088:32;23078:2;;23134:1;23131;23124:12
Swarm Source
ipfs://1b80c92196d7354931bcbde01e6935fb1a47c74de670789e8b63ececcb307a14
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.
Add Token to MetaMask (Web3)