Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 27 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 17676716 | 966 days ago | IN | 0 ETH | 0.00043349 | ||||
| Approve | 14403248 | 1448 days ago | IN | 0 ETH | 0.0008592 | ||||
| Approve | 14403238 | 1448 days ago | IN | 0 ETH | 0.00091768 | ||||
| Approve | 14403232 | 1448 days ago | IN | 0 ETH | 0.00084792 | ||||
| Approve | 14403220 | 1448 days ago | IN | 0 ETH | 0.00101578 | ||||
| Approve | 14403218 | 1448 days ago | IN | 0 ETH | 0.00087413 | ||||
| Approve | 14403218 | 1448 days ago | IN | 0 ETH | 0.00087413 | ||||
| Set Taxes | 14403217 | 1448 days ago | IN | 0 ETH | 0.053491 | ||||
| Approve | 14403217 | 1448 days ago | IN | 0 ETH | 0.04889236 | ||||
| Approve | 14403216 | 1448 days ago | IN | 0 ETH | 0.00089682 | ||||
| Approve | 14403215 | 1448 days ago | IN | 0 ETH | 0.00098514 | ||||
| Approve | 14403212 | 1448 days ago | IN | 0 ETH | 0.00086339 | ||||
| Approve | 14403212 | 1448 days ago | IN | 0 ETH | 0.00130008 | ||||
| Approve | 14403208 | 1448 days ago | IN | 0 ETH | 0.00102186 | ||||
| Approve | 14403206 | 1448 days ago | IN | 0 ETH | 0.00105622 | ||||
| Approve | 14403206 | 1448 days ago | IN | 0 ETH | 0.00132903 | ||||
| Approve | 14403206 | 1448 days ago | IN | 0 ETH | 0.00132903 | ||||
| Approve | 14403205 | 1448 days ago | IN | 0 ETH | 0.00101748 | ||||
| Approve | 14403203 | 1448 days ago | IN | 0 ETH | 0.00091876 | ||||
| Approve | 14403202 | 1448 days ago | IN | 0 ETH | 0.00094115 | ||||
| Approve | 14403201 | 1448 days ago | IN | 0 ETH | 0.00089181 | ||||
| Approve | 14403200 | 1448 days ago | IN | 0 ETH | 0.00150774 | ||||
| Approve | 14403199 | 1448 days ago | IN | 0 ETH | 0.0010335 | ||||
| Approve | 14403197 | 1448 days ago | IN | 0 ETH | 0.00159074 | ||||
| Approve | 14403192 | 1448 days ago | IN | 0 ETH | 0.00140697 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 14403263 | 1448 days ago | 0.0095471 ETH | ||||
| - | 14403263 | 1448 days ago | 0.01909421 ETH | ||||
| - | 14403263 | 1448 days ago | 0.02864132 ETH | ||||
| - | 14403263 | 1448 days ago | 0.05728264 ETH | ||||
| - | 14403219 | 1448 days ago | 0.00208036 ETH | ||||
| - | 14403219 | 1448 days ago | 0.00416073 ETH | ||||
| - | 14403219 | 1448 days ago | 0.0062411 ETH | ||||
| - | 14403219 | 1448 days ago | 0.01241742 ETH | ||||
| - | 14403217 | 1448 days ago | 0.00006479 ETH | ||||
| - | 14403217 | 1448 days ago | 0.00669051 ETH | ||||
| - | 14403217 | 1448 days ago | 0.06690517 ETH | ||||
| - | 14403217 | 1448 days ago | 0.08697672 ETH | ||||
| - | 14403217 | 1448 days ago | 0.16057241 ETH | ||||
| - | 14403195 | 1448 days ago | 0.00220637 ETH | ||||
| - | 14403195 | 1448 days ago | 0.02206378 ETH | ||||
| - | 14403195 | 1448 days ago | 0.02868292 ETH | ||||
| - | 14403195 | 1448 days ago | 0.05295309 ETH | ||||
| - | 14403195 | 1448 days ago | 0.00220637 ETH | ||||
| - | 14403195 | 1448 days ago | 0.02206378 ETH | ||||
| - | 14403195 | 1448 days ago | 0.02868292 ETH | ||||
| - | 14403195 | 1448 days ago | 0.05295309 ETH | ||||
| - | 14403190 | 1448 days ago | 0.00003362 ETH | ||||
| - | 14403190 | 1448 days ago | 0.00033627 ETH | ||||
| - | 14403190 | 1448 days ago | 0.00043715 ETH | ||||
| - | 14403190 | 1448 days ago | 0.00080705 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
SPARTANKONG
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-03-17
*/
/*
🚀 SPARTAN KONG 🚀 | LAUNCH SOON |
☎️ JOIN TELEGRAM : https://t.me/spartankong
*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.7;
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return payable(msg.sender);
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
library Address {
function isContract(address account) internal view returns (bool) {
// According to EIP-1052, 0x0 is the value returned for not-yet created accounts
// and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
// for accounts without code, i.e. `keccak256('')`
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
// solhint-disable-next-line no-inline-assembly
assembly { codehash := extcodehash(account) }
return (codehash != accountHash && codehash != 0x0);
}
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
// solhint-disable-next-line avoid-low-level-calls, avoid-call-value
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return _functionCallWithValue(target, data, 0, errorMessage);
}
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
return _functionCallWithValue(target, data, value, errorMessage);
}
function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
if (success) {
return returndata;
} else {
if (returndata.length > 0) {
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
contract Ownable is Context {
address private _owner;
address private _previousOwner;
uint256 private _lockTime;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
function getUnlockTime() public view returns (uint256) {
return _lockTime;
}
function getTime() public view returns (uint256) {
return block.timestamp;
}
function lock(uint256 time) public virtual onlyOwner {
_previousOwner = _owner;
_owner = address(0);
_lockTime = block.timestamp + time;
emit OwnershipTransferred(_owner, address(0));
}
function unlock() public virtual {
require(_previousOwner == msg.sender, "You don't have permission to unlock");
require(block.timestamp > _lockTime , "Contract is locked until 7 days");
emit OwnershipTransferred(_owner, _previousOwner);
_owner = _previousOwner;
}
}
interface IUniswapV2Factory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB) external view returns (address pair);
function allPairs(uint) external view returns (address pair);
function allPairsLength() external view returns (uint);
function createPair(address tokenA, address tokenB) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
contract SPARTANKONG is Context, IERC20, Ownable {
using SafeMath for uint256;
using Address for address;
string private _name = "SPARTAN KONG";
string private _symbol = "$SPARKONG";
uint8 private _decimals = 9;
uint256 private _totalSupply = 100 * 10**10 * 10**9;
uint256 public _maxTxAmount = 3 * 10**9 * 10**10;
uint256 public _walletMax = 4 * 10**10 * 10**9;
uint256 private minimumTokensBeforeSwap = 1000 * 10**9;
mapping (address => uint256) _balances;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) public isExcludedFromFee;
mapping (address => bool) public isWalletLimitExempt;
mapping (address => bool) public isBlacklisted;
address payable public marketingWalletAddress = payable(0x472175534caC907A8512C144d578E4f8D6bf21F8);
address payable public devWalletAddress = payable(0xFae72C1624d278d63421D0865AF0B62b5bbB56C4);
address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
uint256 public _liquidityFee = 1;
uint256 public _marketingFee = 6;
uint256 public _devFee = 5;
uint256 public _addselltax = 3;
uint256 public _Tax = 0;
uint256 public _setbot = 0;
IUniswapV2Router02 public uniswapV2Router;
address public uniswapV2Pair;
bool inSwapAndLiquify;
bool public swapAndLiquifyEnabled = true;
bool public swapAndLiquifyByLimitOnly = false;
bool public checkWalletLimit = true;
event SwapAndLiquifyEnabledUpdated(bool enabled);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiqudity
);
event SwapETHForTokens(
uint256 amountIn,
address[] path
);
event SwapTokensForETH(
uint256 amountIn,
address[] path
);
modifier lockTheSwap {
inSwapAndLiquify = true;
_;
inSwapAndLiquify = false;
}
constructor () {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
uniswapV2Router = _uniswapV2Router;
_allowances[address(this)][address(uniswapV2Router)] = _totalSupply;
isExcludedFromFee[owner()] = true;
isExcludedFromFee[address(this)] = true;
_Tax = _liquidityFee.add(_marketingFee).add(_devFee);
_setbot = _Tax.add(_addselltax);
isWalletLimitExempt[owner()] = true;
isWalletLimitExempt[address(uniswapV2Pair)] = true;
_balances[_msgSender()] = _totalSupply;
emit Transfer(address(0), _msgSender(), _totalSupply);
}
function name() public view returns (string memory) {
return _name;
}
function symbol() public view returns (string memory) {
return _symbol;
}
function decimals() public view returns (uint8) {
return _decimals;
}
function totalSupply() public view override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
function minimumTokensBeforeSwapAmount() public view returns (uint256) {
return minimumTokensBeforeSwap;
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function _approve(address owner, address spender, uint256 amount) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function blacklistAddress(address account, bool newValue) public onlyOwner {
isBlacklisted[account] = newValue;
}
function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
isExcludedFromFee[account] = newValue;
}
function setTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newRewardsTax, uint256 newExtraBurnFee) external onlyOwner() {
_liquidityFee = newLiquidityTax;
_marketingFee = newMarketingTax;
_devFee = newRewardsTax;
_addselltax = newExtraBurnFee;
_Tax = _liquidityFee.add(_marketingFee).add(_devFee);
_setbot = _Tax.add(_addselltax);
}
function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
_maxTxAmount = maxTxAmount;
}
function enableDisableWalletLimit(bool newValue) external onlyOwner {
checkWalletLimit = newValue;
}
function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
isWalletLimitExempt[holder] = exempt;
}
function setWalletLimit(uint256 newLimit) external onlyOwner {
_walletMax = newLimit;
}
function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
minimumTokensBeforeSwap = newLimit;
}
function setMarketingWalletAddress(address newAddress) external onlyOwner() {
marketingWalletAddress = payable(newAddress);
}
function setdevWalletAddress(address newAddress) external onlyOwner() {
devWalletAddress = payable(newAddress);
}
function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
swapAndLiquifyEnabled = _enabled;
emit SwapAndLiquifyEnabledUpdated(_enabled);
}
function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
swapAndLiquifyByLimitOnly = newValue;
}
function getCirculatingSupply() public view returns (uint256) {
return _totalSupply.sub(balanceOf(deadAddress));
}
function transferToAddressETH(address payable recipient, uint256 amount) private {
recipient.transfer(amount);
}
function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress);
newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());
if(newPairAddress == address(0)) //Create If Doesnt exist
{
newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
}
uniswapV2Pair = newPairAddress; //Set new pair address
uniswapV2Router = _uniswapV2Router; //Set new router address
}
//to recieve ETH from uniswapV2Router when swaping
receive() external payable {}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
require(!isBlacklisted[sender] && !isBlacklisted[recipient], "To/from address is blacklisted!");
require(amount > 0, "Transfer amount must be greater than zero");
if(inSwapAndLiquify)
{
return _basicTransfer(sender, recipient, amount);
}
else
{
if(sender != owner() && recipient != owner()) {
require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
}
uint256 contractTokenBalance = balanceOf(address(this));
bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
if (overMinimumTokenBalance && !inSwapAndLiquify && sender != uniswapV2Pair && swapAndLiquifyEnabled)
{
if(swapAndLiquifyByLimitOnly)
contractTokenBalance = minimumTokensBeforeSwap;
swapAndLiquify(contractTokenBalance);
}
_balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ?
amount : takeFee(sender, recipient, amount);
if(checkWalletLimit && !isWalletLimitExempt[recipient])
require(balanceOf(recipient).add(finalAmount) <= _walletMax);
_balances[recipient] = _balances[recipient].add(finalAmount);
emit Transfer(sender, recipient, finalAmount);
return true;
}
}
function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
_balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
return true;
}
function swapAndLiquify(uint256 tAmount) private lockTheSwap {
uint256 tokensForLP = tAmount.div(_Tax).mul(_liquidityFee).div(2);
uint256 tokensForSwap = tAmount.sub(tokensForLP);
swapTokensForEth(tokensForSwap);
uint256 amountReceived = address(this).balance;
uint256 totalBNBFee = _Tax.sub(_liquidityFee.div(2));
uint256 amountBNBLiquidity = amountReceived.mul(_liquidityFee).div(totalBNBFee).div(2);
uint256 amountBNBRewards = amountReceived.mul(_devFee).div(totalBNBFee);
uint256 amountBNBMarketing = amountReceived.sub(amountBNBLiquidity).sub(amountBNBRewards);
transferToAddressETH(marketingWalletAddress, amountBNBMarketing);
transferToAddressETH(devWalletAddress, amountBNBRewards);
addLiquidity(tokensForLP, amountBNBLiquidity);
}
function swapTokensForEth(uint256 tokenAmount) private {
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
// make the swap
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this), // The contract
block.timestamp
);
emit SwapTokensForETH(tokenAmount, path);
}
function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
// approve token transfer to cover all possible scenarios
_approve(address(this), address(uniswapV2Router), tokenAmount);
// add the liquidity
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
owner(),
block.timestamp
);
}
function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
uint256 feeAmount = recipient == uniswapV2Pair ? amount.mul(_setbot).div(100)
: amount.mul(_Tax).div(100);
_balances[address(this)] = _balances[address(this)].add(feeAmount);
emit Transfer(sender, address(this), feeAmount);
return amount.sub(feeAmount);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_Tax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_addselltax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_setbot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newRewardsTax","type":"uint256"},{"internalType":"uint256","name":"newExtraBurnFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setdevWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60a06040526040518060400160405280600c81526020017f5350415254414e204b4f4e47000000000000000000000000000000000000000081525060039080519060200190620000519291906200093b565b506040518060400160405280600981526020017f24535041524b4f4e470000000000000000000000000000000000000000000000815250600490805190602001906200009f9291906200093b565b506009600560006101000a81548160ff021916908360ff160217905550683635c9adc5dea000006006556801a055690d9db8000060075568022b1c8c1227a0000060085564e8d4a5100060095573472175534cac907a8512c144d578e4f8d6bf21f8600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073fae72c1624d278d63421d0865af0b62b5bbb56c4601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152506001601155600660125560056013556003601455600060155560006016556001601860156101000a81548160ff0219169083151502179055506000601860166101000a81548160ff0219169083151502179055506001601860176101000a81548160ff0219169083151502179055503480156200024a57600080fd5b5060006200025d620008a760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200035b57600080fd5b505afa15801562000370573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000396919062000a02565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003f957600080fd5b505afa1580156200040e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000434919062000a02565b6040518363ffffffff1660e01b81526004016200045392919062000a7d565b602060405180830381600087803b1580156200046e57600080fd5b505af115801562000483573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a9919062000a02565b601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600654600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600c6000620005e5620008af60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006c7601354620006b3601254601154620008d860201b620027d21790919060201c565b620008d860201b620027d21790919060201c565b601581905550620006eb601454601554620008d860201b620027d21790919060201c565b6016819055506001600d600062000707620008af60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600654600a6000620007e9620008a760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000837620008a760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60065460405162000898919062000acc565b60405180910390a35062000c71565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808284620008e9919062000afa565b90508381101562000931576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009289062000aaa565b60405180910390fd5b8091505092915050565b828054620009499062000b95565b90600052602060002090601f0160209004810192826200096d5760008555620009b9565b82601f106200098857805160ff1916838001178555620009b9565b82800160010185558215620009b9579182015b82811115620009b85782518255916020019190600101906200099b565b5b509050620009c89190620009cc565b5090565b5b80821115620009e7576000816000905550600101620009cd565b5090565b600081519050620009fc8162000c57565b92915050565b60006020828403121562000a1b5762000a1a62000c29565b5b600062000a2b84828501620009eb565b91505092915050565b62000a3f8162000b57565b82525050565b600062000a54601b8362000ae9565b915062000a618262000c2e565b602082019050919050565b62000a778162000b8b565b82525050565b600060408201905062000a94600083018562000a34565b62000aa3602083018462000a34565b9392505050565b6000602082019050818103600083015262000ac58162000a45565b9050919050565b600060208201905062000ae3600083018462000a6c565b92915050565b600082825260208201905092915050565b600062000b078262000b8b565b915062000b148362000b8b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b4c5762000b4b62000bcb565b5b828201905092915050565b600062000b648262000b6b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000600282049050600182168062000bae57607f821691505b6020821081141562000bc55762000bc462000bfa565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b62000c628162000b57565b811462000c6e57600080fd5b50565b60805160601c614ce762000c9760003960008181610fdd01526110090152614ce76000f3fe6080604052600436106103035760003560e01c80637d1db4a511610190578063c867d60b116100dc578063e5c5369311610095578063f1d5f5171161006f578063f1d5f51714610b93578063f2fde38b14610bbc578063f872858a14610be5578063fe575a8714610c105761030a565b8063e5c5369314610b18578063ec28438a14610b41578063ef422a1814610b6a5761030a565b8063c867d60b146109f4578063d158272d14610a31578063da00097d14610a5c578063dbc1af7e14610a87578063dd46706414610ab2578063dd62ed3e14610adb5761030a565b8063a12a7d6111610149578063a69df4b511610123578063a69df4b51461094c578063a9059cbb14610963578063aa45026b146109a0578063c49b9a80146109cb5761030a565b8063a12a7d61146108bd578063a457c2d7146108e6578063a5d69d1f146109235761030a565b80637d1db4a5146107bb578063807c2d9c146107e65780638da5cb5b1461081157806395d89b411461083c578063a0545aac14610867578063a073d37f146108925761030a565b8063395093511161024f5780635342acb411610208578063602bc62b116101e2578063602bc62b146107115780636bc87c3a1461073c57806370a0823114610767578063715018a6146107a45761030a565b80635342acb41461066c578063557ed1ba146106a95780635881f3ef146106d45761030a565b8063395093511461055e5780633b97084a1461059b578063455a4396146105c457806349bd5a5e146105ed5780634a74bb02146106185780634cb80fd5146106435761030a565b80632198cf6c116102bc5780632563ae83116102965780632563ae83146104b457806327c8f835146104dd5780632b112e4914610508578063313ce567146105335761030a565b80632198cf6c1461042357806322976e0d1461044c57806323b872dd146104775761030a565b806306fdde031461030f578063095ea7b31461033a5780630e038813146103775780630fcd55d7146103a25780631694505e146103cd57806318160ddd146103f85761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c4d565b60405161033191906142b3565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c9190613d7b565b610cdf565b60405161036e919061427d565b60405180910390f35b34801561038357600080fd5b5061038c610cfd565b60405161039991906141d8565b60405180910390f35b3480156103ae57600080fd5b506103b7610d23565b6040516103c49190614475565b60405180910390f35b3480156103d957600080fd5b506103e2610d29565b6040516103ef9190614298565b60405180910390f35b34801561040457600080fd5b5061040d610d4f565b60405161041a9190614475565b60405180910390f35b34801561042f57600080fd5b5061044a60048036038101906104459190613d3b565b610d59565b005b34801561045857600080fd5b50610461610e49565b60405161046e9190614475565b60405180910390f35b34801561048357600080fd5b5061049e60048036038101906104999190613ce8565b610e4f565b6040516104ab919061427d565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d69190613dbb565b610f29565b005b3480156104e957600080fd5b506104f2610fdb565b6040516104ff91906141bd565b60405180910390f35b34801561051457600080fd5b5061051d610fff565b60405161052a9190614475565b60405180910390f35b34801561053f57600080fd5b50610548611043565b604051610555919061451a565b60405180910390f35b34801561056a57600080fd5b5061058560048036038101906105809190613d7b565b61105a565b604051610592919061427d565b60405180910390f35b3480156105a757600080fd5b506105c260048036038101906105bd9190613de8565b61110d565b005b3480156105d057600080fd5b506105eb60048036038101906105e69190613d3b565b6111ac565b005b3480156105f957600080fd5b5061060261129c565b60405161060f91906141bd565b60405180910390f35b34801561062457600080fd5b5061062d6112c2565b60405161063a919061427d565b60405180910390f35b34801561064f57600080fd5b5061066a60048036038101906106659190613c4e565b6112d5565b005b34801561067857600080fd5b50610693600480360381019061068e9190613c4e565b6113ae565b6040516106a0919061427d565b60405180910390f35b3480156106b557600080fd5b506106be6113ce565b6040516106cb9190614475565b60405180910390f35b3480156106e057600080fd5b506106fb60048036038101906106f69190613c4e565b6113d6565b60405161070891906141bd565b60405180910390f35b34801561071d57600080fd5b50610726611840565b6040516107339190614475565b60405180910390f35b34801561074857600080fd5b5061075161184a565b60405161075e9190614475565b60405180910390f35b34801561077357600080fd5b5061078e60048036038101906107899190613c4e565b611850565b60405161079b9190614475565b60405180910390f35b3480156107b057600080fd5b506107b9611899565b005b3480156107c757600080fd5b506107d06119ec565b6040516107dd9190614475565b60405180910390f35b3480156107f257600080fd5b506107fb6119f2565b6040516108089190614475565b60405180910390f35b34801561081d57600080fd5b506108266119f8565b60405161083391906141bd565b60405180910390f35b34801561084857600080fd5b50610851611a21565b60405161085e91906142b3565b60405180910390f35b34801561087357600080fd5b5061087c611ab3565b6040516108899190614475565b60405180910390f35b34801561089e57600080fd5b506108a7611ab9565b6040516108b49190614475565b60405180910390f35b3480156108c957600080fd5b506108e460048036038101906108df9190613e68565b611ac3565b005b3480156108f257600080fd5b5061090d60048036038101906109089190613d7b565b611bc8565b60405161091a919061427d565b60405180910390f35b34801561092f57600080fd5b5061094a60048036038101906109459190613dbb565b611c95565b005b34801561095857600080fd5b50610961611d47565b005b34801561096f57600080fd5b5061098a60048036038101906109859190613d7b565b611f1b565b604051610997919061427d565b60405180910390f35b3480156109ac57600080fd5b506109b5611f3a565b6040516109c29190614475565b60405180910390f35b3480156109d757600080fd5b506109f260048036038101906109ed9190613dbb565b611f40565b005b348015610a0057600080fd5b50610a1b6004803603810190610a169190613c4e565b612029565b604051610a28919061427d565b60405180910390f35b348015610a3d57600080fd5b50610a46612049565b604051610a5391906141d8565b60405180910390f35b348015610a6857600080fd5b50610a7161206f565b604051610a7e919061427d565b60405180910390f35b348015610a9357600080fd5b50610a9c612082565b604051610aa99190614475565b60405180910390f35b348015610abe57600080fd5b50610ad96004803603810190610ad49190613de8565b612088565b005b348015610ae757600080fd5b50610b026004803603810190610afd9190613ca8565b61224f565b604051610b0f9190614475565b60405180910390f35b348015610b2457600080fd5b50610b3f6004803603810190610b3a9190613c4e565b6122d6565b005b348015610b4d57600080fd5b50610b686004803603810190610b639190613de8565b6123af565b005b348015610b7657600080fd5b50610b916004803603810190610b8c9190613d3b565b61244e565b005b348015610b9f57600080fd5b50610bba6004803603810190610bb59190613de8565b61253e565b005b348015610bc857600080fd5b50610be36004803603810190610bde9190613c4e565b6125dd565b005b348015610bf157600080fd5b50610bfa61279f565b604051610c07919061427d565b60405180910390f35b348015610c1c57600080fd5b50610c376004803603810190610c329190613c4e565b6127b2565b604051610c44919061427d565b60405180910390f35b606060038054610c5c90614781565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8890614781565b8015610cd55780601f10610caa57610100808354040283529160200191610cd5565b820191906000526020600020905b815481529060010190602001808311610cb857829003601f168201915b5050505050905090565b6000610cf3610cec612830565b8484612838565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600654905090565b610d61612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de5906143b5565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b6000610e5c848484612a03565b50610f1e84610e69612830565b610f1985604051806060016040528060288152602001614c6560289139600b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ecf612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b612838565b600190509392505050565b610f31612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb5906143b5565b60405180910390fd5b80601860176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061103e61102d7f0000000000000000000000000000000000000000000000000000000000000000611850565b60065461314890919063ffffffff16565b905090565b6000600560009054906101000a900460ff16905090565b6000611103611067612830565b846110fe85600b6000611078612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b612838565b6001905092915050565b611115612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611199906143b5565b60405180910390fd5b8060098190555050565b6111b4612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611241576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611238906143b5565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860159054906101000a900460ff1681565b6112dd612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461136a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611361906143b5565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c6020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60006113e0612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461146d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611464906143b5565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156114b857600080fd5b505afa1580156114cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f09190613c7b565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561155257600080fd5b505afa158015611566573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158a9190613c7b565b6040518363ffffffff1660e01b81526004016115a79291906141f3565b60206040518083038186803b1580156115bf57600080fd5b505afa1580156115d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f79190613c7b565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117b8578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561167457600080fd5b505afa158015611688573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ac9190613c7b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561170e57600080fd5b505afa158015611722573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117469190613c7b565b6040518363ffffffff1660e01b81526004016117639291906141f3565b602060405180830381600087803b15801561177d57600080fd5b505af1158015611791573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b59190613c7b565b91505b81601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050919050565b6000600254905090565b60115481565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118a1612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461192e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611925906143b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60075481565b60085481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611a3090614781565b80601f0160208091040260200160405190810160405280929190818152602001828054611a5c90614781565b8015611aa95780601f10611a7e57610100808354040283529160200191611aa9565b820191906000526020600020905b815481529060010190602001808311611a8c57829003601f168201915b5050505050905090565b60165481565b6000600954905090565b611acb612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4f906143b5565b60405180910390fd5b83601181905550826012819055508160138190555080601481905550611b9f601354611b916012546011546127d290919063ffffffff16565b6127d290919063ffffffff16565b601581905550611bbc6014546015546127d290919063ffffffff16565b60168190555050505050565b6000611c8b611bd5612830565b84611c8685604051806060016040528060258152602001614c8d60259139600b6000611bff612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b612838565b6001905092915050565b611c9d612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d21906143b5565b60405180910390fd5b80601860166101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dce90614455565b60405180910390fd5b6002544211611e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1290614435565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611f2f611f28612830565b8484612a03565b506001905092915050565b60135481565b611f48612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcc906143b5565b60405180910390fd5b80601860156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161201e919061427d565b60405180910390a150565b600d6020528060005260406000206000915054906101000a900460ff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860169054906101000a900460ff1681565b60145481565b612090612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461211d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612114906143b5565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080426121cb919061458a565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6122de612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461236b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612362906143b5565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6123b7612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243b906143b5565b60405180910390fd5b8060078190555050565b612456612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124da906143b5565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612546612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ca906143b5565b60405180910390fd5b8060088190555050565b6125e5612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612672576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612669906143b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156126e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d9906142f5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601860179054906101000a900460ff1681565b600e6020528060005260406000206000915054906101000a900460ff1681565b60008082846127e1919061458a565b905083811015612826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281d90614335565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289f90614415565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290f90614315565b60405180910390fd5b80600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129f69190614475565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6b906143f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adb906142d5565b60405180910390fd5b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b885750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbe90614355565b60405180910390fd5b60008211612c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c01906143d5565b60405180910390fd5b601860149054906101000a900460ff1615612c3157612c2a848484613192565b90506130dd565b612c396119f8565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612ca75750612c776119f8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612cf257600754821115612cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce890614375565b60405180910390fd5b5b6000612cfd30611850565b905060006009548210159050808015612d235750601860149054906101000a900460ff16155b8015612d7d5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015612d955750601860159054906101000a900460ff165b15612dbf57601860169054906101000a900460ff1615612db55760095491505b612dbe82613365565b5b612e48846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f2e5750600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f4257612f3d87878761352c565b612f44565b845b9050601860179054906101000a900460ff168015612fac5750600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fdb57600854612fcf82612fc189611850565b6127d290919063ffffffff16565b1115612fda57600080fd5b5b61302d81600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130cd9190614475565b60405180910390a3600193505050505b9392505050565b600083831115829061312c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312391906142b3565b60405180910390fd5b506000838561313b919061466b565b9050809150509392505050565b600061318a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506130e4565b905092915050565b600061321d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132b282600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133529190614475565b60405180910390a3600190509392505050565b6001601860146101000a81548160ff02191690831515021790555060006133be60026133b06011546133a2601554876136f390919063ffffffff16565b61373d90919063ffffffff16565b6136f390919063ffffffff16565b905060006133d5828461314890919063ffffffff16565b90506133e0816137b8565b6000479050600061341161340060026011546136f390919063ffffffff16565b60155461314890919063ffffffff16565b9050600061344f6002613441846134336011548861373d90919063ffffffff16565b6136f390919063ffffffff16565b6136f390919063ffffffff16565b9050600061347a8361346c6013548761373d90919063ffffffff16565b6136f390919063ffffffff16565b905060006134a382613495858861314890919063ffffffff16565b61314890919063ffffffff16565b90506134d1600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613a43565b6134fd601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613a43565b6135078784613a8e565b505050505050506000601860146101000a81548160ff02191690831515021790555050565b600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146135b1576135ac606461359e6015548661373d90919063ffffffff16565b6136f390919063ffffffff16565b6135da565b6135d960646135cb6016548661373d90919063ffffffff16565b6136f390919063ffffffff16565b5b905061362e81600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136ce9190614475565b60405180910390a36136e9818461314890919063ffffffff16565b9150509392505050565b600061373583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b82565b905092915050565b60008083141561375057600090506137b2565b6000828461375e9190614611565b905082848261376d91906145e0565b146137ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137a490614395565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff8111156137d5576137d461486f565b5b6040519080825280602002602001820160405280156138035781602001602082028036833780820191505090505b509050308160008151811061381b5761381a614840565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156138bd57600080fd5b505afa1580156138d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138f59190613c7b565b8160018151811061390957613908614840565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061397030601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612838565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016139d49594939291906144c0565b600060405180830381600087803b1580156139ee57600080fd5b505af1158015613a02573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613a37929190614490565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613a89573d6000803e3d6000fd5b505050565b613abb30601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612838565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613b076119f8565b426040518863ffffffff1660e01b8152600401613b299695949392919061421c565b6060604051808303818588803b158015613b4257600080fd5b505af1158015613b56573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613b7b9190613e15565b5050505050565b60008083118290613bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bc091906142b3565b60405180910390fd5b5060008385613bd891906145e0565b9050809150509392505050565b600081359050613bf481614c1f565b92915050565b600081519050613c0981614c1f565b92915050565b600081359050613c1e81614c36565b92915050565b600081359050613c3381614c4d565b92915050565b600081519050613c4881614c4d565b92915050565b600060208284031215613c6457613c6361489e565b5b6000613c7284828501613be5565b91505092915050565b600060208284031215613c9157613c9061489e565b5b6000613c9f84828501613bfa565b91505092915050565b60008060408385031215613cbf57613cbe61489e565b5b6000613ccd85828601613be5565b9250506020613cde85828601613be5565b9150509250929050565b600080600060608486031215613d0157613d0061489e565b5b6000613d0f86828701613be5565b9350506020613d2086828701613be5565b9250506040613d3186828701613c24565b9150509250925092565b60008060408385031215613d5257613d5161489e565b5b6000613d6085828601613be5565b9250506020613d7185828601613c0f565b9150509250929050565b60008060408385031215613d9257613d9161489e565b5b6000613da085828601613be5565b9250506020613db185828601613c24565b9150509250929050565b600060208284031215613dd157613dd061489e565b5b6000613ddf84828501613c0f565b91505092915050565b600060208284031215613dfe57613dfd61489e565b5b6000613e0c84828501613c24565b91505092915050565b600080600060608486031215613e2e57613e2d61489e565b5b6000613e3c86828701613c39565b9350506020613e4d86828701613c39565b9250506040613e5e86828701613c39565b9150509250925092565b60008060008060808587031215613e8257613e8161489e565b5b6000613e9087828801613c24565b9450506020613ea187828801613c24565b9350506040613eb287828801613c24565b9250506060613ec387828801613c24565b91505092959194509250565b6000613edb8383613ef6565b60208301905092915050565b613ef0816146b1565b82525050565b613eff8161469f565b82525050565b613f0e8161469f565b82525050565b6000613f1f82614545565b613f298185614568565b9350613f3483614535565b8060005b83811015613f65578151613f4c8882613ecf565b9750613f578361455b565b925050600181019050613f38565b5085935050505092915050565b613f7b816146c3565b82525050565b613f8a81614706565b82525050565b613f9981614718565b82525050565b6000613faa82614550565b613fb48185614579565b9350613fc481856020860161474e565b613fcd816148a3565b840191505092915050565b6000613fe5602383614579565b9150613ff0826148b4565b604082019050919050565b6000614008602683614579565b915061401382614903565b604082019050919050565b600061402b602283614579565b915061403682614952565b604082019050919050565b600061404e601b83614579565b9150614059826149a1565b602082019050919050565b6000614071601f83614579565b915061407c826149ca565b602082019050919050565b6000614094602883614579565b915061409f826149f3565b604082019050919050565b60006140b7602183614579565b91506140c282614a42565b604082019050919050565b60006140da602083614579565b91506140e582614a91565b602082019050919050565b60006140fd602983614579565b915061410882614aba565b604082019050919050565b6000614120602583614579565b915061412b82614b09565b604082019050919050565b6000614143602483614579565b915061414e82614b58565b604082019050919050565b6000614166601f83614579565b915061417182614ba7565b602082019050919050565b6000614189602383614579565b915061419482614bd0565b604082019050919050565b6141a8816146ef565b82525050565b6141b7816146f9565b82525050565b60006020820190506141d26000830184613f05565b92915050565b60006020820190506141ed6000830184613ee7565b92915050565b60006040820190506142086000830185613f05565b6142156020830184613f05565b9392505050565b600060c0820190506142316000830189613f05565b61423e602083018861419f565b61424b6040830187613f90565b6142586060830186613f90565b6142656080830185613f05565b61427260a083018461419f565b979650505050505050565b60006020820190506142926000830184613f72565b92915050565b60006020820190506142ad6000830184613f81565b92915050565b600060208201905081810360008301526142cd8184613f9f565b905092915050565b600060208201905081810360008301526142ee81613fd8565b9050919050565b6000602082019050818103600083015261430e81613ffb565b9050919050565b6000602082019050818103600083015261432e8161401e565b9050919050565b6000602082019050818103600083015261434e81614041565b9050919050565b6000602082019050818103600083015261436e81614064565b9050919050565b6000602082019050818103600083015261438e81614087565b9050919050565b600060208201905081810360008301526143ae816140aa565b9050919050565b600060208201905081810360008301526143ce816140cd565b9050919050565b600060208201905081810360008301526143ee816140f0565b9050919050565b6000602082019050818103600083015261440e81614113565b9050919050565b6000602082019050818103600083015261442e81614136565b9050919050565b6000602082019050818103600083015261444e81614159565b9050919050565b6000602082019050818103600083015261446e8161417c565b9050919050565b600060208201905061448a600083018461419f565b92915050565b60006040820190506144a5600083018561419f565b81810360208301526144b78184613f14565b90509392505050565b600060a0820190506144d5600083018861419f565b6144e26020830187613f90565b81810360408301526144f48186613f14565b90506145036060830185613f05565b614510608083018461419f565b9695505050505050565b600060208201905061452f60008301846141ae565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614595826146ef565b91506145a0836146ef565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145d5576145d46147b3565b5b828201905092915050565b60006145eb826146ef565b91506145f6836146ef565b925082614606576146056147e2565b5b828204905092915050565b600061461c826146ef565b9150614627836146ef565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146605761465f6147b3565b5b828202905092915050565b6000614676826146ef565b9150614681836146ef565b925082821015614694576146936147b3565b5b828203905092915050565b60006146aa826146cf565b9050919050565b60006146bc826146cf565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006147118261472a565b9050919050565b6000614723826146ef565b9050919050565b60006147358261473c565b9050919050565b6000614747826146cf565b9050919050565b60005b8381101561476c578082015181840152602081019050614751565b8381111561477b576000848401525b50505050565b6000600282049050600182168061479957607f821691505b602082108114156147ad576147ac614811565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f546f2f66726f6d206164647265737320697320626c61636b6c69737465642100600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b614c288161469f565b8114614c3357600080fd5b50565b614c3f816146c3565b8114614c4a57600080fd5b50565b614c56816146ef565b8114614c6157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220656c5d699e3fad827a17d874ff174495082b2b943358e3b4931d5a8322a5831964736f6c63430008070033
Deployed Bytecode
0x6080604052600436106103035760003560e01c80637d1db4a511610190578063c867d60b116100dc578063e5c5369311610095578063f1d5f5171161006f578063f1d5f51714610b93578063f2fde38b14610bbc578063f872858a14610be5578063fe575a8714610c105761030a565b8063e5c5369314610b18578063ec28438a14610b41578063ef422a1814610b6a5761030a565b8063c867d60b146109f4578063d158272d14610a31578063da00097d14610a5c578063dbc1af7e14610a87578063dd46706414610ab2578063dd62ed3e14610adb5761030a565b8063a12a7d6111610149578063a69df4b511610123578063a69df4b51461094c578063a9059cbb14610963578063aa45026b146109a0578063c49b9a80146109cb5761030a565b8063a12a7d61146108bd578063a457c2d7146108e6578063a5d69d1f146109235761030a565b80637d1db4a5146107bb578063807c2d9c146107e65780638da5cb5b1461081157806395d89b411461083c578063a0545aac14610867578063a073d37f146108925761030a565b8063395093511161024f5780635342acb411610208578063602bc62b116101e2578063602bc62b146107115780636bc87c3a1461073c57806370a0823114610767578063715018a6146107a45761030a565b80635342acb41461066c578063557ed1ba146106a95780635881f3ef146106d45761030a565b8063395093511461055e5780633b97084a1461059b578063455a4396146105c457806349bd5a5e146105ed5780634a74bb02146106185780634cb80fd5146106435761030a565b80632198cf6c116102bc5780632563ae83116102965780632563ae83146104b457806327c8f835146104dd5780632b112e4914610508578063313ce567146105335761030a565b80632198cf6c1461042357806322976e0d1461044c57806323b872dd146104775761030a565b806306fdde031461030f578063095ea7b31461033a5780630e038813146103775780630fcd55d7146103a25780631694505e146103cd57806318160ddd146103f85761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c4d565b60405161033191906142b3565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c9190613d7b565b610cdf565b60405161036e919061427d565b60405180910390f35b34801561038357600080fd5b5061038c610cfd565b60405161039991906141d8565b60405180910390f35b3480156103ae57600080fd5b506103b7610d23565b6040516103c49190614475565b60405180910390f35b3480156103d957600080fd5b506103e2610d29565b6040516103ef9190614298565b60405180910390f35b34801561040457600080fd5b5061040d610d4f565b60405161041a9190614475565b60405180910390f35b34801561042f57600080fd5b5061044a60048036038101906104459190613d3b565b610d59565b005b34801561045857600080fd5b50610461610e49565b60405161046e9190614475565b60405180910390f35b34801561048357600080fd5b5061049e60048036038101906104999190613ce8565b610e4f565b6040516104ab919061427d565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d69190613dbb565b610f29565b005b3480156104e957600080fd5b506104f2610fdb565b6040516104ff91906141bd565b60405180910390f35b34801561051457600080fd5b5061051d610fff565b60405161052a9190614475565b60405180910390f35b34801561053f57600080fd5b50610548611043565b604051610555919061451a565b60405180910390f35b34801561056a57600080fd5b5061058560048036038101906105809190613d7b565b61105a565b604051610592919061427d565b60405180910390f35b3480156105a757600080fd5b506105c260048036038101906105bd9190613de8565b61110d565b005b3480156105d057600080fd5b506105eb60048036038101906105e69190613d3b565b6111ac565b005b3480156105f957600080fd5b5061060261129c565b60405161060f91906141bd565b60405180910390f35b34801561062457600080fd5b5061062d6112c2565b60405161063a919061427d565b60405180910390f35b34801561064f57600080fd5b5061066a60048036038101906106659190613c4e565b6112d5565b005b34801561067857600080fd5b50610693600480360381019061068e9190613c4e565b6113ae565b6040516106a0919061427d565b60405180910390f35b3480156106b557600080fd5b506106be6113ce565b6040516106cb9190614475565b60405180910390f35b3480156106e057600080fd5b506106fb60048036038101906106f69190613c4e565b6113d6565b60405161070891906141bd565b60405180910390f35b34801561071d57600080fd5b50610726611840565b6040516107339190614475565b60405180910390f35b34801561074857600080fd5b5061075161184a565b60405161075e9190614475565b60405180910390f35b34801561077357600080fd5b5061078e60048036038101906107899190613c4e565b611850565b60405161079b9190614475565b60405180910390f35b3480156107b057600080fd5b506107b9611899565b005b3480156107c757600080fd5b506107d06119ec565b6040516107dd9190614475565b60405180910390f35b3480156107f257600080fd5b506107fb6119f2565b6040516108089190614475565b60405180910390f35b34801561081d57600080fd5b506108266119f8565b60405161083391906141bd565b60405180910390f35b34801561084857600080fd5b50610851611a21565b60405161085e91906142b3565b60405180910390f35b34801561087357600080fd5b5061087c611ab3565b6040516108899190614475565b60405180910390f35b34801561089e57600080fd5b506108a7611ab9565b6040516108b49190614475565b60405180910390f35b3480156108c957600080fd5b506108e460048036038101906108df9190613e68565b611ac3565b005b3480156108f257600080fd5b5061090d60048036038101906109089190613d7b565b611bc8565b60405161091a919061427d565b60405180910390f35b34801561092f57600080fd5b5061094a60048036038101906109459190613dbb565b611c95565b005b34801561095857600080fd5b50610961611d47565b005b34801561096f57600080fd5b5061098a60048036038101906109859190613d7b565b611f1b565b604051610997919061427d565b60405180910390f35b3480156109ac57600080fd5b506109b5611f3a565b6040516109c29190614475565b60405180910390f35b3480156109d757600080fd5b506109f260048036038101906109ed9190613dbb565b611f40565b005b348015610a0057600080fd5b50610a1b6004803603810190610a169190613c4e565b612029565b604051610a28919061427d565b60405180910390f35b348015610a3d57600080fd5b50610a46612049565b604051610a5391906141d8565b60405180910390f35b348015610a6857600080fd5b50610a7161206f565b604051610a7e919061427d565b60405180910390f35b348015610a9357600080fd5b50610a9c612082565b604051610aa99190614475565b60405180910390f35b348015610abe57600080fd5b50610ad96004803603810190610ad49190613de8565b612088565b005b348015610ae757600080fd5b50610b026004803603810190610afd9190613ca8565b61224f565b604051610b0f9190614475565b60405180910390f35b348015610b2457600080fd5b50610b3f6004803603810190610b3a9190613c4e565b6122d6565b005b348015610b4d57600080fd5b50610b686004803603810190610b639190613de8565b6123af565b005b348015610b7657600080fd5b50610b916004803603810190610b8c9190613d3b565b61244e565b005b348015610b9f57600080fd5b50610bba6004803603810190610bb59190613de8565b61253e565b005b348015610bc857600080fd5b50610be36004803603810190610bde9190613c4e565b6125dd565b005b348015610bf157600080fd5b50610bfa61279f565b604051610c07919061427d565b60405180910390f35b348015610c1c57600080fd5b50610c376004803603810190610c329190613c4e565b6127b2565b604051610c44919061427d565b60405180910390f35b606060038054610c5c90614781565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8890614781565b8015610cd55780601f10610caa57610100808354040283529160200191610cd5565b820191906000526020600020905b815481529060010190602001808311610cb857829003601f168201915b5050505050905090565b6000610cf3610cec612830565b8484612838565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600654905090565b610d61612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de5906143b5565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b6000610e5c848484612a03565b50610f1e84610e69612830565b610f1985604051806060016040528060288152602001614c6560289139600b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ecf612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b612838565b600190509392505050565b610f31612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb5906143b5565b60405180910390fd5b80601860176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b600061103e61102d7f000000000000000000000000000000000000000000000000000000000000dead611850565b60065461314890919063ffffffff16565b905090565b6000600560009054906101000a900460ff16905090565b6000611103611067612830565b846110fe85600b6000611078612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b612838565b6001905092915050565b611115612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611199906143b5565b60405180910390fd5b8060098190555050565b6111b4612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611241576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611238906143b5565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860159054906101000a900460ff1681565b6112dd612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461136a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611361906143b5565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c6020528060005260406000206000915054906101000a900460ff1681565b600042905090565b60006113e0612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461146d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611464906143b5565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156114b857600080fd5b505afa1580156114cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f09190613c7b565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561155257600080fd5b505afa158015611566573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158a9190613c7b565b6040518363ffffffff1660e01b81526004016115a79291906141f3565b60206040518083038186803b1580156115bf57600080fd5b505afa1580156115d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f79190613c7b565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117b8578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561167457600080fd5b505afa158015611688573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ac9190613c7b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561170e57600080fd5b505afa158015611722573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117469190613c7b565b6040518363ffffffff1660e01b81526004016117639291906141f3565b602060405180830381600087803b15801561177d57600080fd5b505af1158015611791573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b59190613c7b565b91505b81601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050919050565b6000600254905090565b60115481565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118a1612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461192e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611925906143b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60075481565b60085481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611a3090614781565b80601f0160208091040260200160405190810160405280929190818152602001828054611a5c90614781565b8015611aa95780601f10611a7e57610100808354040283529160200191611aa9565b820191906000526020600020905b815481529060010190602001808311611a8c57829003601f168201915b5050505050905090565b60165481565b6000600954905090565b611acb612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4f906143b5565b60405180910390fd5b83601181905550826012819055508160138190555080601481905550611b9f601354611b916012546011546127d290919063ffffffff16565b6127d290919063ffffffff16565b601581905550611bbc6014546015546127d290919063ffffffff16565b60168190555050505050565b6000611c8b611bd5612830565b84611c8685604051806060016040528060258152602001614c8d60259139600b6000611bff612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b612838565b6001905092915050565b611c9d612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d21906143b5565b60405180910390fd5b80601860166101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dce90614455565b60405180910390fd5b6002544211611e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1290614435565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611f2f611f28612830565b8484612a03565b506001905092915050565b60135481565b611f48612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcc906143b5565b60405180910390fd5b80601860156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161201e919061427d565b60405180910390a150565b600d6020528060005260406000206000915054906101000a900460ff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860169054906101000a900460ff1681565b60145481565b612090612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461211d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612114906143b5565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080426121cb919061458a565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6122de612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461236b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612362906143b5565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6123b7612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243b906143b5565b60405180910390fd5b8060078190555050565b612456612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124da906143b5565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612546612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ca906143b5565b60405180910390fd5b8060088190555050565b6125e5612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612672576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612669906143b5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156126e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d9906142f5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601860179054906101000a900460ff1681565b600e6020528060005260406000206000915054906101000a900460ff1681565b60008082846127e1919061458a565b905083811015612826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281d90614335565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289f90614415565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290f90614315565b60405180910390fd5b80600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129f69190614475565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6b906143f5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adb906142d5565b60405180910390fd5b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b885750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbe90614355565b60405180910390fd5b60008211612c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c01906143d5565b60405180910390fd5b601860149054906101000a900460ff1615612c3157612c2a848484613192565b90506130dd565b612c396119f8565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612ca75750612c776119f8565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612cf257600754821115612cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce890614375565b60405180910390fd5b5b6000612cfd30611850565b905060006009548210159050808015612d235750601860149054906101000a900460ff16155b8015612d7d5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015612d955750601860159054906101000a900460ff165b15612dbf57601860169054906101000a900460ff1615612db55760095491505b612dbe82613365565b5b612e48846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f2e5750600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f4257612f3d87878761352c565b612f44565b845b9050601860179054906101000a900460ff168015612fac5750600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fdb57600854612fcf82612fc189611850565b6127d290919063ffffffff16565b1115612fda57600080fd5b5b61302d81600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130cd9190614475565b60405180910390a3600193505050505b9392505050565b600083831115829061312c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312391906142b3565b60405180910390fd5b506000838561313b919061466b565b9050809150509392505050565b600061318a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506130e4565b905092915050565b600061321d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132b282600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133529190614475565b60405180910390a3600190509392505050565b6001601860146101000a81548160ff02191690831515021790555060006133be60026133b06011546133a2601554876136f390919063ffffffff16565b61373d90919063ffffffff16565b6136f390919063ffffffff16565b905060006133d5828461314890919063ffffffff16565b90506133e0816137b8565b6000479050600061341161340060026011546136f390919063ffffffff16565b60155461314890919063ffffffff16565b9050600061344f6002613441846134336011548861373d90919063ffffffff16565b6136f390919063ffffffff16565b6136f390919063ffffffff16565b9050600061347a8361346c6013548761373d90919063ffffffff16565b6136f390919063ffffffff16565b905060006134a382613495858861314890919063ffffffff16565b61314890919063ffffffff16565b90506134d1600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613a43565b6134fd601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613a43565b6135078784613a8e565b505050505050506000601860146101000a81548160ff02191690831515021790555050565b600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146135b1576135ac606461359e6015548661373d90919063ffffffff16565b6136f390919063ffffffff16565b6135da565b6135d960646135cb6016548661373d90919063ffffffff16565b6136f390919063ffffffff16565b5b905061362e81600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136ce9190614475565b60405180910390a36136e9818461314890919063ffffffff16565b9150509392505050565b600061373583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b82565b905092915050565b60008083141561375057600090506137b2565b6000828461375e9190614611565b905082848261376d91906145e0565b146137ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137a490614395565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff8111156137d5576137d461486f565b5b6040519080825280602002602001820160405280156138035781602001602082028036833780820191505090505b509050308160008151811061381b5761381a614840565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156138bd57600080fd5b505afa1580156138d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138f59190613c7b565b8160018151811061390957613908614840565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061397030601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612838565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016139d49594939291906144c0565b600060405180830381600087803b1580156139ee57600080fd5b505af1158015613a02573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613a37929190614490565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613a89573d6000803e3d6000fd5b505050565b613abb30601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612838565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613b076119f8565b426040518863ffffffff1660e01b8152600401613b299695949392919061421c565b6060604051808303818588803b158015613b4257600080fd5b505af1158015613b56573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613b7b9190613e15565b5050505050565b60008083118290613bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bc091906142b3565b60405180910390fd5b5060008385613bd891906145e0565b9050809150509392505050565b600081359050613bf481614c1f565b92915050565b600081519050613c0981614c1f565b92915050565b600081359050613c1e81614c36565b92915050565b600081359050613c3381614c4d565b92915050565b600081519050613c4881614c4d565b92915050565b600060208284031215613c6457613c6361489e565b5b6000613c7284828501613be5565b91505092915050565b600060208284031215613c9157613c9061489e565b5b6000613c9f84828501613bfa565b91505092915050565b60008060408385031215613cbf57613cbe61489e565b5b6000613ccd85828601613be5565b9250506020613cde85828601613be5565b9150509250929050565b600080600060608486031215613d0157613d0061489e565b5b6000613d0f86828701613be5565b9350506020613d2086828701613be5565b9250506040613d3186828701613c24565b9150509250925092565b60008060408385031215613d5257613d5161489e565b5b6000613d6085828601613be5565b9250506020613d7185828601613c0f565b9150509250929050565b60008060408385031215613d9257613d9161489e565b5b6000613da085828601613be5565b9250506020613db185828601613c24565b9150509250929050565b600060208284031215613dd157613dd061489e565b5b6000613ddf84828501613c0f565b91505092915050565b600060208284031215613dfe57613dfd61489e565b5b6000613e0c84828501613c24565b91505092915050565b600080600060608486031215613e2e57613e2d61489e565b5b6000613e3c86828701613c39565b9350506020613e4d86828701613c39565b9250506040613e5e86828701613c39565b9150509250925092565b60008060008060808587031215613e8257613e8161489e565b5b6000613e9087828801613c24565b9450506020613ea187828801613c24565b9350506040613eb287828801613c24565b9250506060613ec387828801613c24565b91505092959194509250565b6000613edb8383613ef6565b60208301905092915050565b613ef0816146b1565b82525050565b613eff8161469f565b82525050565b613f0e8161469f565b82525050565b6000613f1f82614545565b613f298185614568565b9350613f3483614535565b8060005b83811015613f65578151613f4c8882613ecf565b9750613f578361455b565b925050600181019050613f38565b5085935050505092915050565b613f7b816146c3565b82525050565b613f8a81614706565b82525050565b613f9981614718565b82525050565b6000613faa82614550565b613fb48185614579565b9350613fc481856020860161474e565b613fcd816148a3565b840191505092915050565b6000613fe5602383614579565b9150613ff0826148b4565b604082019050919050565b6000614008602683614579565b915061401382614903565b604082019050919050565b600061402b602283614579565b915061403682614952565b604082019050919050565b600061404e601b83614579565b9150614059826149a1565b602082019050919050565b6000614071601f83614579565b915061407c826149ca565b602082019050919050565b6000614094602883614579565b915061409f826149f3565b604082019050919050565b60006140b7602183614579565b91506140c282614a42565b604082019050919050565b60006140da602083614579565b91506140e582614a91565b602082019050919050565b60006140fd602983614579565b915061410882614aba565b604082019050919050565b6000614120602583614579565b915061412b82614b09565b604082019050919050565b6000614143602483614579565b915061414e82614b58565b604082019050919050565b6000614166601f83614579565b915061417182614ba7565b602082019050919050565b6000614189602383614579565b915061419482614bd0565b604082019050919050565b6141a8816146ef565b82525050565b6141b7816146f9565b82525050565b60006020820190506141d26000830184613f05565b92915050565b60006020820190506141ed6000830184613ee7565b92915050565b60006040820190506142086000830185613f05565b6142156020830184613f05565b9392505050565b600060c0820190506142316000830189613f05565b61423e602083018861419f565b61424b6040830187613f90565b6142586060830186613f90565b6142656080830185613f05565b61427260a083018461419f565b979650505050505050565b60006020820190506142926000830184613f72565b92915050565b60006020820190506142ad6000830184613f81565b92915050565b600060208201905081810360008301526142cd8184613f9f565b905092915050565b600060208201905081810360008301526142ee81613fd8565b9050919050565b6000602082019050818103600083015261430e81613ffb565b9050919050565b6000602082019050818103600083015261432e8161401e565b9050919050565b6000602082019050818103600083015261434e81614041565b9050919050565b6000602082019050818103600083015261436e81614064565b9050919050565b6000602082019050818103600083015261438e81614087565b9050919050565b600060208201905081810360008301526143ae816140aa565b9050919050565b600060208201905081810360008301526143ce816140cd565b9050919050565b600060208201905081810360008301526143ee816140f0565b9050919050565b6000602082019050818103600083015261440e81614113565b9050919050565b6000602082019050818103600083015261442e81614136565b9050919050565b6000602082019050818103600083015261444e81614159565b9050919050565b6000602082019050818103600083015261446e8161417c565b9050919050565b600060208201905061448a600083018461419f565b92915050565b60006040820190506144a5600083018561419f565b81810360208301526144b78184613f14565b90509392505050565b600060a0820190506144d5600083018861419f565b6144e26020830187613f90565b81810360408301526144f48186613f14565b90506145036060830185613f05565b614510608083018461419f565b9695505050505050565b600060208201905061452f60008301846141ae565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614595826146ef565b91506145a0836146ef565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145d5576145d46147b3565b5b828201905092915050565b60006145eb826146ef565b91506145f6836146ef565b925082614606576146056147e2565b5b828204905092915050565b600061461c826146ef565b9150614627836146ef565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146605761465f6147b3565b5b828202905092915050565b6000614676826146ef565b9150614681836146ef565b925082821015614694576146936147b3565b5b828203905092915050565b60006146aa826146cf565b9050919050565b60006146bc826146cf565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006147118261472a565b9050919050565b6000614723826146ef565b9050919050565b60006147358261473c565b9050919050565b6000614747826146cf565b9050919050565b60005b8381101561476c578082015181840152602081019050614751565b8381111561477b576000848401525b50505050565b6000600282049050600182168061479957607f821691505b602082108114156147ad576147ac614811565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f546f2f66726f6d206164647265737320697320626c61636b6c69737465642100600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b614c288161469f565b8114614c3357600080fd5b50565b614c3f816146c3565b8114614c4a57600080fd5b50565b614c56816146ef565b8114614c6157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220656c5d699e3fad827a17d874ff174495082b2b943358e3b4931d5a8322a5831964736f6c63430008070033
Deployed Bytecode Sourcemap
15138:12980:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18062:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19362:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16031:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16373:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16446:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18339:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20812:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16261:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23042:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20691:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16132:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21795:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18248:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18731:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21065:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19876:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16494:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16563:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21197:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15747:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6642:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22069:696;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6540:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16222:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18447:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6132:148;;;;;;;;;;;;;:::i;:::-;;15452:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15507:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5907:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18153:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16403:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19234:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20154:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18957:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21658:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6978:305;;;;;;;;;;;;;:::i;:::-;;22867:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16300:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21479:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15804:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15924:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16610:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16334:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6740:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18580:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21344:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20572:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20011:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20955:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6288:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16662:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15863:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18062:83;18099:13;18132:5;18125:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18062:83;:::o;19362:161::-;19437:4;19454:39;19463:12;:10;:12::i;:::-;19477:7;19486:6;19454:8;:39::i;:::-;19511:4;19504:11;;19362:161;;;;:::o;16031:93::-;;;;;;;;;;;;;:::o;16373:23::-;;;;:::o;16446:41::-;;;;;;;;;;;;;:::o;18339:100::-;18392:7;18419:12;;18412:19;;18339:100;:::o;20812:135::-;6051:12;:10;:12::i;:::-;6041:22;;:6;;;;;;;;;;:22;;;6033:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20933:6:::1;20903:19;:27;20923:6;20903:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;20812:135:::0;;:::o;16261:32::-;;;;:::o;23042:313::-;23140:4;23157:36;23167:6;23175:9;23186:6;23157:9;:36::i;:::-;;23204:121;23213:6;23221:12;:10;:12::i;:::-;23235:89;23273:6;23235:89;;;;;;;;;;;;;;;;;:11;:19;23247:6;23235:19;;;;;;;;;;;;;;;:33;23255:12;:10;:12::i;:::-;23235:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;23204:8;:121::i;:::-;23343:4;23336:11;;23042:313;;;;;:::o;20691:113::-;6051:12;:10;:12::i;:::-;6041:22;;:6;;;;;;;;;;:22;;;6033:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20788:8:::1;20769:16;;:27;;;;;;;;;;;;;;;;;;20691:113:::0;:::o;16132:81::-;;;:::o;21795:128::-;21848:7;21875:40;21892:22;21902:11;21892:9;:22::i;:::-;21875:12;;:16;;:40;;;;:::i;:::-;21868:47;;21795:128;:::o;18248:83::-;18289:5;18314:9;;;;;;;;;;;18307:16;;18248:83;:::o;18731:218::-;18819:4;18836:83;18845:12;:10;:12::i;:::-;18859:7;18868:50;18907:10;18868:11;:25;18880:12;:10;:12::i;:::-;18868:25;;;;;;;;;;;;;;;:34;18894:7;18868:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18836:8;:83::i;:::-;18937:4;18930:11;;18731:218;;;;:::o;21065:124::-;6051:12;:10;:12::i;:::-;6041:22;;:6;;;;;;;;;;:22;;;6033:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21173:8:::1;21147:23;:34;;;;21065:124:::0;:::o;19876:127::-;6051:12;:10;:12::i;:::-;6041:22;;:6;;;;;;;;;;:22;;;6033:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19987:8:::1;19962:13;:22;19976:7;19962:22;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;19876:127:::0;;:::o;16494:28::-;;;;;;;;;;;;;:::o;16563:40::-;;;;;;;;;;;;;:::o;21197:139::-;6051:12;:10;:12::i;:::-;6041:22;;:6;;;;;;;;;;:22;;;6033:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21317:10:::1;21284:22;;:44;;;;;;;;;;;;;;;;;;21197:139:::0;:::o;15747:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;6642:90::-;6682:7;6709:15;6702:22;;6642:90;:::o;22069:696::-;22149:22;6051:12;:10;:12::i;:::-;6041:22;;:6;;;;;;;;;;:22;;;6033:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22186:35:::1;22243:16;22186:74;;22309:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22291:53;;;22353:4;22360:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22291:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22274:110;;22426:1;22400:28;;:14;:28;;;22397:225;;;22514:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22496:74;;;22579:4;22586:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22496:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22479:131;;22397:225;22650:14;22634:13;;:30;;;;;;;;;;;;;;;;;;22716:16;22698:15;;:34;;;;;;;;;;;;;;;;;;22173:592;22069:696:::0;;;:::o;6540:90::-;6586:7;6613:9;;6606:16;;6540:90;:::o;16222:32::-;;;;:::o;18447:119::-;18513:7;18540:9;:18;18550:7;18540:18;;;;;;;;;;;;;;;;18533:25;;18447:119;;;:::o;6132:148::-;6051:12;:10;:12::i;:::-;6041:22;;:6;;;;;;;;;;:22;;;6033:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6239:1:::1;6202:40;;6223:6;::::0;::::1;;;;;;;;6202:40;;;;;;;;;;;;6270:1;6253:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6132:148::o:0;15452:48::-;;;;:::o;15507:46::-;;;;:::o;5907:79::-;5945:7;5972:6;;;;;;;;;;;5965:13;;5907:79;:::o;18153:87::-;18192:13;18225:7;18218:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18153:87;:::o;16403:26::-;;;;:::o;19234:120::-;19296:7;19323:23;;19316:30;;19234:120;:::o;20154:410::-;6051:12;:10;:12::i;:::-;6041:22;;:6;;;;;;;;;;:22;;;6033:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20318:15:::1;20302:13;:31;;;;20360:15;20344:13;:31;;;;20396:13;20386:7;:23;;;;20434:15;20420:11;:29;;;;20469:45;20506:7;;20469:32;20487:13;;20469;;:17;;:32;;;;:::i;:::-;:36;;:45;;;;:::i;:::-;20462:4;:52;;;;20535:21;20544:11;;20535:4;;:8;;:21;;;;:::i;:::-;20525:7;:31;;;;20154:410:::0;;;;:::o;18957:269::-;19050:4;19067:129;19076:12;:10;:12::i;:::-;19090:7;19099:96;19138:15;19099:96;;;;;;;;;;;;;;;;;:11;:25;19111:12;:10;:12::i;:::-;19099:25;;;;;;;;;;;;;;;:34;19125:7;19099:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19067:8;:129::i;:::-;19214:4;19207:11;;18957:269;;;;:::o;21658:125::-;6051:12;:10;:12::i;:::-;6041:22;;:6;;;;;;;;;;:22;;;6033:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21767:8:::1;21739:25;;:36;;;;;;;;;;;;;;;;;;21658:125:::0;:::o;6978:305::-;7048:10;7030:28;;:14;;;;;;;;;;;:28;;;7022:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;7135:9;;7117:15;:27;7109:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7226:14;;;;;;;;;;;7197:44;;7218:6;;;;;;;;;;7197:44;;;;;;;;;;;;7261:14;;;;;;;;;;;7252:6;;:23;;;;;;;;;;;;;;;;;;6978:305::o;22867:167::-;22945:4;22962:42;22972:12;:10;:12::i;:::-;22986:9;22997:6;22962:9;:42::i;:::-;;23022:4;23015:11;;22867:167;;;;:::o;16300:26::-;;;;:::o;21479:171::-;6051:12;:10;:12::i;:::-;6041:22;;:6;;;;;;;;;;:22;;;6033:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21580:8:::1;21556:21;;:32;;;;;;;;;;;;;;;;;;21604:38;21633:8;21604:38;;;;;;:::i;:::-;;;;;;;;21479:171:::0;:::o;15804:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;15924:99::-;;;;;;;;;;;;;:::o;16610:45::-;;;;;;;;;;;;;:::o;16334:30::-;;;;:::o;6740:226::-;6051:12;:10;:12::i;:::-;6041:22;;:6;;;;;;;;;;:22;;;6033:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6821:6:::1;::::0;::::1;;;;;;;;6804:14;;:23;;;;;;;;;;;;;;;;;;6855:1;6838:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6898:4;6880:15;:22;;;;:::i;:::-;6868:9;:34;;;;6955:1;6918:40;;6939:6;::::0;::::1;;;;;;;;6918:40;;;;;;;;;;;;6740:226:::0;:::o;18580:143::-;18661:7;18688:11;:18;18700:5;18688:18;;;;;;;;;;;;;;;:27;18707:7;18688:27;;;;;;;;;;;;;;;;18681:34;;18580:143;;;;:::o;21344:127::-;6051:12;:10;:12::i;:::-;6041:22;;:6;;;;;;;;;;:22;;;6033:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21452:10:::1;21425:16;;:38;;;;;;;;;;;;;;;;;;21344:127:::0;:::o;20572:111::-;6051:12;:10;:12::i;:::-;6041:22;;:6;;;;;;;;;;:22;;;6033:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20664:11:::1;20649:12;:26;;;;20572:111:::0;:::o;20011:135::-;6051:12;:10;:12::i;:::-;6041:22;;:6;;;;;;;;;;:22;;;6033:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20130:8:::1;20101:17;:26;20119:7;20101:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;20011:135:::0;;:::o;20955:102::-;6051:12;:10;:12::i;:::-;6041:22;;:6;;;;;;;;;;:22;;;6033:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21041:8:::1;21027:10;:22;;;;20955:102:::0;:::o;6288:244::-;6051:12;:10;:12::i;:::-;6041:22;;:6;;;;;;;;;;:22;;;6033:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6397:1:::1;6377:22;;:8;:22;;;;6369:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6487:8;6458:38;;6479:6;::::0;::::1;;;;;;;;6458:38;;;;;;;;;;;;6516:8;6507:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6288:244:::0;:::o;16662:35::-;;;;;;;;;;;;;:::o;15863:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;1277:181::-;1335:7;1355:9;1371:1;1367;:5;;;;:::i;:::-;1355:17;;1396:1;1391;:6;;1383:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1449:1;1442:8;;;1277:181;;;;:::o;209:115::-;262:15;305:10;290:26;;209:115;:::o;19531:337::-;19641:1;19624:19;;:5;:19;;;;19616:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19722:1;19703:21;;:7;:21;;;;19695:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19806:6;19776:11;:18;19788:5;19776:18;;;;;;;;;;;;;;;:27;19795:7;19776:27;;;;;;;;;;;;;;;:36;;;;19844:7;19828:32;;19837:5;19828:32;;;19853:6;19828:32;;;;;;:::i;:::-;;;;;;;;19531:337;;;:::o;23363:1884::-;23450:4;23495:1;23477:20;;:6;:20;;;;23469:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;23579:1;23558:23;;:9;:23;;;;23550:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;23641:13;:21;23655:6;23641:21;;;;;;;;;;;;;;;;;;;;;;;;;23640:22;:51;;;;;23667:13;:24;23681:9;23667:24;;;;;;;;;;;;;;;;;;;;;;;;;23666:25;23640:51;23632:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;23755:1;23746:6;:10;23738:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23826:16;;;;;;;;;;;23823:1417;;;23876:41;23891:6;23899:9;23910:6;23876:14;:41::i;:::-;23869:48;;;;23823:1417;23982:7;:5;:7::i;:::-;23972:17;;:6;:17;;;;:41;;;;;24006:7;:5;:7::i;:::-;23993:20;;:9;:20;;;;23972:41;23969:156;;;24052:12;;24042:6;:22;;24034:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;23969:156;24153:28;24184:24;24202:4;24184:9;:24::i;:::-;24153:55;;24223:28;24278:23;;24254:20;:47;;24223:78;;24334:23;:44;;;;;24362:16;;;;;;;;;;;24361:17;24334:44;:71;;;;;24392:13;;;;;;;;;;;24382:23;;:6;:23;;;;24334:71;:96;;;;;24409:21;;;;;;;;;;;24334:96;24330:307;;;24468:25;;;;;;;;;;;24465:97;;;24539:23;;24516:46;;24465:97;24581:36;24596:20;24581:14;:36::i;:::-;24330:307;24673:53;24695:6;24673:53;;;;;;;;;;;;;;;;;:9;:17;24683:6;24673:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;24653:9;:17;24663:6;24653:17;;;;;;;;;;;;;;;:73;;;;24743:19;24766:17;:25;24784:6;24766:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;24795:17;:28;24813:9;24795:28;;;;;;;;;;;;;;;;;;;;;;;;;24766:57;24765:148;;24879:34;24887:6;24895:9;24906:6;24879:7;:34::i;:::-;24765:148;;;24870:6;24765:148;24743:170;;24933:16;;;;;;;;;;;:51;;;;;24954:19;:30;24974:9;24954:30;;;;;;;;;;;;;;;;;;;;;;;;;24953:31;24933:51;24930:133;;;25052:10;;25011:37;25036:11;25011:20;25021:9;25011;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;25003:60;;;;;;24930:133;25103:37;25128:11;25103:9;:20;25113:9;25103:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;25080:9;:20;25090:9;25080:20;;;;;;;;;;;;;;;:60;;;;25179:9;25162:40;;25171:6;25162:40;;;25190:11;25162:40;;;;;;:::i;:::-;;;;;;;;25224:4;25217:11;;;;;23363:1884;;;;;;:::o;1610:192::-;1696:7;1729:1;1724;:6;;1732:12;1716:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1756:9;1772:1;1768;:5;;;;:::i;:::-;1756:17;;1793:1;1786:8;;;1610:192;;;;;:::o;1466:136::-;1524:7;1551:43;1555:1;1558;1551:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1544:50;;1466:136;;;;:::o;25255:330::-;25348:4;25385:53;25407:6;25385:53;;;;;;;;;;;;;;;;;:9;:17;25395:6;25385:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;25365:9;:17;25375:6;25365:17;;;;;;;;;;;;;;;:73;;;;25472:32;25497:6;25472:9;:20;25482:9;25472:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;25449:9;:20;25459:9;25449:20;;;;;;;;;;;;;;;:55;;;;25537:9;25520:35;;25529:6;25520:35;;;25548:6;25520:35;;;;;;:::i;:::-;;;;;;;;25573:4;25566:11;;25255:330;;;;;:::o;25593:868::-;17139:4;17120:16;;:23;;;;;;;;;;;;;;;;;;25674:19:::1;25696:43;25737:1;25696:36;25718:13;;25696:17;25708:4;;25696:7;:11;;:17;;;;:::i;:::-;:21;;:36;;;;:::i;:::-;:40;;:43;;;;:::i;:::-;25674:65;;25750:21;25774:24;25786:11;25774:7;:11;;:24;;;;:::i;:::-;25750:48;;25811:31;25828:13;25811:16;:31::i;:::-;25853:22;25878:21;25853:46;;25912:19;25934:30;25943:20;25961:1;25943:13;;:17;;:20;;;;:::i;:::-;25934:4;;:8;;:30;;;;:::i;:::-;25912:52;;25985:26;26014:57;26069:1;26014:50;26052:11;26014:33;26033:13;;26014:14;:18;;:33;;;;:::i;:::-;:37;;:50;;;;:::i;:::-;:54;;:57;;;;:::i;:::-;25985:86;;26082:24;26109:44;26141:11;26109:27;26128:7;;26109:14;:18;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;26082:71;;26164:26;26193:60;26236:16;26193:38;26212:18;26193:14;:18;;:38;;;;:::i;:::-;:42;;:60;;;;:::i;:::-;26164:89;;26266:64;26287:22;;;;;;;;;;;26311:18;26266:20;:64::i;:::-;26341:56;26362:16;;;;;;;;;;;26380;26341:20;:56::i;:::-;26408:45;26421:11;26434:18;26408:12;:45::i;:::-;25654:807;;;;;;;17185:5:::0;17166:16;;:24;;;;;;;;;;;;;;;;;;25593:868;:::o;27668:441::-;27754:7;27784:17;27817:13;;;;;;;;;;;27804:26;;:9;:26;;;:119;;27898:25;27919:3;27898:16;27909:4;;27898:6;:10;;:16;;;;:::i;:::-;:20;;:25;;;;:::i;:::-;27804:119;;;27833:28;27857:3;27833:19;27844:7;;27833:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;27804:119;27784:139;;27963:39;27992:9;27963;:24;27981:4;27963:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;27936:9;:24;27954:4;27936:24;;;;;;;;;;;;;;;:66;;;;28043:4;28018:42;;28027:6;28018:42;;;28050:9;28018:42;;;;;;:::i;:::-;;;;;;;;28080:21;28091:9;28080:6;:10;;:21;;;;:::i;:::-;28073:28;;;27668:441;;;;;:::o;2068:132::-;2126:7;2153:39;2157:1;2160;2153:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2146:46;;2068:132;;;;:::o;1810:250::-;1868:7;1897:1;1892;:6;1888:47;;;1922:1;1915:8;;;;1888:47;1947:9;1963:1;1959;:5;;;;:::i;:::-;1947:17;;1992:1;1987;1983;:5;;;;:::i;:::-;:10;1975:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2051:1;2044:8;;;1810:250;;;;;:::o;26473:666::-;26599:21;26637:1;26623:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26599:40;;26668:4;26650;26655:1;26650:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;26694:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26684:4;26689:1;26684:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;26729:62;26746:4;26761:15;;;;;;;;;;;26779:11;26729:8;:62::i;:::-;26830:15;;;;;;;;;;;:66;;;26911:11;26937:1;26981:4;27008;27044:15;26830:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27096:35;27113:11;27126:4;27096:35;;;;;;;:::i;:::-;;;;;;;;26528:611;26473:666;:::o;21931:126::-;22023:9;:18;;:26;22042:6;22023:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21931:126;;:::o;27147:513::-;27295:62;27312:4;27327:15;;;;;;;;;;;27345:11;27295:8;:62::i;:::-;27400:15;;;;;;;;;;;:31;;;27439:9;27472:4;27492:11;27518:1;27561;27604:7;:5;:7::i;:::-;27626:15;27400:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27147:513;;:::o;2208:278::-;2294:7;2326:1;2322;:5;2329:12;2314:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2353:9;2369:1;2365;:5;;;;:::i;:::-;2353:17;;2477:1;2470:8;;;2208:278;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;301:133;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;440:139;;;;:::o;585:143::-;642:5;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;585:143;;;;:::o;734:329::-;793:6;842:2;830:9;821:7;817:23;813:32;810:119;;;848:79;;:::i;:::-;810:119;968:1;993:53;1038:7;1029:6;1018:9;1014:22;993:53;:::i;:::-;983:63;;939:117;734:329;;;;:::o;1069:351::-;1139:6;1188:2;1176:9;1167:7;1163:23;1159:32;1156:119;;;1194:79;;:::i;:::-;1156:119;1314:1;1339:64;1395:7;1386:6;1375:9;1371:22;1339:64;:::i;:::-;1329:74;;1285:128;1069:351;;;;:::o;1426:474::-;1494:6;1502;1551:2;1539:9;1530:7;1526:23;1522:32;1519:119;;;1557:79;;:::i;:::-;1519:119;1677:1;1702:53;1747:7;1738:6;1727:9;1723:22;1702:53;:::i;:::-;1692:63;;1648:117;1804:2;1830:53;1875:7;1866:6;1855:9;1851:22;1830:53;:::i;:::-;1820:63;;1775:118;1426:474;;;;;:::o;1906:619::-;1983:6;1991;1999;2048:2;2036:9;2027:7;2023:23;2019:32;2016:119;;;2054:79;;:::i;:::-;2016:119;2174:1;2199:53;2244:7;2235:6;2224:9;2220:22;2199:53;:::i;:::-;2189:63;;2145:117;2301:2;2327:53;2372:7;2363:6;2352:9;2348:22;2327:53;:::i;:::-;2317:63;;2272:118;2429:2;2455:53;2500:7;2491:6;2480:9;2476:22;2455:53;:::i;:::-;2445:63;;2400:118;1906:619;;;;;:::o;2531:468::-;2596:6;2604;2653:2;2641:9;2632:7;2628:23;2624:32;2621:119;;;2659:79;;:::i;:::-;2621:119;2779:1;2804:53;2849:7;2840:6;2829:9;2825:22;2804:53;:::i;:::-;2794:63;;2750:117;2906:2;2932:50;2974:7;2965:6;2954:9;2950:22;2932:50;:::i;:::-;2922:60;;2877:115;2531:468;;;;;:::o;3005:474::-;3073:6;3081;3130:2;3118:9;3109:7;3105:23;3101:32;3098:119;;;3136:79;;:::i;:::-;3098:119;3256:1;3281:53;3326:7;3317:6;3306:9;3302:22;3281:53;:::i;:::-;3271:63;;3227:117;3383:2;3409:53;3454:7;3445:6;3434:9;3430:22;3409:53;:::i;:::-;3399:63;;3354:118;3005:474;;;;;:::o;3485:323::-;3541:6;3590:2;3578:9;3569:7;3565:23;3561:32;3558:119;;;3596:79;;:::i;:::-;3558:119;3716:1;3741:50;3783:7;3774:6;3763:9;3759:22;3741:50;:::i;:::-;3731:60;;3687:114;3485:323;;;;:::o;3814:329::-;3873:6;3922:2;3910:9;3901:7;3897:23;3893:32;3890:119;;;3928:79;;:::i;:::-;3890:119;4048:1;4073:53;4118:7;4109:6;4098:9;4094:22;4073:53;:::i;:::-;4063:63;;4019:117;3814:329;;;;:::o;4149:663::-;4237:6;4245;4253;4302:2;4290:9;4281:7;4277:23;4273:32;4270:119;;;4308:79;;:::i;:::-;4270:119;4428:1;4453:64;4509:7;4500:6;4489:9;4485:22;4453:64;:::i;:::-;4443:74;;4399:128;4566:2;4592:64;4648:7;4639:6;4628:9;4624:22;4592:64;:::i;:::-;4582:74;;4537:129;4705:2;4731:64;4787:7;4778:6;4767:9;4763:22;4731:64;:::i;:::-;4721:74;;4676:129;4149:663;;;;;:::o;4818:765::-;4904:6;4912;4920;4928;4977:3;4965:9;4956:7;4952:23;4948:33;4945:120;;;4984:79;;:::i;:::-;4945:120;5104:1;5129:53;5174:7;5165:6;5154:9;5150:22;5129:53;:::i;:::-;5119:63;;5075:117;5231:2;5257:53;5302:7;5293:6;5282:9;5278:22;5257:53;:::i;:::-;5247:63;;5202:118;5359:2;5385:53;5430:7;5421:6;5410:9;5406:22;5385:53;:::i;:::-;5375:63;;5330:118;5487:2;5513:53;5558:7;5549:6;5538:9;5534:22;5513:53;:::i;:::-;5503:63;;5458:118;4818:765;;;;;;;:::o;5589:179::-;5658:10;5679:46;5721:3;5713:6;5679:46;:::i;:::-;5757:4;5752:3;5748:14;5734:28;;5589:179;;;;:::o;5774:142::-;5877:32;5903:5;5877:32;:::i;:::-;5872:3;5865:45;5774:142;;:::o;5922:108::-;5999:24;6017:5;5999:24;:::i;:::-;5994:3;5987:37;5922:108;;:::o;6036:118::-;6123:24;6141:5;6123:24;:::i;:::-;6118:3;6111:37;6036:118;;:::o;6190:732::-;6309:3;6338:54;6386:5;6338:54;:::i;:::-;6408:86;6487:6;6482:3;6408:86;:::i;:::-;6401:93;;6518:56;6568:5;6518:56;:::i;:::-;6597:7;6628:1;6613:284;6638:6;6635:1;6632:13;6613:284;;;6714:6;6708:13;6741:63;6800:3;6785:13;6741:63;:::i;:::-;6734:70;;6827:60;6880:6;6827:60;:::i;:::-;6817:70;;6673:224;6660:1;6657;6653:9;6648:14;;6613:284;;;6617:14;6913:3;6906:10;;6314:608;;;6190:732;;;;:::o;6928:109::-;7009:21;7024:5;7009:21;:::i;:::-;7004:3;6997:34;6928:109;;:::o;7043:185::-;7157:64;7215:5;7157:64;:::i;:::-;7152:3;7145:77;7043:185;;:::o;7234:147::-;7329:45;7368:5;7329:45;:::i;:::-;7324:3;7317:58;7234:147;;:::o;7387:364::-;7475:3;7503:39;7536:5;7503:39;:::i;:::-;7558:71;7622:6;7617:3;7558:71;:::i;:::-;7551:78;;7638:52;7683:6;7678:3;7671:4;7664:5;7660:16;7638:52;:::i;:::-;7715:29;7737:6;7715:29;:::i;:::-;7710:3;7706:39;7699:46;;7479:272;7387:364;;;;:::o;7757:366::-;7899:3;7920:67;7984:2;7979:3;7920:67;:::i;:::-;7913:74;;7996:93;8085:3;7996:93;:::i;:::-;8114:2;8109:3;8105:12;8098:19;;7757:366;;;:::o;8129:::-;8271:3;8292:67;8356:2;8351:3;8292:67;:::i;:::-;8285:74;;8368:93;8457:3;8368:93;:::i;:::-;8486:2;8481:3;8477:12;8470:19;;8129:366;;;:::o;8501:::-;8643:3;8664:67;8728:2;8723:3;8664:67;:::i;:::-;8657:74;;8740:93;8829:3;8740:93;:::i;:::-;8858:2;8853:3;8849:12;8842:19;;8501:366;;;:::o;8873:::-;9015:3;9036:67;9100:2;9095:3;9036:67;:::i;:::-;9029:74;;9112:93;9201:3;9112:93;:::i;:::-;9230:2;9225:3;9221:12;9214:19;;8873:366;;;:::o;9245:::-;9387:3;9408:67;9472:2;9467:3;9408:67;:::i;:::-;9401:74;;9484:93;9573:3;9484:93;:::i;:::-;9602:2;9597:3;9593:12;9586:19;;9245:366;;;:::o;9617:::-;9759:3;9780:67;9844:2;9839:3;9780:67;:::i;:::-;9773:74;;9856:93;9945:3;9856:93;:::i;:::-;9974:2;9969:3;9965:12;9958:19;;9617:366;;;:::o;9989:::-;10131:3;10152:67;10216:2;10211:3;10152:67;:::i;:::-;10145:74;;10228:93;10317:3;10228:93;:::i;:::-;10346:2;10341:3;10337:12;10330:19;;9989:366;;;:::o;10361:::-;10503:3;10524:67;10588:2;10583:3;10524:67;:::i;:::-;10517:74;;10600:93;10689:3;10600:93;:::i;:::-;10718:2;10713:3;10709:12;10702:19;;10361:366;;;:::o;10733:::-;10875:3;10896:67;10960:2;10955:3;10896:67;:::i;:::-;10889:74;;10972:93;11061:3;10972:93;:::i;:::-;11090:2;11085:3;11081:12;11074:19;;10733:366;;;:::o;11105:::-;11247:3;11268:67;11332:2;11327:3;11268:67;:::i;:::-;11261:74;;11344:93;11433:3;11344:93;:::i;:::-;11462:2;11457:3;11453:12;11446:19;;11105:366;;;:::o;11477:::-;11619:3;11640:67;11704:2;11699:3;11640:67;:::i;:::-;11633:74;;11716:93;11805:3;11716:93;:::i;:::-;11834:2;11829:3;11825:12;11818:19;;11477:366;;;:::o;11849:::-;11991:3;12012:67;12076:2;12071:3;12012:67;:::i;:::-;12005:74;;12088:93;12177:3;12088:93;:::i;:::-;12206:2;12201:3;12197:12;12190:19;;11849:366;;;:::o;12221:::-;12363:3;12384:67;12448:2;12443:3;12384:67;:::i;:::-;12377:74;;12460:93;12549:3;12460:93;:::i;:::-;12578:2;12573:3;12569:12;12562:19;;12221:366;;;:::o;12593:118::-;12680:24;12698:5;12680:24;:::i;:::-;12675:3;12668:37;12593:118;;:::o;12717:112::-;12800:22;12816:5;12800:22;:::i;:::-;12795:3;12788:35;12717:112;;:::o;12835:222::-;12928:4;12966:2;12955:9;12951:18;12943:26;;12979:71;13047:1;13036:9;13032:17;13023:6;12979:71;:::i;:::-;12835:222;;;;:::o;13063:254::-;13172:4;13210:2;13199:9;13195:18;13187:26;;13223:87;13307:1;13296:9;13292:17;13283:6;13223:87;:::i;:::-;13063:254;;;;:::o;13323:332::-;13444:4;13482:2;13471:9;13467:18;13459:26;;13495:71;13563:1;13552:9;13548:17;13539:6;13495:71;:::i;:::-;13576:72;13644:2;13633:9;13629:18;13620:6;13576:72;:::i;:::-;13323:332;;;;;:::o;13661:807::-;13910:4;13948:3;13937:9;13933:19;13925:27;;13962:71;14030:1;14019:9;14015:17;14006:6;13962:71;:::i;:::-;14043:72;14111:2;14100:9;14096:18;14087:6;14043:72;:::i;:::-;14125:80;14201:2;14190:9;14186:18;14177:6;14125:80;:::i;:::-;14215;14291:2;14280:9;14276:18;14267:6;14215:80;:::i;:::-;14305:73;14373:3;14362:9;14358:19;14349:6;14305:73;:::i;:::-;14388;14456:3;14445:9;14441:19;14432:6;14388:73;:::i;:::-;13661:807;;;;;;;;;:::o;14474:210::-;14561:4;14599:2;14588:9;14584:18;14576:26;;14612:65;14674:1;14663:9;14659:17;14650:6;14612:65;:::i;:::-;14474:210;;;;:::o;14690:276::-;14810:4;14848:2;14837:9;14833:18;14825:26;;14861:98;14956:1;14945:9;14941:17;14932:6;14861:98;:::i;:::-;14690:276;;;;:::o;14972:313::-;15085:4;15123:2;15112:9;15108:18;15100:26;;15172:9;15166:4;15162:20;15158:1;15147:9;15143:17;15136:47;15200:78;15273:4;15264:6;15200:78;:::i;:::-;15192:86;;14972:313;;;;:::o;15291:419::-;15457:4;15495:2;15484:9;15480:18;15472:26;;15544:9;15538:4;15534:20;15530:1;15519:9;15515:17;15508:47;15572:131;15698:4;15572:131;:::i;:::-;15564:139;;15291:419;;;:::o;15716:::-;15882:4;15920:2;15909:9;15905:18;15897:26;;15969:9;15963:4;15959:20;15955:1;15944:9;15940:17;15933:47;15997:131;16123:4;15997:131;:::i;:::-;15989:139;;15716:419;;;:::o;16141:::-;16307:4;16345:2;16334:9;16330:18;16322:26;;16394:9;16388:4;16384:20;16380:1;16369:9;16365:17;16358:47;16422:131;16548:4;16422:131;:::i;:::-;16414:139;;16141:419;;;:::o;16566:::-;16732:4;16770:2;16759:9;16755:18;16747:26;;16819:9;16813:4;16809:20;16805:1;16794:9;16790:17;16783:47;16847:131;16973:4;16847:131;:::i;:::-;16839:139;;16566:419;;;:::o;16991:::-;17157:4;17195:2;17184:9;17180:18;17172:26;;17244:9;17238:4;17234:20;17230:1;17219:9;17215:17;17208:47;17272:131;17398:4;17272:131;:::i;:::-;17264:139;;16991:419;;;:::o;17416:::-;17582:4;17620:2;17609:9;17605:18;17597:26;;17669:9;17663:4;17659:20;17655:1;17644:9;17640:17;17633:47;17697:131;17823:4;17697:131;:::i;:::-;17689:139;;17416:419;;;:::o;17841:::-;18007:4;18045:2;18034:9;18030:18;18022:26;;18094:9;18088:4;18084:20;18080:1;18069:9;18065:17;18058:47;18122:131;18248:4;18122:131;:::i;:::-;18114:139;;17841:419;;;:::o;18266:::-;18432:4;18470:2;18459:9;18455:18;18447:26;;18519:9;18513:4;18509:20;18505:1;18494:9;18490:17;18483:47;18547:131;18673:4;18547:131;:::i;:::-;18539:139;;18266:419;;;:::o;18691:::-;18857:4;18895:2;18884:9;18880:18;18872:26;;18944:9;18938:4;18934:20;18930:1;18919:9;18915:17;18908:47;18972:131;19098:4;18972:131;:::i;:::-;18964:139;;18691:419;;;:::o;19116:::-;19282:4;19320:2;19309:9;19305:18;19297:26;;19369:9;19363:4;19359:20;19355:1;19344:9;19340:17;19333:47;19397:131;19523:4;19397:131;:::i;:::-;19389:139;;19116:419;;;:::o;19541:::-;19707:4;19745:2;19734:9;19730:18;19722:26;;19794:9;19788:4;19784:20;19780:1;19769:9;19765:17;19758:47;19822:131;19948:4;19822:131;:::i;:::-;19814:139;;19541:419;;;:::o;19966:::-;20132:4;20170:2;20159:9;20155:18;20147:26;;20219:9;20213:4;20209:20;20205:1;20194:9;20190:17;20183:47;20247:131;20373:4;20247:131;:::i;:::-;20239:139;;19966:419;;;:::o;20391:::-;20557:4;20595:2;20584:9;20580:18;20572:26;;20644:9;20638:4;20634:20;20630:1;20619:9;20615:17;20608:47;20672:131;20798:4;20672:131;:::i;:::-;20664:139;;20391:419;;;:::o;20816:222::-;20909:4;20947:2;20936:9;20932:18;20924:26;;20960:71;21028:1;21017:9;21013:17;21004:6;20960:71;:::i;:::-;20816:222;;;;:::o;21044:483::-;21215:4;21253:2;21242:9;21238:18;21230:26;;21266:71;21334:1;21323:9;21319:17;21310:6;21266:71;:::i;:::-;21384:9;21378:4;21374:20;21369:2;21358:9;21354:18;21347:48;21412:108;21515:4;21506:6;21412:108;:::i;:::-;21404:116;;21044:483;;;;;:::o;21533:831::-;21796:4;21834:3;21823:9;21819:19;21811:27;;21848:71;21916:1;21905:9;21901:17;21892:6;21848:71;:::i;:::-;21929:80;22005:2;21994:9;21990:18;21981:6;21929:80;:::i;:::-;22056:9;22050:4;22046:20;22041:2;22030:9;22026:18;22019:48;22084:108;22187:4;22178:6;22084:108;:::i;:::-;22076:116;;22202:72;22270:2;22259:9;22255:18;22246:6;22202:72;:::i;:::-;22284:73;22352:3;22341:9;22337:19;22328:6;22284:73;:::i;:::-;21533:831;;;;;;;;:::o;22370:214::-;22459:4;22497:2;22486:9;22482:18;22474:26;;22510:67;22574:1;22563:9;22559:17;22550:6;22510:67;:::i;:::-;22370:214;;;;:::o;22671:132::-;22738:4;22761:3;22753:11;;22791:4;22786:3;22782:14;22774:22;;22671:132;;;:::o;22809:114::-;22876:6;22910:5;22904:12;22894:22;;22809:114;;;:::o;22929:99::-;22981:6;23015:5;23009:12;22999:22;;22929:99;;;:::o;23034:113::-;23104:4;23136;23131:3;23127:14;23119:22;;23034:113;;;:::o;23153:184::-;23252:11;23286:6;23281:3;23274:19;23326:4;23321:3;23317:14;23302:29;;23153:184;;;;:::o;23343:169::-;23427:11;23461:6;23456:3;23449:19;23501:4;23496:3;23492:14;23477:29;;23343:169;;;;:::o;23518:305::-;23558:3;23577:20;23595:1;23577:20;:::i;:::-;23572:25;;23611:20;23629:1;23611:20;:::i;:::-;23606:25;;23765:1;23697:66;23693:74;23690:1;23687:81;23684:107;;;23771:18;;:::i;:::-;23684:107;23815:1;23812;23808:9;23801:16;;23518:305;;;;:::o;23829:185::-;23869:1;23886:20;23904:1;23886:20;:::i;:::-;23881:25;;23920:20;23938:1;23920:20;:::i;:::-;23915:25;;23959:1;23949:35;;23964:18;;:::i;:::-;23949:35;24006:1;24003;23999:9;23994:14;;23829:185;;;;:::o;24020:348::-;24060:7;24083:20;24101:1;24083:20;:::i;:::-;24078:25;;24117:20;24135:1;24117:20;:::i;:::-;24112:25;;24305:1;24237:66;24233:74;24230:1;24227:81;24222:1;24215:9;24208:17;24204:105;24201:131;;;24312:18;;:::i;:::-;24201:131;24360:1;24357;24353:9;24342:20;;24020:348;;;;:::o;24374:191::-;24414:4;24434:20;24452:1;24434:20;:::i;:::-;24429:25;;24468:20;24486:1;24468:20;:::i;:::-;24463:25;;24507:1;24504;24501:8;24498:34;;;24512:18;;:::i;:::-;24498:34;24557:1;24554;24550:9;24542:17;;24374:191;;;;:::o;24571:96::-;24608:7;24637:24;24655:5;24637:24;:::i;:::-;24626:35;;24571:96;;;:::o;24673:104::-;24718:7;24747:24;24765:5;24747:24;:::i;:::-;24736:35;;24673:104;;;:::o;24783:90::-;24817:7;24860:5;24853:13;24846:21;24835:32;;24783:90;;;:::o;24879:126::-;24916:7;24956:42;24949:5;24945:54;24934:65;;24879:126;;;:::o;25011:77::-;25048:7;25077:5;25066:16;;25011:77;;;:::o;25094:86::-;25129:7;25169:4;25162:5;25158:16;25147:27;;25094:86;;;:::o;25186:153::-;25263:9;25296:37;25327:5;25296:37;:::i;:::-;25283:50;;25186:153;;;:::o;25345:121::-;25403:9;25436:24;25454:5;25436:24;:::i;:::-;25423:37;;25345:121;;;:::o;25472:126::-;25522:9;25555:37;25586:5;25555:37;:::i;:::-;25542:50;;25472:126;;;:::o;25604:113::-;25654:9;25687:24;25705:5;25687:24;:::i;:::-;25674:37;;25604:113;;;:::o;25723:307::-;25791:1;25801:113;25815:6;25812:1;25809:13;25801:113;;;25900:1;25895:3;25891:11;25885:18;25881:1;25876:3;25872:11;25865:39;25837:2;25834:1;25830:10;25825:15;;25801:113;;;25932:6;25929:1;25926:13;25923:101;;;26012:1;26003:6;25998:3;25994:16;25987:27;25923:101;25772:258;25723:307;;;:::o;26036:320::-;26080:6;26117:1;26111:4;26107:12;26097:22;;26164:1;26158:4;26154:12;26185:18;26175:81;;26241:4;26233:6;26229:17;26219:27;;26175:81;26303:2;26295:6;26292:14;26272:18;26269:38;26266:84;;;26322:18;;:::i;:::-;26266:84;26087:269;26036:320;;;:::o;26362:180::-;26410:77;26407:1;26400:88;26507:4;26504:1;26497:15;26531:4;26528:1;26521:15;26548:180;26596:77;26593:1;26586:88;26693:4;26690:1;26683:15;26717:4;26714:1;26707:15;26734:180;26782:77;26779:1;26772:88;26879:4;26876:1;26869:15;26903:4;26900:1;26893:15;26920:180;26968:77;26965:1;26958:88;27065:4;27062:1;27055:15;27089:4;27086:1;27079:15;27106:180;27154:77;27151:1;27144:88;27251:4;27248:1;27241:15;27275:4;27272:1;27265:15;27415:117;27524:1;27521;27514:12;27538:102;27579:6;27630:2;27626:7;27621:2;27614:5;27610:14;27606:28;27596:38;;27538:102;;;:::o;27646:222::-;27786:34;27782:1;27774:6;27770:14;27763:58;27855:5;27850:2;27842:6;27838:15;27831:30;27646:222;:::o;27874:225::-;28014:34;28010:1;28002:6;27998:14;27991:58;28083:8;28078:2;28070:6;28066:15;28059:33;27874:225;:::o;28105:221::-;28245:34;28241:1;28233:6;28229:14;28222:58;28314:4;28309:2;28301:6;28297:15;28290:29;28105:221;:::o;28332:177::-;28472:29;28468:1;28460:6;28456:14;28449:53;28332:177;:::o;28515:181::-;28655:33;28651:1;28643:6;28639:14;28632:57;28515:181;:::o;28702:227::-;28842:34;28838:1;28830:6;28826:14;28819:58;28911:10;28906:2;28898:6;28894:15;28887:35;28702:227;:::o;28935:220::-;29075:34;29071:1;29063:6;29059:14;29052:58;29144:3;29139:2;29131:6;29127:15;29120:28;28935:220;:::o;29161:182::-;29301:34;29297:1;29289:6;29285:14;29278:58;29161:182;:::o;29349:228::-;29489:34;29485:1;29477:6;29473:14;29466:58;29558:11;29553:2;29545:6;29541:15;29534:36;29349:228;:::o;29583:224::-;29723:34;29719:1;29711:6;29707:14;29700:58;29792:7;29787:2;29779:6;29775:15;29768:32;29583:224;:::o;29813:223::-;29953:34;29949:1;29941:6;29937:14;29930:58;30022:6;30017:2;30009:6;30005:15;29998:31;29813:223;:::o;30042:181::-;30182:33;30178:1;30170:6;30166:14;30159:57;30042:181;:::o;30229:222::-;30369:34;30365:1;30357:6;30353:14;30346:58;30438:5;30433:2;30425:6;30421:15;30414:30;30229:222;:::o;30457:122::-;30530:24;30548:5;30530:24;:::i;:::-;30523:5;30520:35;30510:63;;30569:1;30566;30559:12;30510:63;30457:122;:::o;30585:116::-;30655:21;30670:5;30655:21;:::i;:::-;30648:5;30645:32;30635:60;;30691:1;30688;30681:12;30635:60;30585:116;:::o;30707:122::-;30780:24;30798:5;30780:24;:::i;:::-;30773:5;30770:35;30760:63;;30819:1;30816;30809:12;30760:63;30707:122;:::o
Swarm Source
ipfs://656c5d699e3fad827a17d874ff174495082b2b943358e3b4931d5a8322a58319
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.