Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 87 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 17419995 | 954 days ago | IN | 0 ETH | 0.00050623 | ||||
| Approve | 17419979 | 954 days ago | IN | 0 ETH | 0.00051362 | ||||
| Approve | 17384197 | 959 days ago | IN | 0 ETH | 0.00135477 | ||||
| Approve | 17255264 | 977 days ago | IN | 0 ETH | 0.00097569 | ||||
| Approve | 17176796 | 988 days ago | IN | 0 ETH | 0.00181527 | ||||
| Approve | 17163786 | 990 days ago | IN | 0 ETH | 0.00162161 | ||||
| Approve | 17161064 | 990 days ago | IN | 0 ETH | 0.00140004 | ||||
| Approve | 17161030 | 990 days ago | IN | 0 ETH | 0.00132894 | ||||
| Approve | 17161015 | 990 days ago | IN | 0 ETH | 0.00131659 | ||||
| Approve | 17161003 | 990 days ago | IN | 0 ETH | 0.0013485 | ||||
| Approve | 17153962 | 991 days ago | IN | 0 ETH | 0.00087772 | ||||
| Approve | 17033205 | 1008 days ago | IN | 0 ETH | 0.00073149 | ||||
| Approve | 17006645 | 1012 days ago | IN | 0 ETH | 0.0005656 | ||||
| Approve | 16996159 | 1013 days ago | IN | 0 ETH | 0.00053645 | ||||
| Approve | 16995848 | 1013 days ago | IN | 0 ETH | 0.00054376 | ||||
| Approve | 16995841 | 1013 days ago | IN | 0 ETH | 0.00057746 | ||||
| Approve | 16961266 | 1018 days ago | IN | 0 ETH | 0.00047653 | ||||
| Approve | 16956639 | 1019 days ago | IN | 0 ETH | 0.00044451 | ||||
| Approve | 16943300 | 1021 days ago | IN | 0 ETH | 0.00073838 | ||||
| Approve | 16943285 | 1021 days ago | IN | 0 ETH | 0.0007614 | ||||
| Approve | 16936965 | 1022 days ago | IN | 0 ETH | 0.00093268 | ||||
| Approve | 16936457 | 1022 days ago | IN | 0 ETH | 0.00074257 | ||||
| Approve | 16924990 | 1023 days ago | IN | 0 ETH | 0.00072035 | ||||
| Approve | 16923889 | 1024 days ago | IN | 0 ETH | 0.00065402 | ||||
| Approve | 16906331 | 1026 days ago | IN | 0 ETH | 0.0006507 |
Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 15527234 | 1219 days ago | 0.29699412 ETH |
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Flasko
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-08-23
*/
//SPDX-License-Identifier: MIT
pragma solidity 0.8.15;
interface IERC20 {
function totalSupply() external view returns (uint);
function balanceOf(address account) external view returns (uint);
function transfer(address recipient, uint amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint amount) external returns (bool);
function transferFrom(address sender, address recipient, uint amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint value);
event Approval(address indexed owner, address indexed spender, uint value);
}
library SafeMath {
function add(uint a, uint b) internal pure returns (uint) {
uint c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint a, uint b) internal pure returns (uint) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint a, uint b, string memory errorMessage) internal pure returns (uint) {
require(b <= a, errorMessage);
uint c = a - b;
return c;
}
function mul(uint a, uint b) internal pure returns (uint) {
if (a == 0) {
return 0;
}
uint c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint a, uint b) internal pure returns (uint) {
return div(a, b, "SafeMath: division by zero");
}
function div(uint a, uint b, string memory errorMessage) internal pure returns (uint) {
// Solidity only automatically asserts when dividing by 0
require(b > 0, errorMessage);
uint c = a / b;
return c;
}
}
contract Context {
constructor () { }
// solhint-disable-previous-line no-empty-blocks
function _msgSender() internal view returns (address) {
return msg.sender;
}
}
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor () {
_owner = msg.sender ;
emit OwnershipTransferred(address(0), _owner);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(_owner == _msgSender() , "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
contract ERC20Detailed {
string private _name;
string private _symbol;
uint8 private _decimals;
constructor (string memory tname, string memory tsymbol, uint8 tdecimals) {
_name = tname;
_symbol = tsymbol;
_decimals = tdecimals;
}
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;
}
}
library Address {
function isContract(address account) internal view returns (bool) {
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
// solhint-disable-next-line no-inline-assembly
assembly { codehash := extcodehash(account) }
return (codehash != 0x0 && codehash != accountHash);
}
}
library SafeERC20 {
using SafeMath for uint;
using Address for address;
function safeTransfer(IERC20 token, address to, uint value) internal {
callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
}
function safeTransferFrom(IERC20 token, address from, address to, uint value) internal {
callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
}
function safeApprove(IERC20 token, address spender, uint value) internal {
require((value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
}
function callOptionalReturn(IERC20 token, bytes memory data) private {
require(address(token).isContract(), "SafeERC20: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = address(token).call(data);
require(success, "SafeERC20: low-level call failed");
if (returndata.length > 0) { // Return data is optional
// solhint-disable-next-line max-line-length
require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
}
}
}
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 Mint(address indexed sender, uint amount0, uint amount1);
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 mint(address to) external returns (uint liquidity);
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 Flasko is Context, Ownable, IERC20, ERC20Detailed {
using SafeERC20 for IERC20;
using Address for address;
using SafeMath for uint256;
IUniswapV2Router02 public immutable uniswapV2Router;
address public immutable uniswapV2Pair;
mapping (address => uint) internal _balances;
mapping (address => mapping (address => uint)) internal _allowances;
mapping (address => bool) private _isExcludedFromFee;
uint256 internal _totalSupply;
uint256 private marketingFee;
uint256 private burnFee;
uint256 private liquidityFee;
uint256 private totalFee;
uint256 public BUYmarketingFee = 4;
uint256 public BUYburnFee = 1;
uint256 public BUYliquidityFee = 2;
uint256 public BUYtotalFee = BUYliquidityFee.add(BUYmarketingFee).add(BUYburnFee);
uint256 public SELLmarketingFee = 9;
uint256 public SELLburnFee = 2;
uint256 public SELLliquidityFee = 3;
uint256 public SELLtotalFee = SELLliquidityFee.add(SELLmarketingFee).add(SELLburnFee);
address payable public marketingaddress = payable(0x1dd14b218377a5dcEF9e3BB641de27a07a638487);
bool inSwapAndLiquify;
bool public swapAndLiquifyEnabled = true;
uint256 public numTokensSellToAddToLiquidity = 100000 * 10**18;
uint256 public maxTxAmount = 1000000000 * 10**18;
event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
event SwapAndLiquifyEnabledUpdated(bool enabled);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiqudity
);
bool private swapping;
modifier lockTheSwap {
inSwapAndLiquify = true;
_;
inSwapAndLiquify = false;
}
address public _owner;
constructor () ERC20Detailed("Flasko", "FLSK", 18) {
_owner = msg.sender ;
_totalSupply = 1000000000 * (10**18);
_balances[_owner] = _totalSupply;
//uniswapv3 router = 0xE592427A0AEce92De3Edee1F18E0157C05861564
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
// Create a uniswap pair for this new token
uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
// set the rest of the contract variables
uniswapV2Router = _uniswapV2Router;
//exclude owner and this contract from fee
_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[address(this)] = true;
_isExcludedFromFee[marketingaddress] = true;
emit Transfer(address(0), _msgSender(), _totalSupply);
}
function totalSupply() public view override returns (uint) {
return _totalSupply;
}
function balanceOf(address account) public view override returns (uint) {
return _balances[account];
}
function transfer(address recipient, uint amount) public override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address towner, address spender) public view override returns (uint) {
return _allowances[towner][spender];
}
function approve(address spender, uint amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(address sender, address recipient, uint 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 increaseAllowance(address spender, uint addedValue) public returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
function decreaseAllowance(address spender, uint subtractedValue) public returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
function setMarketingAddress(address payable wallet) external onlyOwner
{
marketingaddress = wallet;
}
function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
swapAndLiquifyEnabled = _enabled;
emit SwapAndLiquifyEnabledUpdated(_enabled);
}
function changeNumTokensSellToAddToLiquidity(uint256 _numTokensSellToAddToLiquidity) external onlyOwner
{
numTokensSellToAddToLiquidity = _numTokensSellToAddToLiquidity;
}
function excludeFromFee(address account) public onlyOwner {
_isExcludedFromFee[account] = true;
}
function includeInFee(address account) public onlyOwner {
_isExcludedFromFee[account] = false;
}
function changeMaxTxLimit(uint256 _number) external onlyOwner
{
maxTxAmount = _number;
}
//to recieve ETH from uniswapV2Router when swaping
receive() external payable {}
function _transfer(address sender, address recipient, uint amount) internal{
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
if(sender != owner() && recipient != owner())
{
require(amount <= maxTxAmount, "Transaction size limit reached");
}
// is the token balance of this contract address over the min number of
// tokens that we need to initiate a swap + liquidity lock?
// also, don't get caught in a circular liquidity event.
// also, don't swap & liquify if sender is uniswap pair.
uint256 contractTokenBalance = balanceOf(address(this));
bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
if (
overMinTokenBalance &&
!swapping &&
sender != uniswapV2Pair &&
swapAndLiquifyEnabled
) {
swapping = true;
uint256 walletTokens = contractTokenBalance.mul(SELLmarketingFee).div(SELLtotalFee);
uint256 contractBalance = address(this).balance;
swapTokensForEth(walletTokens);
uint256 newBalance = address(this).balance.sub(contractBalance);
uint256 marketingShare = newBalance.mul(SELLmarketingFee).div((SELLmarketingFee));
//uint256 rewardShare = newBalance.sub(marketingShare);
payable(marketingaddress).transfer(marketingShare);
uint256 swapTokens = contractTokenBalance.mul(SELLliquidityFee).div(SELLtotalFee);
swapAndLiquify(swapTokens);
swapping = false;
}
//indicates if fee should be deducted from transfer
bool takeFee = !swapping;
//if any account belongs to _isExcludedFromFee account then remove the fee
if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){
takeFee = false;
}
if(sender != uniswapV2Pair && recipient != uniswapV2Pair)
{
takeFee = false;
}
if(takeFee){
if(sender == uniswapV2Pair)
{
marketingFee = BUYmarketingFee;
liquidityFee = BUYliquidityFee;
burnFee = BUYburnFee;
totalFee = BUYtotalFee;
}
if(recipient == uniswapV2Pair)
{
marketingFee = SELLmarketingFee;
liquidityFee = SELLliquidityFee;
burnFee = SELLburnFee;
totalFee = SELLtotalFee;
}
}
if(takeFee)
{
uint256 taxAmount = amount.mul(totalFee).div(100);
uint256 burnAmount = taxAmount.mul(burnFee).div(totalFee);
taxAmount = taxAmount - burnAmount; /** modifications as per auditors recommendations */
uint256 TotalSent = amount.sub(taxAmount);
_balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
_balances[recipient] = _balances[recipient].add(TotalSent);
_balances[address(this)] = _balances[address(this)].add(taxAmount);
_balances[address(0)] = _balances[address(0)].add(burnAmount);
emit Transfer(sender, recipient, TotalSent);
emit Transfer(sender, address(this), taxAmount);
emit Transfer(sender, address(0), burnAmount);
}
else
{
_balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
}
}
function setSellFee(uint256 _onSellEthBurnFee, uint256 _onSellliquidityFee, uint256 _onSellMarketingFee) public onlyOwner {
SELLmarketingFee = _onSellMarketingFee;
SELLburnFee = _onSellEthBurnFee;
SELLliquidityFee = _onSellliquidityFee;
SELLtotalFee = SELLliquidityFee.add(SELLmarketingFee).add(SELLburnFee);
uint256 onSelltotalFees;
onSelltotalFees = SELLmarketingFee.add(SELLburnFee).add(SELLliquidityFee);
require(onSelltotalFees <= 15, "Sell Fee should be 15% or less");
}
function setBuyFee(uint256 _onBuyBurnFee, uint256 _onBuyliquidityFee, uint256 _onBuyMarketingFee) public onlyOwner {
BUYmarketingFee = _onBuyMarketingFee;
BUYburnFee = _onBuyBurnFee;
BUYliquidityFee = _onBuyliquidityFee;
BUYtotalFee = BUYliquidityFee.add(BUYmarketingFee).add(BUYburnFee);
uint256 onBuytotalFees;
onBuytotalFees = BUYmarketingFee.add(BUYburnFee).add(BUYliquidityFee);
require(onBuytotalFees <= 15, "Buy Fee should be 15% or less");
}
function swapAndLiquify(uint256 tokens) private lockTheSwap {
// split the contract balance into halves
uint256 half = tokens.div(2);
uint256 otherHalf = tokens.sub(half);
// capture the contract's current ETH balance.
// this is so that we can capture exactly the amount of ETH that the
// swap creates, and not make the liquidity event include any ETH that
// has been manually sent to the contract
uint256 initialBalance = address(this).balance;
// swap tokens for ETH
swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered
// how much ETH did we just swap into?
uint256 newBalance = address(this).balance.sub(initialBalance);
// add liquidity to uniswap
addLiquidity(otherHalf, newBalance);
emit SwapAndLiquify(half, newBalance, otherHalf);
}
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 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),
block.timestamp
);
}
function _approve(address towner, address spender, uint amount) internal {
require(towner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[towner][spender] = amount;
emit Approval(towner, spender, amount);
}
function withdrawStuckETh() external onlyOwner{
require (address(this).balance > 0, "Can't withdraw negative or zero");
payable(owner()).transfer(address(this).balance);
}
function removeStuckToken(address _address) external onlyOwner {
require(_address != address(this), "Can't withdraw tokens destined for liquidity");
require(IERC20(_address).balanceOf(address(this)) > 0, "Can't withdraw 0");
IERC20(_address).transfer(owner(), IERC20(_address).balanceOf(address(this)));
}
}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":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":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":"BUYburnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BUYliquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BUYmarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BUYtotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SELLburnFee","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":"SELLtotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"towner","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":"uint256","name":"_number","type":"uint256"}],"name":"changeMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_numTokensSellToAddToLiquidity","type":"uint256"}],"name":"changeNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","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":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingaddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","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":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"removeStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_onBuyBurnFee","type":"uint256"},{"internalType":"uint256","name":"_onBuyliquidityFee","type":"uint256"},{"internalType":"uint256","name":"_onBuyMarketingFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_onSellEthBurnFee","type":"uint256"},{"internalType":"uint256","name":"_onSellliquidityFee","type":"uint256"},{"internalType":"uint256","name":"_onSellMarketingFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","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":"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":"uniswapV2Pair","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":"withdrawStuckETh","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60c06040526004600c556001600d556002600e556200004c600d5462000038600c54600e54620006fb60201b62001d4a1790919060201c565b620006fb60201b62001d4a1790919060201c565b600f556009601055600260115560036012556200009760115462000083601054601254620006fb60201b62001d4a1790919060201c565b620006fb60201b62001d4a1790919060201c565b601355731dd14b218377a5dcef9e3bb641de27a07a638487601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601460156101000a81548160ff02191690831515021790555069152d02c7e14af68000006015556b033b2e3c9fd0803ce80000006016553480156200013557600080fd5b506040518060400160405280600681526020017f466c61736b6f00000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f464c534b000000000000000000000000000000000000000000000000000000008152506012336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3826001908162000270919062000a09565b50816002908162000282919062000a09565b5080600360006101000a81548160ff021916908360ff16021790555050505033601760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506b033b2e3c9fd0803ce800000060078190555060075460046000601760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e8919062000b5a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000450573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000476919062000b5a565b6040518363ffffffff1660e01b81526004016200049592919062000b9d565b6020604051808303816000875af1158015620004b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004db919062000b5a565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050600160066000620005586200075e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200068b6200078760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600754604051620006ec919062000bdb565b60405180910390a35062000d07565b60008082846200070c919062000c27565b90508381101562000754576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200074b9062000ce5565b60405180910390fd5b8091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600033905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200081157607f821691505b602082108103620008275762000826620007c9565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000852565b6200089d868362000852565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620008ea620008e4620008de84620008b5565b620008bf565b620008b5565b9050919050565b6000819050919050565b6200090683620008c9565b6200091e6200091582620008f1565b8484546200085f565b825550505050565b600090565b6200093562000926565b62000942818484620008fb565b505050565b5b818110156200096a576200095e6000826200092b565b60018101905062000948565b5050565b601f821115620009b95762000983816200082d565b6200098e8462000842565b810160208510156200099e578190505b620009b6620009ad8562000842565b83018262000947565b50505b505050565b600082821c905092915050565b6000620009de60001984600802620009be565b1980831691505092915050565b6000620009f98383620009cb565b9150826002028217905092915050565b62000a14826200078f565b67ffffffffffffffff81111562000a305762000a2f6200079a565b5b62000a3c8254620007f8565b62000a498282856200096e565b600060209050601f83116001811462000a81576000841562000a6c578287015190505b62000a788582620009eb565b86555062000ae8565b601f19841662000a91866200082d565b60005b8281101562000abb5784890151825560018201915060208501945060208101905062000a94565b8683101562000adb578489015162000ad7601f891682620009cb565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b228262000af5565b9050919050565b62000b348162000b15565b811462000b4057600080fd5b50565b60008151905062000b548162000b29565b92915050565b60006020828403121562000b735762000b7262000af0565b5b600062000b838482850162000b43565b91505092915050565b62000b978162000b15565b82525050565b600060408201905062000bb4600083018562000b8c565b62000bc3602083018462000b8c565b9392505050565b62000bd581620008b5565b82525050565b600060208201905062000bf2600083018462000bca565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c3482620008b5565b915062000c4183620008b5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000c795762000c7862000bf8565b5b828201905092915050565b600082825260208201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062000ccd601b8362000c84565b915062000cda8262000c95565b602082019050919050565b6000602082019050818103600083015262000d008162000cbe565b9050919050565b60805160a05161431a62000d736000396000818161106401528181612152015281816123da0152818161243101528181612492015261250a015260008181610af501528181612d2401528181612e0501528181612e2c015281816130490152613070015261431a6000f3fe6080604052600436106102345760003560e01c806370a082311161012e578063c49b9a80116100ab578063e0f07e3a1161006f578063e0f07e3a1461083c578063e745b25414610867578063ea2f0b3714610892578063f2fde38b146108bb578063fa716d13146108e45761023b565b8063c49b9a8014610759578063c57a6c4414610782578063d12a7688146107ab578063dd62ed3e146107d6578063e083e922146108135761023b565b8063906e9dd0116100f2578063906e9dd01461066057806395d89b4114610689578063a457c2d7146106b4578063a9059cbb146106f1578063b2bdfa7b1461072e5761023b565b806370a082311461058b578063715018a6146105c8578063889b408c146105df5780638c0b5e221461060a5780638da5cb5b146106355761023b565b806325519cf2116101bc57806349bd5a5e1161018057806349bd5a5e146104b65780634a74bb02146104e15780635eb043471461050c57806366b77e8a146105355780636ed705f8146105605761023b565b806325519cf2146103d1578063313ce567146103fa57806333759dfb146104255780633950935114610450578063437823ec1461048d5761023b565b80630b4ae420116102035780630b4ae420146102fe5780631694505e1461031557806318160ddd146103405780631d865c301461036b57806323b872dd146103945761023b565b8063043a28ee1461024057806306e8781a1461026b57806306fdde0314610296578063095ea7b3146102c15761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b5061025561090f565b604051610262919061313d565b60405180910390f35b34801561027757600080fd5b50610280610915565b60405161028d919061313d565b60405180910390f35b3480156102a257600080fd5b506102ab61091b565b6040516102b891906131f1565b60405180910390f35b3480156102cd57600080fd5b506102e860048036038101906102e391906132a2565b6109ad565b6040516102f591906132fd565b60405180910390f35b34801561030a57600080fd5b506103136109cb565b005b34801561032157600080fd5b5061032a610af3565b6040516103379190613377565b60405180910390f35b34801561034c57600080fd5b50610355610b17565b604051610362919061313d565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190613392565b610b21565b005b3480156103a057600080fd5b506103bb60048036038101906103b691906133e5565b610c75565b6040516103c891906132fd565b60405180910390f35b3480156103dd57600080fd5b506103f860048036038101906103f39190613392565b610d4e565b005b34801561040657600080fd5b5061040f610ea2565b60405161041c9190613454565b60405180910390f35b34801561043157600080fd5b5061043a610eb9565b604051610447919061313d565b60405180910390f35b34801561045c57600080fd5b50610477600480360381019061047291906132a2565b610ebf565b60405161048491906132fd565b60405180910390f35b34801561049957600080fd5b506104b460048036038101906104af919061346f565b610f72565b005b3480156104c257600080fd5b506104cb611062565b6040516104d891906134ab565b60405180910390f35b3480156104ed57600080fd5b506104f6611086565b60405161050391906132fd565b60405180910390f35b34801561051857600080fd5b50610533600480360381019061052e91906134c6565b611099565b005b34801561054157600080fd5b5061054a611138565b604051610557919061313d565b60405180910390f35b34801561056c57600080fd5b5061057561113e565b604051610582919061313d565b60405180910390f35b34801561059757600080fd5b506105b260048036038101906105ad919061346f565b611144565b6040516105bf919061313d565b60405180910390f35b3480156105d457600080fd5b506105dd61118d565b005b3480156105eb57600080fd5b506105f46112e0565b604051610601919061313d565b60405180910390f35b34801561061657600080fd5b5061061f6112e6565b60405161062c919061313d565b60405180910390f35b34801561064157600080fd5b5061064a6112ec565b60405161065791906134ab565b60405180910390f35b34801561066c57600080fd5b5061068760048036038101906106829190613531565b611315565b005b34801561069557600080fd5b5061069e6113ee565b6040516106ab91906131f1565b60405180910390f35b3480156106c057600080fd5b506106db60048036038101906106d691906132a2565b611480565b6040516106e891906132fd565b60405180910390f35b3480156106fd57600080fd5b50610718600480360381019061071391906132a2565b61154d565b60405161072591906132fd565b60405180910390f35b34801561073a57600080fd5b5061074361156b565b60405161075091906134ab565b60405180910390f35b34801561076557600080fd5b50610780600480360381019061077b919061358a565b611591565b005b34801561078e57600080fd5b506107a960048036038101906107a491906134c6565b61167a565b005b3480156107b757600080fd5b506107c0611719565b6040516107cd919061313d565b60405180910390f35b3480156107e257600080fd5b506107fd60048036038101906107f891906135b7565b61171f565b60405161080a919061313d565b60405180910390f35b34801561081f57600080fd5b5061083a6004803603810190610835919061346f565b6117a6565b005b34801561084857600080fd5b50610851611a67565b60405161085e9190613606565b60405180910390f35b34801561087357600080fd5b5061087c611a8d565b604051610889919061313d565b60405180910390f35b34801561089e57600080fd5b506108b960048036038101906108b4919061346f565b611a93565b005b3480156108c757600080fd5b506108e260048036038101906108dd919061346f565b611b83565b005b3480156108f057600080fd5b506108f9611d44565b604051610906919061313d565b60405180910390f35b600f5481565b600c5481565b60606001805461092a90613650565b80601f016020809104026020016040519081016040528092919081815260200182805461095690613650565b80156109a35780601f10610978576101008083540402835291602001916109a3565b820191906000526020600020905b81548152906001019060200180831161098657829003601f168201915b5050505050905090565b60006109c16109ba611da8565b8484611db0565b6001905092915050565b6109d3611da8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a57906136cd565b60405180910390fd5b60004711610aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9a90613739565b60405180910390fd5b610aab6112ec565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610af0573d6000803e3d6000fd5b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600754905090565b610b29611da8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bad906136cd565b60405180910390fd5b806010819055508260118190555081601281905550610bf6601154610be8601054601254611d4a90919063ffffffff16565b611d4a90919063ffffffff16565b6013819055506000610c29601254610c1b601154601054611d4a90919063ffffffff16565b611d4a90919063ffffffff16565b9050600f811115610c6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c66906137a5565b60405180910390fd5b50505050565b6000610c82848484611f79565b610d4384610c8e611da8565b610d3e8560405180606001604052806028815260200161429860289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cf4611da8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b5d9092919063ffffffff16565b611db0565b600190509392505050565b610d56611da8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dda906136cd565b60405180910390fd5b80600c8190555082600d8190555081600e81905550610e23600d54610e15600c54600e54611d4a90919063ffffffff16565b611d4a90919063ffffffff16565b600f819055506000610e56600e54610e48600d54600c54611d4a90919063ffffffff16565b611d4a90919063ffffffff16565b9050600f811115610e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9390613811565b60405180910390fd5b50505050565b6000600360009054906101000a900460ff16905090565b60135481565b6000610f68610ecc611da8565b84610f638560056000610edd611da8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4a90919063ffffffff16565b611db0565b6001905092915050565b610f7a611da8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffe906136cd565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601460159054906101000a900460ff1681565b6110a1611da8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461112e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611125906136cd565b60405180910390fd5b8060168190555050565b600d5481565b60115481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611195611da8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611222576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611219906136cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60125481565b60165481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61131d611da8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a1906136cd565b60405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060600280546113fd90613650565b80601f016020809104026020016040519081016040528092919081815260200182805461142990613650565b80156114765780601f1061144b57610100808354040283529160200191611476565b820191906000526020600020905b81548152906001019060200180831161145957829003601f168201915b5050505050905090565b600061154361148d611da8565b8461153e856040518060600160405280602581526020016142c060259139600560006114b7611da8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b5d9092919063ffffffff16565b611db0565b6001905092915050565b600061156161155a611da8565b8484611f79565b6001905092915050565b601760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611599611da8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161d906136cd565b60405180910390fd5b80601460156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161166f91906132fd565b60405180910390a150565b611682611da8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461170f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611706906136cd565b60405180910390fd5b8060158190555050565b60155481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6117ae611da8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461183b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611832906136cd565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a0906138a3565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016118e491906134ab565b602060405180830381865afa158015611901573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192591906138d8565b11611965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195c90613951565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6119896112ec565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016119c291906134ab565b602060405180830381865afa1580156119df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0391906138d8565b6040518363ffffffff1660e01b8152600401611a20929190613971565b6020604051808303816000875af1158015611a3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6391906139af565b5050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b611a9b611da8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1f906136cd565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611b8b611da8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0f906136cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7e90613a4e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e5481565b6000808284611d599190613a9d565b905083811015611d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9590613b3f565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1690613bd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8590613c63565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f6c919061313d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdf90613cf5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e90613d87565b60405180910390fd5b61205f6112ec565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120cd575061209d6112ec565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561211857601654811115612117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210e90613df3565b60405180910390fd5b5b600061212330611144565b9050600060155482101590508080156121495750601760009054906101000a900460ff16155b80156121a157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156121b95750601460159054906101000a900460ff165b15612318576001601760006101000a81548160ff02191690831515021790555060006122046013546121f660105486612bc190919063ffffffff16565b612c3b90919063ffffffff16565b9050600047905061221482612c85565b60006122298247612ec290919063ffffffff16565b9050600061225660105461224860105485612bc190919063ffffffff16565b612c3b90919063ffffffff16565b9050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156122c0573d6000803e3d6000fd5b5060006122ec6013546122de6012548a612bc190919063ffffffff16565b612c3b90919063ffffffff16565b90506122f781612f0c565b6000601760006101000a81548160ff02191690831515021790555050505050505b6000601760009054906101000a900460ff16159050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123ce5750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123d857600090505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561248057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561248a57600090505b8015612581577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361250857600c54600881905550600e54600a81905550600d54600981905550600f54600b819055505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361258057601054600881905550601254600a81905550601154600981905550601354600b819055505b5b80156129ab5760006125b160646125a3600b5488612bc190919063ffffffff16565b612c3b90919063ffffffff16565b905060006125de600b546125d060095485612bc190919063ffffffff16565b612c3b90919063ffffffff16565b905080826125ec9190613e13565b915060006126038388612ec290919063ffffffff16565b90506126718760405180606001604052806026815260200161427260269139600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b5d9092919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061270681600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061279b83600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4a90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061283082600460008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4a90919063ffffffff16565b600460008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128d0919061313d565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612935919061313d565b60405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161299b919061313d565b60405180910390a3505050612b55565b612a178460405180606001604052806026815260200161427260269139600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b5d9092919063ffffffff16565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612aac84600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4a90919063ffffffff16565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612b4c919061313d565b60405180910390a35b505050505050565b6000838311158290612ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9c91906131f1565b60405180910390fd5b5060008385612bb49190613e13565b9050809150509392505050565b6000808303612bd35760009050612c35565b60008284612be19190613e47565b9050828482612bf09190613ed0565b14612c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2790613f73565b60405180910390fd5b809150505b92915050565b6000612c7d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612fe0565b905092915050565b6000600267ffffffffffffffff811115612ca257612ca1613f93565b5b604051908082528060200260200182016040528015612cd05781602001602082028036833780820191505090505b5090503081600081518110612ce857612ce7613fc2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db19190614006565b81600181518110612dc557612dc4613fc2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612e2a307f000000000000000000000000000000000000000000000000000000000000000084611db0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612e8c95949392919061412c565b600060405180830381600087803b158015612ea657600080fd5b505af1158015612eba573d6000803e3d6000fd5b505050505050565b6000612f0483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612b5d565b905092915050565b60016014806101000a81548160ff0219169083151502179055506000612f3c600283612c3b90919063ffffffff16565b90506000612f538284612ec290919063ffffffff16565b90506000479050612f6383612c85565b6000612f788247612ec290919063ffffffff16565b9050612f848382613043565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051612fb793929190614186565b60405180910390a15050505060006014806101000a81548160ff02191690831515021790555050565b60008083118290613027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161301e91906131f1565b60405180910390fd5b50600083856130369190613ed0565b9050809150509392505050565b61306e307f000000000000000000000000000000000000000000000000000000000000000084611db0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806130b86112ec565b426040518863ffffffff1660e01b81526004016130da969594939291906141bd565b60606040518083038185885af11580156130f8573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061311d919061421e565b5050505050565b6000819050919050565b61313781613124565b82525050565b6000602082019050613152600083018461312e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613192578082015181840152602081019050613177565b838111156131a1576000848401525b50505050565b6000601f19601f8301169050919050565b60006131c382613158565b6131cd8185613163565b93506131dd818560208601613174565b6131e6816131a7565b840191505092915050565b6000602082019050818103600083015261320b81846131b8565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061324382613218565b9050919050565b61325381613238565b811461325e57600080fd5b50565b6000813590506132708161324a565b92915050565b61327f81613124565b811461328a57600080fd5b50565b60008135905061329c81613276565b92915050565b600080604083850312156132b9576132b8613213565b5b60006132c785828601613261565b92505060206132d88582860161328d565b9150509250929050565b60008115159050919050565b6132f7816132e2565b82525050565b600060208201905061331260008301846132ee565b92915050565b6000819050919050565b600061333d61333861333384613218565b613318565b613218565b9050919050565b600061334f82613322565b9050919050565b600061336182613344565b9050919050565b61337181613356565b82525050565b600060208201905061338c6000830184613368565b92915050565b6000806000606084860312156133ab576133aa613213565b5b60006133b98682870161328d565b93505060206133ca8682870161328d565b92505060406133db8682870161328d565b9150509250925092565b6000806000606084860312156133fe576133fd613213565b5b600061340c86828701613261565b935050602061341d86828701613261565b925050604061342e8682870161328d565b9150509250925092565b600060ff82169050919050565b61344e81613438565b82525050565b60006020820190506134696000830184613445565b92915050565b60006020828403121561348557613484613213565b5b600061349384828501613261565b91505092915050565b6134a581613238565b82525050565b60006020820190506134c0600083018461349c565b92915050565b6000602082840312156134dc576134db613213565b5b60006134ea8482850161328d565b91505092915050565b60006134fe82613218565b9050919050565b61350e816134f3565b811461351957600080fd5b50565b60008135905061352b81613505565b92915050565b60006020828403121561354757613546613213565b5b60006135558482850161351c565b91505092915050565b613567816132e2565b811461357257600080fd5b50565b6000813590506135848161355e565b92915050565b6000602082840312156135a05761359f613213565b5b60006135ae84828501613575565b91505092915050565b600080604083850312156135ce576135cd613213565b5b60006135dc85828601613261565b92505060206135ed85828601613261565b9150509250929050565b613600816134f3565b82525050565b600060208201905061361b60008301846135f7565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061366857607f821691505b60208210810361367b5761367a613621565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006136b7602083613163565b91506136c282613681565b602082019050919050565b600060208201905081810360008301526136e6816136aa565b9050919050565b7f43616e2774207769746864726177206e65676174697665206f72207a65726f00600082015250565b6000613723601f83613163565b915061372e826136ed565b602082019050919050565b6000602082019050818103600083015261375281613716565b9050919050565b7f53656c6c204665652073686f756c6420626520313525206f72206c6573730000600082015250565b600061378f601e83613163565b915061379a82613759565b602082019050919050565b600060208201905081810360008301526137be81613782565b9050919050565b7f427579204665652073686f756c6420626520313525206f72206c657373000000600082015250565b60006137fb601d83613163565b9150613806826137c5565b602082019050919050565b6000602082019050818103600083015261382a816137ee565b9050919050565b7f43616e277420776974686472617720746f6b656e732064657374696e6564206660008201527f6f72206c69717569646974790000000000000000000000000000000000000000602082015250565b600061388d602c83613163565b915061389882613831565b604082019050919050565b600060208201905081810360008301526138bc81613880565b9050919050565b6000815190506138d281613276565b92915050565b6000602082840312156138ee576138ed613213565b5b60006138fc848285016138c3565b91505092915050565b7f43616e2774207769746864726177203000000000000000000000000000000000600082015250565b600061393b601083613163565b915061394682613905565b602082019050919050565b6000602082019050818103600083015261396a8161392e565b9050919050565b6000604082019050613986600083018561349c565b613993602083018461312e565b9392505050565b6000815190506139a98161355e565b92915050565b6000602082840312156139c5576139c4613213565b5b60006139d38482850161399a565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a38602683613163565b9150613a43826139dc565b604082019050919050565b60006020820190508181036000830152613a6781613a2b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613aa882613124565b9150613ab383613124565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613ae857613ae7613a6e565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613b29601b83613163565b9150613b3482613af3565b602082019050919050565b60006020820190508181036000830152613b5881613b1c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613bbb602483613163565b9150613bc682613b5f565b604082019050919050565b60006020820190508181036000830152613bea81613bae565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c4d602283613163565b9150613c5882613bf1565b604082019050919050565b60006020820190508181036000830152613c7c81613c40565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613cdf602583613163565b9150613cea82613c83565b604082019050919050565b60006020820190508181036000830152613d0e81613cd2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613d71602383613163565b9150613d7c82613d15565b604082019050919050565b60006020820190508181036000830152613da081613d64565b9050919050565b7f5472616e73616374696f6e2073697a65206c696d697420726561636865640000600082015250565b6000613ddd601e83613163565b9150613de882613da7565b602082019050919050565b60006020820190508181036000830152613e0c81613dd0565b9050919050565b6000613e1e82613124565b9150613e2983613124565b925082821015613e3c57613e3b613a6e565b5b828203905092915050565b6000613e5282613124565b9150613e5d83613124565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e9657613e95613a6e565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613edb82613124565b9150613ee683613124565b925082613ef657613ef5613ea1565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f5d602183613163565b9150613f6882613f01565b604082019050919050565b60006020820190508181036000830152613f8c81613f50565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506140008161324a565b92915050565b60006020828403121561401c5761401b613213565b5b600061402a84828501613ff1565b91505092915050565b6000819050919050565b600061405861405361404e84614033565b613318565b613124565b9050919050565b6140688161403d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6140a381613238565b82525050565b60006140b5838361409a565b60208301905092915050565b6000602082019050919050565b60006140d98261406e565b6140e38185614079565b93506140ee8361408a565b8060005b8381101561411f57815161410688826140a9565b9750614111836140c1565b9250506001810190506140f2565b5085935050505092915050565b600060a082019050614141600083018861312e565b61414e602083018761405f565b818103604083015261416081866140ce565b905061416f606083018561349c565b61417c608083018461312e565b9695505050505050565b600060608201905061419b600083018661312e565b6141a8602083018561312e565b6141b5604083018461312e565b949350505050565b600060c0820190506141d2600083018961349c565b6141df602083018861312e565b6141ec604083018761405f565b6141f9606083018661405f565b614206608083018561349c565b61421360a083018461312e565b979650505050505050565b60008060006060848603121561423757614236613213565b5b6000614245868287016138c3565b9350506020614256868287016138c3565b9250506040614267868287016138c3565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220af3741af9576efe2c46236466ee145ebcae9bac92b8cfa5f62aede40c932652964736f6c634300080f0033
Deployed Bytecode
0x6080604052600436106102345760003560e01c806370a082311161012e578063c49b9a80116100ab578063e0f07e3a1161006f578063e0f07e3a1461083c578063e745b25414610867578063ea2f0b3714610892578063f2fde38b146108bb578063fa716d13146108e45761023b565b8063c49b9a8014610759578063c57a6c4414610782578063d12a7688146107ab578063dd62ed3e146107d6578063e083e922146108135761023b565b8063906e9dd0116100f2578063906e9dd01461066057806395d89b4114610689578063a457c2d7146106b4578063a9059cbb146106f1578063b2bdfa7b1461072e5761023b565b806370a082311461058b578063715018a6146105c8578063889b408c146105df5780638c0b5e221461060a5780638da5cb5b146106355761023b565b806325519cf2116101bc57806349bd5a5e1161018057806349bd5a5e146104b65780634a74bb02146104e15780635eb043471461050c57806366b77e8a146105355780636ed705f8146105605761023b565b806325519cf2146103d1578063313ce567146103fa57806333759dfb146104255780633950935114610450578063437823ec1461048d5761023b565b80630b4ae420116102035780630b4ae420146102fe5780631694505e1461031557806318160ddd146103405780631d865c301461036b57806323b872dd146103945761023b565b8063043a28ee1461024057806306e8781a1461026b57806306fdde0314610296578063095ea7b3146102c15761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b5061025561090f565b604051610262919061313d565b60405180910390f35b34801561027757600080fd5b50610280610915565b60405161028d919061313d565b60405180910390f35b3480156102a257600080fd5b506102ab61091b565b6040516102b891906131f1565b60405180910390f35b3480156102cd57600080fd5b506102e860048036038101906102e391906132a2565b6109ad565b6040516102f591906132fd565b60405180910390f35b34801561030a57600080fd5b506103136109cb565b005b34801561032157600080fd5b5061032a610af3565b6040516103379190613377565b60405180910390f35b34801561034c57600080fd5b50610355610b17565b604051610362919061313d565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190613392565b610b21565b005b3480156103a057600080fd5b506103bb60048036038101906103b691906133e5565b610c75565b6040516103c891906132fd565b60405180910390f35b3480156103dd57600080fd5b506103f860048036038101906103f39190613392565b610d4e565b005b34801561040657600080fd5b5061040f610ea2565b60405161041c9190613454565b60405180910390f35b34801561043157600080fd5b5061043a610eb9565b604051610447919061313d565b60405180910390f35b34801561045c57600080fd5b50610477600480360381019061047291906132a2565b610ebf565b60405161048491906132fd565b60405180910390f35b34801561049957600080fd5b506104b460048036038101906104af919061346f565b610f72565b005b3480156104c257600080fd5b506104cb611062565b6040516104d891906134ab565b60405180910390f35b3480156104ed57600080fd5b506104f6611086565b60405161050391906132fd565b60405180910390f35b34801561051857600080fd5b50610533600480360381019061052e91906134c6565b611099565b005b34801561054157600080fd5b5061054a611138565b604051610557919061313d565b60405180910390f35b34801561056c57600080fd5b5061057561113e565b604051610582919061313d565b60405180910390f35b34801561059757600080fd5b506105b260048036038101906105ad919061346f565b611144565b6040516105bf919061313d565b60405180910390f35b3480156105d457600080fd5b506105dd61118d565b005b3480156105eb57600080fd5b506105f46112e0565b604051610601919061313d565b60405180910390f35b34801561061657600080fd5b5061061f6112e6565b60405161062c919061313d565b60405180910390f35b34801561064157600080fd5b5061064a6112ec565b60405161065791906134ab565b60405180910390f35b34801561066c57600080fd5b5061068760048036038101906106829190613531565b611315565b005b34801561069557600080fd5b5061069e6113ee565b6040516106ab91906131f1565b60405180910390f35b3480156106c057600080fd5b506106db60048036038101906106d691906132a2565b611480565b6040516106e891906132fd565b60405180910390f35b3480156106fd57600080fd5b50610718600480360381019061071391906132a2565b61154d565b60405161072591906132fd565b60405180910390f35b34801561073a57600080fd5b5061074361156b565b60405161075091906134ab565b60405180910390f35b34801561076557600080fd5b50610780600480360381019061077b919061358a565b611591565b005b34801561078e57600080fd5b506107a960048036038101906107a491906134c6565b61167a565b005b3480156107b757600080fd5b506107c0611719565b6040516107cd919061313d565b60405180910390f35b3480156107e257600080fd5b506107fd60048036038101906107f891906135b7565b61171f565b60405161080a919061313d565b60405180910390f35b34801561081f57600080fd5b5061083a6004803603810190610835919061346f565b6117a6565b005b34801561084857600080fd5b50610851611a67565b60405161085e9190613606565b60405180910390f35b34801561087357600080fd5b5061087c611a8d565b604051610889919061313d565b60405180910390f35b34801561089e57600080fd5b506108b960048036038101906108b4919061346f565b611a93565b005b3480156108c757600080fd5b506108e260048036038101906108dd919061346f565b611b83565b005b3480156108f057600080fd5b506108f9611d44565b604051610906919061313d565b60405180910390f35b600f5481565b600c5481565b60606001805461092a90613650565b80601f016020809104026020016040519081016040528092919081815260200182805461095690613650565b80156109a35780601f10610978576101008083540402835291602001916109a3565b820191906000526020600020905b81548152906001019060200180831161098657829003601f168201915b5050505050905090565b60006109c16109ba611da8565b8484611db0565b6001905092915050565b6109d3611da8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a57906136cd565b60405180910390fd5b60004711610aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9a90613739565b60405180910390fd5b610aab6112ec565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610af0573d6000803e3d6000fd5b50565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600754905090565b610b29611da8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bad906136cd565b60405180910390fd5b806010819055508260118190555081601281905550610bf6601154610be8601054601254611d4a90919063ffffffff16565b611d4a90919063ffffffff16565b6013819055506000610c29601254610c1b601154601054611d4a90919063ffffffff16565b611d4a90919063ffffffff16565b9050600f811115610c6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c66906137a5565b60405180910390fd5b50505050565b6000610c82848484611f79565b610d4384610c8e611da8565b610d3e8560405180606001604052806028815260200161429860289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cf4611da8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b5d9092919063ffffffff16565b611db0565b600190509392505050565b610d56611da8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dda906136cd565b60405180910390fd5b80600c8190555082600d8190555081600e81905550610e23600d54610e15600c54600e54611d4a90919063ffffffff16565b611d4a90919063ffffffff16565b600f819055506000610e56600e54610e48600d54600c54611d4a90919063ffffffff16565b611d4a90919063ffffffff16565b9050600f811115610e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9390613811565b60405180910390fd5b50505050565b6000600360009054906101000a900460ff16905090565b60135481565b6000610f68610ecc611da8565b84610f638560056000610edd611da8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4a90919063ffffffff16565b611db0565b6001905092915050565b610f7a611da8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611007576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffe906136cd565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b7f00000000000000000000000014a74d85c1883c2b920d9e0ce68c70ad095e753181565b601460159054906101000a900460ff1681565b6110a1611da8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461112e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611125906136cd565b60405180910390fd5b8060168190555050565b600d5481565b60115481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611195611da8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611222576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611219906136cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60125481565b60165481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61131d611da8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a1906136cd565b60405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6060600280546113fd90613650565b80601f016020809104026020016040519081016040528092919081815260200182805461142990613650565b80156114765780601f1061144b57610100808354040283529160200191611476565b820191906000526020600020905b81548152906001019060200180831161145957829003601f168201915b5050505050905090565b600061154361148d611da8565b8461153e856040518060600160405280602581526020016142c060259139600560006114b7611da8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b5d9092919063ffffffff16565b611db0565b6001905092915050565b600061156161155a611da8565b8484611f79565b6001905092915050565b601760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611599611da8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161d906136cd565b60405180910390fd5b80601460156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161166f91906132fd565b60405180910390a150565b611682611da8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461170f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611706906136cd565b60405180910390fd5b8060158190555050565b60155481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6117ae611da8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461183b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611832906136cd565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036118a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a0906138a3565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016118e491906134ab565b602060405180830381865afa158015611901573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061192591906138d8565b11611965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195c90613951565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6119896112ec565b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016119c291906134ab565b602060405180830381865afa1580156119df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0391906138d8565b6040518363ffffffff1660e01b8152600401611a20929190613971565b6020604051808303816000875af1158015611a3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6391906139af565b5050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b611a9b611da8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1f906136cd565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611b8b611da8565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0f906136cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7e90613a4e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e5481565b6000808284611d599190613a9d565b905083811015611d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9590613b3f565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1690613bd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8590613c63565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611f6c919061313d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdf90613cf5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204e90613d87565b60405180910390fd5b61205f6112ec565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156120cd575061209d6112ec565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561211857601654811115612117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210e90613df3565b60405180910390fd5b5b600061212330611144565b9050600060155482101590508080156121495750601760009054906101000a900460ff16155b80156121a157507f00000000000000000000000014a74d85c1883c2b920d9e0ce68c70ad095e753173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156121b95750601460159054906101000a900460ff165b15612318576001601760006101000a81548160ff02191690831515021790555060006122046013546121f660105486612bc190919063ffffffff16565b612c3b90919063ffffffff16565b9050600047905061221482612c85565b60006122298247612ec290919063ffffffff16565b9050600061225660105461224860105485612bc190919063ffffffff16565b612c3b90919063ffffffff16565b9050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156122c0573d6000803e3d6000fd5b5060006122ec6013546122de6012548a612bc190919063ffffffff16565b612c3b90919063ffffffff16565b90506122f781612f0c565b6000601760006101000a81548160ff02191690831515021790555050505050505b6000601760009054906101000a900460ff16159050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123ce5750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123d857600090505b7f00000000000000000000000014a74d85c1883c2b920d9e0ce68c70ad095e753173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561248057507f00000000000000000000000014a74d85c1883c2b920d9e0ce68c70ad095e753173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561248a57600090505b8015612581577f00000000000000000000000014a74d85c1883c2b920d9e0ce68c70ad095e753173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361250857600c54600881905550600e54600a81905550600d54600981905550600f54600b819055505b7f00000000000000000000000014a74d85c1883c2b920d9e0ce68c70ad095e753173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361258057601054600881905550601254600a81905550601154600981905550601354600b819055505b5b80156129ab5760006125b160646125a3600b5488612bc190919063ffffffff16565b612c3b90919063ffffffff16565b905060006125de600b546125d060095485612bc190919063ffffffff16565b612c3b90919063ffffffff16565b905080826125ec9190613e13565b915060006126038388612ec290919063ffffffff16565b90506126718760405180606001604052806026815260200161427260269139600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b5d9092919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061270681600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4a90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061279b83600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4a90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061283082600460008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4a90919063ffffffff16565b600460008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128d0919061313d565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612935919061313d565b60405180910390a3600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161299b919061313d565b60405180910390a3505050612b55565b612a178460405180606001604052806026815260200161427260269139600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b5d9092919063ffffffff16565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612aac84600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d4a90919063ffffffff16565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612b4c919061313d565b60405180910390a35b505050505050565b6000838311158290612ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9c91906131f1565b60405180910390fd5b5060008385612bb49190613e13565b9050809150509392505050565b6000808303612bd35760009050612c35565b60008284612be19190613e47565b9050828482612bf09190613ed0565b14612c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2790613f73565b60405180910390fd5b809150505b92915050565b6000612c7d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612fe0565b905092915050565b6000600267ffffffffffffffff811115612ca257612ca1613f93565b5b604051908082528060200260200182016040528015612cd05781602001602082028036833780820191505090505b5090503081600081518110612ce857612ce7613fc2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db19190614006565b81600181518110612dc557612dc4613fc2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612e2a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611db0565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612e8c95949392919061412c565b600060405180830381600087803b158015612ea657600080fd5b505af1158015612eba573d6000803e3d6000fd5b505050505050565b6000612f0483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612b5d565b905092915050565b60016014806101000a81548160ff0219169083151502179055506000612f3c600283612c3b90919063ffffffff16565b90506000612f538284612ec290919063ffffffff16565b90506000479050612f6383612c85565b6000612f788247612ec290919063ffffffff16565b9050612f848382613043565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561848285604051612fb793929190614186565b60405180910390a15050505060006014806101000a81548160ff02191690831515021790555050565b60008083118290613027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161301e91906131f1565b60405180910390fd5b50600083856130369190613ed0565b9050809150509392505050565b61306e307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611db0565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806130b86112ec565b426040518863ffffffff1660e01b81526004016130da969594939291906141bd565b60606040518083038185885af11580156130f8573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061311d919061421e565b5050505050565b6000819050919050565b61313781613124565b82525050565b6000602082019050613152600083018461312e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613192578082015181840152602081019050613177565b838111156131a1576000848401525b50505050565b6000601f19601f8301169050919050565b60006131c382613158565b6131cd8185613163565b93506131dd818560208601613174565b6131e6816131a7565b840191505092915050565b6000602082019050818103600083015261320b81846131b8565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061324382613218565b9050919050565b61325381613238565b811461325e57600080fd5b50565b6000813590506132708161324a565b92915050565b61327f81613124565b811461328a57600080fd5b50565b60008135905061329c81613276565b92915050565b600080604083850312156132b9576132b8613213565b5b60006132c785828601613261565b92505060206132d88582860161328d565b9150509250929050565b60008115159050919050565b6132f7816132e2565b82525050565b600060208201905061331260008301846132ee565b92915050565b6000819050919050565b600061333d61333861333384613218565b613318565b613218565b9050919050565b600061334f82613322565b9050919050565b600061336182613344565b9050919050565b61337181613356565b82525050565b600060208201905061338c6000830184613368565b92915050565b6000806000606084860312156133ab576133aa613213565b5b60006133b98682870161328d565b93505060206133ca8682870161328d565b92505060406133db8682870161328d565b9150509250925092565b6000806000606084860312156133fe576133fd613213565b5b600061340c86828701613261565b935050602061341d86828701613261565b925050604061342e8682870161328d565b9150509250925092565b600060ff82169050919050565b61344e81613438565b82525050565b60006020820190506134696000830184613445565b92915050565b60006020828403121561348557613484613213565b5b600061349384828501613261565b91505092915050565b6134a581613238565b82525050565b60006020820190506134c0600083018461349c565b92915050565b6000602082840312156134dc576134db613213565b5b60006134ea8482850161328d565b91505092915050565b60006134fe82613218565b9050919050565b61350e816134f3565b811461351957600080fd5b50565b60008135905061352b81613505565b92915050565b60006020828403121561354757613546613213565b5b60006135558482850161351c565b91505092915050565b613567816132e2565b811461357257600080fd5b50565b6000813590506135848161355e565b92915050565b6000602082840312156135a05761359f613213565b5b60006135ae84828501613575565b91505092915050565b600080604083850312156135ce576135cd613213565b5b60006135dc85828601613261565b92505060206135ed85828601613261565b9150509250929050565b613600816134f3565b82525050565b600060208201905061361b60008301846135f7565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061366857607f821691505b60208210810361367b5761367a613621565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006136b7602083613163565b91506136c282613681565b602082019050919050565b600060208201905081810360008301526136e6816136aa565b9050919050565b7f43616e2774207769746864726177206e65676174697665206f72207a65726f00600082015250565b6000613723601f83613163565b915061372e826136ed565b602082019050919050565b6000602082019050818103600083015261375281613716565b9050919050565b7f53656c6c204665652073686f756c6420626520313525206f72206c6573730000600082015250565b600061378f601e83613163565b915061379a82613759565b602082019050919050565b600060208201905081810360008301526137be81613782565b9050919050565b7f427579204665652073686f756c6420626520313525206f72206c657373000000600082015250565b60006137fb601d83613163565b9150613806826137c5565b602082019050919050565b6000602082019050818103600083015261382a816137ee565b9050919050565b7f43616e277420776974686472617720746f6b656e732064657374696e6564206660008201527f6f72206c69717569646974790000000000000000000000000000000000000000602082015250565b600061388d602c83613163565b915061389882613831565b604082019050919050565b600060208201905081810360008301526138bc81613880565b9050919050565b6000815190506138d281613276565b92915050565b6000602082840312156138ee576138ed613213565b5b60006138fc848285016138c3565b91505092915050565b7f43616e2774207769746864726177203000000000000000000000000000000000600082015250565b600061393b601083613163565b915061394682613905565b602082019050919050565b6000602082019050818103600083015261396a8161392e565b9050919050565b6000604082019050613986600083018561349c565b613993602083018461312e565b9392505050565b6000815190506139a98161355e565b92915050565b6000602082840312156139c5576139c4613213565b5b60006139d38482850161399a565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613a38602683613163565b9150613a43826139dc565b604082019050919050565b60006020820190508181036000830152613a6781613a2b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613aa882613124565b9150613ab383613124565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613ae857613ae7613a6e565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613b29601b83613163565b9150613b3482613af3565b602082019050919050565b60006020820190508181036000830152613b5881613b1c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613bbb602483613163565b9150613bc682613b5f565b604082019050919050565b60006020820190508181036000830152613bea81613bae565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c4d602283613163565b9150613c5882613bf1565b604082019050919050565b60006020820190508181036000830152613c7c81613c40565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613cdf602583613163565b9150613cea82613c83565b604082019050919050565b60006020820190508181036000830152613d0e81613cd2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613d71602383613163565b9150613d7c82613d15565b604082019050919050565b60006020820190508181036000830152613da081613d64565b9050919050565b7f5472616e73616374696f6e2073697a65206c696d697420726561636865640000600082015250565b6000613ddd601e83613163565b9150613de882613da7565b602082019050919050565b60006020820190508181036000830152613e0c81613dd0565b9050919050565b6000613e1e82613124565b9150613e2983613124565b925082821015613e3c57613e3b613a6e565b5b828203905092915050565b6000613e5282613124565b9150613e5d83613124565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e9657613e95613a6e565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613edb82613124565b9150613ee683613124565b925082613ef657613ef5613ea1565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f5d602183613163565b9150613f6882613f01565b604082019050919050565b60006020820190508181036000830152613f8c81613f50565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506140008161324a565b92915050565b60006020828403121561401c5761401b613213565b5b600061402a84828501613ff1565b91505092915050565b6000819050919050565b600061405861405361404e84614033565b613318565b613124565b9050919050565b6140688161403d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6140a381613238565b82525050565b60006140b5838361409a565b60208301905092915050565b6000602082019050919050565b60006140d98261406e565b6140e38185614079565b93506140ee8361408a565b8060005b8381101561411f57815161410688826140a9565b9750614111836140c1565b9250506001810190506140f2565b5085935050505092915050565b600060a082019050614141600083018861312e565b61414e602083018761405f565b818103604083015261416081866140ce565b905061416f606083018561349c565b61417c608083018461312e565b9695505050505050565b600060608201905061419b600083018661312e565b6141a8602083018561312e565b6141b5604083018461312e565b949350505050565b600060c0820190506141d2600083018961349c565b6141df602083018861312e565b6141ec604083018761405f565b6141f9606083018661405f565b614206608083018561349c565b61421360a083018461312e565b979650505050505050565b60008060006060848603121561423757614236613213565b5b6000614245868287016138c3565b9350506020614256868287016138c3565b9250506040614267868287016138c3565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220af3741af9576efe2c46236466ee145ebcae9bac92b8cfa5f62aede40c932652964736f6c634300080f0033
Deployed Bytecode Sourcemap
14107:13113:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14859:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14741:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4022:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17392:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26669:194;;;;;;;;;;;;;:::i;:::-;;14269:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16848:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23161:547;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17556:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23716:520;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4204:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15070:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17872:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18859:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14327:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15300:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19106:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14782:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14991:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16951:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3166:148;;;;;;;;;;;;;:::i;:::-;;15028:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15423:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2523:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18351:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4111:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18085:258;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17073:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15904:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18484:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18663:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15354:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17244:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26875:339;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15166:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14949:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18982:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3469:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14818:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14859:81;;;;:::o;14741:34::-;;;;:::o;4022:83::-;4059:13;4092:5;4085:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4022:83;:::o;17392:158::-;17464:4;17481:39;17490:12;:10;:12::i;:::-;17504:7;17513:6;17481:8;:39::i;:::-;17538:4;17531:11;;17392:158;;;;:::o;26669:194::-;2745:12;:10;:12::i;:::-;2735:22;;:6;;;;;;;;;;:22;;;2727:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26759:1:::1;26735:21;:25;26726:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;26815:7;:5;:7::i;:::-;26807:25;;:48;26833:21;26807:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;26669:194::o:0;14269:51::-;;;:::o;16848:97::-;16901:4;16925:12;;16918:19;;16848:97;:::o;23161:547::-;2745:12;:10;:12::i;:::-;2735:22;;:6;;;;;;;;;;:22;;;2727:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23315:19:::1;23296:16;:38;;;;23359:17;23345:11;:31;;;;23406:19;23387:16;:38;;;;23451:55;23494:11;;23451:38;23472:16;;23451;;:20;;:38;;;;:::i;:::-;:42;;:55;;;;:::i;:::-;23436:12;:70;;;;23517:24;23570:55;23608:16;;23570:33;23591:11;;23570:16;;:20;;:33;;;;:::i;:::-;:37;;:55;;;;:::i;:::-;23552:73;;23663:2;23644:15;:21;;23636:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23283:425;23161:547:::0;;;:::o;17556:310::-;17651:4;17668:36;17678:6;17686:9;17697:6;17668:9;:36::i;:::-;17715:121;17724:6;17732:12;:10;:12::i;:::-;17746:89;17784:6;17746:89;;;;;;;;;;;;;;;;;:11;:19;17758:6;17746:19;;;;;;;;;;;;;;;:33;17766:12;:10;:12::i;:::-;17746:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;17715:8;:121::i;:::-;17854:4;17847:11;;17556:310;;;;;:::o;23716:520::-;2745:12;:10;:12::i;:::-;2735:22;;:6;;;;;;;;;;:22;;;2727:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23862:18:::1;23844:15;:36;;;;23904:13;23891:10;:26;;;;23946:18;23928:15;:36;;;;23989:52;24030:10;;23989:36;24009:15;;23989;;:19;;:36;;;;:::i;:::-;:40;;:52;;;;:::i;:::-;23975:11;:66;;;;24052:23;24103:52;24139:15;;24103:31;24123:10;;24103:15;;:19;;:31;;;;:::i;:::-;:35;;:52;;;;:::i;:::-;24086:69;;24192:2;24174:14;:20;;24166:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;23831:405;23716:520:::0;;;:::o;4204:83::-;4245:5;4270:9;;;;;;;;;;;4263:16;;4204:83;:::o;15070:85::-;;;;:::o;17872:207::-;17949:4;17966:83;17975:12;:10;:12::i;:::-;17989:7;17998:50;18037:10;17998:11;:25;18010:12;:10;:12::i;:::-;17998:25;;;;;;;;;;;;;;;:34;18024:7;17998:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;17966:8;:83::i;:::-;18067:4;18060:11;;17872:207;;;;:::o;18859:111::-;2745:12;:10;:12::i;:::-;2735:22;;:6;;;;;;;;;;:22;;;2727:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18958:4:::1;18928:18;:27;18947:7;18928:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;18859:111:::0;:::o;14327:38::-;;;:::o;15300:40::-;;;;;;;;;;;;;:::o;19106:107::-;2745:12;:10;:12::i;:::-;2735:22;;:6;;;;;;;;;;:22;;;2727:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19198:7:::1;19184:11;:21;;;;19106:107:::0;:::o;14782:29::-;;;;:::o;14991:30::-;;;;:::o;16951:116::-;17017:4;17041:9;:18;17051:7;17041:18;;;;;;;;;;;;;;;;17034:25;;16951:116;;;:::o;3166:148::-;2745:12;:10;:12::i;:::-;2735:22;;:6;;;;;;;;;;:22;;;2727:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3273:1:::1;3236:40;;3257:6;::::0;::::1;;;;;;;;3236:40;;;;;;;;;;;;3304:1;3287:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3166:148::o:0;15028:35::-;;;;:::o;15423:50::-;;;;:::o;2523:79::-;2561:7;2588:6;;;;;;;;;;;2581:13;;2523:79;:::o;18351:121::-;2745:12;:10;:12::i;:::-;2735:22;;:6;;;;;;;;;;:22;;;2727:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18458:6:::1;18439:16;;:25;;;;;;;;;;;;;;;;;;18351:121:::0;:::o;4111:87::-;4150:13;4183:7;4176:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4111:87;:::o;18085:258::-;18167:4;18184:129;18193:12;:10;:12::i;:::-;18207:7;18216:96;18255:15;18216:96;;;;;;;;;;;;;;;;;:11;:25;18228:12;:10;:12::i;:::-;18216:25;;;;;;;;;;;;;;;:34;18242:7;18216:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;18184:8;:129::i;:::-;18331:4;18324:11;;18085:258;;;;:::o;17073:165::-;17149:4;17166:42;17176:12;:10;:12::i;:::-;17190:9;17201:6;17166:9;:42::i;:::-;17226:4;17219:11;;17073:165;;;;:::o;15904:21::-;;;;;;;;;;;;;:::o;18484:171::-;2745:12;:10;:12::i;:::-;2735:22;;:6;;;;;;;;;;:22;;;2727:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18585:8:::1;18561:21;;:32;;;;;;;;;;;;;;;;;;18609:38;18638:8;18609:38;;;;;;:::i;:::-;;;;;;;;18484:171:::0;:::o;18663:190::-;2745:12;:10;:12::i;:::-;2735:22;;:6;;;;;;;;;;:22;;;2727:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18815:30:::1;18783:29;:62;;;;18663:190:::0;:::o;15354:62::-;;;;:::o;17244:142::-;17326:4;17350:11;:19;17362:6;17350:19;;;;;;;;;;;;;;;:28;17370:7;17350:28;;;;;;;;;;;;;;;;17343:35;;17244:142;;;;:::o;26875:339::-;2745:12;:10;:12::i;:::-;2735:22;;:6;;;;;;;;;;:22;;;2727:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26977:4:::1;26957:25;;:8;:25;;::::0;26949:82:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;27094:1;27057:8;27050:26;;;27085:4;27050:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;27042:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;27136:8;27129:25;;;27155:7;:5;:7::i;:::-;27171:8;27164:26;;;27199:4;27164:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27129:77;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26875:339:::0;:::o;15166:93::-;;;;;;;;;;;;;:::o;14949:35::-;;;;:::o;18982:110::-;2745:12;:10;:12::i;:::-;2735:22;;:6;;;;;;;;;;:22;;;2727:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19079:5:::1;19049:18;:27;19068:7;19049:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;18982:110:::0;:::o;3469:244::-;2745:12;:10;:12::i;:::-;2735:22;;:6;;;;;;;;;;:22;;;2727:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3578:1:::1;3558:22;;:8;:22;;::::0;3550:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3668:8;3639:38;;3660:6;::::0;::::1;;;;;;;;3639:38;;;;;;;;;;;;3697:8;3688:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3469:244:::0;:::o;14818:34::-;;;;:::o;736:169::-;788:4;805:6;818:1;814;:5;;;;:::i;:::-;805:14;;843:1;838;:6;;830:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;896:1;889:8;;;736:169;;;;:::o;1960:90::-;2005:7;2032:10;2025:17;;1960:90;:::o;26322:339::-;26432:1;26414:20;;:6;:20;;;26406:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;26513:1;26494:21;;:7;:21;;;26486:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26598:6;26567:11;:19;26579:6;26567:19;;;;;;;;;;;;;;;:28;26587:7;26567:28;;;;;;;;;;;;;;;:37;;;;26637:7;26620:33;;26629:6;26620:33;;;26646:6;26620:33;;;;;;:::i;:::-;;;;;;;;26322:339;;;:::o;19316:3835::-;19430:1;19412:20;;:6;:20;;;19404:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;19514:1;19493:23;;:9;:23;;;19485:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;19580:7;:5;:7::i;:::-;19570:17;;:6;:17;;;;:41;;;;;19604:7;:5;:7::i;:::-;19591:20;;:9;:20;;;;19570:41;19567:146;;;19655:11;;19645:6;:21;;19637:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19567:146;20007:28;20038:24;20056:4;20038:9;:24::i;:::-;20007:55;;20085:24;20136:29;;20112:20;:53;;20085:80;;20194:19;:45;;;;;20231:8;;;;;;;;;;;20230:9;20194:45;:85;;;;;20266:13;20256:23;;:6;:23;;;;20194:85;:123;;;;;20296:21;;;;;;;;;;;20194:123;20176:895;;;20355:4;20344:8;;:15;;;;;;;;;;;;;;;;;;20387:20;20410:60;20457:12;;20410:42;20435:16;;20410:20;:24;;:42;;;;:::i;:::-;:46;;:60;;;;:::i;:::-;20387:83;;20485:23;20511:21;20485:47;;20547:30;20564:12;20547:16;:30::i;:::-;20592:18;20613:42;20639:15;20613:21;:25;;:42;;;;:::i;:::-;20592:63;;20670:22;20695:56;20733:16;;20695:32;20710:16;;20695:10;:14;;:32;;;;:::i;:::-;:36;;:56;;;;:::i;:::-;20670:81;;20843:16;;;;;;;;;;;20835:34;;:50;20870:14;20835:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20902:18;20923:60;20970:12;;20923:42;20948:16;;20923:20;:24;;:42;;;;:::i;:::-;:46;;:60;;;;:::i;:::-;20902:81;;20998:26;21013:10;20998:14;:26::i;:::-;21052:5;21041:8;;:16;;;;;;;;;;;;;;;;;;20329:742;;;;;20176:895;21153:12;21169:8;;;;;;;;;;;21168:9;21153:24;;21285:18;:26;21304:6;21285:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;21315:18;:29;21334:9;21315:29;;;;;;;;;;;;;;;;;;;;;;;;;21285:59;21282:105;;;21370:5;21360:15;;21282:105;21412:13;21402:23;;:6;:23;;;;:53;;;;;21442:13;21429:26;;:9;:26;;;;21402:53;21399:109;;;21491:5;21481:15;;21399:109;21521:7;21518:487;;;21553:13;21543:23;;:6;:23;;;21540:224;;21607:15;;21592:12;:30;;;;21652:15;;21637:12;:30;;;;21692:10;;21682:7;:20;;;;21728:11;;21717:8;:22;;;;21540:224;21790:13;21777:26;;:9;:26;;;21774:220;;21844:16;;21829:12;:31;;;;21890:16;;21875:12;:31;;;;21931:11;;21921:7;:21;;;;21968:12;;21957:8;:23;;;;21774:220;21518:487;22027:7;22024:1110;;;22060:17;22080:29;22105:3;22080:20;22091:8;;22080:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;22060:49;;22124:18;22145:36;22172:8;;22145:22;22159:7;;22145:9;:13;;:22;;;;:::i;:::-;:26;;:36;;;;:::i;:::-;22124:57;;22220:10;22208:9;:22;;;;:::i;:::-;22196:34;;22298:17;22318:21;22329:9;22318:6;:10;;:21;;;;:::i;:::-;22298:41;;22374:71;22396:6;22374:71;;;;;;;;;;;;;;;;;:9;:17;22384:6;22374:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;22354:9;:17;22364:6;22354:17;;;;;;;;;;;;;;;:91;;;;22483:35;22508:9;22483;:20;22493:9;22483:20;;;;;;;;;;;;;;;;:24;;:35;;;;:::i;:::-;22460:9;:20;22470:9;22460:20;;;;;;;;;;;;;;;:58;;;;22560:39;22589:9;22560;:24;22578:4;22560:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;22533:9;:24;22551:4;22533:24;;;;;;;;;;;;;;;:66;;;;22638:37;22664:10;22638:9;:21;22656:1;22638:21;;;;;;;;;;;;;;;;:25;;:37;;;;:::i;:::-;22614:9;:21;22632:1;22614:21;;;;;;;;;;;;;;;:61;;;;22712:9;22695:38;;22704:6;22695:38;;;22723:9;22695:38;;;;;;:::i;:::-;;;;;;;;22778:4;22753:42;;22762:6;22753:42;;;22785:9;22753:42;;;;;;:::i;:::-;;;;;;;;22840:1;22815:40;;22824:6;22815:40;;;22844:10;22815:40;;;;;;:::i;:::-;;;;;;;;22045:822;;;22024:1110;;;22926:71;22948:6;22926:71;;;;;;;;;;;;;;;;;:9;:17;22936:6;22926:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;22906:9;:17;22916:6;22906:17;;;;;;;;;;;;;;;:91;;;;23035:32;23060:6;23035:9;:20;23045:9;23035:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;23012:9;:20;23022:9;23012:20;;;;;;;;;;;;;;;:55;;;;23104:9;23087:35;;23096:6;23087:35;;;23115:6;23087:35;;;;;;:::i;:::-;;;;;;;;22024:1110;19391:3760;;;19316:3835;;;:::o;1044:180::-;1124:4;1154:1;1149;:6;;1157:12;1141:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1181:6;1194:1;1190;:5;;;;:::i;:::-;1181:14;;1215:1;1208:8;;;1044:180;;;;;:::o;1230:238::-;1282:4;1308:1;1303;:6;1299:47;;1333:1;1326:8;;;;1299:47;1358:6;1371:1;1367;:5;;;;:::i;:::-;1358:14;;1400:1;1395;1391;:5;;;;:::i;:::-;:10;1383:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1459:1;1452:8;;;1230:238;;;;;:::o;1474:123::-;1526:4;1550:39;1554:1;1557;1550:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1543:46;;1474:123;;;;:::o;25725:589::-;25851:21;25889:1;25875:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25851:40;;25920:4;25902;25907:1;25902:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25946:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25936:4;25941:1;25936:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;25981:62;25998:4;26013:15;26031:11;25981:8;:62::i;:::-;26082:15;:66;;;26163:11;26189:1;26233:4;26260;26280:15;26082:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25780:534;25725:589;:::o;911:127::-;963:4;987:43;991:1;994;987:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;980:50;;911:127;;;;:::o;24247:943::-;15835:4;15816:16;;:23;;;;;;;;;;;;;;;;;;24377:12:::1;24392:13;24403:1;24392:6;:10;;:13;;;;:::i;:::-;24377:28;;24416:17;24436:16;24447:4;24436:6;:10;;:16;;;;:::i;:::-;24416:36;;24730:22;24755:21;24730:46;;24821:22;24838:4;24821:16;:22::i;:::-;24974:18;24995:41;25021:14;24995:21;:25;;:41;;;;:::i;:::-;24974:62;;25086:35;25099:9;25110:10;25086:12;:35::i;:::-;25139:43;25154:4;25160:10;25172:9;25139:43;;;;;;;;:::i;:::-;;;;;;;;24307:883;;;;15881:5:::0;15862:16;;:24;;;;;;;;;;;;;;;;;;24247:943;:::o;1603:246::-;1683:4;1779:1;1775;:5;1782:12;1767:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1806:6;1819:1;1815;:5;;;;:::i;:::-;1806:14;;1840:1;1833:8;;;1603:246;;;;;:::o;25200:517::-;25350:62;25367:4;25382:15;25400:11;25350:8;:62::i;:::-;25455:15;:31;;;25494:9;25527:4;25547:11;25573:1;25616;25659:7;:5;:7::i;:::-;25681:15;25455:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25200:517;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:307::-;790:1;800:113;814:6;811:1;808:13;800:113;;;899:1;894:3;890:11;884:18;880:1;875:3;871:11;864:39;836:2;833:1;829:10;824:15;;800:113;;;931:6;928:1;925:13;922:101;;;1011:1;1002:6;997:3;993:16;986:27;922:101;771:258;722:307;;;:::o;1035:102::-;1076:6;1127:2;1123:7;1118:2;1111:5;1107:14;1103:28;1093:38;;1035:102;;;:::o;1143:364::-;1231:3;1259:39;1292:5;1259:39;:::i;:::-;1314:71;1378:6;1373:3;1314:71;:::i;:::-;1307:78;;1394:52;1439:6;1434:3;1427:4;1420:5;1416:16;1394:52;:::i;:::-;1471:29;1493:6;1471:29;:::i;:::-;1466:3;1462:39;1455:46;;1235:272;1143:364;;;;:::o;1513:313::-;1626:4;1664:2;1653:9;1649:18;1641:26;;1713:9;1707:4;1703:20;1699:1;1688:9;1684:17;1677:47;1741:78;1814:4;1805:6;1741:78;:::i;:::-;1733:86;;1513:313;;;;:::o;1913:117::-;2022:1;2019;2012:12;2159:126;2196:7;2236:42;2229:5;2225:54;2214:65;;2159:126;;;:::o;2291:96::-;2328:7;2357:24;2375:5;2357:24;:::i;:::-;2346:35;;2291:96;;;:::o;2393:122::-;2466:24;2484:5;2466:24;:::i;:::-;2459:5;2456:35;2446:63;;2505:1;2502;2495:12;2446:63;2393:122;:::o;2521:139::-;2567:5;2605:6;2592:20;2583:29;;2621:33;2648:5;2621:33;:::i;:::-;2521:139;;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:60::-;3874:3;3895:5;3888:12;;3846:60;;;:::o;3912:142::-;3962:9;3995:53;4013:34;4022:24;4040:5;4022:24;:::i;:::-;4013:34;:::i;:::-;3995:53;:::i;:::-;3982:66;;3912:142;;;:::o;4060:126::-;4110:9;4143:37;4174:5;4143:37;:::i;:::-;4130:50;;4060:126;;;:::o;4192:153::-;4269:9;4302:37;4333:5;4302:37;:::i;:::-;4289:50;;4192:153;;;:::o;4351:185::-;4465:64;4523:5;4465:64;:::i;:::-;4460:3;4453:77;4351:185;;:::o;4542:276::-;4662:4;4700:2;4689:9;4685:18;4677:26;;4713:98;4808:1;4797:9;4793:17;4784:6;4713:98;:::i;:::-;4542:276;;;;:::o;4824:619::-;4901:6;4909;4917;4966:2;4954:9;4945:7;4941:23;4937:32;4934:119;;;4972:79;;:::i;:::-;4934:119;5092:1;5117:53;5162:7;5153:6;5142:9;5138:22;5117:53;:::i;:::-;5107:63;;5063:117;5219:2;5245:53;5290:7;5281:6;5270:9;5266:22;5245:53;:::i;:::-;5235:63;;5190:118;5347:2;5373:53;5418:7;5409:6;5398:9;5394:22;5373:53;:::i;:::-;5363:63;;5318:118;4824:619;;;;;:::o;5449:::-;5526:6;5534;5542;5591:2;5579:9;5570:7;5566:23;5562:32;5559:119;;;5597:79;;:::i;:::-;5559:119;5717:1;5742:53;5787:7;5778:6;5767:9;5763:22;5742:53;:::i;:::-;5732:63;;5688:117;5844:2;5870:53;5915:7;5906:6;5895:9;5891:22;5870:53;:::i;:::-;5860:63;;5815:118;5972:2;5998:53;6043:7;6034:6;6023:9;6019:22;5998:53;:::i;:::-;5988:63;;5943:118;5449:619;;;;;:::o;6074:86::-;6109:7;6149:4;6142:5;6138:16;6127:27;;6074:86;;;:::o;6166:112::-;6249:22;6265:5;6249:22;:::i;:::-;6244:3;6237:35;6166:112;;:::o;6284:214::-;6373:4;6411:2;6400:9;6396:18;6388:26;;6424:67;6488:1;6477:9;6473:17;6464:6;6424:67;:::i;:::-;6284:214;;;;:::o;6504:329::-;6563:6;6612:2;6600:9;6591:7;6587:23;6583:32;6580:119;;;6618:79;;:::i;:::-;6580:119;6738:1;6763:53;6808:7;6799:6;6788:9;6784:22;6763:53;:::i;:::-;6753:63;;6709:117;6504:329;;;;:::o;6839:118::-;6926:24;6944:5;6926:24;:::i;:::-;6921:3;6914:37;6839:118;;:::o;6963:222::-;7056:4;7094:2;7083:9;7079:18;7071:26;;7107:71;7175:1;7164:9;7160:17;7151:6;7107:71;:::i;:::-;6963:222;;;;:::o;7191:329::-;7250:6;7299:2;7287:9;7278:7;7274:23;7270:32;7267:119;;;7305:79;;:::i;:::-;7267:119;7425:1;7450:53;7495:7;7486:6;7475:9;7471:22;7450:53;:::i;:::-;7440:63;;7396:117;7191:329;;;;:::o;7526:104::-;7571:7;7600:24;7618:5;7600:24;:::i;:::-;7589:35;;7526:104;;;:::o;7636:138::-;7717:32;7743:5;7717:32;:::i;:::-;7710:5;7707:43;7697:71;;7764:1;7761;7754:12;7697:71;7636:138;:::o;7780:155::-;7834:5;7872:6;7859:20;7850:29;;7888:41;7923:5;7888:41;:::i;:::-;7780:155;;;;:::o;7941:345::-;8008:6;8057:2;8045:9;8036:7;8032:23;8028:32;8025:119;;;8063:79;;:::i;:::-;8025:119;8183:1;8208:61;8261:7;8252:6;8241:9;8237:22;8208:61;:::i;:::-;8198:71;;8154:125;7941:345;;;;:::o;8292:116::-;8362:21;8377:5;8362:21;:::i;:::-;8355:5;8352:32;8342:60;;8398:1;8395;8388:12;8342:60;8292:116;:::o;8414:133::-;8457:5;8495:6;8482:20;8473:29;;8511:30;8535:5;8511:30;:::i;:::-;8414:133;;;;:::o;8553:323::-;8609:6;8658:2;8646:9;8637:7;8633:23;8629:32;8626:119;;;8664:79;;:::i;:::-;8626:119;8784:1;8809:50;8851:7;8842:6;8831:9;8827:22;8809:50;:::i;:::-;8799:60;;8755:114;8553:323;;;;:::o;8882:474::-;8950:6;8958;9007:2;8995:9;8986:7;8982:23;8978:32;8975:119;;;9013:79;;:::i;:::-;8975:119;9133:1;9158:53;9203:7;9194:6;9183:9;9179:22;9158:53;:::i;:::-;9148:63;;9104:117;9260:2;9286:53;9331:7;9322:6;9311:9;9307:22;9286:53;:::i;:::-;9276:63;;9231:118;8882:474;;;;;:::o;9362:142::-;9465:32;9491:5;9465:32;:::i;:::-;9460:3;9453:45;9362:142;;:::o;9510:254::-;9619:4;9657:2;9646:9;9642:18;9634:26;;9670:87;9754:1;9743:9;9739:17;9730:6;9670:87;:::i;:::-;9510:254;;;;:::o;9770:180::-;9818:77;9815:1;9808:88;9915:4;9912:1;9905:15;9939:4;9936:1;9929:15;9956:320;10000:6;10037:1;10031:4;10027:12;10017:22;;10084:1;10078:4;10074:12;10105:18;10095:81;;10161:4;10153:6;10149:17;10139:27;;10095:81;10223:2;10215:6;10212:14;10192:18;10189:38;10186:84;;10242:18;;:::i;:::-;10186:84;10007:269;9956:320;;;:::o;10282:182::-;10422:34;10418:1;10410:6;10406:14;10399:58;10282:182;:::o;10470:366::-;10612:3;10633:67;10697:2;10692:3;10633:67;:::i;:::-;10626:74;;10709:93;10798:3;10709:93;:::i;:::-;10827:2;10822:3;10818:12;10811:19;;10470:366;;;:::o;10842:419::-;11008:4;11046:2;11035:9;11031:18;11023:26;;11095:9;11089:4;11085:20;11081:1;11070:9;11066:17;11059:47;11123:131;11249:4;11123:131;:::i;:::-;11115:139;;10842:419;;;:::o;11267:181::-;11407:33;11403:1;11395:6;11391:14;11384:57;11267:181;:::o;11454:366::-;11596:3;11617:67;11681:2;11676:3;11617:67;:::i;:::-;11610:74;;11693:93;11782:3;11693:93;:::i;:::-;11811:2;11806:3;11802:12;11795:19;;11454:366;;;:::o;11826:419::-;11992:4;12030:2;12019:9;12015:18;12007:26;;12079:9;12073:4;12069:20;12065:1;12054:9;12050:17;12043:47;12107:131;12233:4;12107:131;:::i;:::-;12099:139;;11826:419;;;:::o;12251:180::-;12391:32;12387:1;12379:6;12375:14;12368:56;12251:180;:::o;12437:366::-;12579:3;12600:67;12664:2;12659:3;12600:67;:::i;:::-;12593:74;;12676:93;12765:3;12676:93;:::i;:::-;12794:2;12789:3;12785:12;12778:19;;12437:366;;;:::o;12809:419::-;12975:4;13013:2;13002:9;12998:18;12990:26;;13062:9;13056:4;13052:20;13048:1;13037:9;13033:17;13026:47;13090:131;13216:4;13090:131;:::i;:::-;13082:139;;12809:419;;;:::o;13234:179::-;13374:31;13370:1;13362:6;13358:14;13351:55;13234:179;:::o;13419:366::-;13561:3;13582:67;13646:2;13641:3;13582:67;:::i;:::-;13575:74;;13658:93;13747:3;13658:93;:::i;:::-;13776:2;13771:3;13767:12;13760:19;;13419:366;;;:::o;13791:419::-;13957:4;13995:2;13984:9;13980:18;13972:26;;14044:9;14038:4;14034:20;14030:1;14019:9;14015:17;14008:47;14072:131;14198:4;14072:131;:::i;:::-;14064:139;;13791:419;;;:::o;14216:231::-;14356:34;14352:1;14344:6;14340:14;14333:58;14425:14;14420:2;14412:6;14408:15;14401:39;14216:231;:::o;14453:366::-;14595:3;14616:67;14680:2;14675:3;14616:67;:::i;:::-;14609:74;;14692:93;14781:3;14692:93;:::i;:::-;14810:2;14805:3;14801:12;14794:19;;14453:366;;;:::o;14825:419::-;14991:4;15029:2;15018:9;15014:18;15006:26;;15078:9;15072:4;15068:20;15064:1;15053:9;15049:17;15042:47;15106:131;15232:4;15106:131;:::i;:::-;15098:139;;14825:419;;;:::o;15250:143::-;15307:5;15338:6;15332:13;15323:22;;15354:33;15381:5;15354:33;:::i;:::-;15250:143;;;;:::o;15399:351::-;15469:6;15518:2;15506:9;15497:7;15493:23;15489:32;15486:119;;;15524:79;;:::i;:::-;15486:119;15644:1;15669:64;15725:7;15716:6;15705:9;15701:22;15669:64;:::i;:::-;15659:74;;15615:128;15399:351;;;;:::o;15756:166::-;15896:18;15892:1;15884:6;15880:14;15873:42;15756:166;:::o;15928:366::-;16070:3;16091:67;16155:2;16150:3;16091:67;:::i;:::-;16084:74;;16167:93;16256:3;16167:93;:::i;:::-;16285:2;16280:3;16276:12;16269:19;;15928:366;;;:::o;16300:419::-;16466:4;16504:2;16493:9;16489:18;16481:26;;16553:9;16547:4;16543:20;16539:1;16528:9;16524:17;16517:47;16581:131;16707:4;16581:131;:::i;:::-;16573:139;;16300:419;;;:::o;16725:332::-;16846:4;16884:2;16873:9;16869:18;16861:26;;16897:71;16965:1;16954:9;16950:17;16941:6;16897:71;:::i;:::-;16978:72;17046:2;17035:9;17031:18;17022:6;16978:72;:::i;:::-;16725:332;;;;;:::o;17063:137::-;17117:5;17148:6;17142:13;17133:22;;17164:30;17188:5;17164:30;:::i;:::-;17063:137;;;;:::o;17206:345::-;17273:6;17322:2;17310:9;17301:7;17297:23;17293:32;17290:119;;;17328:79;;:::i;:::-;17290:119;17448:1;17473:61;17526:7;17517:6;17506:9;17502:22;17473:61;:::i;:::-;17463:71;;17419:125;17206:345;;;;:::o;17557:225::-;17697:34;17693:1;17685:6;17681:14;17674:58;17766:8;17761:2;17753:6;17749:15;17742:33;17557:225;:::o;17788:366::-;17930:3;17951:67;18015:2;18010:3;17951:67;:::i;:::-;17944:74;;18027:93;18116:3;18027:93;:::i;:::-;18145:2;18140:3;18136:12;18129:19;;17788:366;;;:::o;18160:419::-;18326:4;18364:2;18353:9;18349:18;18341:26;;18413:9;18407:4;18403:20;18399:1;18388:9;18384:17;18377:47;18441:131;18567:4;18441:131;:::i;:::-;18433:139;;18160:419;;;:::o;18585:180::-;18633:77;18630:1;18623:88;18730:4;18727:1;18720:15;18754:4;18751:1;18744:15;18771:305;18811:3;18830:20;18848:1;18830:20;:::i;:::-;18825:25;;18864:20;18882:1;18864:20;:::i;:::-;18859:25;;19018:1;18950:66;18946:74;18943:1;18940:81;18937:107;;;19024:18;;:::i;:::-;18937:107;19068:1;19065;19061:9;19054:16;;18771:305;;;;:::o;19082:177::-;19222:29;19218:1;19210:6;19206:14;19199:53;19082:177;:::o;19265:366::-;19407:3;19428:67;19492:2;19487:3;19428:67;:::i;:::-;19421:74;;19504:93;19593:3;19504:93;:::i;:::-;19622:2;19617:3;19613:12;19606:19;;19265:366;;;:::o;19637:419::-;19803:4;19841:2;19830:9;19826:18;19818:26;;19890:9;19884:4;19880:20;19876:1;19865:9;19861:17;19854:47;19918:131;20044:4;19918:131;:::i;:::-;19910:139;;19637:419;;;:::o;20062:223::-;20202:34;20198:1;20190:6;20186:14;20179:58;20271:6;20266:2;20258:6;20254:15;20247:31;20062:223;:::o;20291:366::-;20433:3;20454:67;20518:2;20513:3;20454:67;:::i;:::-;20447:74;;20530:93;20619:3;20530:93;:::i;:::-;20648:2;20643:3;20639:12;20632:19;;20291:366;;;:::o;20663:419::-;20829:4;20867:2;20856:9;20852:18;20844:26;;20916:9;20910:4;20906:20;20902:1;20891:9;20887:17;20880:47;20944:131;21070:4;20944:131;:::i;:::-;20936:139;;20663:419;;;:::o;21088:221::-;21228:34;21224:1;21216:6;21212:14;21205:58;21297:4;21292:2;21284:6;21280:15;21273:29;21088:221;:::o;21315:366::-;21457:3;21478:67;21542:2;21537:3;21478:67;:::i;:::-;21471:74;;21554:93;21643:3;21554:93;:::i;:::-;21672:2;21667:3;21663:12;21656:19;;21315:366;;;:::o;21687:419::-;21853:4;21891:2;21880:9;21876:18;21868:26;;21940:9;21934:4;21930:20;21926:1;21915:9;21911:17;21904:47;21968:131;22094:4;21968:131;:::i;:::-;21960:139;;21687:419;;;:::o;22112:224::-;22252:34;22248:1;22240:6;22236:14;22229:58;22321:7;22316:2;22308:6;22304:15;22297:32;22112:224;:::o;22342:366::-;22484:3;22505:67;22569:2;22564:3;22505:67;:::i;:::-;22498:74;;22581:93;22670:3;22581:93;:::i;:::-;22699:2;22694:3;22690:12;22683:19;;22342:366;;;:::o;22714:419::-;22880:4;22918:2;22907:9;22903:18;22895:26;;22967:9;22961:4;22957:20;22953:1;22942:9;22938:17;22931:47;22995:131;23121:4;22995:131;:::i;:::-;22987:139;;22714:419;;;:::o;23139:222::-;23279:34;23275:1;23267:6;23263:14;23256:58;23348:5;23343:2;23335:6;23331:15;23324:30;23139:222;:::o;23367:366::-;23509:3;23530:67;23594:2;23589:3;23530:67;:::i;:::-;23523:74;;23606:93;23695:3;23606:93;:::i;:::-;23724:2;23719:3;23715:12;23708:19;;23367:366;;;:::o;23739:419::-;23905:4;23943:2;23932:9;23928:18;23920:26;;23992:9;23986:4;23982:20;23978:1;23967:9;23963:17;23956:47;24020:131;24146:4;24020:131;:::i;:::-;24012:139;;23739:419;;;:::o;24164:180::-;24304:32;24300:1;24292:6;24288:14;24281:56;24164:180;:::o;24350:366::-;24492:3;24513:67;24577:2;24572:3;24513:67;:::i;:::-;24506:74;;24589:93;24678:3;24589:93;:::i;:::-;24707:2;24702:3;24698:12;24691:19;;24350:366;;;:::o;24722:419::-;24888:4;24926:2;24915:9;24911:18;24903:26;;24975:9;24969:4;24965:20;24961:1;24950:9;24946:17;24939:47;25003:131;25129:4;25003:131;:::i;:::-;24995:139;;24722:419;;;:::o;25147:191::-;25187:4;25207:20;25225:1;25207:20;:::i;:::-;25202:25;;25241:20;25259:1;25241:20;:::i;:::-;25236:25;;25280:1;25277;25274:8;25271:34;;;25285:18;;:::i;:::-;25271:34;25330:1;25327;25323:9;25315:17;;25147:191;;;;:::o;25344:348::-;25384:7;25407:20;25425:1;25407:20;:::i;:::-;25402:25;;25441:20;25459:1;25441:20;:::i;:::-;25436:25;;25629:1;25561:66;25557:74;25554:1;25551:81;25546:1;25539:9;25532:17;25528:105;25525:131;;;25636:18;;:::i;:::-;25525:131;25684:1;25681;25677:9;25666:20;;25344:348;;;;:::o;25698:180::-;25746:77;25743:1;25736:88;25843:4;25840:1;25833:15;25867:4;25864:1;25857:15;25884:185;25924:1;25941:20;25959:1;25941:20;:::i;:::-;25936:25;;25975:20;25993:1;25975:20;:::i;:::-;25970:25;;26014:1;26004:35;;26019:18;;:::i;:::-;26004:35;26061:1;26058;26054:9;26049:14;;25884:185;;;;:::o;26075:220::-;26215:34;26211:1;26203:6;26199:14;26192:58;26284:3;26279:2;26271:6;26267:15;26260:28;26075:220;:::o;26301:366::-;26443:3;26464:67;26528:2;26523:3;26464:67;:::i;:::-;26457:74;;26540:93;26629:3;26540:93;:::i;:::-;26658:2;26653:3;26649:12;26642:19;;26301:366;;;:::o;26673:419::-;26839:4;26877:2;26866:9;26862:18;26854:26;;26926:9;26920:4;26916:20;26912:1;26901:9;26897:17;26890:47;26954:131;27080:4;26954:131;:::i;:::-;26946:139;;26673:419;;;:::o;27098:180::-;27146:77;27143:1;27136:88;27243:4;27240:1;27233:15;27267:4;27264:1;27257:15;27284:180;27332:77;27329:1;27322:88;27429:4;27426:1;27419:15;27453:4;27450:1;27443:15;27470:143;27527:5;27558:6;27552:13;27543:22;;27574:33;27601:5;27574:33;:::i;:::-;27470:143;;;;:::o;27619:351::-;27689:6;27738:2;27726:9;27717:7;27713:23;27709:32;27706:119;;;27744:79;;:::i;:::-;27706:119;27864:1;27889:64;27945:7;27936:6;27925:9;27921:22;27889:64;:::i;:::-;27879:74;;27835:128;27619:351;;;;:::o;27976:85::-;28021:7;28050:5;28039:16;;27976:85;;;:::o;28067:158::-;28125:9;28158:61;28176:42;28185:32;28211:5;28185:32;:::i;:::-;28176:42;:::i;:::-;28158:61;:::i;:::-;28145:74;;28067:158;;;:::o;28231:147::-;28326:45;28365:5;28326:45;:::i;:::-;28321:3;28314:58;28231:147;;:::o;28384:114::-;28451:6;28485:5;28479:12;28469:22;;28384:114;;;:::o;28504:184::-;28603:11;28637:6;28632:3;28625:19;28677:4;28672:3;28668:14;28653:29;;28504:184;;;;:::o;28694:132::-;28761:4;28784:3;28776:11;;28814:4;28809:3;28805:14;28797:22;;28694:132;;;:::o;28832:108::-;28909:24;28927:5;28909:24;:::i;:::-;28904:3;28897:37;28832:108;;:::o;28946:179::-;29015:10;29036:46;29078:3;29070:6;29036:46;:::i;:::-;29114:4;29109:3;29105:14;29091:28;;28946:179;;;;:::o;29131:113::-;29201:4;29233;29228:3;29224:14;29216:22;;29131:113;;;:::o;29280:732::-;29399:3;29428:54;29476:5;29428:54;:::i;:::-;29498:86;29577:6;29572:3;29498:86;:::i;:::-;29491:93;;29608:56;29658:5;29608:56;:::i;:::-;29687:7;29718:1;29703:284;29728:6;29725:1;29722:13;29703:284;;;29804:6;29798:13;29831:63;29890:3;29875:13;29831:63;:::i;:::-;29824:70;;29917:60;29970:6;29917:60;:::i;:::-;29907:70;;29763:224;29750:1;29747;29743:9;29738:14;;29703:284;;;29707:14;30003:3;29996:10;;29404:608;;;29280:732;;;;:::o;30018:831::-;30281:4;30319:3;30308:9;30304:19;30296:27;;30333:71;30401:1;30390:9;30386:17;30377:6;30333:71;:::i;:::-;30414:80;30490:2;30479:9;30475:18;30466:6;30414:80;:::i;:::-;30541:9;30535:4;30531:20;30526:2;30515:9;30511:18;30504:48;30569:108;30672:4;30663:6;30569:108;:::i;:::-;30561:116;;30687:72;30755:2;30744:9;30740:18;30731:6;30687:72;:::i;:::-;30769:73;30837:3;30826:9;30822:19;30813:6;30769:73;:::i;:::-;30018:831;;;;;;;;:::o;30855:442::-;31004:4;31042:2;31031:9;31027:18;31019:26;;31055:71;31123:1;31112:9;31108:17;31099:6;31055:71;:::i;:::-;31136:72;31204:2;31193:9;31189:18;31180:6;31136:72;:::i;:::-;31218;31286:2;31275:9;31271:18;31262:6;31218:72;:::i;:::-;30855:442;;;;;;:::o;31303:807::-;31552:4;31590:3;31579:9;31575:19;31567:27;;31604:71;31672:1;31661:9;31657:17;31648:6;31604:71;:::i;:::-;31685:72;31753:2;31742:9;31738:18;31729:6;31685:72;:::i;:::-;31767:80;31843:2;31832:9;31828:18;31819:6;31767:80;:::i;:::-;31857;31933:2;31922:9;31918:18;31909:6;31857:80;:::i;:::-;31947:73;32015:3;32004:9;32000:19;31991:6;31947:73;:::i;:::-;32030;32098:3;32087:9;32083:19;32074:6;32030:73;:::i;:::-;31303:807;;;;;;;;;:::o;32116:663::-;32204:6;32212;32220;32269:2;32257:9;32248:7;32244:23;32240:32;32237:119;;;32275:79;;:::i;:::-;32237:119;32395:1;32420:64;32476:7;32467:6;32456:9;32452:22;32420:64;:::i;:::-;32410:74;;32366:128;32533:2;32559:64;32615:7;32606:6;32595:9;32591:22;32559:64;:::i;:::-;32549:74;;32504:129;32672:2;32698:64;32754:7;32745:6;32734:9;32730:22;32698:64;:::i;:::-;32688:74;;32643:129;32116:663;;;;;:::o
Swarm Source
ipfs://af3741af9576efe2c46236466ee145ebcae9bac92b8cfa5f62aede40c9326529
Loading...
Loading
Loading...
Loading
Net Worth in USD
$4,220.50
Net Worth in ETH
1.266151
Token Allocations
ETH
88.81%
BNB
4.46%
SHIB
4.07%
Others
2.66%
Multichain Portfolio | 35 Chains
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.