Overview
Max Total Supply
10,000,000,000,000,000,000,000,000BNBFrog
Holders
12,343 (0.00%)
Market
Price
$0.00 @ 0.000000 BNB (-12.40%)
Onchain Market Cap
$0.00
Circulating Supply Market Cap
$0.00
Other Info
Token Contract (WITH 9 Decimals)
Balance
3,000,000,000,000,000,000.000000062 BNBFrogValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
BNBFrog
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/**
*Submitted for verification at BscScan.com on 2023-03-12
*/
/**
*Submitted for verification at Etherscan.io on 2022-01-03
*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.4;
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return payable(msg.sender);
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
library Address {
function isContract(address account) internal view returns (bool) {
// According to EIP-1052, 0x0 is the value returned for not-yet created accounts
// and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
// for accounts without code, i.e. `keccak256('')`
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
// solhint-disable-next-line no-inline-assembly
assembly { codehash := extcodehash(account) }
return (codehash != accountHash && codehash != 0x0);
}
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
// solhint-disable-next-line avoid-low-level-calls, avoid-call-value
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return _functionCallWithValue(target, data, 0, errorMessage);
}
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
return _functionCallWithValue(target, data, value, errorMessage);
}
function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
if (success) {
return returndata;
} else {
if (returndata.length > 0) {
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
contract Ownable is Context {
address private _owner;
address private _previousOwner;
uint256 private _lockTime;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function waiveOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
function getUnlockTime() public view returns (uint256) {
return _lockTime;
}
function getTime() public view returns (uint256) {
return block.timestamp;
}
function lock(uint256 time) public virtual onlyOwner {
_previousOwner = _owner;
_owner = address(0);
_lockTime = block.timestamp + time;
emit OwnershipTransferred(_owner, address(0));
}
function unlock() public virtual {
require(_previousOwner == msg.sender, "You don't have permission to unlock");
require(block.timestamp > _lockTime , "Contract is locked until 7 days");
emit OwnershipTransferred(_owner, _previousOwner);
_owner = _previousOwner;
}
}
interface IUniswapV2Factory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB) external view returns (address pair);
function allPairs(uint) external view returns (address pair);
function allPairsLength() external view returns (uint);
function createPair(address tokenA, address tokenB) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
contract BNBFrog is Context, IERC20, Ownable {
using SafeMath for uint256;
using Address for address;
string private _name = "BNB Frog Inu";
string private _symbol = "BNBFrog";
uint8 private _decimals = 9;
address payable public marketingWalletAddress = payable(0xdf33151f17BC7c35416d304B2BF912C101C6F60B); // Marketing Address
address payable public teamWalletAddress = payable(0x111cA30436e2F65a214F650C39C20E3f2a69E5D7); // Team Address
address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
mapping (address => uint256) _balances;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) public isExcludedFromFee;
mapping (address => bool) public isWalletLimitExempt;
mapping (address => bool) public isTxLimitExempt;
mapping (address => bool) public isMarketPair;
uint256 public _buyLiquidityFee = 2;
uint256 public _buyMarketingFee = 2;
uint256 public _buyTeamFee = 5;
uint256 public _sellLiquidityFee = 2;
uint256 public _sellMarketingFee = 2;
uint256 public _sellTeamFee = 5;
uint256 public _liquidityShare = 4;
uint256 public _marketingShare = 4;
uint256 public _teamShare = 16;
uint256 public _totalTaxIfBuying = 12;
uint256 public _totalTaxIfSelling = 12;
uint256 public _totalDistributionShares = 24;
uint256 private _totalSupply = 10000000000000 * 10**6* 10**6 * 10**_decimals;
uint256 public _maxTxAmount = 10000000000000 * 10**6 * 10**6* 10**_decimals;
uint256 public _walletMax = 10000000000000 * 10**6 * 10**6* 10**_decimals;
uint256 private minimumTokensBeforeSwap = 10000000000000 * 10**6* 10**_decimals;
IUniswapV2Router02 public uniswapV2Router;
address public uniswapPair;
bool inSwapAndLiquify;
bool public swapAndLiquifyEnabled = true;
bool public swapAndLiquifyByLimitOnly = false;
bool public checkWalletLimit = true;
event SwapAndLiquifyEnabledUpdated(bool enabled);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiqudity
);
event SwapETHForTokens(
uint256 amountIn,
address[] path
);
event SwapTokensForETH(
uint256 amountIn,
address[] path
);
modifier lockTheSwap {
inSwapAndLiquify = true;
_;
inSwapAndLiquify = false;
}
constructor () {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
uniswapV2Router = _uniswapV2Router;
_allowances[address(this)][address(uniswapV2Router)] = _totalSupply;
isExcludedFromFee[owner()] = true;
isExcludedFromFee[address(this)] = true;
_totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee);
_totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee);
_totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
isWalletLimitExempt[owner()] = true;
isWalletLimitExempt[address(uniswapPair)] = true;
isWalletLimitExempt[address(this)] = true;
isTxLimitExempt[owner()] = true;
isTxLimitExempt[address(this)] = true;
isMarketPair[address(uniswapPair)] = true;
_balances[_msgSender()] = _totalSupply;
emit Transfer(address(0), _msgSender(), _totalSupply);
}
function name() public view returns (string memory) {
return _name;
}
function symbol() public view returns (string memory) {
return _symbol;
}
function decimals() public view returns (uint8) {
return _decimals;
}
function totalSupply() public view override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
function minimumTokensBeforeSwapAmount() public view returns (uint256) {
return minimumTokensBeforeSwap;
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function _approve(address owner, address spender, uint256 amount) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function setMarketPairStatus(address account, bool newValue) public onlyOwner {
isMarketPair[account] = newValue;
}
function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
isTxLimitExempt[holder] = exempt;
}
function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
isExcludedFromFee[account] = newValue;
}
function setBuyTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
_buyLiquidityFee = newLiquidityTax;
_buyMarketingFee = newMarketingTax;
_buyTeamFee = newTeamTax;
_totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee);
}
function setSellTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
_sellLiquidityFee = newLiquidityTax;
_sellMarketingFee = newMarketingTax;
_sellTeamFee = newTeamTax;
_totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee);
}
function setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newTeamShare) external onlyOwner() {
_liquidityShare = newLiquidityShare;
_marketingShare = newMarketingShare;
_teamShare = newTeamShare;
_totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
}
function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
_maxTxAmount = maxTxAmount;
}
function enableDisableWalletLimit(bool newValue) external onlyOwner {
checkWalletLimit = newValue;
}
function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
isWalletLimitExempt[holder] = exempt;
}
function setWalletLimit(uint256 newLimit) external onlyOwner {
_walletMax = newLimit;
}
function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
minimumTokensBeforeSwap = newLimit;
}
function setMarketingWalletAddress(address newAddress) external onlyOwner() {
marketingWalletAddress = payable(newAddress);
}
function setTeamWalletAddress(address newAddress) external onlyOwner() {
teamWalletAddress = payable(newAddress);
}
function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
swapAndLiquifyEnabled = _enabled;
emit SwapAndLiquifyEnabledUpdated(_enabled);
}
function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
swapAndLiquifyByLimitOnly = newValue;
}
function getCirculatingSupply() public view returns (uint256) {
return _totalSupply.sub(balanceOf(deadAddress));
}
function transferToAddressETH(address payable recipient, uint256 amount) private {
recipient.transfer(amount);
}
function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress);
newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());
if(newPairAddress == address(0)) //Create If Doesnt exist
{
newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
}
uniswapPair = newPairAddress; //Set new pair address
uniswapV2Router = _uniswapV2Router; //Set new router address
isWalletLimitExempt[address(uniswapPair)] = true;
isMarketPair[address(uniswapPair)] = true;
}
//to recieve ETH from uniswapV2Router when swaping
receive() external payable {}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
if(inSwapAndLiquify)
{
return _basicTransfer(sender, recipient, amount);
}
else
{
if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
}
uint256 contractTokenBalance = balanceOf(address(this));
bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled)
{
if(swapAndLiquifyByLimitOnly)
contractTokenBalance = minimumTokensBeforeSwap;
swapAndLiquify(contractTokenBalance);
}
_balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ?
amount : takeFee(sender, recipient, amount);
if(checkWalletLimit && !isWalletLimitExempt[recipient])
require(balanceOf(recipient).add(finalAmount) <= _walletMax);
_balances[recipient] = _balances[recipient].add(finalAmount);
emit Transfer(sender, recipient, finalAmount);
return true;
}
}
function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
_balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
return true;
}
function swapAndLiquify(uint256 tAmount) private lockTheSwap {
uint256 tokensForLP = tAmount.mul(_liquidityShare).div(_totalDistributionShares).div(2);
uint256 tokensForSwap = tAmount.sub(tokensForLP);
swapTokensForEth(tokensForSwap);
uint256 amountReceived = address(this).balance;
uint256 totalBNBFee = _totalDistributionShares.sub(_liquidityShare.div(2));
uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2);
uint256 amountBNBTeam = amountReceived.mul(_teamShare).div(totalBNBFee);
uint256 amountBNBMarketing = amountReceived.sub(amountBNBLiquidity).sub(amountBNBTeam);
if(amountBNBMarketing > 0)
transferToAddressETH(marketingWalletAddress, amountBNBMarketing);
if(amountBNBTeam > 0)
transferToAddressETH(teamWalletAddress, amountBNBTeam);
if(amountBNBLiquidity > 0 && tokensForLP > 0)
addLiquidity(tokensForLP, amountBNBLiquidity);
}
function swapTokensForEth(uint256 tokenAmount) private {
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
// make the swap
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this), // The contract
block.timestamp
);
emit SwapTokensForETH(tokenAmount, path);
}
function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
// approve token transfer to cover all possible scenarios
_approve(address(this), address(uniswapV2Router), tokenAmount);
// add the liquidity
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
owner(),
block.timestamp
);
}
function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
uint256 feeAmount = 0;
if(isMarketPair[sender]) {
feeAmount = amount.mul(_totalTaxIfBuying).div(100);
}
else if(isMarketPair[recipient]) {
feeAmount = amount.mul(_totalTaxIfSelling).div(100);
}
if(feeAmount > 0) {
_balances[address(this)] = _balances[address(this)].add(feeAmount);
emit Transfer(sender, address(this), feeAmount);
}
return amount.sub(feeAmount);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newTeamShare","type":"uint256"}],"name":"setDistributionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setTeamWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60a06040526040518060400160405280600c81526020017f424e422046726f6720496e750000000000000000000000000000000000000000815250600390805190602001906200005192919062000bf4565b506040518060400160405280600781526020017f424e4246726f6700000000000000000000000000000000000000000000000000815250600490805190602001906200009f92919062000bf4565b506009600560006101000a81548160ff021916908360ff16021790555073df33151f17bc7c35416d304b2bf912c101c6f60b600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073111ca30436e2f65a214f650c39c20e3f2a69e5d7600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152506002600d556002600e556005600f55600260105560026011556005601255600460135560046014556010601555600c601655600c60175560188055600560009054906101000a900460ff16600a620001f7919062000e65565b6a084595161401484a0000006200020f919062000fa2565b601955600560009054906101000a900460ff16600a62000230919062000e65565b6a084595161401484a00000062000248919062000fa2565b601a55600560009054906101000a900460ff16600a62000269919062000e65565b6a084595161401484a00000062000281919062000fa2565b601b55600560009054906101000a900460ff16600a620002a2919062000e65565b678ac7230489e80000620002b7919062000fa2565b601c556001601e60156101000a81548160ff0219169083151502179055506000601e60166101000a81548160ff0219169083151502179055506001601e60176101000a81548160ff0219169083151502179055503480156200031857600080fd5b5060006200032b62000b6060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060007310ed43c718714eb63d5aa57b78b54704e256024e90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200042957600080fd5b505afa1580156200043e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000464919062000cbb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004c757600080fd5b505afa158015620004dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000502919062000cbb565b6040518363ffffffff1660e01b81526004016200052192919062000d30565b602060405180830381600087803b1580156200053c57600080fd5b505af115801562000551573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000577919062000cbb565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601954600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160096000620006b362000b6860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000795600f5462000781600e54600d5462000b9160201b62002dfd1790919060201c565b62000b9160201b62002dfd1790919060201c565b601681905550620007d4601254620007c060115460105462000b9160201b62002dfd1790919060201c565b62000b9160201b62002dfd1790919060201c565b60178190555062000813601554620007ff60145460135462000b9160201b62002dfd1790919060201c565b62000b9160201b62002dfd1790919060201c565b6018819055506001600a60006200082f62000b6860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60006200096862000b6860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506019546007600062000aa262000b6060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000af062000b6060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60195460405162000b51919062000d7f565b60405180910390a35062001132565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000ba2919062000dad565b90508381101562000bea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000be19062000d5d565b60405180910390fd5b8091505092915050565b82805462000c02906200104e565b90600052602060002090601f01602090048101928262000c26576000855562000c72565b82601f1062000c4157805160ff191683800117855562000c72565b8280016001018555821562000c72579182015b8281111562000c7157825182559160200191906001019062000c54565b5b50905062000c81919062000c85565b5090565b5b8082111562000ca057600081600090555060010162000c86565b5090565b60008151905062000cb58162001118565b92915050565b60006020828403121562000cce57600080fd5b600062000cde8482850162000ca4565b91505092915050565b62000cf28162001003565b82525050565b600062000d07601b8362000d9c565b915062000d1482620010ef565b602082019050919050565b62000d2a8162001037565b82525050565b600060408201905062000d47600083018562000ce7565b62000d56602083018462000ce7565b9392505050565b6000602082019050818103600083015262000d788162000cf8565b9050919050565b600060208201905062000d96600083018462000d1f565b92915050565b600082825260208201905092915050565b600062000dba8262001037565b915062000dc78362001037565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000dff5762000dfe62001084565b5b828201905092915050565b6000808291508390505b600185111562000e5c5780860481111562000e345762000e3362001084565b5b600185161562000e445780820291505b808102905062000e5485620010e2565b945062000e14565b94509492505050565b600062000e728262001037565b915062000e7f8362001041565b925062000eae7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000eb6565b905092915050565b60008262000ec8576001905062000f9b565b8162000ed8576000905062000f9b565b816001811462000ef1576002811462000efc5762000f32565b600191505062000f9b565b60ff84111562000f115762000f1062001084565b5b8360020a91508482111562000f2b5762000f2a62001084565b5b5062000f9b565b5060208310610133831016604e8410600b841016171562000f6c5782820a90508381111562000f665762000f6562001084565b5b62000f9b565b62000f7b848484600162000e0a565b9250905081840481111562000f955762000f9462001084565b5b81810290505b9392505050565b600062000faf8262001037565b915062000fbc8362001037565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000ff85762000ff762001084565b5b828202905092915050565b6000620010108262001017565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600060028204905060018216806200106757607f821691505b602082108114156200107e576200107d620010b3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b620011238162001003565b81146200112f57600080fd5b50565b60805160601c61516362001158600039600081816113f9015261142501526151636000f3fe6080604052600436106103b15760003560e01c80638b42507f116101e7578063c816841b1161010d578063dd62ed3e116100a0578063f1d5f5171161006f578063f1d5f51714610e0f578063f2fde38b14610e38578063f84ba65d14610e61578063f872858a14610e8a576103b8565b8063dd62ed3e14610d55578063ec28438a14610d92578063ef422a1814610dbb578063f0cd1dac14610de4576103b8565b8063d158272d116100dc578063d158272d14610cab578063da00097d14610cd6578063dc44b6a014610d01578063dd46706414610d2c576103b8565b8063c816841b14610bed578063c860795214610c18578063c867d60b14610c43578063cab0347114610c80576103b8565b8063a5d69d1f11610185578063c2d4640e11610154578063c2d4640e14610b45578063c469b6dd14610b6e578063c49b9a8014610b99578063c5d2418914610bc2576103b8565b8063a5d69d1f14610a9d578063a69df4b514610ac6578063a83f53a714610add578063a9059cbb14610b08576103b8565b806395d89b41116101c157806395d89b41146109df578063a073d37f14610a0a578063a08e671f14610a35578063a457c2d714610a60576103b8565b80638b42507f146109605780638da5cb5b1461099d578063914eb66a146109c8576103b8565b80633b97084a116102d7578063602bc62b1161026a578063807c2d9c11610239578063807c2d9c146108b657806382eefb43146108e1578063844d591c1461090c57806388790a6814610935576103b8565b8063602bc62b146107f857806361a23c691461082357806370a082311461084e5780637d1db4a51461088b576103b8565b80635342acb4116102a65780635342acb414610728578063557ed1ba1461076557806357a5802f146107905780635881f3ef146107bb576103b8565b80633b97084a1461066e5780633ecad271146106975780634a74bb02146106d45780634cb80fd5146106ff576103b8565b80632198cf6c1161034f5780632b112e491161031e5780632b112e49146105b25780632c4b2334146105dd578063313ce567146106065780633950935114610631576103b8565b80632198cf6c146104f857806323b872dd146105215780632563ae831461055e57806327c8f83514610587576103b8565b80631245e3471161038b5780631245e3471461044e5780631694505e1461047957806318160ddd146104a45780631870517a146104cf576103b8565b806306fdde03146103bd57806308733214146103e8578063095ea7b314610411576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610eb5565b6040516103df919061485c565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190614420565b610f47565b005b34801561041d57600080fd5b5061043860048036038101906104339190614392565b611027565b6040516104459190614826565b60405180910390f35b34801561045a57600080fd5b50610463611045565b6040516104709190614781565b60405180910390f35b34801561048557600080fd5b5061048e61106b565b60405161049b9190614841565b60405180910390f35b3480156104b057600080fd5b506104b9611091565b6040516104c691906149de565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f19190614420565b61109b565b005b34801561050457600080fd5b5061051f600480360381019061051a9190614356565b61117b565b005b34801561052d57600080fd5b5061054860048036038101906105439190614307565b61126b565b6040516105559190614826565b60405180910390f35b34801561056a57600080fd5b50610585600480360381019061058091906143ce565b611345565b005b34801561059357600080fd5b5061059c6113f7565b6040516105a99190614766565b60405180910390f35b3480156105be57600080fd5b506105c761141b565b6040516105d491906149de565b60405180910390f35b3480156105e957600080fd5b5061060460048036038101906105ff9190614279565b61145f565b005b34801561061257600080fd5b5061061b611538565b6040516106289190614a83565b60405180910390f35b34801561063d57600080fd5b5061065860048036038101906106539190614392565b61154f565b6040516106659190614826565b60405180910390f35b34801561067a57600080fd5b50610695600480360381019061069091906143f7565b611602565b005b3480156106a357600080fd5b506106be60048036038101906106b99190614279565b6116a1565b6040516106cb9190614826565b60405180910390f35b3480156106e057600080fd5b506106e96116c1565b6040516106f69190614826565b60405180910390f35b34801561070b57600080fd5b5061072660048036038101906107219190614279565b6116d4565b005b34801561073457600080fd5b5061074f600480360381019061074a9190614279565b6117ad565b60405161075c9190614826565b60405180910390f35b34801561077157600080fd5b5061077a6117cd565b60405161078791906149de565b60405180910390f35b34801561079c57600080fd5b506107a56117d5565b6040516107b291906149de565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd9190614279565b6117db565b6040516107ef9190614766565b60405180910390f35b34801561080457600080fd5b5061080d611d39565b60405161081a91906149de565b60405180910390f35b34801561082f57600080fd5b50610838611d43565b60405161084591906149de565b60405180910390f35b34801561085a57600080fd5b5061087560048036038101906108709190614279565b611d49565b60405161088291906149de565b60405180910390f35b34801561089757600080fd5b506108a0611d92565b6040516108ad91906149de565b60405180910390f35b3480156108c257600080fd5b506108cb611d98565b6040516108d891906149de565b60405180910390f35b3480156108ed57600080fd5b506108f6611d9e565b60405161090391906149de565b60405180910390f35b34801561091857600080fd5b50610933600480360381019061092e9190614356565b611da4565b005b34801561094157600080fd5b5061094a611e94565b60405161095791906149de565b60405180910390f35b34801561096c57600080fd5b5061098760048036038101906109829190614279565b611e9a565b6040516109949190614826565b60405180910390f35b3480156109a957600080fd5b506109b2611eba565b6040516109bf9190614766565b60405180910390f35b3480156109d457600080fd5b506109dd611ee3565b005b3480156109eb57600080fd5b506109f4612036565b604051610a01919061485c565b60405180910390f35b348015610a1657600080fd5b50610a1f6120c8565b604051610a2c91906149de565b60405180910390f35b348015610a4157600080fd5b50610a4a6120d2565b604051610a5791906149de565b60405180910390f35b348015610a6c57600080fd5b50610a876004803603810190610a829190614392565b6120d8565b604051610a949190614826565b60405180910390f35b348015610aa957600080fd5b50610ac46004803603810190610abf91906143ce565b6121a5565b005b348015610ad257600080fd5b50610adb612257565b005b348015610ae957600080fd5b50610af261242b565b604051610aff91906149de565b60405180910390f35b348015610b1457600080fd5b50610b2f6004803603810190610b2a9190614392565b612431565b604051610b3c9190614826565b60405180910390f35b348015610b5157600080fd5b50610b6c6004803603810190610b679190614420565b612450565b005b348015610b7a57600080fd5b50610b83612530565b604051610b9091906149de565b60405180910390f35b348015610ba557600080fd5b50610bc06004803603810190610bbb91906143ce565b612536565b005b348015610bce57600080fd5b50610bd761261f565b604051610be491906149de565b60405180910390f35b348015610bf957600080fd5b50610c02612625565b604051610c0f9190614766565b60405180910390f35b348015610c2457600080fd5b50610c2d61264b565b604051610c3a91906149de565b60405180910390f35b348015610c4f57600080fd5b50610c6a6004803603810190610c659190614279565b612651565b604051610c779190614826565b60405180910390f35b348015610c8c57600080fd5b50610c95612671565b604051610ca291906149de565b60405180910390f35b348015610cb757600080fd5b50610cc0612677565b604051610ccd9190614781565b60405180910390f35b348015610ce257600080fd5b50610ceb61269d565b604051610cf89190614826565b60405180910390f35b348015610d0d57600080fd5b50610d166126b0565b604051610d2391906149de565b60405180910390f35b348015610d3857600080fd5b50610d536004803603810190610d4e91906143f7565b6126b6565b005b348015610d6157600080fd5b50610d7c6004803603810190610d7791906142cb565b61287d565b604051610d8991906149de565b60405180910390f35b348015610d9e57600080fd5b50610db96004803603810190610db491906143f7565b612904565b005b348015610dc757600080fd5b50610de26004803603810190610ddd9190614356565b6129a3565b005b348015610df057600080fd5b50610df9612a93565b604051610e0691906149de565b60405180910390f35b348015610e1b57600080fd5b50610e366004803603810190610e3191906143f7565b612a99565b005b348015610e4457600080fd5b50610e5f6004803603810190610e5a9190614279565b612b38565b005b348015610e6d57600080fd5b50610e886004803603810190610e839190614356565b612cfa565b005b348015610e9657600080fd5b50610e9f612dea565b604051610eac9190614826565b60405180910390f35b606060038054610ec490614cd8565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef090614cd8565b8015610f3d5780601f10610f1257610100808354040283529160200191610f3d565b820191906000526020600020905b815481529060010190602001808311610f2057829003601f168201915b5050505050905090565b610f4f612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd39061493e565b60405180910390fd5b82601081905550816011819055508060128190555061101c60125461100e601154601054612dfd90919063ffffffff16565b612dfd90919063ffffffff16565b601781905550505050565b600061103b611034612e5b565b8484612e63565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601954905090565b6110a3612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611130576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111279061493e565b60405180910390fd5b82600d8190555081600e8190555080600f81905550611170600f54611162600e54600d54612dfd90919063ffffffff16565b612dfd90919063ffffffff16565b601681905550505050565b611183612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611210576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112079061493e565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061127884848461302e565b5061133a84611285612e5b565b611335856040518060600160405280602881526020016150e160289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112eb612e5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b612e63565b600190509392505050565b61134d612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d19061493e565b60405180910390fd5b80601e60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061145a6114497f0000000000000000000000000000000000000000000000000000000000000000611d49565b60195461367790919063ffffffff16565b905090565b611467612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb9061493e565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900460ff16905090565b60006115f861155c612e5b565b846115f3856008600061156d612e5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b612e63565b6001905092915050565b61160a612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168e9061493e565b60405180910390fd5b80601c8190555050565b600c6020528060005260406000206000915054906101000a900460ff1681565b601e60159054906101000a900460ff1681565b6116dc612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611769576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117609061493e565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60096020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60135481565b60006117e5612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611872576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118699061493e565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118bd57600080fd5b505afa1580156118d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f591906142a2565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561195757600080fd5b505afa15801561196b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198f91906142a2565b6040518363ffffffff1660e01b81526004016119ac92919061479c565b60206040518083038186803b1580156119c457600080fd5b505afa1580156119d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fc91906142a2565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bbd578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611a7957600080fd5b505afa158015611a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab191906142a2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b1357600080fd5b505afa158015611b27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4b91906142a2565b6040518363ffffffff1660e01b8152600401611b6892919061479c565b602060405180830381600087803b158015611b8257600080fd5b505af1158015611b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bba91906142a2565b91505b81601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b6000600254905090565b60145481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601a5481565b601b5481565b60175481565b611dac612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e309061493e565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611eeb612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6f9061493e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60606004805461204590614cd8565b80601f016020809104026020016040519081016040528092919081815260200182805461207190614cd8565b80156120be5780601f10612093576101008083540402835291602001916120be565b820191906000526020600020905b8154815290600101906020018083116120a157829003601f168201915b5050505050905090565b6000601c54905090565b60185481565b600061219b6120e5612e5b565b8461219685604051806060016040528060258152602001615109602591396008600061210f612e5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b612e63565b6001905092915050565b6121ad612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461223a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122319061493e565b60405180910390fd5b80601e60166101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122de906149be565b60405180910390fd5b600254421161232b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123229061499e565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60155481565b600061244561243e612e5b565b848461302e565b506001905092915050565b612458612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dc9061493e565b60405180910390fd5b826013819055508160148190555080601581905550612525601554612517601454601354612dfd90919063ffffffff16565b612dfd90919063ffffffff16565b601881905550505050565b600f5481565b61253e612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c29061493e565b60405180910390fd5b80601e60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516126149190614826565b60405180910390a150565b600e5481565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60125481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e60169054906101000a900460ff1681565b600d5481565b6126be612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461274b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127429061493e565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080426127f99190614af3565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61290c612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612999576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129909061493e565b60405180910390fd5b80601a8190555050565b6129ab612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2f9061493e565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60165481565b612aa1612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b259061493e565b60405180910390fd5b80601b8190555050565b612b40612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc49061493e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c349061489e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612d02612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d869061493e565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60179054906101000a900460ff1681565b6000808284612e0c9190614af3565b905083811015612e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e48906148de565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eca9061497e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3a906148be565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161302191906149de565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561309f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130969061495e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561310f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131069061487e565b60405180910390fd5b601e60149054906101000a900460ff16156131365761312f8484846136c1565b905061360c565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131da5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561322557601a54821115613224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321b906148fe565b60405180910390fd5b5b600061323030611d49565b90506000601c5482101590508080156132565750601e60149054906101000a900460ff16155b80156132ac5750600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132c45750601e60159054906101000a900460ff165b156132ee57601e60169054906101000a900460ff16156132e457601c5491505b6132ed82613894565b5b613377846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061345d5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6134715761346c878787613a85565b613473565b845b9050601e60179054906101000a900460ff1680156134db5750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561350a57601b546134fe826134f089611d49565b612dfd90919063ffffffff16565b111561350957600080fd5b5b61355c81600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135fc91906149de565b60405180910390a3600193505050505b9392505050565b600083831115829061365b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613652919061485c565b60405180910390fd5b506000838561366a9190614bd4565b9050809150509392505050565b60006136b983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613613565b905092915050565b600061374c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137e182600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161388191906149de565b60405180910390a3600190509392505050565b6001601e60146101000a81548160ff02191690831515021790555060006138ed60026138df6018546138d160135487613cac90919063ffffffff16565b613d2790919063ffffffff16565b613d2790919063ffffffff16565b90506000613904828461367790919063ffffffff16565b905061390f81613d71565b6000479050600061394061392f6002601354613d2790919063ffffffff16565b60185461367790919063ffffffff16565b9050600061397e60026139708461396260135488613cac90919063ffffffff16565b613d2790919063ffffffff16565b613d2790919063ffffffff16565b905060006139a98361399b60155487613cac90919063ffffffff16565b613d2790919063ffffffff16565b905060006139d2826139c4858861367790919063ffffffff16565b61367790919063ffffffff16565b90506000811115613a0a57613a09600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261406e565b5b6000821115613a4057613a3f600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361406e565b5b600083118015613a505750600087115b15613a6057613a5f87846140b9565b5b505050505050506000601e60146101000a81548160ff02191690831515021790555050565b60008060009050600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b0d57613b066064613af860165486613cac90919063ffffffff16565b613d2790919063ffffffff16565b9050613b8b565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b8a57613b876064613b7960175486613cac90919063ffffffff16565b613d2790919063ffffffff16565b90505b5b6000811115613c8f57613be681600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c8691906149de565b60405180910390a35b613ca2818461367790919063ffffffff16565b9150509392505050565b600080831415613cbf5760009050613d21565b60008284613ccd9190614b7a565b9050828482613cdc9190614b49565b14613d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d139061491e565b60405180910390fd5b809150505b92915050565b6000613d6983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506141ad565b905092915050565b6000600267ffffffffffffffff811115613db4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015613de25781602001602082028036833780820191505090505b5090503081600081518110613e20577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613ec257600080fd5b505afa158015613ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613efa91906142a2565b81600181518110613f34577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f9b30601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e63565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fff959493929190614a29565b600060405180830381600087803b15801561401957600080fd5b505af115801561402d573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516140629291906149f9565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156140b4573d6000803e3d6000fd5b505050565b6140e630601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e63565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080614132611eba565b426040518863ffffffff1660e01b8152600401614154969594939291906147c5565b6060604051808303818588803b15801561416d57600080fd5b505af1158015614181573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906141a6919061446f565b5050505050565b600080831182906141f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141eb919061485c565b60405180910390fd5b50600083856142039190614b49565b9050809150509392505050565b60008135905061421f8161509b565b92915050565b6000815190506142348161509b565b92915050565b600081359050614249816150b2565b92915050565b60008135905061425e816150c9565b92915050565b600081519050614273816150c9565b92915050565b60006020828403121561428b57600080fd5b600061429984828501614210565b91505092915050565b6000602082840312156142b457600080fd5b60006142c284828501614225565b91505092915050565b600080604083850312156142de57600080fd5b60006142ec85828601614210565b92505060206142fd85828601614210565b9150509250929050565b60008060006060848603121561431c57600080fd5b600061432a86828701614210565b935050602061433b86828701614210565b925050604061434c8682870161424f565b9150509250925092565b6000806040838503121561436957600080fd5b600061437785828601614210565b92505060206143888582860161423a565b9150509250929050565b600080604083850312156143a557600080fd5b60006143b385828601614210565b92505060206143c48582860161424f565b9150509250929050565b6000602082840312156143e057600080fd5b60006143ee8482850161423a565b91505092915050565b60006020828403121561440957600080fd5b60006144178482850161424f565b91505092915050565b60008060006060848603121561443557600080fd5b60006144438682870161424f565b93505060206144548682870161424f565b92505060406144658682870161424f565b9150509250925092565b60008060006060848603121561448457600080fd5b600061449286828701614264565b93505060206144a386828701614264565b92505060406144b486828701614264565b9150509250925092565b60006144ca83836144e5565b60208301905092915050565b6144df81614c1a565b82525050565b6144ee81614c08565b82525050565b6144fd81614c08565b82525050565b600061450e82614aae565b6145188185614ad1565b935061452383614a9e565b8060005b8381101561455457815161453b88826144be565b975061454683614ac4565b925050600181019050614527565b5085935050505092915050565b61456a81614c2c565b82525050565b61457981614c6f565b82525050565b61458881614c93565b82525050565b600061459982614ab9565b6145a38185614ae2565b93506145b3818560208601614ca5565b6145bc81614d97565b840191505092915050565b60006145d4602383614ae2565b91506145df82614da8565b604082019050919050565b60006145f7602683614ae2565b915061460282614df7565b604082019050919050565b600061461a602283614ae2565b915061462582614e46565b604082019050919050565b600061463d601b83614ae2565b915061464882614e95565b602082019050919050565b6000614660602883614ae2565b915061466b82614ebe565b604082019050919050565b6000614683602183614ae2565b915061468e82614f0d565b604082019050919050565b60006146a6602083614ae2565b91506146b182614f5c565b602082019050919050565b60006146c9602583614ae2565b91506146d482614f85565b604082019050919050565b60006146ec602483614ae2565b91506146f782614fd4565b604082019050919050565b600061470f601f83614ae2565b915061471a82615023565b602082019050919050565b6000614732602383614ae2565b915061473d8261504c565b604082019050919050565b61475181614c58565b82525050565b61476081614c62565b82525050565b600060208201905061477b60008301846144f4565b92915050565b600060208201905061479660008301846144d6565b92915050565b60006040820190506147b160008301856144f4565b6147be60208301846144f4565b9392505050565b600060c0820190506147da60008301896144f4565b6147e76020830188614748565b6147f4604083018761457f565b614801606083018661457f565b61480e60808301856144f4565b61481b60a0830184614748565b979650505050505050565b600060208201905061483b6000830184614561565b92915050565b60006020820190506148566000830184614570565b92915050565b60006020820190508181036000830152614876818461458e565b905092915050565b60006020820190508181036000830152614897816145c7565b9050919050565b600060208201905081810360008301526148b7816145ea565b9050919050565b600060208201905081810360008301526148d78161460d565b9050919050565b600060208201905081810360008301526148f781614630565b9050919050565b6000602082019050818103600083015261491781614653565b9050919050565b6000602082019050818103600083015261493781614676565b9050919050565b6000602082019050818103600083015261495781614699565b9050919050565b60006020820190508181036000830152614977816146bc565b9050919050565b60006020820190508181036000830152614997816146df565b9050919050565b600060208201905081810360008301526149b781614702565b9050919050565b600060208201905081810360008301526149d781614725565b9050919050565b60006020820190506149f36000830184614748565b92915050565b6000604082019050614a0e6000830185614748565b8181036020830152614a208184614503565b90509392505050565b600060a082019050614a3e6000830188614748565b614a4b602083018761457f565b8181036040830152614a5d8186614503565b9050614a6c60608301856144f4565b614a796080830184614748565b9695505050505050565b6000602082019050614a986000830184614757565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614afe82614c58565b9150614b0983614c58565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b3e57614b3d614d0a565b5b828201905092915050565b6000614b5482614c58565b9150614b5f83614c58565b925082614b6f57614b6e614d39565b5b828204905092915050565b6000614b8582614c58565b9150614b9083614c58565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bc957614bc8614d0a565b5b828202905092915050565b6000614bdf82614c58565b9150614bea83614c58565b925082821015614bfd57614bfc614d0a565b5b828203905092915050565b6000614c1382614c38565b9050919050565b6000614c2582614c38565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614c7a82614c81565b9050919050565b6000614c8c82614c38565b9050919050565b6000614c9e82614c58565b9050919050565b60005b83811015614cc3578082015181840152602081019050614ca8565b83811115614cd2576000848401525b50505050565b60006002820490506001821680614cf057607f821691505b60208210811415614d0457614d03614d68565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b6150a481614c08565b81146150af57600080fd5b50565b6150bb81614c2c565b81146150c657600080fd5b50565b6150d281614c58565b81146150dd57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cad2f12e77e9da042e6d251975ec28682a0f464bc436c971b0517a986f4f0b2d64736f6c63430008040033
Deployed Bytecode
0x6080604052600436106103b15760003560e01c80638b42507f116101e7578063c816841b1161010d578063dd62ed3e116100a0578063f1d5f5171161006f578063f1d5f51714610e0f578063f2fde38b14610e38578063f84ba65d14610e61578063f872858a14610e8a576103b8565b8063dd62ed3e14610d55578063ec28438a14610d92578063ef422a1814610dbb578063f0cd1dac14610de4576103b8565b8063d158272d116100dc578063d158272d14610cab578063da00097d14610cd6578063dc44b6a014610d01578063dd46706414610d2c576103b8565b8063c816841b14610bed578063c860795214610c18578063c867d60b14610c43578063cab0347114610c80576103b8565b8063a5d69d1f11610185578063c2d4640e11610154578063c2d4640e14610b45578063c469b6dd14610b6e578063c49b9a8014610b99578063c5d2418914610bc2576103b8565b8063a5d69d1f14610a9d578063a69df4b514610ac6578063a83f53a714610add578063a9059cbb14610b08576103b8565b806395d89b41116101c157806395d89b41146109df578063a073d37f14610a0a578063a08e671f14610a35578063a457c2d714610a60576103b8565b80638b42507f146109605780638da5cb5b1461099d578063914eb66a146109c8576103b8565b80633b97084a116102d7578063602bc62b1161026a578063807c2d9c11610239578063807c2d9c146108b657806382eefb43146108e1578063844d591c1461090c57806388790a6814610935576103b8565b8063602bc62b146107f857806361a23c691461082357806370a082311461084e5780637d1db4a51461088b576103b8565b80635342acb4116102a65780635342acb414610728578063557ed1ba1461076557806357a5802f146107905780635881f3ef146107bb576103b8565b80633b97084a1461066e5780633ecad271146106975780634a74bb02146106d45780634cb80fd5146106ff576103b8565b80632198cf6c1161034f5780632b112e491161031e5780632b112e49146105b25780632c4b2334146105dd578063313ce567146106065780633950935114610631576103b8565b80632198cf6c146104f857806323b872dd146105215780632563ae831461055e57806327c8f83514610587576103b8565b80631245e3471161038b5780631245e3471461044e5780631694505e1461047957806318160ddd146104a45780631870517a146104cf576103b8565b806306fdde03146103bd57806308733214146103e8578063095ea7b314610411576103b8565b366103b857005b600080fd5b3480156103c957600080fd5b506103d2610eb5565b6040516103df919061485c565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190614420565b610f47565b005b34801561041d57600080fd5b5061043860048036038101906104339190614392565b611027565b6040516104459190614826565b60405180910390f35b34801561045a57600080fd5b50610463611045565b6040516104709190614781565b60405180910390f35b34801561048557600080fd5b5061048e61106b565b60405161049b9190614841565b60405180910390f35b3480156104b057600080fd5b506104b9611091565b6040516104c691906149de565b60405180910390f35b3480156104db57600080fd5b506104f660048036038101906104f19190614420565b61109b565b005b34801561050457600080fd5b5061051f600480360381019061051a9190614356565b61117b565b005b34801561052d57600080fd5b5061054860048036038101906105439190614307565b61126b565b6040516105559190614826565b60405180910390f35b34801561056a57600080fd5b50610585600480360381019061058091906143ce565b611345565b005b34801561059357600080fd5b5061059c6113f7565b6040516105a99190614766565b60405180910390f35b3480156105be57600080fd5b506105c761141b565b6040516105d491906149de565b60405180910390f35b3480156105e957600080fd5b5061060460048036038101906105ff9190614279565b61145f565b005b34801561061257600080fd5b5061061b611538565b6040516106289190614a83565b60405180910390f35b34801561063d57600080fd5b5061065860048036038101906106539190614392565b61154f565b6040516106659190614826565b60405180910390f35b34801561067a57600080fd5b50610695600480360381019061069091906143f7565b611602565b005b3480156106a357600080fd5b506106be60048036038101906106b99190614279565b6116a1565b6040516106cb9190614826565b60405180910390f35b3480156106e057600080fd5b506106e96116c1565b6040516106f69190614826565b60405180910390f35b34801561070b57600080fd5b5061072660048036038101906107219190614279565b6116d4565b005b34801561073457600080fd5b5061074f600480360381019061074a9190614279565b6117ad565b60405161075c9190614826565b60405180910390f35b34801561077157600080fd5b5061077a6117cd565b60405161078791906149de565b60405180910390f35b34801561079c57600080fd5b506107a56117d5565b6040516107b291906149de565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd9190614279565b6117db565b6040516107ef9190614766565b60405180910390f35b34801561080457600080fd5b5061080d611d39565b60405161081a91906149de565b60405180910390f35b34801561082f57600080fd5b50610838611d43565b60405161084591906149de565b60405180910390f35b34801561085a57600080fd5b5061087560048036038101906108709190614279565b611d49565b60405161088291906149de565b60405180910390f35b34801561089757600080fd5b506108a0611d92565b6040516108ad91906149de565b60405180910390f35b3480156108c257600080fd5b506108cb611d98565b6040516108d891906149de565b60405180910390f35b3480156108ed57600080fd5b506108f6611d9e565b60405161090391906149de565b60405180910390f35b34801561091857600080fd5b50610933600480360381019061092e9190614356565b611da4565b005b34801561094157600080fd5b5061094a611e94565b60405161095791906149de565b60405180910390f35b34801561096c57600080fd5b5061098760048036038101906109829190614279565b611e9a565b6040516109949190614826565b60405180910390f35b3480156109a957600080fd5b506109b2611eba565b6040516109bf9190614766565b60405180910390f35b3480156109d457600080fd5b506109dd611ee3565b005b3480156109eb57600080fd5b506109f4612036565b604051610a01919061485c565b60405180910390f35b348015610a1657600080fd5b50610a1f6120c8565b604051610a2c91906149de565b60405180910390f35b348015610a4157600080fd5b50610a4a6120d2565b604051610a5791906149de565b60405180910390f35b348015610a6c57600080fd5b50610a876004803603810190610a829190614392565b6120d8565b604051610a949190614826565b60405180910390f35b348015610aa957600080fd5b50610ac46004803603810190610abf91906143ce565b6121a5565b005b348015610ad257600080fd5b50610adb612257565b005b348015610ae957600080fd5b50610af261242b565b604051610aff91906149de565b60405180910390f35b348015610b1457600080fd5b50610b2f6004803603810190610b2a9190614392565b612431565b604051610b3c9190614826565b60405180910390f35b348015610b5157600080fd5b50610b6c6004803603810190610b679190614420565b612450565b005b348015610b7a57600080fd5b50610b83612530565b604051610b9091906149de565b60405180910390f35b348015610ba557600080fd5b50610bc06004803603810190610bbb91906143ce565b612536565b005b348015610bce57600080fd5b50610bd761261f565b604051610be491906149de565b60405180910390f35b348015610bf957600080fd5b50610c02612625565b604051610c0f9190614766565b60405180910390f35b348015610c2457600080fd5b50610c2d61264b565b604051610c3a91906149de565b60405180910390f35b348015610c4f57600080fd5b50610c6a6004803603810190610c659190614279565b612651565b604051610c779190614826565b60405180910390f35b348015610c8c57600080fd5b50610c95612671565b604051610ca291906149de565b60405180910390f35b348015610cb757600080fd5b50610cc0612677565b604051610ccd9190614781565b60405180910390f35b348015610ce257600080fd5b50610ceb61269d565b604051610cf89190614826565b60405180910390f35b348015610d0d57600080fd5b50610d166126b0565b604051610d2391906149de565b60405180910390f35b348015610d3857600080fd5b50610d536004803603810190610d4e91906143f7565b6126b6565b005b348015610d6157600080fd5b50610d7c6004803603810190610d7791906142cb565b61287d565b604051610d8991906149de565b60405180910390f35b348015610d9e57600080fd5b50610db96004803603810190610db491906143f7565b612904565b005b348015610dc757600080fd5b50610de26004803603810190610ddd9190614356565b6129a3565b005b348015610df057600080fd5b50610df9612a93565b604051610e0691906149de565b60405180910390f35b348015610e1b57600080fd5b50610e366004803603810190610e3191906143f7565b612a99565b005b348015610e4457600080fd5b50610e5f6004803603810190610e5a9190614279565b612b38565b005b348015610e6d57600080fd5b50610e886004803603810190610e839190614356565b612cfa565b005b348015610e9657600080fd5b50610e9f612dea565b604051610eac9190614826565b60405180910390f35b606060038054610ec490614cd8565b80601f0160208091040260200160405190810160405280929190818152602001828054610ef090614cd8565b8015610f3d5780601f10610f1257610100808354040283529160200191610f3d565b820191906000526020600020905b815481529060010190602001808311610f2057829003601f168201915b5050505050905090565b610f4f612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd39061493e565b60405180910390fd5b82601081905550816011819055508060128190555061101c60125461100e601154601054612dfd90919063ffffffff16565b612dfd90919063ffffffff16565b601781905550505050565b600061103b611034612e5b565b8484612e63565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601954905090565b6110a3612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611130576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111279061493e565b60405180910390fd5b82600d8190555081600e8190555080600f81905550611170600f54611162600e54600d54612dfd90919063ffffffff16565b612dfd90919063ffffffff16565b601681905550505050565b611183612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611210576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112079061493e565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600061127884848461302e565b5061133a84611285612e5b565b611335856040518060600160405280602881526020016150e160289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112eb612e5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b612e63565b600190509392505050565b61134d612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d19061493e565b60405180910390fd5b80601e60176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b600061145a6114497f000000000000000000000000000000000000000000000000000000000000dead611d49565b60195461367790919063ffffffff16565b905090565b611467612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114eb9061493e565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900460ff16905090565b60006115f861155c612e5b565b846115f3856008600061156d612e5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b612e63565b6001905092915050565b61160a612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168e9061493e565b60405180910390fd5b80601c8190555050565b600c6020528060005260406000206000915054906101000a900460ff1681565b601e60159054906101000a900460ff1681565b6116dc612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611769576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117609061493e565b60405180910390fd5b80600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60096020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60135481565b60006117e5612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611872576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118699061493e565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118bd57600080fd5b505afa1580156118d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f591906142a2565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561195757600080fd5b505afa15801561196b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198f91906142a2565b6040518363ffffffff1660e01b81526004016119ac92919061479c565b60206040518083038186803b1580156119c457600080fd5b505afa1580156119d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fc91906142a2565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bbd578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611a7957600080fd5b505afa158015611a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab191906142a2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b1357600080fd5b505afa158015611b27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4b91906142a2565b6040518363ffffffff1660e01b8152600401611b6892919061479c565b602060405180830381600087803b158015611b8257600080fd5b505af1158015611b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bba91906142a2565b91505b81601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b6000600254905090565b60145481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601a5481565b601b5481565b60175481565b611dac612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e309061493e565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611eeb612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6f9061493e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60606004805461204590614cd8565b80601f016020809104026020016040519081016040528092919081815260200182805461207190614cd8565b80156120be5780601f10612093576101008083540402835291602001916120be565b820191906000526020600020905b8154815290600101906020018083116120a157829003601f168201915b5050505050905090565b6000601c54905090565b60185481565b600061219b6120e5612e5b565b8461219685604051806060016040528060258152602001615109602591396008600061210f612e5b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b612e63565b6001905092915050565b6121ad612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461223a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122319061493e565b60405180910390fd5b80601e60166101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122de906149be565b60405180910390fd5b600254421161232b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123229061499e565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60155481565b600061244561243e612e5b565b848461302e565b506001905092915050565b612458612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dc9061493e565b60405180910390fd5b826013819055508160148190555080601581905550612525601554612517601454601354612dfd90919063ffffffff16565b612dfd90919063ffffffff16565b601881905550505050565b600f5481565b61253e612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c29061493e565b60405180910390fd5b80601e60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516126149190614826565b60405180910390a150565b600e5481565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60125481565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e60169054906101000a900460ff1681565b600d5481565b6126be612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461274b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127429061493e565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080426127f99190614af3565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61290c612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612999576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129909061493e565b60405180910390fd5b80601a8190555050565b6129ab612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2f9061493e565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60165481565b612aa1612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b259061493e565b60405180910390fd5b80601b8190555050565b612b40612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc49061493e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c349061489e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612d02612e5b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d869061493e565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601e60179054906101000a900460ff1681565b6000808284612e0c9190614af3565b905083811015612e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e48906148de565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eca9061497e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3a906148be565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161302191906149de565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561309f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130969061495e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561310f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131069061487e565b60405180910390fd5b601e60149054906101000a900460ff16156131365761312f8484846136c1565b905061360c565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131da5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561322557601a54821115613224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161321b906148fe565b60405180910390fd5b5b600061323030611d49565b90506000601c5482101590508080156132565750601e60149054906101000a900460ff16155b80156132ac5750600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132c45750601e60159054906101000a900460ff165b156132ee57601e60169054906101000a900460ff16156132e457601c5491505b6132ed82613894565b5b613377846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061345d5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6134715761346c878787613a85565b613473565b845b9050601e60179054906101000a900460ff1680156134db5750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561350a57601b546134fe826134f089611d49565b612dfd90919063ffffffff16565b111561350957600080fd5b5b61355c81600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135fc91906149de565b60405180910390a3600193505050505b9392505050565b600083831115829061365b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613652919061485c565b60405180910390fd5b506000838561366a9190614bd4565b9050809150509392505050565b60006136b983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613613565b905092915050565b600061374c826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136139092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506137e182600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161388191906149de565b60405180910390a3600190509392505050565b6001601e60146101000a81548160ff02191690831515021790555060006138ed60026138df6018546138d160135487613cac90919063ffffffff16565b613d2790919063ffffffff16565b613d2790919063ffffffff16565b90506000613904828461367790919063ffffffff16565b905061390f81613d71565b6000479050600061394061392f6002601354613d2790919063ffffffff16565b60185461367790919063ffffffff16565b9050600061397e60026139708461396260135488613cac90919063ffffffff16565b613d2790919063ffffffff16565b613d2790919063ffffffff16565b905060006139a98361399b60155487613cac90919063ffffffff16565b613d2790919063ffffffff16565b905060006139d2826139c4858861367790919063ffffffff16565b61367790919063ffffffff16565b90506000811115613a0a57613a09600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261406e565b5b6000821115613a4057613a3f600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361406e565b5b600083118015613a505750600087115b15613a6057613a5f87846140b9565b5b505050505050506000601e60146101000a81548160ff02191690831515021790555050565b60008060009050600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b0d57613b066064613af860165486613cac90919063ffffffff16565b613d2790919063ffffffff16565b9050613b8b565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613b8a57613b876064613b7960175486613cac90919063ffffffff16565b613d2790919063ffffffff16565b90505b5b6000811115613c8f57613be681600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dfd90919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c8691906149de565b60405180910390a35b613ca2818461367790919063ffffffff16565b9150509392505050565b600080831415613cbf5760009050613d21565b60008284613ccd9190614b7a565b9050828482613cdc9190614b49565b14613d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d139061491e565b60405180910390fd5b809150505b92915050565b6000613d6983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506141ad565b905092915050565b6000600267ffffffffffffffff811115613db4577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015613de25781602001602082028036833780820191505090505b5090503081600081518110613e20577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613ec257600080fd5b505afa158015613ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613efa91906142a2565b81600181518110613f34577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f9b30601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e63565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fff959493929190614a29565b600060405180830381600087803b15801561401957600080fd5b505af115801561402d573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516140629291906149f9565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156140b4573d6000803e3d6000fd5b505050565b6140e630601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e63565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080614132611eba565b426040518863ffffffff1660e01b8152600401614154969594939291906147c5565b6060604051808303818588803b15801561416d57600080fd5b505af1158015614181573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906141a6919061446f565b5050505050565b600080831182906141f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016141eb919061485c565b60405180910390fd5b50600083856142039190614b49565b9050809150509392505050565b60008135905061421f8161509b565b92915050565b6000815190506142348161509b565b92915050565b600081359050614249816150b2565b92915050565b60008135905061425e816150c9565b92915050565b600081519050614273816150c9565b92915050565b60006020828403121561428b57600080fd5b600061429984828501614210565b91505092915050565b6000602082840312156142b457600080fd5b60006142c284828501614225565b91505092915050565b600080604083850312156142de57600080fd5b60006142ec85828601614210565b92505060206142fd85828601614210565b9150509250929050565b60008060006060848603121561431c57600080fd5b600061432a86828701614210565b935050602061433b86828701614210565b925050604061434c8682870161424f565b9150509250925092565b6000806040838503121561436957600080fd5b600061437785828601614210565b92505060206143888582860161423a565b9150509250929050565b600080604083850312156143a557600080fd5b60006143b385828601614210565b92505060206143c48582860161424f565b9150509250929050565b6000602082840312156143e057600080fd5b60006143ee8482850161423a565b91505092915050565b60006020828403121561440957600080fd5b60006144178482850161424f565b91505092915050565b60008060006060848603121561443557600080fd5b60006144438682870161424f565b93505060206144548682870161424f565b92505060406144658682870161424f565b9150509250925092565b60008060006060848603121561448457600080fd5b600061449286828701614264565b93505060206144a386828701614264565b92505060406144b486828701614264565b9150509250925092565b60006144ca83836144e5565b60208301905092915050565b6144df81614c1a565b82525050565b6144ee81614c08565b82525050565b6144fd81614c08565b82525050565b600061450e82614aae565b6145188185614ad1565b935061452383614a9e565b8060005b8381101561455457815161453b88826144be565b975061454683614ac4565b925050600181019050614527565b5085935050505092915050565b61456a81614c2c565b82525050565b61457981614c6f565b82525050565b61458881614c93565b82525050565b600061459982614ab9565b6145a38185614ae2565b93506145b3818560208601614ca5565b6145bc81614d97565b840191505092915050565b60006145d4602383614ae2565b91506145df82614da8565b604082019050919050565b60006145f7602683614ae2565b915061460282614df7565b604082019050919050565b600061461a602283614ae2565b915061462582614e46565b604082019050919050565b600061463d601b83614ae2565b915061464882614e95565b602082019050919050565b6000614660602883614ae2565b915061466b82614ebe565b604082019050919050565b6000614683602183614ae2565b915061468e82614f0d565b604082019050919050565b60006146a6602083614ae2565b91506146b182614f5c565b602082019050919050565b60006146c9602583614ae2565b91506146d482614f85565b604082019050919050565b60006146ec602483614ae2565b91506146f782614fd4565b604082019050919050565b600061470f601f83614ae2565b915061471a82615023565b602082019050919050565b6000614732602383614ae2565b915061473d8261504c565b604082019050919050565b61475181614c58565b82525050565b61476081614c62565b82525050565b600060208201905061477b60008301846144f4565b92915050565b600060208201905061479660008301846144d6565b92915050565b60006040820190506147b160008301856144f4565b6147be60208301846144f4565b9392505050565b600060c0820190506147da60008301896144f4565b6147e76020830188614748565b6147f4604083018761457f565b614801606083018661457f565b61480e60808301856144f4565b61481b60a0830184614748565b979650505050505050565b600060208201905061483b6000830184614561565b92915050565b60006020820190506148566000830184614570565b92915050565b60006020820190508181036000830152614876818461458e565b905092915050565b60006020820190508181036000830152614897816145c7565b9050919050565b600060208201905081810360008301526148b7816145ea565b9050919050565b600060208201905081810360008301526148d78161460d565b9050919050565b600060208201905081810360008301526148f781614630565b9050919050565b6000602082019050818103600083015261491781614653565b9050919050565b6000602082019050818103600083015261493781614676565b9050919050565b6000602082019050818103600083015261495781614699565b9050919050565b60006020820190508181036000830152614977816146bc565b9050919050565b60006020820190508181036000830152614997816146df565b9050919050565b600060208201905081810360008301526149b781614702565b9050919050565b600060208201905081810360008301526149d781614725565b9050919050565b60006020820190506149f36000830184614748565b92915050565b6000604082019050614a0e6000830185614748565b8181036020830152614a208184614503565b90509392505050565b600060a082019050614a3e6000830188614748565b614a4b602083018761457f565b8181036040830152614a5d8186614503565b9050614a6c60608301856144f4565b614a796080830184614748565b9695505050505050565b6000602082019050614a986000830184614757565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614afe82614c58565b9150614b0983614c58565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b3e57614b3d614d0a565b5b828201905092915050565b6000614b5482614c58565b9150614b5f83614c58565b925082614b6f57614b6e614d39565b5b828204905092915050565b6000614b8582614c58565b9150614b9083614c58565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bc957614bc8614d0a565b5b828202905092915050565b6000614bdf82614c58565b9150614bea83614c58565b925082821015614bfd57614bfc614d0a565b5b828203905092915050565b6000614c1382614c38565b9050919050565b6000614c2582614c38565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614c7a82614c81565b9050919050565b6000614c8c82614c38565b9050919050565b6000614c9e82614c58565b9050919050565b60005b83811015614cc3578082015181840152602081019050614ca8565b83811115614cd2576000848401525b50505050565b60006002820490506001821680614cf057607f821691505b60208210811415614d0457614d03614d68565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b6150a481614c08565b81146150af57600080fd5b50565b6150bb81614c2c565b81146150c657600080fd5b50565b6150d281614c58565b81146150dd57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cad2f12e77e9da042e6d251975ec28682a0f464bc436c971b0517a986f4f0b2d64736f6c63430008040033
Deployed Bytecode Sourcemap
15083:14902:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18851:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21419:341;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20145:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15460:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16874:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19128:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21078:333;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22382:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24725:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22261:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15577:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23367:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22914:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19037:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19514:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22635:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15969:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16989:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22767:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15798:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6603:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16276:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23641:807;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6501:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16317:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19236:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16622:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16705:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16441:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20659:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16150:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15914:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5871:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6096:145;;;;;;;;;;;;;:::i;:::-;;18942:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20017:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16486:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19740:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23230:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6939:305;;;;;;;;;;;;;:::i;:::-;;16358:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24550:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21772:358;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16107:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23051:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16065:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16922:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16193:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15855:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16236:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15333:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17036:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16023:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6701:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19363:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22142:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20935:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16397:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22525:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6249:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20796:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17088:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18851:83;18888:13;18921:5;18914:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18851:83;:::o;21419:341::-;6015:12;:10;:12::i;:::-;6005:22;;:6;;;;;;;;;;:22;;;5997:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21563:15:::1;21543:17;:35;;;;21609:15;21589:17;:35;;;;21650:10;21635:12;:25;;;;21694:58;21739:12;;21694:40;21716:17;;21694;;:21;;:40;;;;:::i;:::-;:44;;:58;;;;:::i;:::-;21673:18;:79;;;;21419:341:::0;;;:::o;20145:161::-;20220:4;20237:39;20246:12;:10;:12::i;:::-;20260:7;20269:6;20237:8;:39::i;:::-;20294:4;20287:11;;20145:161;;;;:::o;15460:94::-;;;;;;;;;;;;;:::o;16874:41::-;;;;;;;;;;;;;:::o;19128:100::-;19181:7;19208:12;;19201:19;;19128:100;:::o;21078:333::-;6015:12;:10;:12::i;:::-;6005:22;;:6;;;;;;;;;;:22;;;5997:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21220:15:::1;21201:16;:34;;;;21265:15;21246:16;:34;;;;21305:10;21291:11;:24;;;;21348:55;21391:11;;21348:38;21369:16;;21348;;:20;;:38;;;;:::i;:::-;:42;;:55;;;;:::i;:::-;21328:17;:75;;;;21078:333:::0;;;:::o;22382:135::-;6015:12;:10;:12::i;:::-;6005:22;;:6;;;;;;;;;;:22;;;5997:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22503:6:::1;22473:19;:27;22493:6;22473:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;22382:135:::0;;:::o;24725:313::-;24823:4;24840:36;24850:6;24858:9;24869:6;24840:9;:36::i;:::-;;24887:121;24896:6;24904:12;:10;:12::i;:::-;24918:89;24956:6;24918:89;;;;;;;;;;;;;;;;;:11;:19;24930:6;24918:19;;;;;;;;;;;;;;;:33;24938:12;:10;:12::i;:::-;24918:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;24887:8;:121::i;:::-;25026:4;25019:11;;24725:313;;;;;:::o;22261:113::-;6015:12;:10;:12::i;:::-;6005:22;;:6;;;;;;;;;;:22;;;5997:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22358:8:::1;22339:16;;:27;;;;;;;;;;;;;;;;;;22261:113:::0;:::o;15577:81::-;;;:::o;23367:128::-;23420:7;23447:40;23464:22;23474:11;23464:9;:22::i;:::-;23447:12;;:16;;:40;;;;:::i;:::-;23440:47;;23367:128;:::o;22914:129::-;6015:12;:10;:12::i;:::-;6005:22;;:6;;;;;;;;;;:22;;;5997:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23024:10:::1;22996:17;;:39;;;;;;;;;;;;;;;;;;22914:129:::0;:::o;19037:83::-;19078:5;19103:9;;;;;;;;;;;19096:16;;19037:83;:::o;19514:218::-;19602:4;19619:83;19628:12;:10;:12::i;:::-;19642:7;19651:50;19690:10;19651:11;:25;19663:12;:10;:12::i;:::-;19651:25;;;;;;;;;;;;;;;:34;19677:7;19651:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;19619:8;:83::i;:::-;19720:4;19713:11;;19514:218;;;;:::o;22635:124::-;6015:12;:10;:12::i;:::-;6005:22;;:6;;;;;;;;;;:22;;;5997:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22743:8:::1;22717:23;:34;;;;22635:124:::0;:::o;15969:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;16989:40::-;;;;;;;;;;;;;:::o;22767:139::-;6015:12;:10;:12::i;:::-;6005:22;;:6;;;;;;;;;;:22;;;5997:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22887:10:::1;22854:22;;:44;;;;;;;;;;;;;;;;;;22767:139:::0;:::o;15798:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;6603:90::-;6643:7;6670:15;6663:22;;6603:90;:::o;16276:34::-;;;;:::o;23641:807::-;23721:22;6015:12;:10;:12::i;:::-;6005:22;;:6;;;;;;;;;;:22;;;5997:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23758:35:::1;23815:16;23758:74;;23881:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23863:53;;;23925:4;23932:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23863:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23846:110;;23998:1;23972:28;;:14;:28;;;23969:225;;;24086:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24068:74;;;24151:4;24158:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24068:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24051:131;;23969:225;24220:14;24206:11;;:28;;;;;;;;;;;;;;;;;;24286:16;24268:15;;:34;;;;;;;;;;;;;;;;;;24384:4;24340:19;:41;24368:11;;;;;;;;;;;24340:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;24436:4;24399:12;:34;24420:11;;;;;;;;;;;24399:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;6075:1;23641:807:::0;;;:::o;6501:90::-;6547:7;6574:9;;6567:16;;6501:90;:::o;16317:34::-;;;;:::o;19236:119::-;19302:7;19329:9;:18;19339:7;19329:18;;;;;;;;;;;;;;;;19322:25;;19236:119;;;:::o;16622:75::-;;;;:::o;16705:73::-;;;;:::o;16441:38::-;;;;:::o;20659:129::-;6015:12;:10;:12::i;:::-;6005:22;;:6;;;;;;;;;;:22;;;5997:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20772:8:::1;20748:12;:21;20761:7;20748:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20659:129:::0;;:::o;16150:36::-;;;;:::o;15914:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;5871:79::-;5909:7;5936:6;;;;;;;;;;;5929:13;;5871:79;:::o;6096:145::-;6015:12;:10;:12::i;:::-;6005:22;;:6;;;;;;;;;;:22;;;5997:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6200:1:::1;6163:40;;6184:6;::::0;::::1;;;;;;;;6163:40;;;;;;;;;;;;6231:1;6214:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6096:145::o:0;18942:87::-;18981:13;19014:7;19007:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18942:87;:::o;20017:120::-;20079:7;20106:23;;20099:30;;20017:120;:::o;16486:44::-;;;;:::o;19740:269::-;19833:4;19850:129;19859:12;:10;:12::i;:::-;19873:7;19882:96;19921:15;19882:96;;;;;;;;;;;;;;;;;:11;:25;19894:12;:10;:12::i;:::-;19882:25;;;;;;;;;;;;;;;:34;19908:7;19882:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19850:8;:129::i;:::-;19997:4;19990:11;;19740:269;;;;:::o;23230:125::-;6015:12;:10;:12::i;:::-;6005:22;;:6;;;;;;;;;;:22;;;5997:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23339:8:::1;23311:25;;:36;;;;;;;;;;;;;;;;;;23230:125:::0;:::o;6939:305::-;7009:10;6991:28;;:14;;;;;;;;;;;:28;;;6983:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;7096:9;;7078:15;:27;7070:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7187:14;;;;;;;;;;;7158:44;;7179:6;;;;;;;;;;7158:44;;;;;;;;;;;;7222:14;;;;;;;;;;;7213:6;;:23;;;;;;;;;;;;;;;;;;6939:305::o;16358:30::-;;;;:::o;24550:167::-;24628:4;24645:42;24655:12;:10;:12::i;:::-;24669:9;24680:6;24645:9;:42::i;:::-;;24705:4;24698:11;;24550:167;;;;:::o;21772:358::-;6015:12;:10;:12::i;:::-;6005:22;;:6;;;;;;;;;;:22;;;5997:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21931:17:::1;21913:15;:35;;;;21977:17;21959:15;:35;;;;22018:12;22005:10;:25;;;;22070:52;22111:10;;22070:36;22090:15;;22070;;:19;;:36;;;;:::i;:::-;:40;;:52;;;;:::i;:::-;22043:24;:79;;;;21772:358:::0;;;:::o;16107:30::-;;;;:::o;23051:171::-;6015:12;:10;:12::i;:::-;6005:22;;:6;;;;;;;;;;:22;;;5997:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23152:8:::1;23128:21;;:32;;;;;;;;;;;;;;;;;;23176:38;23205:8;23176:38;;;;;;:::i;:::-;;;;;;;;23051:171:::0;:::o;16065:35::-;;;;:::o;16922:26::-;;;;;;;;;;;;;:::o;16193:36::-;;;;:::o;15855:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;16236:31::-;;;;:::o;15333:99::-;;;;;;;;;;;;;:::o;17036:45::-;;;;;;;;;;;;;:::o;16023:35::-;;;;:::o;6701:226::-;6015:12;:10;:12::i;:::-;6005:22;;:6;;;;;;;;;;:22;;;5997:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6782:6:::1;::::0;::::1;;;;;;;;6765:14;;:23;;;;;;;;;;;;;;;;;;6816:1;6799:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6859:4;6841:15;:22;;;;:::i;:::-;6829:9;:34;;;;6916:1;6879:40;;6900:6;::::0;::::1;;;;;;;;6879:40;;;;;;;;;;;;6701:226:::0;:::o;19363:143::-;19444:7;19471:11;:18;19483:5;19471:18;;;;;;;;;;;;;;;:27;19490:7;19471:27;;;;;;;;;;;;;;;;19464:34;;19363:143;;;;:::o;22142:111::-;6015:12;:10;:12::i;:::-;6005:22;;:6;;;;;;;;;;:22;;;5997:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22234:11:::1;22219:12;:26;;;;22142:111:::0;:::o;20935:135::-;6015:12;:10;:12::i;:::-;6005:22;;:6;;;;;;;;;;:22;;;5997:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21054:8:::1;21025:17;:26;21043:7;21025:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;20935:135:::0;;:::o;16397:37::-;;;;:::o;22525:102::-;6015:12;:10;:12::i;:::-;6005:22;;:6;;;;;;;;;;:22;;;5997:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22611:8:::1;22597:10;:22;;;;22525:102:::0;:::o;6249:244::-;6015:12;:10;:12::i;:::-;6005:22;;:6;;;;;;;;;;:22;;;5997:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6358:1:::1;6338:22;;:8;:22;;;;6330:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6448:8;6419:38;;6440:6;::::0;::::1;;;;;;;;6419:38;;;;;;;;;;;;6477:8;6468:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6249:244:::0;:::o;20796:127::-;6015:12;:10;:12::i;:::-;6005:22;;:6;;;;;;;;;;:22;;;5997:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20909:6:::1;20883:15;:23;20899:6;20883:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20796:127:::0;;:::o;17088:35::-;;;;;;;;;;;;;:::o;1241:181::-;1299:7;1319:9;1335:1;1331;:5;;;;:::i;:::-;1319:17;;1360:1;1355;:6;;1347:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1413:1;1406:8;;;1241:181;;;;:::o;173:115::-;226:15;269:10;254:26;;173:115;:::o;20314:337::-;20424:1;20407:19;;:5;:19;;;;20399:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20505:1;20486:21;;:7;:21;;;;20478:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20589:6;20559:11;:18;20571:5;20559:18;;;;;;;;;;;;;;;:27;20578:7;20559:27;;;;;;;;;;;;;;;:36;;;;20627:7;20611:32;;20620:5;20611:32;;;20636:6;20611:32;;;;;;:::i;:::-;;;;;;;;20314:337;;;:::o;25046:1707::-;25133:4;25178:1;25160:20;;:6;:20;;;;25152:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;25262:1;25241:23;;:9;:23;;;;25233:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;25320:16;;;;;;;;;;;25317:1429;;;25370:41;25385:6;25393:9;25404:6;25370:14;:41::i;:::-;25363:48;;;;25317:1429;25467:15;:23;25483:6;25467:23;;;;;;;;;;;;;;;;;;;;;;;;;25466:24;:55;;;;;25495:15;:26;25511:9;25495:26;;;;;;;;;;;;;;;;;;;;;;;;;25494:27;25466:55;25463:170;;;25560:12;;25550:6;:22;;25542:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;25463:170;25661:28;25692:24;25710:4;25692:9;:24::i;:::-;25661:55;;25731:28;25786:23;;25762:20;:47;;25731:78;;25842:23;:44;;;;;25870:16;;;;;;;;;;;25869:17;25842:44;:69;;;;;25891:12;:20;25904:6;25891:20;;;;;;;;;;;;;;;;;;;;;;;;;25890:21;25842:69;:94;;;;;25915:21;;;;;;;;;;;25842:94;25838:305;;;25974:25;;;;;;;;;;;25971:97;;;26045:23;;26022:46;;25971:97;26087:36;26102:20;26087:14;:36::i;:::-;25838:305;26179:53;26201:6;26179:53;;;;;;;;;;;;;;;;;:9;:17;26189:6;26179:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;26159:9;:17;26169:6;26159:17;;;;;;;;;;;;;;;:73;;;;26249:19;26272:17;:25;26290:6;26272:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;26301:17;:28;26319:9;26301:28;;;;;;;;;;;;;;;;;;;;;;;;;26272:57;26271:148;;26385:34;26393:6;26401:9;26412:6;26385:7;:34::i;:::-;26271:148;;;26376:6;26271:148;26249:170;;26439:16;;;;;;;;;;;:51;;;;;26460:19;:30;26480:9;26460:30;;;;;;;;;;;;;;;;;;;;;;;;;26459:31;26439:51;26436:133;;;26558:10;;26517:37;26542:11;26517:20;26527:9;26517;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;26509:60;;;;;;26436:133;26609:37;26634:11;26609:9;:20;26619:9;26609:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;26586:9;:20;26596:9;26586:20;;;;;;;;;;;;;;;:60;;;;26685:9;26668:40;;26677:6;26668:40;;;26696:11;26668:40;;;;;;:::i;:::-;;;;;;;;26730:4;26723:11;;;;;25046:1707;;;;;;:::o;1574:192::-;1660:7;1693:1;1688;:6;;1696:12;1680:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1720:9;1736:1;1732;:5;;;;:::i;:::-;1720:17;;1757:1;1750:8;;;1574:192;;;;;:::o;1430:136::-;1488:7;1515:43;1519:1;1522;1515:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1508:50;;1430:136;;;;:::o;26761:330::-;26854:4;26891:53;26913:6;26891:53;;;;;;;;;;;;;;;;;:9;:17;26901:6;26891:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;26871:9;:17;26881:6;26871:17;;;;;;;;;;;;;;;:73;;;;26978:32;27003:6;26978:9;:20;26988:9;26978:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;26955:9;:20;26965:9;26955:20;;;;;;;;;;;;;;;:55;;;;27043:9;27026:35;;27035:6;27026:35;;;27054:6;27026:35;;;;;;:::i;:::-;;;;;;;;27079:4;27072:11;;26761:330;;;;;:::o;27099:1048::-;17565:4;17546:16;;:23;;;;;;;;;;;;;;;;;;27181:19:::1;27203:65;27266:1;27203:58;27236:24;;27203:28;27215:15;;27203:7;:11;;:28;;;;:::i;:::-;:32;;:58;;;;:::i;:::-;:62;;:65;;;;:::i;:::-;27181:87;;27279:21;27303:24;27315:11;27303:7;:11;;:24;;;;:::i;:::-;27279:48;;27340:31;27357:13;27340:16;:31::i;:::-;27382:22;27407:21;27382:46;;27441:19;27463:52;27492:22;27512:1;27492:15;;:19;;:22;;;;:::i;:::-;27463:24;;:28;;:52;;;;:::i;:::-;27441:74;;27536:26;27565:59;27622:1;27565:52;27605:11;27565:35;27584:15;;27565:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;27536:88;;27635:21;27659:47;27694:11;27659:30;27678:10;;27659:14;:18;;:30;;;;:::i;:::-;:34;;:47;;;;:::i;:::-;27635:71;;27717:26;27746:57;27789:13;27746:38;27765:18;27746:14;:18;;:38;;;;:::i;:::-;:42;;:57;;;;:::i;:::-;27717:86;;27840:1;27819:18;:22;27816:104;;;27856:64;27877:22;;;;;;;;;;;27901:18;27856:20;:64::i;:::-;27816:104;27952:1;27936:13;:17;27933:89;;;27968:54;27989:17;;;;;;;;;;;28008:13;27968:20;:54::i;:::-;27933:89;28059:1;28038:18;:22;:41;;;;;28078:1;28064:11;:15;28038:41;28035:104;;;28094:45;28107:11;28120:18;28094:12;:45::i;:::-;28035:104;17580:1;;;;;;;17611:5:::0;17592:16;;:24;;;;;;;;;;;;;;;;;;27099:1048;:::o;29354:622::-;29440:7;29470:17;29490:1;29470:21;;29515:12;:20;29528:6;29515:20;;;;;;;;;;;;;;;;;;;;;;;;;29512:223;;;29564:38;29598:3;29564:29;29575:17;;29564:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;29552:50;;29512:223;;;29632:12;:23;29645:9;29632:23;;;;;;;;;;;;;;;;;;;;;;;;;29629:106;;;29684:39;29719:3;29684:30;29695:18;;29684:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;29672:51;;29629:106;29512:223;29770:1;29758:9;:13;29755:173;;;29815:39;29844:9;29815;:24;29833:4;29815:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;29788:9;:24;29806:4;29788:24;;;;;;;;;;;;;;;:66;;;;29899:4;29874:42;;29883:6;29874:42;;;29906:9;29874:42;;;;;;:::i;:::-;;;;;;;;29755:173;29947:21;29958:9;29947:6;:10;;:21;;;;:::i;:::-;29940:28;;;29354:622;;;;;:::o;1774:250::-;1832:7;1861:1;1856;:6;1852:47;;;1886:1;1879:8;;;;1852:47;1911:9;1927:1;1923;:5;;;;:::i;:::-;1911:17;;1956:1;1951;1947;:5;;;;:::i;:::-;:10;1939:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2015:1;2008:8;;;1774:250;;;;;:::o;2032:132::-;2090:7;2117:39;2121:1;2124;2117:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2110:46;;2032:132;;;;:::o;28159:666::-;28285:21;28323:1;28309:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28285:40;;28354:4;28336;28341:1;28336:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;28380:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28370:4;28375:1;28370:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;28415:62;28432:4;28447:15;;;;;;;;;;;28465:11;28415:8;:62::i;:::-;28516:15;;;;;;;;;;;:66;;;28597:11;28623:1;28667:4;28694;28730:15;28516:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28782:35;28799:11;28812:4;28782:35;;;;;;;:::i;:::-;;;;;;;;28159:666;;:::o;23503:126::-;23595:9;:18;;:26;23614:6;23595:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23503:126;;:::o;28833:513::-;28981:62;28998:4;29013:15;;;;;;;;;;;29031:11;28981:8;:62::i;:::-;29086:15;;;;;;;;;;;:31;;;29125:9;29158:4;29178:11;29204:1;29247;29290:7;:5;:7::i;:::-;29312:15;29086:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28833:513;;:::o;2172:278::-;2258:7;2290:1;2286;:5;2293:12;2278:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2317:9;2333:1;2329;:5;;;;:::i;:::-;2317:17;;2441:1;2434:8;;;2172:278;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;492:87;;;;:::o;585:143::-;642:5;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;648:80;;;;:::o;734:262::-;793:6;842:2;830:9;821:7;817:23;813:32;810:2;;;858:1;855;848:12;810:2;901:1;926:53;971:7;962:6;951:9;947:22;926:53;:::i;:::-;916:63;;872:117;800:196;;;;:::o;1002:284::-;1072:6;1121:2;1109:9;1100:7;1096:23;1092:32;1089:2;;;1137:1;1134;1127:12;1089:2;1180:1;1205:64;1261:7;1252:6;1241:9;1237:22;1205:64;:::i;:::-;1195:74;;1151:128;1079:207;;;;:::o;1292:407::-;1360:6;1368;1417:2;1405:9;1396:7;1392:23;1388:32;1385:2;;;1433:1;1430;1423:12;1385:2;1476:1;1501:53;1546:7;1537:6;1526:9;1522:22;1501:53;:::i;:::-;1491:63;;1447:117;1603:2;1629:53;1674:7;1665:6;1654:9;1650:22;1629:53;:::i;:::-;1619:63;;1574:118;1375:324;;;;;:::o;1705:552::-;1782:6;1790;1798;1847:2;1835:9;1826:7;1822:23;1818:32;1815:2;;;1863:1;1860;1853:12;1815:2;1906:1;1931:53;1976:7;1967:6;1956:9;1952:22;1931:53;:::i;:::-;1921:63;;1877:117;2033:2;2059:53;2104:7;2095:6;2084:9;2080:22;2059:53;:::i;:::-;2049:63;;2004:118;2161:2;2187:53;2232:7;2223:6;2212:9;2208:22;2187:53;:::i;:::-;2177:63;;2132:118;1805:452;;;;;:::o;2263:401::-;2328:6;2336;2385:2;2373:9;2364:7;2360:23;2356:32;2353:2;;;2401:1;2398;2391:12;2353:2;2444:1;2469:53;2514:7;2505:6;2494:9;2490:22;2469:53;:::i;:::-;2459:63;;2415:117;2571:2;2597:50;2639:7;2630:6;2619:9;2615:22;2597:50;:::i;:::-;2587:60;;2542:115;2343:321;;;;;:::o;2670:407::-;2738:6;2746;2795:2;2783:9;2774:7;2770:23;2766:32;2763:2;;;2811:1;2808;2801:12;2763:2;2854:1;2879:53;2924:7;2915:6;2904:9;2900:22;2879:53;:::i;:::-;2869:63;;2825:117;2981:2;3007:53;3052:7;3043:6;3032:9;3028:22;3007:53;:::i;:::-;2997:63;;2952:118;2753:324;;;;;:::o;3083:256::-;3139:6;3188:2;3176:9;3167:7;3163:23;3159:32;3156:2;;;3204:1;3201;3194:12;3156:2;3247:1;3272:50;3314:7;3305:6;3294:9;3290:22;3272:50;:::i;:::-;3262:60;;3218:114;3146:193;;;;:::o;3345:262::-;3404:6;3453:2;3441:9;3432:7;3428:23;3424:32;3421:2;;;3469:1;3466;3459:12;3421:2;3512:1;3537:53;3582:7;3573:6;3562:9;3558:22;3537:53;:::i;:::-;3527:63;;3483:117;3411:196;;;;:::o;3613:552::-;3690:6;3698;3706;3755:2;3743:9;3734:7;3730:23;3726:32;3723:2;;;3771:1;3768;3761:12;3723:2;3814:1;3839:53;3884:7;3875:6;3864:9;3860:22;3839:53;:::i;:::-;3829:63;;3785:117;3941:2;3967:53;4012:7;4003:6;3992:9;3988:22;3967:53;:::i;:::-;3957:63;;3912:118;4069:2;4095:53;4140:7;4131:6;4120:9;4116:22;4095:53;:::i;:::-;4085:63;;4040:118;3713:452;;;;;:::o;4171:596::-;4259:6;4267;4275;4324:2;4312:9;4303:7;4299:23;4295:32;4292:2;;;4340:1;4337;4330:12;4292:2;4383:1;4408:64;4464:7;4455:6;4444:9;4440:22;4408:64;:::i;:::-;4398:74;;4354:128;4521:2;4547:64;4603:7;4594:6;4583:9;4579:22;4547:64;:::i;:::-;4537:74;;4492:129;4660:2;4686:64;4742:7;4733:6;4722:9;4718:22;4686:64;:::i;:::-;4676:74;;4631:129;4282:485;;;;;:::o;4773:179::-;4842:10;4863:46;4905:3;4897:6;4863:46;:::i;:::-;4941:4;4936:3;4932:14;4918:28;;4853:99;;;;:::o;4958:142::-;5061:32;5087:5;5061:32;:::i;:::-;5056:3;5049:45;5039:61;;:::o;5106:108::-;5183:24;5201:5;5183:24;:::i;:::-;5178:3;5171:37;5161:53;;:::o;5220:118::-;5307:24;5325:5;5307:24;:::i;:::-;5302:3;5295:37;5285:53;;:::o;5374:732::-;5493:3;5522:54;5570:5;5522:54;:::i;:::-;5592:86;5671:6;5666:3;5592:86;:::i;:::-;5585:93;;5702:56;5752:5;5702:56;:::i;:::-;5781:7;5812:1;5797:284;5822:6;5819:1;5816:13;5797:284;;;5898:6;5892:13;5925:63;5984:3;5969:13;5925:63;:::i;:::-;5918:70;;6011:60;6064:6;6011:60;:::i;:::-;6001:70;;5857:224;5844:1;5841;5837:9;5832:14;;5797:284;;;5801:14;6097:3;6090:10;;5498:608;;;;;;;:::o;6112:109::-;6193:21;6208:5;6193:21;:::i;:::-;6188:3;6181:34;6171:50;;:::o;6227:185::-;6341:64;6399:5;6341:64;:::i;:::-;6336:3;6329:77;6319:93;;:::o;6418:147::-;6513:45;6552:5;6513:45;:::i;:::-;6508:3;6501:58;6491:74;;:::o;6571:364::-;6659:3;6687:39;6720:5;6687:39;:::i;:::-;6742:71;6806:6;6801:3;6742:71;:::i;:::-;6735:78;;6822:52;6867:6;6862:3;6855:4;6848:5;6844:16;6822:52;:::i;:::-;6899:29;6921:6;6899:29;:::i;:::-;6894:3;6890:39;6883:46;;6663:272;;;;;:::o;6941:366::-;7083:3;7104:67;7168:2;7163:3;7104:67;:::i;:::-;7097:74;;7180:93;7269:3;7180:93;:::i;:::-;7298:2;7293:3;7289:12;7282:19;;7087:220;;;:::o;7313:366::-;7455:3;7476:67;7540:2;7535:3;7476:67;:::i;:::-;7469:74;;7552:93;7641:3;7552:93;:::i;:::-;7670:2;7665:3;7661:12;7654:19;;7459:220;;;:::o;7685:366::-;7827:3;7848:67;7912:2;7907:3;7848:67;:::i;:::-;7841:74;;7924:93;8013:3;7924:93;:::i;:::-;8042:2;8037:3;8033:12;8026:19;;7831:220;;;:::o;8057:366::-;8199:3;8220:67;8284:2;8279:3;8220:67;:::i;:::-;8213:74;;8296:93;8385:3;8296:93;:::i;:::-;8414:2;8409:3;8405:12;8398:19;;8203:220;;;:::o;8429:366::-;8571:3;8592:67;8656:2;8651:3;8592:67;:::i;:::-;8585:74;;8668:93;8757:3;8668:93;:::i;:::-;8786:2;8781:3;8777:12;8770:19;;8575:220;;;:::o;8801:366::-;8943:3;8964:67;9028:2;9023:3;8964:67;:::i;:::-;8957:74;;9040:93;9129:3;9040:93;:::i;:::-;9158:2;9153:3;9149:12;9142:19;;8947:220;;;:::o;9173:366::-;9315:3;9336:67;9400:2;9395:3;9336:67;:::i;:::-;9329:74;;9412:93;9501:3;9412:93;:::i;:::-;9530:2;9525:3;9521:12;9514:19;;9319:220;;;:::o;9545:366::-;9687:3;9708:67;9772:2;9767:3;9708:67;:::i;:::-;9701:74;;9784:93;9873:3;9784:93;:::i;:::-;9902:2;9897:3;9893:12;9886:19;;9691:220;;;:::o;9917:366::-;10059:3;10080:67;10144:2;10139:3;10080:67;:::i;:::-;10073:74;;10156:93;10245:3;10156:93;:::i;:::-;10274:2;10269:3;10265:12;10258:19;;10063:220;;;:::o;10289:366::-;10431:3;10452:67;10516:2;10511:3;10452:67;:::i;:::-;10445:74;;10528:93;10617:3;10528:93;:::i;:::-;10646:2;10641:3;10637:12;10630:19;;10435:220;;;:::o;10661:366::-;10803:3;10824:67;10888:2;10883:3;10824:67;:::i;:::-;10817:74;;10900:93;10989:3;10900:93;:::i;:::-;11018:2;11013:3;11009:12;11002:19;;10807:220;;;:::o;11033:118::-;11120:24;11138:5;11120:24;:::i;:::-;11115:3;11108:37;11098:53;;:::o;11157:112::-;11240:22;11256:5;11240:22;:::i;:::-;11235:3;11228:35;11218:51;;:::o;11275:222::-;11368:4;11406:2;11395:9;11391:18;11383:26;;11419:71;11487:1;11476:9;11472:17;11463:6;11419:71;:::i;:::-;11373:124;;;;:::o;11503:254::-;11612:4;11650:2;11639:9;11635:18;11627:26;;11663:87;11747:1;11736:9;11732:17;11723:6;11663:87;:::i;:::-;11617:140;;;;:::o;11763:332::-;11884:4;11922:2;11911:9;11907:18;11899:26;;11935:71;12003:1;11992:9;11988:17;11979:6;11935:71;:::i;:::-;12016:72;12084:2;12073:9;12069:18;12060:6;12016:72;:::i;:::-;11889:206;;;;;:::o;12101:807::-;12350:4;12388:3;12377:9;12373:19;12365:27;;12402:71;12470:1;12459:9;12455:17;12446:6;12402:71;:::i;:::-;12483:72;12551:2;12540:9;12536:18;12527:6;12483:72;:::i;:::-;12565:80;12641:2;12630:9;12626:18;12617:6;12565:80;:::i;:::-;12655;12731:2;12720:9;12716:18;12707:6;12655:80;:::i;:::-;12745:73;12813:3;12802:9;12798:19;12789:6;12745:73;:::i;:::-;12828;12896:3;12885:9;12881:19;12872:6;12828:73;:::i;:::-;12355:553;;;;;;;;;:::o;12914:210::-;13001:4;13039:2;13028:9;13024:18;13016:26;;13052:65;13114:1;13103:9;13099:17;13090:6;13052:65;:::i;:::-;13006:118;;;;:::o;13130:276::-;13250:4;13288:2;13277:9;13273:18;13265:26;;13301:98;13396:1;13385:9;13381:17;13372:6;13301:98;:::i;:::-;13255:151;;;;:::o;13412:313::-;13525:4;13563:2;13552:9;13548:18;13540:26;;13612:9;13606:4;13602:20;13598:1;13587:9;13583:17;13576:47;13640:78;13713:4;13704:6;13640:78;:::i;:::-;13632:86;;13530:195;;;;:::o;13731:419::-;13897:4;13935:2;13924:9;13920:18;13912:26;;13984:9;13978:4;13974:20;13970:1;13959:9;13955:17;13948:47;14012:131;14138:4;14012:131;:::i;:::-;14004:139;;13902:248;;;:::o;14156:419::-;14322:4;14360:2;14349:9;14345:18;14337:26;;14409:9;14403:4;14399:20;14395:1;14384:9;14380:17;14373:47;14437:131;14563:4;14437:131;:::i;:::-;14429:139;;14327:248;;;:::o;14581:419::-;14747:4;14785:2;14774:9;14770:18;14762:26;;14834:9;14828:4;14824:20;14820:1;14809:9;14805:17;14798:47;14862:131;14988:4;14862:131;:::i;:::-;14854:139;;14752:248;;;:::o;15006:419::-;15172:4;15210:2;15199:9;15195:18;15187:26;;15259:9;15253:4;15249:20;15245:1;15234:9;15230:17;15223:47;15287:131;15413:4;15287:131;:::i;:::-;15279:139;;15177:248;;;:::o;15431:419::-;15597:4;15635:2;15624:9;15620:18;15612:26;;15684:9;15678:4;15674:20;15670:1;15659:9;15655:17;15648:47;15712:131;15838:4;15712:131;:::i;:::-;15704:139;;15602:248;;;:::o;15856:419::-;16022:4;16060:2;16049:9;16045:18;16037:26;;16109:9;16103:4;16099:20;16095:1;16084:9;16080:17;16073:47;16137:131;16263:4;16137:131;:::i;:::-;16129:139;;16027:248;;;:::o;16281:419::-;16447:4;16485:2;16474:9;16470:18;16462:26;;16534:9;16528:4;16524:20;16520:1;16509:9;16505:17;16498:47;16562:131;16688:4;16562:131;:::i;:::-;16554:139;;16452:248;;;:::o;16706:419::-;16872:4;16910:2;16899:9;16895:18;16887:26;;16959:9;16953:4;16949:20;16945:1;16934:9;16930:17;16923:47;16987:131;17113:4;16987:131;:::i;:::-;16979:139;;16877:248;;;:::o;17131:419::-;17297:4;17335:2;17324:9;17320:18;17312:26;;17384:9;17378:4;17374:20;17370:1;17359:9;17355:17;17348:47;17412:131;17538:4;17412:131;:::i;:::-;17404:139;;17302:248;;;:::o;17556:419::-;17722:4;17760:2;17749:9;17745:18;17737:26;;17809:9;17803:4;17799:20;17795:1;17784:9;17780:17;17773:47;17837:131;17963:4;17837:131;:::i;:::-;17829:139;;17727:248;;;:::o;17981:419::-;18147:4;18185:2;18174:9;18170:18;18162:26;;18234:9;18228:4;18224:20;18220:1;18209:9;18205:17;18198:47;18262:131;18388:4;18262:131;:::i;:::-;18254:139;;18152:248;;;:::o;18406:222::-;18499:4;18537:2;18526:9;18522:18;18514:26;;18550:71;18618:1;18607:9;18603:17;18594:6;18550:71;:::i;:::-;18504:124;;;;:::o;18634:483::-;18805:4;18843:2;18832:9;18828:18;18820:26;;18856:71;18924:1;18913:9;18909:17;18900:6;18856:71;:::i;:::-;18974:9;18968:4;18964:20;18959:2;18948:9;18944:18;18937:48;19002:108;19105:4;19096:6;19002:108;:::i;:::-;18994:116;;18810:307;;;;;:::o;19123:831::-;19386:4;19424:3;19413:9;19409:19;19401:27;;19438:71;19506:1;19495:9;19491:17;19482:6;19438:71;:::i;:::-;19519:80;19595:2;19584:9;19580:18;19571:6;19519:80;:::i;:::-;19646:9;19640:4;19636:20;19631:2;19620:9;19616:18;19609:48;19674:108;19777:4;19768:6;19674:108;:::i;:::-;19666:116;;19792:72;19860:2;19849:9;19845:18;19836:6;19792:72;:::i;:::-;19874:73;19942:3;19931:9;19927:19;19918:6;19874:73;:::i;:::-;19391:563;;;;;;;;:::o;19960:214::-;20049:4;20087:2;20076:9;20072:18;20064:26;;20100:67;20164:1;20153:9;20149:17;20140:6;20100:67;:::i;:::-;20054:120;;;;:::o;20180:132::-;20247:4;20270:3;20262:11;;20300:4;20295:3;20291:14;20283:22;;20252:60;;;:::o;20318:114::-;20385:6;20419:5;20413:12;20403:22;;20392:40;;;:::o;20438:99::-;20490:6;20524:5;20518:12;20508:22;;20497:40;;;:::o;20543:113::-;20613:4;20645;20640:3;20636:14;20628:22;;20618:38;;;:::o;20662:184::-;20761:11;20795:6;20790:3;20783:19;20835:4;20830:3;20826:14;20811:29;;20773:73;;;;:::o;20852:169::-;20936:11;20970:6;20965:3;20958:19;21010:4;21005:3;21001:14;20986:29;;20948:73;;;;:::o;21027:305::-;21067:3;21086:20;21104:1;21086:20;:::i;:::-;21081:25;;21120:20;21138:1;21120:20;:::i;:::-;21115:25;;21274:1;21206:66;21202:74;21199:1;21196:81;21193:2;;;21280:18;;:::i;:::-;21193:2;21324:1;21321;21317:9;21310:16;;21071:261;;;;:::o;21338:185::-;21378:1;21395:20;21413:1;21395:20;:::i;:::-;21390:25;;21429:20;21447:1;21429:20;:::i;:::-;21424:25;;21468:1;21458:2;;21473:18;;:::i;:::-;21458:2;21515:1;21512;21508:9;21503:14;;21380:143;;;;:::o;21529:348::-;21569:7;21592:20;21610:1;21592:20;:::i;:::-;21587:25;;21626:20;21644:1;21626:20;:::i;:::-;21621:25;;21814:1;21746:66;21742:74;21739:1;21736:81;21731:1;21724:9;21717:17;21713:105;21710:2;;;21821:18;;:::i;:::-;21710:2;21869:1;21866;21862:9;21851:20;;21577:300;;;;:::o;21883:191::-;21923:4;21943:20;21961:1;21943:20;:::i;:::-;21938:25;;21977:20;21995:1;21977:20;:::i;:::-;21972:25;;22016:1;22013;22010:8;22007:2;;;22021:18;;:::i;:::-;22007:2;22066:1;22063;22059:9;22051:17;;21928:146;;;;:::o;22080:96::-;22117:7;22146:24;22164:5;22146:24;:::i;:::-;22135:35;;22125:51;;;:::o;22182:104::-;22227:7;22256:24;22274:5;22256:24;:::i;:::-;22245:35;;22235:51;;;:::o;22292:90::-;22326:7;22369:5;22362:13;22355:21;22344:32;;22334:48;;;:::o;22388:126::-;22425:7;22465:42;22458:5;22454:54;22443:65;;22433:81;;;:::o;22520:77::-;22557:7;22586:5;22575:16;;22565:32;;;:::o;22603:86::-;22638:7;22678:4;22671:5;22667:16;22656:27;;22646:43;;;:::o;22695:180::-;22772:9;22805:64;22863:5;22805:64;:::i;:::-;22792:77;;22782:93;;;:::o;22881:140::-;22958:9;22991:24;23009:5;22991:24;:::i;:::-;22978:37;;22968:53;;;:::o;23027:121::-;23085:9;23118:24;23136:5;23118:24;:::i;:::-;23105:37;;23095:53;;;:::o;23154:307::-;23222:1;23232:113;23246:6;23243:1;23240:13;23232:113;;;23331:1;23326:3;23322:11;23316:18;23312:1;23307:3;23303:11;23296:39;23268:2;23265:1;23261:10;23256:15;;23232:113;;;23363:6;23360:1;23357:13;23354:2;;;23443:1;23434:6;23429:3;23425:16;23418:27;23354:2;23203:258;;;;:::o;23467:320::-;23511:6;23548:1;23542:4;23538:12;23528:22;;23595:1;23589:4;23585:12;23616:18;23606:2;;23672:4;23664:6;23660:17;23650:27;;23606:2;23734;23726:6;23723:14;23703:18;23700:38;23697:2;;;23753:18;;:::i;:::-;23697:2;23518:269;;;;:::o;23793:180::-;23841:77;23838:1;23831:88;23938:4;23935:1;23928:15;23962:4;23959:1;23952:15;23979:180;24027:77;24024:1;24017:88;24124:4;24121:1;24114:15;24148:4;24145:1;24138:15;24165:180;24213:77;24210:1;24203:88;24310:4;24307:1;24300:15;24334:4;24331:1;24324:15;24351:102;24392:6;24443:2;24439:7;24434:2;24427:5;24423:14;24419:28;24409:38;;24399:54;;;:::o;24459:222::-;24599:34;24595:1;24587:6;24583:14;24576:58;24668:5;24663:2;24655:6;24651:15;24644:30;24565:116;:::o;24687:225::-;24827:34;24823:1;24815:6;24811:14;24804:58;24896:8;24891:2;24883:6;24879:15;24872:33;24793:119;:::o;24918:221::-;25058:34;25054:1;25046:6;25042:14;25035:58;25127:4;25122:2;25114:6;25110:15;25103:29;25024:115;:::o;25145:177::-;25285:29;25281:1;25273:6;25269:14;25262:53;25251:71;:::o;25328:227::-;25468:34;25464:1;25456:6;25452:14;25445:58;25537:10;25532:2;25524:6;25520:15;25513:35;25434:121;:::o;25561:220::-;25701:34;25697:1;25689:6;25685:14;25678:58;25770:3;25765:2;25757:6;25753:15;25746:28;25667:114;:::o;25787:182::-;25927:34;25923:1;25915:6;25911:14;25904:58;25893:76;:::o;25975:224::-;26115:34;26111:1;26103:6;26099:14;26092:58;26184:7;26179:2;26171:6;26167:15;26160:32;26081:118;:::o;26205:223::-;26345:34;26341:1;26333:6;26329:14;26322:58;26414:6;26409:2;26401:6;26397:15;26390:31;26311:117;:::o;26434:181::-;26574:33;26570:1;26562:6;26558:14;26551:57;26540:75;:::o;26621:222::-;26761:34;26757:1;26749:6;26745:14;26738:58;26830:5;26825:2;26817:6;26813:15;26806:30;26727:116;:::o;26849:122::-;26922:24;26940:5;26922:24;:::i;:::-;26915:5;26912:35;26902:2;;26961:1;26958;26951:12;26902:2;26892:79;:::o;26977:116::-;27047:21;27062:5;27047:21;:::i;:::-;27040:5;27037:32;27027:2;;27083:1;27080;27073:12;27027:2;27017:76;:::o;27099:122::-;27172:24;27190:5;27172:24;:::i;:::-;27165:5;27162:35;27152:2;;27211:1;27208;27201:12;27152:2;27142:79;:::o
Swarm Source
ipfs://cad2f12e77e9da042e6d251975ec28682a0f464bc436c971b0517a986f4f0b2d
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)