ERC-20
Source Code
Overview
Max Total Supply
100,000,000 UNIG
Holders
34
Transfers
-
0
Market
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Name:
UnigenFi
Compiler Version
v0.8.25+commit.b61c2a91
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2024-05-16
*/
/*
WEB: https://www.unigenfi.xyz/
TWITTER: https://twitter.com/UnigenFinance
DOCUMENTATION: https://docs.unigenfi.xyz/
COMMUNITY: https://t.me/unigenfi
*/
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;
interface IERC20 {
function totalSupply() external view returns (uint256);
function decimals() external view returns (uint8);
function symbol() external view returns (string memory);
function name() external view returns (string memory);
function getOwner() external view returns (address);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address _owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface IFactoryV2 {
event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
function getPair(address tokenA, address tokenB) external view returns (address lpPair);
function createPair(address tokenA, address tokenB) external returns (address lpPair);
}
interface IV2Pair {
function factory() external view returns (address);
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function sync() external;
}
interface IRouter01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
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 swapExactETHForTokens(
uint amountOutMin,
address[] calldata path,
address to, uint deadline
) external payable returns (uint[] memory amounts);
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 IRouter02 is IRouter01 {
function swapExactTokensForETHSupportingFeeOnTransferTokens(
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 swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
}
contract UnigenFi is IERC20 {
mapping (address => uint256) private _tOwned;
mapping (address => bool) lpPairs;
uint256 private timeSinceLastPair = 0;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) private _liquidityHolders;
mapping (address => bool) private _isExcludedFromProtection;
mapping (address => bool) private _isExcludedFromFees;
mapping (address => bool) private _isExcludedFromLimits;
uint256 constant private startingSupply = 100000000;
string constant private _name = "UnigenFi";
string constant private _symbol = "UNIG";
uint8 constant private _decimals = 18;
uint256 constant private _tTotal = startingSupply * 10**_decimals;
uint256 constant public maxBuyTaxes = 3000;
uint256 constant public maxSellTaxes = 3000;
uint256 constant public maxTransferTaxes = 3000;
uint256 constant masterTaxDivisor = 10000;
bool public taxesAreLocked;
IRouter02 public dexRouter;
address public lpPair;
address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
bool inSwap;
bool public contractSwapEnabled = false;
uint256 public swapThreshold = (_tTotal * 1) / 1000;
uint256 public swapAmount = (_tTotal * 1) / 10000;
bool public piContractSwapsEnabled;
uint256 public piSwapPercent = 10;
uint256 private swapFee = 0;
uint256 private _maxTxAmount = (_tTotal * 20) / 1000;
uint256 private _maxWalletSize = (_tTotal * 20) / 1000;
bool public tradingEnabled = false;
bool public _hasLiqBeenAdded = false;
uint256 public launchStamp;
struct Fees {
uint16 buyFee;
uint16 sellFee;
uint16 transferFee;
}
struct Ratios {
uint16 marketing;
uint16 development;
uint16 totalSwap;
}
Fees public _taxRates = Fees({
buyFee: 300,
sellFee: 300,
transferFee: 0
});
Ratios public _ratios = Ratios({
marketing: 2,
development: 2,
totalSwap: 4
});
struct TaxWallets {
address payable marketing;
address payable development;
}
TaxWallets public _taxWallets = TaxWallets({
marketing: payable(0x363e529C4798B2f151cFcBc06980287E9D29b4b9),
development: payable(0x363e529C4798B2f151cFcBc06980287E9D29b4b9)
});
event ContractSwapEnabledUpdated(bool enabled);
event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);
address private _owner;
modifier onlyOwner() { require(_owner == msg.sender, "Caller =/= owner."); _; }
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
modifier inSwapFlag {
inSwap = true;
_;
inSwap = false;
}
constructor () payable {
// Set the owner.
_owner = msg.sender;
_tOwned[_owner] = _tTotal;
emit Transfer(address(0), _owner, _tTotal);
dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
lpPair = IFactoryV2(dexRouter.factory()).createPair(address(this), dexRouter.WETH());
lpPairs[lpPair] = true;
_approve(address(this), address(dexRouter), type(uint256).max);
_isExcludedFromFees[_owner] = true;
_isExcludedFromFees[address(this)] = true;
_isExcludedFromFees[_taxWallets.marketing] = true;
_isExcludedFromFees[_taxWallets.development] = true;
_liquidityHolders[_owner] = true;
}
//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
// Ownable removed as a lib and added here to allow for custom transfers and renouncements.
// This allows for removal of ownership privileges from the owner once renounced or transferred.
function transferOwner(address newOwner) external onlyOwner {
require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
setExcludedFromFees(_owner, false);
setExcludedFromFees(newOwner, true);
if (balanceOf(_owner) > 0) {
tTransfer(_owner, newOwner, balanceOf(_owner), false, false, true);
}
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
function renounceOwnership() external onlyOwner {
require(tradingEnabled, "Cannot renounce until trading has been enabled.");
setExcludedFromFees(_owner, false);
address oldOwner = _owner;
_owner = address(0);
emit OwnershipTransferred(oldOwner, address(0));
}
//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
receive() external payable {}
function totalSupply() external pure override returns (uint256) { return _tTotal; }
function decimals() external pure override returns (uint8) { return _decimals; }
function symbol() external pure override returns (string memory) { return _symbol; }
function name() external pure override returns (string memory) { return _name; }
function getOwner() external view override returns (address) { return _owner; }
function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
function balanceOf(address account) public view override returns (uint256) {
return _tOwned[account];
}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(msg.sender, recipient, amount);
return true;
}
function approve(address spender, uint256 amount) external override returns (bool) {
_approve(msg.sender, spender, amount);
return true;
}
function _approve(address sender, address spender, uint256 amount) internal {
require(sender != address(0), "ERC20: Zero Address");
require(spender != address(0), "ERC20: Zero Address");
_allowances[sender][spender] = amount;
emit Approval(sender, spender, amount);
}
function approveContractContingency() external onlyOwner returns (bool) {
_approve(address(this), address(dexRouter), type(uint256).max);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
if (_allowances[sender][msg.sender] != type(uint256).max) {
_allowances[sender][msg.sender] -= amount;
}
return _transfer(sender, recipient, amount);
}
function isExcludedFromLimits(address account) external view returns (bool) {
return _isExcludedFromLimits[account];
}
function setExcludedFromLimits(address account, bool enabled) external onlyOwner {
_isExcludedFromLimits[account] = enabled;
}
function isExcludedFromFees(address account) external view returns(bool) {
return _isExcludedFromFees[account];
}
function setExcludedFromFees(address account, bool enabled) public onlyOwner {
_isExcludedFromFees[account] = enabled;
}
function isExcludedFromProtection(address account) external view returns (bool) {
return _isExcludedFromProtection[account];
}
function setExcludedFromProtection(address account, bool enabled) external onlyOwner {
_isExcludedFromProtection[account] = enabled;
}
function getCirculatingSupply() public view returns (uint256) {
return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0))));
}
function lockTaxes() external onlyOwner {
// This will lock taxes at their current value forever, do not call this unless you're sure.
taxesAreLocked = true;
}
function updateTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
require(!taxesAreLocked, "Taxes are locked.");
require(buyFee <= maxBuyTaxes
&& sellFee <= maxSellTaxes
&& transferFee <= maxTransferTaxes,
"Cannot exceed maximums.");
_taxRates.buyFee = buyFee;
_taxRates.sellFee = sellFee;
_taxRates.transferFee = transferFee;
}
function updateRatios(uint16 marketing, uint16 development) external onlyOwner {
_ratios.marketing = marketing;
_ratios.development = development;
_ratios.totalSwap = marketing + development;
uint256 total = _taxRates.buyFee + _taxRates.sellFee;
require(_ratios.totalSwap <= total, "Cannot exceed sum of buy and sell fees.");
}
function updateWallets(address payable marketing,
address payable development) external onlyOwner {
require(marketing != address(0) &&
development != address(0), "Cannot be zero address.");
_taxWallets.marketing = payable(marketing);
_taxWallets.development = payable(development);
}
function updateMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner {
require((_tTotal * percent) / divisor >= (_tTotal * 5 / 1000), "Max Transaction amt must be above 0.5% of total supply.");
_maxTxAmount = (_tTotal * percent) / divisor;
}
function updateMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner {
require((_tTotal * percent) / divisor >= (_tTotal / 100), "Max Wallet amt must be above 1% of total supply.");
_maxWalletSize = (_tTotal * percent) / divisor;
}
function getMaxTX() external view returns (uint256) {
return _maxTxAmount / (10**_decimals);
}
function getMaxWallet() external view returns (uint256) {
return _maxWalletSize / (10**_decimals);
}
function getTokenAmountAtPriceImpact(uint256 priceImpactInHundreds) external view returns (uint256) {
return((balanceOf(lpPair) * priceImpactInHundreds) / masterTaxDivisor);
}
function _transfer(address from, address to, uint256 amount) internal returns (bool) {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
require(amount > 0, "Transfer amount must be greater than zero");
bool buy = false;
bool sell = false;
bool other = false;
if (lpPairs[from]) {
buy = true;
} else if (lpPairs[to]) {
sell = true;
} else {
other = true;
}
if (_testTxLimits(from, to)) {
if(!tradingEnabled) {
if (!other) {
revert("Trading not yet enabled!");
} else if (!_isExcludedFromProtection[from] && !_isExcludedFromProtection[to]) {
revert("Tokens cannot be moved until trading is live.");
}
}
if (buy || sell){
if (!_isExcludedFromLimits[from] && !_isExcludedFromLimits[to]) {
require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
}
}
if (to != address(dexRouter) && !sell) {
if (!_isExcludedFromLimits[to]) {
require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
}
}
}
if (sell && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] && !inSwap) {
if (contractSwapEnabled) {
uint256 contractTokenBalance = balanceOf(address(this));
if (contractTokenBalance >= swapThreshold) {
uint256 swapAmt = swapAmount;
if (piContractSwapsEnabled) { swapAmt = (balanceOf(lpPair) * piSwapPercent) / masterTaxDivisor; }
if (contractTokenBalance >= swapAmt) { contractTokenBalance = swapAmt; }
swapBack(contractTokenBalance);
}
}
}
return tTransfer(from, to, amount, buy, sell, other);
}
function _checkLiquidityAdd(address from, address to) internal {
require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
if (!_testTxLimits(from, to) && to == lpPair) {
_liquidityHolders[from] = true;
_isExcludedFromFees[from] = true;
_hasLiqBeenAdded = true;
contractSwapEnabled = true;
emit ContractSwapEnabledUpdated(true);
}
}
function enableTrading() public onlyOwner {
require(!tradingEnabled, "Trading already enabled!");
require(_hasLiqBeenAdded, "Liquidity must be added.");
tradingEnabled = true;
launchStamp = block.timestamp;
}
function withdrawEth() external onlyOwner {
require(!_hasLiqBeenAdded, "Cannot call after liquidity.");
payable(_owner).transfer(address(this).balance);
}
function withdrawExternalTokens(address token) external onlyOwner {
if (_hasLiqBeenAdded) {
require(token != address(this), "Cannot sweep native tokens.");
}
IERC20 TOKEN = IERC20(token);
TOKEN.transfer(_owner, TOKEN.balanceOf(address(this)));
}
function updateMultiTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner {
require(accounts.length == amounts.length, "Lengths do not match.");
for (uint16 i = 0; i < accounts.length; i++) {
require(balanceOf(msg.sender) >= amounts[i]*10**_decimals, "Not enough tokens.");
tTransfer(msg.sender, accounts[i], amounts[i]*10**_decimals, false, false, true);
}
}
function takeFees(address from, address to, uint256 amount, bool buy, bool sell) internal returns (uint256) {
uint256 currentFee;
if (buy) {
currentFee = _taxRates.buyFee;
} else if (sell) {
currentFee = _taxRates.sellFee;
} else {
if (to == DEAD && amount > swapThreshold) {
swapFee = _taxRates.sellFee;
}
currentFee = _taxRates.transferFee;
}
if (currentFee == 0) { return amount; }
uint256 feeAmount = amount * currentFee / masterTaxDivisor;
if (feeAmount > 0) {
_tOwned[address(this)] += feeAmount;
emit Transfer(from, address(this), feeAmount);
}
return amount - feeAmount;
}
function _testTxLimits(address from, address to) internal view returns (bool) {
return from != _owner
&& to != _owner
&& tx.origin != _owner
&& !_liquidityHolders[to]
&& !_liquidityHolders[from]
&& to != DEAD
&& to != address(0)
&& from != address(this);
}
function tTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
_tOwned[from] -= amount;
if (!buy && swapFee >= _taxRates.sellFee) return true;
uint256 amountReceived = takeFees(from, to, amount, buy, sell);
_tOwned[to] += amountReceived;
emit Transfer(from, to, amountReceived);
} else {
if (lpPairs[to] && balanceOf(from) < amount) {
_tOwned[from] += amount; _tOwned[to] -= amount;
return true;
}
_tOwned[from] -= amount;
uint256 amountReceived = amount;
_tOwned[to] += amountReceived;
emit Transfer(from, to, amountReceived);
}
if (!_hasLiqBeenAdded) {
_checkLiquidityAdd(from, to);
if (!_hasLiqBeenAdded && _testTxLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
revert("Pre-liquidity transfer protection.");
}
}
return true;
}
function updateRouter(address newRouter) external onlyOwner {
require(!_hasLiqBeenAdded, "Cannot change after liquidity.");
IRouter02 _newRouter = IRouter02(newRouter);
address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
lpPairs[lpPair] = false;
if (get_pair == address(0)) {
lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
} else {
lpPair = get_pair;
}
dexRouter = _newRouter;
lpPairs[lpPair] = true;
_approve(address(this), address(dexRouter), type(uint256).max);
}
function updateLpPair(address pair, bool enabled) external onlyOwner {
if (!enabled) {
lpPairs[pair] = false;
} else {
if (timeSinceLastPair != 0) {
require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.");
}
require(!lpPairs[pair], "Pair already added to list.");
lpPairs[pair] = true;
timeSinceLastPair = block.timestamp;
}
}
function updateSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
swapAmount = (_tTotal * amountPercent) / amountDivisor;
require(swapThreshold <= swapAmount, "Threshold cannot be above amount.");
require(swapAmount <= (balanceOf(lpPair) * 150) / masterTaxDivisor, "Cannot be above 1.5% of current PI.");
require(swapAmount >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
require(swapThreshold >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
}
function updatePriceImpactSwapAmount(uint256 priceImpactSwapPercent) external onlyOwner {
require(priceImpactSwapPercent <= 150, "Cannot set above 1.5%.");
piSwapPercent = priceImpactSwapPercent;
}
function updateContractSwapEnabled(bool swapEnabled, bool priceImpactSwapEnabled) external onlyOwner {
contractSwapEnabled = swapEnabled;
piContractSwapsEnabled = priceImpactSwapEnabled;
emit ContractSwapEnabledUpdated(swapEnabled);
}
function swapBack(uint256 contractTokenBalance) internal inSwapFlag {
Ratios memory ratios = _ratios;
if (ratios.totalSwap == 0) {
return;
}
if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
_allowances[address(this)][address(dexRouter)] = type(uint256).max;
}
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = dexRouter.WETH();
try dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
contractTokenBalance,
0,
path,
address(this),
block.timestamp
) {} catch {
return;
}
uint256 amtBalance = address(this).balance;
bool success;
uint256 developmentBalance = (amtBalance * ratios.development) / ratios.totalSwap;
uint256 marketingBalance = amtBalance - developmentBalance;
if (ratios.development > 0) {
(success,) = _taxWallets.development.call{value: developmentBalance, gas: 55000}("");
}
if (ratios.marketing > 0) {
(success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 55000}("");
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"updateContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"updateMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"updateMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"updateMultiTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"updatePriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"}],"name":"updateRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"updateRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"updateSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"updateTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"withdrawExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040525f6002556009805460ff60a81b191690556103e86100246012600a61068a565b610032906305f5e10061069f565b61003d90600161069f565b61004791906106b6565b600a556127106012600a61005b919061068a565b610069906305f5e10061069f565b61007490600161069f565b61007e91906106b6565b600b55600a600d555f600e556103e86012600a61009b919061068a565b6100a9906305f5e10061069f565b6100b490601461069f565b6100be91906106b6565b600f556103e86100d06012600a61068a565b6100de906305f5e10061069f565b6100e990601461069f565b6100f391906106b6565b6010556011805461ffff19169055604080516060808201835261012c8083526020808401919091525f928401929092526013805465ffffffffffff1990811663012c012c1790915583519182018452600280835282840152600491840191909152601480546404000200029216919091179055815180830190925273363e529c4798b2f151cfcbc06980287e9d29b4b98083529101819052601580546001600160a01b0319908116831790915560168054821690921790915560178054909116331790556101c36012600a61068a565b6101d1906305f5e10061069f565b601780546001600160a01b039081165f90815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6102226012600a61068a565b610230906305f5e10061069f565b60405190815260200160405180910390a360088054747a250d5630b4cf539739df2c5dacb4c659f2488d00610100600160a81b031990911617908190556040805163c45a015560e01b815290516101009092046001600160a01b03169163c45a0155916004808201926020929091908290030181865afa1580156102b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102da91906106d5565b6001600160a01b031663c9c6539630600860019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561033a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061035e91906106d5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156103a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103cc91906106d5565b600980546001600160a01b0319166001600160a01b039283169081179091555f908152600160208190526040909120805460ff1916909117905560085461041c9130916101009004165f19610497565b601780546001600160a01b039081165f9081526006602090815260408083208054600160ff1991821681179092553085528285208054821683179055601554861685528285208054821683179055601654861685528285208054821683179055955490941683526004909152902080549092161790556106fb565b6001600160a01b0383166104e85760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b0382166105345760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016104df565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156105e257815f19048211156105c8576105c8610594565b808516156105d557918102915b93841c93908002906105ad565b509250929050565b5f826105f857506001610684565b8161060457505f610684565b816001811461061a576002811461062457610640565b6001915050610684565b60ff84111561063557610635610594565b50506001821b610684565b5060208310610133831016604e8410600b8410161715610663575081810a610684565b61066d83836105a8565b805f190482111561068057610680610594565b0290505b92915050565b5f61069860ff8416836105ea565b9392505050565b808202811582820484141761068457610684610594565b5f826106d057634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156106e5575f80fd5b81516001600160a01b0381168114610698575f80fd5b613875806107085f395ff3fe60806040526004361061035e575f3560e01c80635cce86cd116101bd578063b1b08f71116100f2578063dc9a703f11610092578063eba2c68e1161006d578063eba2c68e146109da578063f94aa1b4146109f9578063fdb78c0e14610a3f578063feadde9c14610a5f575f80fd5b8063dc9a703f14610958578063dd62ed3e14610977578063e8ba854f146109bb575f80fd5b8063b7df8b36116100cd578063b7df8b36146108d2578063b9283664146108eb578063c851cc321461090a578063cf84770614610929575f80fd5b8063b1b08f711461059e578063b1e715aa146108b3578063b3d514fb1461059e575f80fd5b80638a8c523c1161015d57806395d89b411161013857806395d89b41146108355780639b69c15114610861578063a0ef91df14610880578063a9059cbb14610894575f80fd5b80638a8c523c146107e35780638cfa207f146107f75780639250250d14610816575f80fd5b8063715018a611610198578063715018a61461078a57806378648edf1461079e578063893d20e8146107b25780638a63bd9b146107cf575f80fd5b80635cce86cd146107205780636ebd00781461075757806370a082311461076b575f80fd5b80632b112e49116102935780634bbb93eb1161023357806350a8e0161161020e57806350a8e016146106af57806353334847146106cd578063590ffdce146106ec5780635a6f09181461070b575f80fd5b80634bbb93eb1461063a5780634fb2e45d146106595780634fbee19314610678575f80fd5b8063313ce5671161026e578063313ce567146105c857806336fddb04146105e3578063452ed4f1146106025780634ada218b14610621575f80fd5b80632b112e491461058a5780632b28fc7a1461059e5780632e8fa821146105b3575f80fd5b8063095ea7b3116102fe578063166cc6be116102d9578063166cc6be1461052357806318160ddd1461054257806323b872dd146105565780632857775114610575575f80fd5b8063095ea7b3146104b95780630dcbcf1c146104d85780630fa604e41461050f575f80fd5b8063069d955f11610339578063069d955f146103df57806306fdde03146104335780630758d9241461046c57806307dd79e014610490575f80fd5b806303fd2a45146103695780630445b6671461039b578063068b976f146103be575f80fd5b3661036557005b5f80fd5b348015610374575f80fd5b5061037e61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103a6575f80fd5b506103b0600a5481565b604051908152602001610392565b3480156103c9575f80fd5b506103dd6103d8366004613138565b610a7e565b005b3480156103ea575f80fd5b5060135461040e9061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610392565b34801561043e575f80fd5b50604080518082019091526008815267556e6967656e466960c01b60208201525b6040516103929190613178565b348015610477575f80fd5b5060085461037e9061010090046001600160a01b031681565b34801561049b575f80fd5b506008546104a99060ff1681565b6040519015158152602001610392565b3480156104c4575f80fd5b506104a96104d33660046131c1565b610bb0565b3480156104e3575f80fd5b506104a96104f23660046131eb565b6001600160a01b03165f9081526005602052604090205460ff1690565b34801561051a575f80fd5b506103b0610bc6565b34801561052e575f80fd5b506103dd61053d366004613206565b610be5565b34801561054d575f80fd5b506103b0610d1c565b348015610561575f80fd5b506104a9610570366004613226565b610d37565b348015610580575f80fd5b506103b0600d5481565b348015610595575f80fd5b506103b0610dac565b3480156105a9575f80fd5b506103b0610bb881565b3480156105be575f80fd5b506103b0600b5481565b3480156105d3575f80fd5b5060405160128152602001610392565b3480156105ee575f80fd5b506103dd6105fd366004613271565b610def565b34801561060d575f80fd5b5060095461037e906001600160a01b031681565b34801561062c575f80fd5b506011546104a99060ff1681565b348015610645575f80fd5b506103b06106543660046132a8565b610e43565b348015610664575f80fd5b506103dd6106733660046131eb565b610e74565b348015610683575f80fd5b506104a96106923660046131eb565b6001600160a01b03165f9081526006602052604090205460ff1690565b3480156106ba575f80fd5b506011546104a990610100900460ff1681565b3480156106d8575f80fd5b506103dd6106e73660046132bf565b610fa3565b3480156106f7575f80fd5b506103dd610706366004613271565b6110a1565b348015610716575f80fd5b506103b060125481565b34801561072b575f80fd5b506104a961073a3660046131eb565b6001600160a01b03165f9081526007602052604090205460ff1690565b348015610762575f80fd5b506103b06110f5565b348015610776575f80fd5b506103b06107853660046131eb565b61110f565b348015610795575f80fd5b506103dd611129565b3480156107a9575f80fd5b506103dd611220565b3480156107bd575f80fd5b506017546001600160a01b031661037e565b3480156107da575f80fd5b506104a9611259565b3480156107ee575f80fd5b506103dd6112a9565b348015610802575f80fd5b506103dd6108113660046132a8565b611390565b348015610821575f80fd5b506103dd6108303660046132f0565b611409565b348015610840575f80fd5b50604080518082019091526004815263554e494760e01b602082015261045f565b34801561086c575f80fd5b506103dd61087b3660046133f3565b61161e565b34801561088b575f80fd5b506103dd61178b565b34801561089f575f80fd5b506104a96108ae3660046131c1565b611846565b3480156108be575f80fd5b506103dd6108cd3660046134af565b61185c565b3480156108dd575f80fd5b50600c546104a99060ff1681565b3480156108f6575f80fd5b506103dd610905366004613206565b6118e9565b348015610915575f80fd5b506103dd6109243660046131eb565b611a07565b348015610934575f80fd5b5060145461040e9061ffff80821691620100008104821691600160201b9091041683565b348015610963575f80fd5b506103dd6109723660046131eb565b611dcb565b348015610982575f80fd5b506103b06109913660046134cb565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156109c6575f80fd5b506103dd6109d53660046134cb565b611f42565b3480156109e5575f80fd5b506103dd6109f4366004613271565b612006565b348015610a04575f80fd5b50601554601654610a1f916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610392565b348015610a4a575f80fd5b506009546104a990600160a81b900460ff1681565b348015610a6a575f80fd5b506103dd610a79366004613271565b612145565b6017546001600160a01b03163314610ab15760405162461bcd60e51b8152600401610aa8906134f7565b60405180910390fd5b60085460ff1615610af85760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610aa8565b610bb88361ffff1611158015610b145750610bb88261ffff1611155b8015610b265750610bb88161ffff1611155b610b725760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610aa8565b6013805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b5f610bbc338484612199565b5060015b92915050565b5f610bd36012600a613616565b601054610be09190613624565b905090565b6017546001600160a01b03163314610c0f5760405162461bcd60e51b8152600401610aa8906134f7565b6103e8610c1e6012600a613616565b610c2c906305f5e100613643565b610c37906005613643565b610c419190613624565b8183610c4f6012600a613616565b610c5d906305f5e100613643565b610c679190613643565b610c719190613624565b1015610ce55760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610aa8565b8082610cf36012600a613616565b610d01906305f5e100613643565b610d0b9190613643565b610d159190613624565b600f555050565b5f610d296012600a613616565b610be0906305f5e100613643565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f1914610d99576001600160a01b0384165f90815260036020908152604080832033845290915281208054849290610d9390849061365a565b90915550505b610da4848484612291565b949350505050565b5f610db65f61110f565b610dc161dead61110f565b610dcb919061366d565b610dd76012600a613616565b610de5906305f5e100613643565b610be0919061365a565b6017546001600160a01b03163314610e195760405162461bcd60e51b8152600401610aa8906134f7565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b6009545f90612710908390610e60906001600160a01b031661110f565b610e6a9190613643565b610bc09190613624565b6017546001600160a01b03163314610e9e5760405162461bcd60e51b8152600401610aa8906134f7565b6001600160a01b038116610ec45760405162461bcd60e51b8152600401610aa890613680565b61deac196001600160a01b03821601610eef5760405162461bcd60e51b8152600401610aa890613680565b601754610f05906001600160a01b03165f6110a1565b610f108160016110a1565b6017545f90610f27906001600160a01b031661110f565b1115610f5257601754610f50906001600160a01b031682610f478261110f565b5f80600161278d565b505b601780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6017546001600160a01b03163314610fcd5760405162461bcd60e51b8152600401610aa8906134f7565b6014805461ffff838116620100000263ffffffff1990921690851617179055610ff681836136dd565b6014805465ffff000000001916600160201b61ffff938416021790556013545f9161102a91620100008104821691166136dd565b60145461ffff9182169250600160201b90041681101561109c5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610aa8565b505050565b6017546001600160a01b031633146110cb5760405162461bcd60e51b8152600401610aa8906134f7565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f6111026012600a613616565b600f54610be09190613624565b6001600160a01b03165f9081526020819052604090205490565b6017546001600160a01b031633146111535760405162461bcd60e51b8152600401610aa8906134f7565b60115460ff166111bd5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610aa8565b6017546111d3906001600160a01b03165f6110a1565b601780546001600160a01b031981169091556040516001600160a01b03909116905f9082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6017546001600160a01b0316331461124a5760405162461bcd60e51b8152600401610aa8906134f7565b6008805460ff19166001179055565b6017545f906001600160a01b031633146112855760405162461bcd60e51b8152600401610aa8906134f7565b6008546112a390309061010090046001600160a01b03165f19612199565b50600190565b6017546001600160a01b031633146112d35760405162461bcd60e51b8152600401610aa8906134f7565b60115460ff16156113265760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610aa8565b601154610100900460ff1661137d5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610aa8565b6011805460ff1916600117905542601255565b6017546001600160a01b031633146113ba5760405162461bcd60e51b8152600401610aa8906134f7565b60968111156114045760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610aa8565b600d55565b6017546001600160a01b031633146114335760405162461bcd60e51b8152600401610aa8906134f7565b82846114416012600a613616565b61144f906305f5e100613643565b6114599190613643565b6114639190613624565b600a8190555080826012600a6114799190613616565b611487906305f5e100613643565b6114919190613643565b61149b9190613624565b600b819055600a5411156114fb5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610aa8565b60095461271090611514906001600160a01b031661110f565b61151f906096613643565b6115299190613624565b600b5411156115865760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610aa8565b620f42406115966012600a613616565b6115a4906305f5e100613643565b6115ae9190613624565b600b5410156115cf5760405162461bcd60e51b8152600401610aa8906136ff565b620f42406115df6012600a613616565b6115ed906305f5e100613643565b6115f79190613624565b600a5410156116185760405162461bcd60e51b8152600401610aa8906136ff565b50505050565b6017546001600160a01b031633146116485760405162461bcd60e51b8152600401610aa8906134f7565b80518251146116915760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610aa8565b5f5b82518161ffff16101561109c576116ac6012600a613616565b828261ffff16815181106116c2576116c261374d565b60200260200101516116d49190613643565b6116dd3361110f565b10156117205760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610aa8565b61177833848361ffff168151811061173a5761173a61374d565b60200260200101516012600a6117509190613616565b858561ffff16815181106117665761176661374d565b6020026020010151610f479190613643565b508061178381613761565b915050611693565b6017546001600160a01b031633146117b55760405162461bcd60e51b8152600401610aa8906134f7565b601154610100900460ff161561180d5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610aa8565b6017546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015611843573d5f803e3d5ffd5b50565b5f611852338484612291565b5060019392505050565b6017546001600160a01b031633146118865760405162461bcd60e51b8152600401610aa8906134f7565b6009805460ff60a81b1916600160a81b84151590810291909117909155600c805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6017546001600160a01b031633146119135760405162461bcd60e51b8152600401610aa8906134f7565b60646119216012600a613616565b61192f906305f5e100613643565b6119399190613624565b81836119476012600a613616565b611955906305f5e100613643565b61195f9190613643565b6119699190613624565b10156119d05760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b6064820152608401610aa8565b80826119de6012600a613616565b6119ec906305f5e100613643565b6119f69190613643565b611a009190613624565b6010555050565b6017546001600160a01b03163314611a315760405162461bcd60e51b8152600401610aa8906134f7565b601154610100900460ff1615611a895760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610aa8565b5f8190505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aee9190613781565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b5d9190613781565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611ba6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bca9190613781565b6009546001600160a01b039081165f908152600160205260409020805460ff191690559091508116611d5857816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c32573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c569190613781565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ca1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cc59190613781565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611d0f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d339190613781565b600980546001600160a01b0319166001600160a01b0392909216919091179055611d74565b600980546001600160a01b0319166001600160a01b0383161790555b60088054610100600160a81b0319166101006001600160a01b03858116820292909217835560095482165f908152600160208190526040909120805460ff19169091179055915461109c9230929104165f19612199565b6017546001600160a01b03163314611df55760405162461bcd60e51b8152600401610aa8906134f7565b601154610100900460ff1615611e5d57306001600160a01b03821603611e5d5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610aa8565b6017546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611eb2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ed6919061379c565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015611f1e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109c91906137b3565b6017546001600160a01b03163314611f6c5760405162461bcd60e51b8152600401610aa8906134f7565b6001600160a01b03821615801590611f8c57506001600160a01b03811615155b611fd85760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610aa8565b601580546001600160a01b039384166001600160a01b03199182161790915560168054929093169116179055565b6017546001600160a01b031633146120305760405162461bcd60e51b8152600401610aa8906134f7565b8061205657506001600160a01b03165f908152600160205260409020805460ff19169055565b600254156120af576203f48060025442612070919061365a565b116120af5760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610aa8565b6001600160a01b0382165f9081526001602052604090205460ff16156121175760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610aa8565b6001600160a01b0382165f908152600160208190526040909120805460ff19169091179055426002555b5050565b6017546001600160a01b0316331461216f5760405162461bcd60e51b8152600401610aa8906134f7565b6001600160a01b03919091165f908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166121e55760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610aa8565b6001600160a01b0382166122315760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610aa8565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b0384166122f65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610aa8565b6001600160a01b0383166123585760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610aa8565b5f82116123b95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610aa8565b6001600160a01b0384165f908152600160205260408120548190819060ff16156123e65760019250612413565b6001600160a01b0386165f9081526001602052604090205460ff161561240f5760019150612413565b5060015b61241d8787612af1565b1561268f5760115460ff1661251c57806124795760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610aa8565b6001600160a01b0387165f9081526005602052604090205460ff161580156124b957506001600160a01b0386165f9081526005602052604090205460ff16155b1561251c5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610aa8565b82806125255750815b156125d2576001600160a01b0387165f9081526007602052604090205460ff1615801561256a57506001600160a01b0386165f9081526007602052604090205460ff16155b156125d257600f548511156125d25760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610aa8565b6008546001600160a01b0387811661010090920416148015906125f3575081155b1561268f576001600160a01b0386165f9081526007602052604090205460ff1661268f57601054856126248861110f565b61262e919061366d565b111561268f5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610aa8565b8180156126b457506001600160a01b0387165f9081526006602052604090205460ff16155b80156126d857506001600160a01b0386165f9081526006602052604090205460ff16155b80156126ee5750600954600160a01b900460ff16155b1561277457600954600160a81b900460ff1615612774575f61270f3061110f565b9050600a54811061277257600b54600c5460ff161561275c57600d546009546127109190612745906001600160a01b031661110f565b61274f9190613643565b6127599190613624565b90505b808210612767578091505b61277082612bc5565b505b505b61278287878786868661278d565b979650505050505050565b6001600160a01b0386165f9081526006602052604081205460ff161580156127cd57506001600160a01b0386165f9081526006602052604090205460ff16155b156128c3576001600160a01b0387165f90815260208190526040812080548792906127f990849061365a565b90915550508315801561281b5750601354600e546201000090910461ffff1611155b1561282857506001612ae7565b5f6128368888888888612ef0565b9050805f80896001600160a01b03166001600160a01b031681526020019081526020015f205f828254612869919061366d565b92505081905550866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128b591815260200190565b60405180910390a350612a03565b6001600160a01b0386165f9081526001602052604090205460ff1680156128f15750846128ef8861110f565b105b15612958576001600160a01b0387165f908152602081905260408120805487929061291d90849061366d565b90915550506001600160a01b0386165f908152602081905260408120805487929061294990849061365a565b9091555060019150612ae79050565b6001600160a01b0387165f908152602081905260408120805487929061297f90849061365a565b90915550506001600160a01b0386165f908152602081905260408120805487928392916129ad90849061366d565b92505081905550866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129f991815260200190565b60405180910390a3505b601154610100900460ff16612ae357612a1c878761300b565b601154610100900460ff16158015612a395750612a398787612af1565b8015612a5d57506001600160a01b0387165f9081526005602052604090205460ff16155b8015612a8157506001600160a01b0386165f9081526005602052604090205460ff16155b8015612a8b575081155b15612ae35760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610aa8565b5060015b9695505050505050565b6017545f906001600160a01b03848116911614801590612b1f57506017546001600160a01b03838116911614155b8015612b3657506017546001600160a01b03163214155b8015612b5a57506001600160a01b0382165f9081526004602052604090205460ff16155b8015612b7e57506001600160a01b0383165f9081526004602052604090205460ff16155b8015612b9557506001600160a01b03821661dead14155b8015612ba957506001600160a01b03821615155b8015612bbe57506001600160a01b0383163014155b9392505050565b6009805460ff60a01b1916600160a01b1790556040805160608101825260145461ffff808216835262010000820481166020840152600160201b90910416918101829052905f03612c165750612ee0565b305f90815260036020908152604080832060085461010090046001600160a01b031684529091529020545f1914612c7557305f90815260036020908152604080832060085461010090046001600160a01b0316845290915290205f1990555b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612ca857612ca861374d565b60200260200101906001600160a01b031690816001600160a01b031681525050600860019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d19573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d3d9190613781565b81600181518110612d5057612d5061374d565b6001600160a01b03928316602091820292909201015260085460405163791ac94760e01b81526101009091049091169063791ac94790612d9c9086905f908690309042906004016137ce565b5f604051808303815f87803b158015612db3575f80fd5b505af1925050508015612dc4575060015b612dcf575050612ee0565b5f4790505f80846040015161ffff16856020015161ffff1684612df29190613643565b612dfc9190613624565b90505f612e09828561365a565b602087015190915061ffff1615612e74576016546040516001600160a01b039091169061d6d89084905f818181858888f193505050503d805f8114612e69576040519150601f19603f3d011682016040523d82523d5f602084013e612e6e565b606091505b50909350505b855161ffff1615612ed9576015546040516001600160a01b039091169061d6d89083905f818181858888f193505050503d805f8114612ece576040519150601f19603f3d011682016040523d82523d5f602084013e612ed3565b606091505b50909350505b5050505050505b506009805460ff60a01b19169055565b5f808315612f05575060135461ffff16612f5f565b8215612f1e575060135462010000900461ffff16612f5f565b6001600160a01b03861661dead148015612f395750600a5485115b15612f4f5760135462010000900461ffff16600e555b50601354600160201b900461ffff165b805f03612f6f5784915050613002565b5f612710612f7d8388613643565b612f879190613624565b90508015612ff357305f9081526020819052604081208054839290612fad90849061366d565b909155505060405181815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612ffd818761365a565b925050505b95945050505050565b601154610100900460ff161561306f5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610aa8565b6130798282612af1565b15801561309357506009546001600160a01b038281169116145b15612141576001600160a01b0382165f908152600460209081526040808320805460ff1990811660019081179092556006845293829020805490941681179093556011805461ff0019166101001790556009805460ff60a81b1916600160a81b179055519182527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325791016118dd565b803561ffff81168114613133575f80fd5b919050565b5f805f6060848603121561314a575f80fd5b61315384613122565b925061316160208501613122565b915061316f60408501613122565b90509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611843575f80fd5b5f80604083850312156131d2575f80fd5b82356131dd816131ad565b946020939093013593505050565b5f602082840312156131fb575f80fd5b8135612bbe816131ad565b5f8060408385031215613217575f80fd5b50508035926020909101359150565b5f805f60608486031215613238575f80fd5b8335613243816131ad565b92506020840135613253816131ad565b929592945050506040919091013590565b8015158114611843575f80fd5b5f8060408385031215613282575f80fd5b823561328d816131ad565b9150602083013561329d81613264565b809150509250929050565b5f602082840312156132b8575f80fd5b5035919050565b5f80604083850312156132d0575f80fd5b6132d983613122565b91506132e760208401613122565b90509250929050565b5f805f8060808587031215613303575f80fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561335c5761335c61331f565b604052919050565b5f67ffffffffffffffff82111561337d5761337d61331f565b5060051b60200190565b5f82601f830112613396575f80fd5b813560206133ab6133a683613364565b613333565b8083825260208201915060208460051b8701019350868411156133cc575f80fd5b602086015b848110156133e857803583529183019183016133d1565b509695505050505050565b5f8060408385031215613404575f80fd5b823567ffffffffffffffff8082111561341b575f80fd5b818501915085601f83011261342e575f80fd5b8135602061343e6133a683613364565b82815260059290921b8401810191818101908984111561345c575f80fd5b948201945b83861015613483578535613474816131ad565b82529482019490820190613461565b96505086013592505080821115613498575f80fd5b506134a585828601613387565b9150509250929050565b5f80604083850312156134c0575f80fd5b823561328d81613264565b5f80604083850312156134dc575f80fd5b82356134e7816131ad565b9150602083013561329d816131ad565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561357057815f190482111561355657613556613522565b8085161561356357918102915b93841c939080029061353b565b509250929050565b5f8261358657506001610bc0565b8161359257505f610bc0565b81600181146135a857600281146135b2576135ce565b6001915050610bc0565b60ff8411156135c3576135c3613522565b50506001821b610bc0565b5060208310610133831016604e8410600b84101617156135f1575081810a610bc0565b6135fb8383613536565b805f190482111561360e5761360e613522565b029392505050565b5f612bbe60ff841683613578565b5f8261363e57634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610bc057610bc0613522565b81810381811115610bc057610bc0613522565b80820180821115610bc057610bc0613522565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b61ffff8181168382160190808211156136f8576136f8613522565b5092915050565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b5f61ffff80831681810361377757613777613522565b6001019392505050565b5f60208284031215613791575f80fd5b8151612bbe816131ad565b5f602082840312156137ac575f80fd5b5051919050565b5f602082840312156137c3575f80fd5b8151612bbe81613264565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561381e5784516001600160a01b0316835293830193918301916001016137f9565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220f2054fef6c0181853105c1e2f515f291391b8c0e1c568f7c5f4a458f6476a71164736f6c63430008190033
Deployed Bytecode
0x60806040526004361061035e575f3560e01c80635cce86cd116101bd578063b1b08f71116100f2578063dc9a703f11610092578063eba2c68e1161006d578063eba2c68e146109da578063f94aa1b4146109f9578063fdb78c0e14610a3f578063feadde9c14610a5f575f80fd5b8063dc9a703f14610958578063dd62ed3e14610977578063e8ba854f146109bb575f80fd5b8063b7df8b36116100cd578063b7df8b36146108d2578063b9283664146108eb578063c851cc321461090a578063cf84770614610929575f80fd5b8063b1b08f711461059e578063b1e715aa146108b3578063b3d514fb1461059e575f80fd5b80638a8c523c1161015d57806395d89b411161013857806395d89b41146108355780639b69c15114610861578063a0ef91df14610880578063a9059cbb14610894575f80fd5b80638a8c523c146107e35780638cfa207f146107f75780639250250d14610816575f80fd5b8063715018a611610198578063715018a61461078a57806378648edf1461079e578063893d20e8146107b25780638a63bd9b146107cf575f80fd5b80635cce86cd146107205780636ebd00781461075757806370a082311461076b575f80fd5b80632b112e49116102935780634bbb93eb1161023357806350a8e0161161020e57806350a8e016146106af57806353334847146106cd578063590ffdce146106ec5780635a6f09181461070b575f80fd5b80634bbb93eb1461063a5780634fb2e45d146106595780634fbee19314610678575f80fd5b8063313ce5671161026e578063313ce567146105c857806336fddb04146105e3578063452ed4f1146106025780634ada218b14610621575f80fd5b80632b112e491461058a5780632b28fc7a1461059e5780632e8fa821146105b3575f80fd5b8063095ea7b3116102fe578063166cc6be116102d9578063166cc6be1461052357806318160ddd1461054257806323b872dd146105565780632857775114610575575f80fd5b8063095ea7b3146104b95780630dcbcf1c146104d85780630fa604e41461050f575f80fd5b8063069d955f11610339578063069d955f146103df57806306fdde03146104335780630758d9241461046c57806307dd79e014610490575f80fd5b806303fd2a45146103695780630445b6671461039b578063068b976f146103be575f80fd5b3661036557005b5f80fd5b348015610374575f80fd5b5061037e61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103a6575f80fd5b506103b0600a5481565b604051908152602001610392565b3480156103c9575f80fd5b506103dd6103d8366004613138565b610a7e565b005b3480156103ea575f80fd5b5060135461040e9061ffff80821691620100008104821691600160201b9091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610392565b34801561043e575f80fd5b50604080518082019091526008815267556e6967656e466960c01b60208201525b6040516103929190613178565b348015610477575f80fd5b5060085461037e9061010090046001600160a01b031681565b34801561049b575f80fd5b506008546104a99060ff1681565b6040519015158152602001610392565b3480156104c4575f80fd5b506104a96104d33660046131c1565b610bb0565b3480156104e3575f80fd5b506104a96104f23660046131eb565b6001600160a01b03165f9081526005602052604090205460ff1690565b34801561051a575f80fd5b506103b0610bc6565b34801561052e575f80fd5b506103dd61053d366004613206565b610be5565b34801561054d575f80fd5b506103b0610d1c565b348015610561575f80fd5b506104a9610570366004613226565b610d37565b348015610580575f80fd5b506103b0600d5481565b348015610595575f80fd5b506103b0610dac565b3480156105a9575f80fd5b506103b0610bb881565b3480156105be575f80fd5b506103b0600b5481565b3480156105d3575f80fd5b5060405160128152602001610392565b3480156105ee575f80fd5b506103dd6105fd366004613271565b610def565b34801561060d575f80fd5b5060095461037e906001600160a01b031681565b34801561062c575f80fd5b506011546104a99060ff1681565b348015610645575f80fd5b506103b06106543660046132a8565b610e43565b348015610664575f80fd5b506103dd6106733660046131eb565b610e74565b348015610683575f80fd5b506104a96106923660046131eb565b6001600160a01b03165f9081526006602052604090205460ff1690565b3480156106ba575f80fd5b506011546104a990610100900460ff1681565b3480156106d8575f80fd5b506103dd6106e73660046132bf565b610fa3565b3480156106f7575f80fd5b506103dd610706366004613271565b6110a1565b348015610716575f80fd5b506103b060125481565b34801561072b575f80fd5b506104a961073a3660046131eb565b6001600160a01b03165f9081526007602052604090205460ff1690565b348015610762575f80fd5b506103b06110f5565b348015610776575f80fd5b506103b06107853660046131eb565b61110f565b348015610795575f80fd5b506103dd611129565b3480156107a9575f80fd5b506103dd611220565b3480156107bd575f80fd5b506017546001600160a01b031661037e565b3480156107da575f80fd5b506104a9611259565b3480156107ee575f80fd5b506103dd6112a9565b348015610802575f80fd5b506103dd6108113660046132a8565b611390565b348015610821575f80fd5b506103dd6108303660046132f0565b611409565b348015610840575f80fd5b50604080518082019091526004815263554e494760e01b602082015261045f565b34801561086c575f80fd5b506103dd61087b3660046133f3565b61161e565b34801561088b575f80fd5b506103dd61178b565b34801561089f575f80fd5b506104a96108ae3660046131c1565b611846565b3480156108be575f80fd5b506103dd6108cd3660046134af565b61185c565b3480156108dd575f80fd5b50600c546104a99060ff1681565b3480156108f6575f80fd5b506103dd610905366004613206565b6118e9565b348015610915575f80fd5b506103dd6109243660046131eb565b611a07565b348015610934575f80fd5b5060145461040e9061ffff80821691620100008104821691600160201b9091041683565b348015610963575f80fd5b506103dd6109723660046131eb565b611dcb565b348015610982575f80fd5b506103b06109913660046134cb565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156109c6575f80fd5b506103dd6109d53660046134cb565b611f42565b3480156109e5575f80fd5b506103dd6109f4366004613271565b612006565b348015610a04575f80fd5b50601554601654610a1f916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610392565b348015610a4a575f80fd5b506009546104a990600160a81b900460ff1681565b348015610a6a575f80fd5b506103dd610a79366004613271565b612145565b6017546001600160a01b03163314610ab15760405162461bcd60e51b8152600401610aa8906134f7565b60405180910390fd5b60085460ff1615610af85760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610aa8565b610bb88361ffff1611158015610b145750610bb88261ffff1611155b8015610b265750610bb88161ffff1611155b610b725760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610aa8565b6013805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b5f610bbc338484612199565b5060015b92915050565b5f610bd36012600a613616565b601054610be09190613624565b905090565b6017546001600160a01b03163314610c0f5760405162461bcd60e51b8152600401610aa8906134f7565b6103e8610c1e6012600a613616565b610c2c906305f5e100613643565b610c37906005613643565b610c419190613624565b8183610c4f6012600a613616565b610c5d906305f5e100613643565b610c679190613643565b610c719190613624565b1015610ce55760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610aa8565b8082610cf36012600a613616565b610d01906305f5e100613643565b610d0b9190613643565b610d159190613624565b600f555050565b5f610d296012600a613616565b610be0906305f5e100613643565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f1914610d99576001600160a01b0384165f90815260036020908152604080832033845290915281208054849290610d9390849061365a565b90915550505b610da4848484612291565b949350505050565b5f610db65f61110f565b610dc161dead61110f565b610dcb919061366d565b610dd76012600a613616565b610de5906305f5e100613643565b610be0919061365a565b6017546001600160a01b03163314610e195760405162461bcd60e51b8152600401610aa8906134f7565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b6009545f90612710908390610e60906001600160a01b031661110f565b610e6a9190613643565b610bc09190613624565b6017546001600160a01b03163314610e9e5760405162461bcd60e51b8152600401610aa8906134f7565b6001600160a01b038116610ec45760405162461bcd60e51b8152600401610aa890613680565b61deac196001600160a01b03821601610eef5760405162461bcd60e51b8152600401610aa890613680565b601754610f05906001600160a01b03165f6110a1565b610f108160016110a1565b6017545f90610f27906001600160a01b031661110f565b1115610f5257601754610f50906001600160a01b031682610f478261110f565b5f80600161278d565b505b601780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6017546001600160a01b03163314610fcd5760405162461bcd60e51b8152600401610aa8906134f7565b6014805461ffff838116620100000263ffffffff1990921690851617179055610ff681836136dd565b6014805465ffff000000001916600160201b61ffff938416021790556013545f9161102a91620100008104821691166136dd565b60145461ffff9182169250600160201b90041681101561109c5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610aa8565b505050565b6017546001600160a01b031633146110cb5760405162461bcd60e51b8152600401610aa8906134f7565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f6111026012600a613616565b600f54610be09190613624565b6001600160a01b03165f9081526020819052604090205490565b6017546001600160a01b031633146111535760405162461bcd60e51b8152600401610aa8906134f7565b60115460ff166111bd5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610aa8565b6017546111d3906001600160a01b03165f6110a1565b601780546001600160a01b031981169091556040516001600160a01b03909116905f9082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6017546001600160a01b0316331461124a5760405162461bcd60e51b8152600401610aa8906134f7565b6008805460ff19166001179055565b6017545f906001600160a01b031633146112855760405162461bcd60e51b8152600401610aa8906134f7565b6008546112a390309061010090046001600160a01b03165f19612199565b50600190565b6017546001600160a01b031633146112d35760405162461bcd60e51b8152600401610aa8906134f7565b60115460ff16156113265760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610aa8565b601154610100900460ff1661137d5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610aa8565b6011805460ff1916600117905542601255565b6017546001600160a01b031633146113ba5760405162461bcd60e51b8152600401610aa8906134f7565b60968111156114045760405162461bcd60e51b815260206004820152601660248201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b6044820152606401610aa8565b600d55565b6017546001600160a01b031633146114335760405162461bcd60e51b8152600401610aa8906134f7565b82846114416012600a613616565b61144f906305f5e100613643565b6114599190613643565b6114639190613624565b600a8190555080826012600a6114799190613616565b611487906305f5e100613643565b6114919190613643565b61149b9190613624565b600b819055600a5411156114fb5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610aa8565b60095461271090611514906001600160a01b031661110f565b61151f906096613643565b6115299190613624565b600b5411156115865760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610aa8565b620f42406115966012600a613616565b6115a4906305f5e100613643565b6115ae9190613624565b600b5410156115cf5760405162461bcd60e51b8152600401610aa8906136ff565b620f42406115df6012600a613616565b6115ed906305f5e100613643565b6115f79190613624565b600a5410156116185760405162461bcd60e51b8152600401610aa8906136ff565b50505050565b6017546001600160a01b031633146116485760405162461bcd60e51b8152600401610aa8906134f7565b80518251146116915760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610aa8565b5f5b82518161ffff16101561109c576116ac6012600a613616565b828261ffff16815181106116c2576116c261374d565b60200260200101516116d49190613643565b6116dd3361110f565b10156117205760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610aa8565b61177833848361ffff168151811061173a5761173a61374d565b60200260200101516012600a6117509190613616565b858561ffff16815181106117665761176661374d565b6020026020010151610f479190613643565b508061178381613761565b915050611693565b6017546001600160a01b031633146117b55760405162461bcd60e51b8152600401610aa8906134f7565b601154610100900460ff161561180d5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610aa8565b6017546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015611843573d5f803e3d5ffd5b50565b5f611852338484612291565b5060019392505050565b6017546001600160a01b031633146118865760405162461bcd60e51b8152600401610aa8906134f7565b6009805460ff60a81b1916600160a81b84151590810291909117909155600c805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6017546001600160a01b031633146119135760405162461bcd60e51b8152600401610aa8906134f7565b60646119216012600a613616565b61192f906305f5e100613643565b6119399190613624565b81836119476012600a613616565b611955906305f5e100613643565b61195f9190613643565b6119699190613624565b10156119d05760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b6064820152608401610aa8565b80826119de6012600a613616565b6119ec906305f5e100613643565b6119f69190613643565b611a009190613624565b6010555050565b6017546001600160a01b03163314611a315760405162461bcd60e51b8152600401610aa8906134f7565b601154610100900460ff1615611a895760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610aa8565b5f8190505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611aca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aee9190613781565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b5d9190613781565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611ba6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bca9190613781565b6009546001600160a01b039081165f908152600160205260409020805460ff191690559091508116611d5857816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c32573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c569190613781565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ca1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cc59190613781565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611d0f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d339190613781565b600980546001600160a01b0319166001600160a01b0392909216919091179055611d74565b600980546001600160a01b0319166001600160a01b0383161790555b60088054610100600160a81b0319166101006001600160a01b03858116820292909217835560095482165f908152600160208190526040909120805460ff19169091179055915461109c9230929104165f19612199565b6017546001600160a01b03163314611df55760405162461bcd60e51b8152600401610aa8906134f7565b601154610100900460ff1615611e5d57306001600160a01b03821603611e5d5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610aa8565b6017546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611eb2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ed6919061379c565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015611f1e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109c91906137b3565b6017546001600160a01b03163314611f6c5760405162461bcd60e51b8152600401610aa8906134f7565b6001600160a01b03821615801590611f8c57506001600160a01b03811615155b611fd85760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610aa8565b601580546001600160a01b039384166001600160a01b03199182161790915560168054929093169116179055565b6017546001600160a01b031633146120305760405162461bcd60e51b8152600401610aa8906134f7565b8061205657506001600160a01b03165f908152600160205260409020805460ff19169055565b600254156120af576203f48060025442612070919061365a565b116120af5760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610aa8565b6001600160a01b0382165f9081526001602052604090205460ff16156121175760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610aa8565b6001600160a01b0382165f908152600160208190526040909120805460ff19169091179055426002555b5050565b6017546001600160a01b0316331461216f5760405162461bcd60e51b8152600401610aa8906134f7565b6001600160a01b03919091165f908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166121e55760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610aa8565b6001600160a01b0382166122315760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610aa8565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b0384166122f65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610aa8565b6001600160a01b0383166123585760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610aa8565b5f82116123b95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610aa8565b6001600160a01b0384165f908152600160205260408120548190819060ff16156123e65760019250612413565b6001600160a01b0386165f9081526001602052604090205460ff161561240f5760019150612413565b5060015b61241d8787612af1565b1561268f5760115460ff1661251c57806124795760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610aa8565b6001600160a01b0387165f9081526005602052604090205460ff161580156124b957506001600160a01b0386165f9081526005602052604090205460ff16155b1561251c5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610aa8565b82806125255750815b156125d2576001600160a01b0387165f9081526007602052604090205460ff1615801561256a57506001600160a01b0386165f9081526007602052604090205460ff16155b156125d257600f548511156125d25760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610aa8565b6008546001600160a01b0387811661010090920416148015906125f3575081155b1561268f576001600160a01b0386165f9081526007602052604090205460ff1661268f57601054856126248861110f565b61262e919061366d565b111561268f5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610aa8565b8180156126b457506001600160a01b0387165f9081526006602052604090205460ff16155b80156126d857506001600160a01b0386165f9081526006602052604090205460ff16155b80156126ee5750600954600160a01b900460ff16155b1561277457600954600160a81b900460ff1615612774575f61270f3061110f565b9050600a54811061277257600b54600c5460ff161561275c57600d546009546127109190612745906001600160a01b031661110f565b61274f9190613643565b6127599190613624565b90505b808210612767578091505b61277082612bc5565b505b505b61278287878786868661278d565b979650505050505050565b6001600160a01b0386165f9081526006602052604081205460ff161580156127cd57506001600160a01b0386165f9081526006602052604090205460ff16155b156128c3576001600160a01b0387165f90815260208190526040812080548792906127f990849061365a565b90915550508315801561281b5750601354600e546201000090910461ffff1611155b1561282857506001612ae7565b5f6128368888888888612ef0565b9050805f80896001600160a01b03166001600160a01b031681526020019081526020015f205f828254612869919061366d565b92505081905550866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128b591815260200190565b60405180910390a350612a03565b6001600160a01b0386165f9081526001602052604090205460ff1680156128f15750846128ef8861110f565b105b15612958576001600160a01b0387165f908152602081905260408120805487929061291d90849061366d565b90915550506001600160a01b0386165f908152602081905260408120805487929061294990849061365a565b9091555060019150612ae79050565b6001600160a01b0387165f908152602081905260408120805487929061297f90849061365a565b90915550506001600160a01b0386165f908152602081905260408120805487928392916129ad90849061366d565b92505081905550866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129f991815260200190565b60405180910390a3505b601154610100900460ff16612ae357612a1c878761300b565b601154610100900460ff16158015612a395750612a398787612af1565b8015612a5d57506001600160a01b0387165f9081526005602052604090205460ff16155b8015612a8157506001600160a01b0386165f9081526005602052604090205460ff16155b8015612a8b575081155b15612ae35760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610aa8565b5060015b9695505050505050565b6017545f906001600160a01b03848116911614801590612b1f57506017546001600160a01b03838116911614155b8015612b3657506017546001600160a01b03163214155b8015612b5a57506001600160a01b0382165f9081526004602052604090205460ff16155b8015612b7e57506001600160a01b0383165f9081526004602052604090205460ff16155b8015612b9557506001600160a01b03821661dead14155b8015612ba957506001600160a01b03821615155b8015612bbe57506001600160a01b0383163014155b9392505050565b6009805460ff60a01b1916600160a01b1790556040805160608101825260145461ffff808216835262010000820481166020840152600160201b90910416918101829052905f03612c165750612ee0565b305f90815260036020908152604080832060085461010090046001600160a01b031684529091529020545f1914612c7557305f90815260036020908152604080832060085461010090046001600160a01b0316845290915290205f1990555b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612ca857612ca861374d565b60200260200101906001600160a01b031690816001600160a01b031681525050600860019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d19573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d3d9190613781565b81600181518110612d5057612d5061374d565b6001600160a01b03928316602091820292909201015260085460405163791ac94760e01b81526101009091049091169063791ac94790612d9c9086905f908690309042906004016137ce565b5f604051808303815f87803b158015612db3575f80fd5b505af1925050508015612dc4575060015b612dcf575050612ee0565b5f4790505f80846040015161ffff16856020015161ffff1684612df29190613643565b612dfc9190613624565b90505f612e09828561365a565b602087015190915061ffff1615612e74576016546040516001600160a01b039091169061d6d89084905f818181858888f193505050503d805f8114612e69576040519150601f19603f3d011682016040523d82523d5f602084013e612e6e565b606091505b50909350505b855161ffff1615612ed9576015546040516001600160a01b039091169061d6d89083905f818181858888f193505050503d805f8114612ece576040519150601f19603f3d011682016040523d82523d5f602084013e612ed3565b606091505b50909350505b5050505050505b506009805460ff60a01b19169055565b5f808315612f05575060135461ffff16612f5f565b8215612f1e575060135462010000900461ffff16612f5f565b6001600160a01b03861661dead148015612f395750600a5485115b15612f4f5760135462010000900461ffff16600e555b50601354600160201b900461ffff165b805f03612f6f5784915050613002565b5f612710612f7d8388613643565b612f879190613624565b90508015612ff357305f9081526020819052604081208054839290612fad90849061366d565b909155505060405181815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612ffd818761365a565b925050505b95945050505050565b601154610100900460ff161561306f5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610aa8565b6130798282612af1565b15801561309357506009546001600160a01b038281169116145b15612141576001600160a01b0382165f908152600460209081526040808320805460ff1990811660019081179092556006845293829020805490941681179093556011805461ff0019166101001790556009805460ff60a81b1916600160a81b179055519182527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325791016118dd565b803561ffff81168114613133575f80fd5b919050565b5f805f6060848603121561314a575f80fd5b61315384613122565b925061316160208501613122565b915061316f60408501613122565b90509250925092565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611843575f80fd5b5f80604083850312156131d2575f80fd5b82356131dd816131ad565b946020939093013593505050565b5f602082840312156131fb575f80fd5b8135612bbe816131ad565b5f8060408385031215613217575f80fd5b50508035926020909101359150565b5f805f60608486031215613238575f80fd5b8335613243816131ad565b92506020840135613253816131ad565b929592945050506040919091013590565b8015158114611843575f80fd5b5f8060408385031215613282575f80fd5b823561328d816131ad565b9150602083013561329d81613264565b809150509250929050565b5f602082840312156132b8575f80fd5b5035919050565b5f80604083850312156132d0575f80fd5b6132d983613122565b91506132e760208401613122565b90509250929050565b5f805f8060808587031215613303575f80fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561335c5761335c61331f565b604052919050565b5f67ffffffffffffffff82111561337d5761337d61331f565b5060051b60200190565b5f82601f830112613396575f80fd5b813560206133ab6133a683613364565b613333565b8083825260208201915060208460051b8701019350868411156133cc575f80fd5b602086015b848110156133e857803583529183019183016133d1565b509695505050505050565b5f8060408385031215613404575f80fd5b823567ffffffffffffffff8082111561341b575f80fd5b818501915085601f83011261342e575f80fd5b8135602061343e6133a683613364565b82815260059290921b8401810191818101908984111561345c575f80fd5b948201945b83861015613483578535613474816131ad565b82529482019490820190613461565b96505086013592505080821115613498575f80fd5b506134a585828601613387565b9150509250929050565b5f80604083850312156134c0575f80fd5b823561328d81613264565b5f80604083850312156134dc575f80fd5b82356134e7816131ad565b9150602083013561329d816131ad565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561357057815f190482111561355657613556613522565b8085161561356357918102915b93841c939080029061353b565b509250929050565b5f8261358657506001610bc0565b8161359257505f610bc0565b81600181146135a857600281146135b2576135ce565b6001915050610bc0565b60ff8411156135c3576135c3613522565b50506001821b610bc0565b5060208310610133831016604e8410600b84101617156135f1575081810a610bc0565b6135fb8383613536565b805f190482111561360e5761360e613522565b029392505050565b5f612bbe60ff841683613578565b5f8261363e57634e487b7160e01b5f52601260045260245ffd5b500490565b8082028115828204841417610bc057610bc0613522565b81810381811115610bc057610bc0613522565b80820180821115610bc057610bc0613522565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b61ffff8181168382160190808211156136f8576136f8613522565b5092915050565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b5f61ffff80831681810361377757613777613522565b6001019392505050565b5f60208284031215613791575f80fd5b8151612bbe816131ad565b5f602082840312156137ac575f80fd5b5051919050565b5f602082840312156137c3575f80fd5b8151612bbe81613264565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561381e5784516001600160a01b0316835293830193918301916001016137f9565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220f2054fef6c0181853105c1e2f515f291391b8c0e1c568f7c5f4a458f6476a71164736f6c63430008190033
Deployed Bytecode Sourcemap
3716:20610:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4778:73;;;;;;;;;;;;4809:42;4778:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;4778:73:0;;;;;;;;4922:51;;;;;;;;;;;;;;;;;;;368:25:1;;;356:2;341:18;4922:51:0;222:177:1;12284:456:0;;;;;;;;;;-1:-1:-1;12284:456:0;;;;;:::i;:::-;;:::i;:::-;;5609:107;;;;;;;;;;-1:-1:-1;5609:107:0;;;;;;;;;;;;;;;-1:-1:-1;;;5609:107:0;;;;;;;;;;1107:6:1;1140:15;;;1122:34;;1192:15;;;1187:2;1172:18;;1165:43;1244:15;;1224:18;;;1217:43;;;;1085:2;1070:18;5609:107:0;901:365:1;9484:80:0;;;;;;;;;;-1:-1:-1;9556:5:0;;;;;;;;;;;;-1:-1:-1;;;9556:5:0;;;;9484:80;;;;;;;:::i;4717:26::-;;;;;;;;;;-1:-1:-1;4717:26:0;;;;;;;-1:-1:-1;;;;;4717:26:0;;;4684;;;;;;;;;;-1:-1:-1;4684:26:0;;;;;;;;;;;2084:14:1;;2077:22;2059:41;;2047:2;2032:18;4684:26:0;1919:187:1;10092:161:0;;;;;;;;;;-1:-1:-1;10092:161:0;;;;;:::i;:::-;;:::i;11641:140::-;;;;;;;;;;-1:-1:-1;11641:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;11739:34:0;11715:4;11739:34;;;:25;:34;;;;;;;;;11641:140;14173:114;;;;;;;;;;;;;:::i;13498:276::-;;;;;;;;;;-1:-1:-1;13498:276:0;;;;;:::i;:::-;;:::i;9219:83::-;;;;;;;;;;;;;:::i;10762:306::-;;;;;;;;;;-1:-1:-1;10762:306:0;;;;;:::i;:::-;;:::i;5077:33::-;;;;;;;;;;;;;;;;11945:141;;;;;;;;;;;;;:::i;4483:42::-;;;;;;;;;;;;4521:4;4483:42;;4980:49;;;;;;;;;;;;;;;;9308:80;;;;;;;;;;-1:-1:-1;9308:80:0;;4402:2;3675:36:1;;3663:2;3648:18;9308:80:0;3533:184:1;11216:140:0;;;;;;;;;;-1:-1:-1;11216:140:0;;;;;:::i;:::-;;:::i;4750:21::-;;;;;;;;;;-1:-1:-1;4750:21:0;;;;-1:-1:-1;;;;;4750:21:0;;;5271:34;;;;;;;;;;-1:-1:-1;5271:34:0;;;;;;;;14295:189;;;;;;;;;;-1:-1:-1;14295:189:0;;;;;:::i;:::-;;:::i;7866:647::-;;;;;;;;;;-1:-1:-1;7866:647:0;;;;;:::i;:::-;;:::i;11364:127::-;;;;;;;;;;-1:-1:-1;11364:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;11455:28:0;11431:4;11455:28;;;:19;:28;;;;;;;;;11364:127;5312:36;;;;;;;;;;-1:-1:-1;5312:36:0;;;;;;;;;;;12748:377;;;;;;;;;;-1:-1:-1;12748:377:0;;;;;:::i;:::-;;:::i;11499:134::-;;;;;;;;;;-1:-1:-1;11499:134:0;;;;;:::i;:::-;;:::i;5355:26::-;;;;;;;;;;;;;;;;11076:132;;;;;;;;;;-1:-1:-1;11076:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;11170:30:0;11146:4;11170:30;;;:21;:30;;;;;;;;;11076:132;14057:108;;;;;;;;;;;;;:::i;9794:117::-;;;;;;;;;;-1:-1:-1;9794:117:0;;;;;:::i;:::-;;:::i;8521:310::-;;;;;;;;;;;;;:::i;12094:182::-;;;;;;;;;;;;;:::i;9570:79::-;;;;;;;;;;-1:-1:-1;9640:6:0;;-1:-1:-1;;;;;9640:6:0;9570:79;;10579:175;;;;;;;;;;;;;:::i;17104:249::-;;;;;;;;;;;;;:::i;22535:220::-;;;;;;;;;;-1:-1:-1;22535:220:0;;;;;:::i;:::-;;:::i;21825:702::-;;;;;;;;;;-1:-1:-1;21825:702:0;;;;;:::i;:::-;;:::i;9394:84::-;;;;;;;;;;-1:-1:-1;9468:7:0;;;;;;;;;;;;-1:-1:-1;;;9468:7:0;;;;9394:84;;17853:442;;;;;;;;;;-1:-1:-1;17853:442:0;;;;;:::i;:::-;;:::i;17361:177::-;;;;;;;;;;;;;:::i;9919:165::-;;;;;;;;;;-1:-1:-1;9919:165:0;;;;;:::i;:::-;;:::i;22763:266::-;;;;;;;;;;-1:-1:-1;22763:266:0;;;;;:::i;:::-;;:::i;5036:34::-;;;;;;;;;;-1:-1:-1;5036:34:0;;;;;;;;13782:267;;;;;;;;;;-1:-1:-1;13782:267:0;;;;;:::i;:::-;;:::i;20668:671::-;;;;;;;;;;-1:-1:-1;20668:671:0;;;;;:::i;:::-;;:::i;5725:110::-;;;;;;;;;;-1:-1:-1;5725:110:0;;;;;;;;;;;;;;;-1:-1:-1;;;5725:110:0;;;;;;17546:299;;;;;;;;;;-1:-1:-1;17546:299:0;;;;;:::i;:::-;;:::i;9655:133::-;;;;;;;;;;-1:-1:-1;9655:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9757:19:0;;;9739:7;9757:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9655:133;13133:357;;;;;;;;;;-1:-1:-1;13133:357:0;;;;;:::i;:::-;;:::i;21347:470::-;;;;;;;;;;-1:-1:-1;21347:470:0;;;;;:::i;:::-;;:::i;5952:199::-;;;;;;;;;;-1:-1:-1;5952:199:0;;;;;;-1:-1:-1;;;;;5952:199:0;;;;;;;;;;;-1:-1:-1;;;;;9006:15:1;;;8988:34;;9058:15;;;;9053:2;9038:18;;9031:43;8923:18;5952:199:0;8744:336:1;4876:39:0;;;;;;;;;;-1:-1:-1;4876:39:0;;;;-1:-1:-1;;;4876:39:0;;;;;;11789:148;;;;;;;;;;-1:-1:-1;11789:148:0;;;;;:::i;:::-;;:::i;12284:456::-;6351:6;;-1:-1:-1;;;;;6351:6:0;6361:10;6351:20;6343:50;;;;-1:-1:-1;;;6343:50:0;;;;;;;:::i;:::-;;;;;;;;;12395:14:::1;::::0;::::1;;12394:15;12386:45;;;::::0;-1:-1:-1;;;12386:45:0;;9633:2:1;12386:45:0::1;::::0;::::1;9615:21:1::0;9672:2;9652:18;;;9645:30;-1:-1:-1;;;9691:18:1;;;9684:47;9748:18;;12386:45:0::1;9431:341:1::0;12386:45:0::1;4521:4;12450:6;:21;;;;:65;;;;;4571:4;12492:7;:23;;;;12450:65;:117;;;;;4625:4;12536:11;:31;;;;12450:117;12442:170;;;::::0;-1:-1:-1;;;12442:170:0;;9979:2:1;12442:170:0::1;::::0;::::1;9961:21:1::0;10018:2;9998:18;;;9991:30;10057:25;10037:18;;;10030:53;10100:18;;12442:170:0::1;9777:347:1::0;12442:170:0::1;12623:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;12659:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;12697:35:0::1;-1:-1:-1::0;;;12697:35:0;;;::::1;;::::0;;;::::1;::::0;;12284:456::o;10092:161::-;10169:4;10186:37;10195:10;10207:7;10216:6;10186:8;:37::i;:::-;-1:-1:-1;10241:4:0;10092:161;;;;;:::o;14173:114::-;14220:7;14265:13;4402:2;14265;:13;:::i;:::-;14247:14;;:32;;;;:::i;:::-;14240:39;;14173:114;:::o;13498:276::-;6351:6;;-1:-1:-1;;;;;6351:6:0;6361:10;6351:20;6343:50;;;;-1:-1:-1;;;6343:50:0;;;;;;;:::i;:::-;13646:4:::1;4463:13;4402:2;4463;:13;:::i;:::-;4446:30;::::0;4255:9:::1;4446:30;:::i;:::-;13632:11;::::0;13642:1:::1;13632:11;:::i;:::-;:18;;;;:::i;:::-;13620:7:::0;13609;4463:13:::1;4402:2;4463;:13;:::i;:::-;4446:30;::::0;4255:9:::1;4446:30;:::i;:::-;13599:17;;;;:::i;:::-;13598:29;;;;:::i;:::-;:53;;13590:121;;;::::0;-1:-1:-1;;;13590:121:0;;12235:2:1;13590:121:0::1;::::0;::::1;12217:21:1::0;12274:2;12254:18;;;12247:30;12313:34;12293:18;;;12286:62;12384:25;12364:18;;;12357:53;12427:19;;13590:121:0::1;12033:419:1::0;13590:121:0::1;13759:7:::0;13748;4463:13:::1;4402:2;4463;:13;:::i;:::-;4446:30;::::0;4255:9:::1;4446:30;:::i;:::-;13738:17;;;;:::i;:::-;13737:29;;;;:::i;:::-;13722:12;:44:::0;-1:-1:-1;;13498:276:0:o;9219:83::-;9274:7;4463:13;4402:2;4463;:13;:::i;:::-;4446:30;;4255:9;4446:30;:::i;10762:306::-;-1:-1:-1;;;;;10883:19:0;;10862:4;10883:19;;;:11;:19;;;;;;;;10903:10;10883:31;;;;;;;;-1:-1:-1;;10883:52:0;10879:126;;-1:-1:-1;;;;;10952:19:0;;;;;;:11;:19;;;;;;;;10972:10;10952:31;;;;;;;:41;;10987:6;;10952:19;:41;;10987:6;;10952:41;:::i;:::-;;;;-1:-1:-1;;10879:126:0;11024:36;11034:6;11042:9;11053:6;11024:9;:36::i;:::-;11017:43;10762:306;-1:-1:-1;;;;10762:306:0:o;11945:141::-;11998:7;12055:21;12073:1;12055:9;:21::i;:::-;12037:15;4809:42;12037:9;:15::i;:::-;:39;;;;:::i;:::-;4463:13;4402:2;4463;:13;:::i;:::-;4446:30;;4255:9;4446:30;:::i;:::-;12026:51;;;;:::i;11216:140::-;6351:6;;-1:-1:-1;;;;;6351:6:0;6361:10;6351:20;6343:50;;;;-1:-1:-1;;;6343:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11308:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;11308:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11216:140::o;14295:189::-;14424:6;;14386:7;;4672:5;;14434:21;;14414:17;;-1:-1:-1;;;;;14424:6:0;14414:9;:17::i;:::-;:41;;;;:::i;:::-;14413:62;;;;:::i;7866:647::-;6351:6;;-1:-1:-1;;;;;6351:6:0;6361:10;6351:20;6343:50;;;;-1:-1:-1;;;6343:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7945:22:0;::::1;7937:96;;;;-1:-1:-1::0;;;7937:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;;8052:16:0;::::1;::::0;8044:90:::1;;;;-1:-1:-1::0;;;8044:90:0::1;;;;;;;:::i;:::-;8165:6;::::0;8145:34:::1;::::0;-1:-1:-1;;;;;8165:6:0::1;;8145:19;:34::i;:::-;8190:35;8210:8;8220:4;8190:19;:35::i;:::-;8260:6;::::0;8270:1:::1;::::0;8250:17:::1;::::0;-1:-1:-1;;;;;8260:6:0::1;8250:9;:17::i;:::-;:21;8246:120;;;8298:6;::::0;8288:66:::1;::::0;-1:-1:-1;;;;;8298:6:0::1;8306:8:::0;8316:17:::1;8298:6:::0;8316:9:::1;:17::i;:::-;8335:5;8342::::0;8349:4:::1;8288:9;:66::i;:::-;;8246:120;8405:6;::::0;;-1:-1:-1;;;;;8422:17:0;;::::1;-1:-1:-1::0;;;;;;8422:17:0;::::1;::::0;::::1;::::0;;;8455:40:::1;::::0;8405:6;::::1;::::0;8422:17;8405:6;;8455:40:::1;::::0;8386:16:::1;::::0;8455:40:::1;7926:587;7866:647:::0;:::o;12748:377::-;6351:6;;-1:-1:-1;;;;;6351:6:0;6361:10;6351:20;6343:50;;;;-1:-1:-1;;;6343:50:0;;;;;;;:::i;:::-;12838:7:::1;:29:::0;;::::1;12878:33:::0;;::::1;::::0;::::1;-1:-1:-1::0;;12878:33:0;;;12838:29;;::::1;12878:33:::0;::::1;::::0;;12942:23:::1;12900:11:::0;12858:9;12942:23:::1;:::i;:::-;12922:7;:43:::0;;-1:-1:-1;;12922:43:0::1;-1:-1:-1::0;;;12922:43:0::1;::::0;;::::1;;;::::0;;13011:9:::1;:17:::0;-1:-1:-1;;12992:36:0::1;::::0;13011:17;;::::1;::::0;::::1;::::0;12992:16:::1;:36;:::i;:::-;13047:7;:17:::0;12976:52:::1;::::0;;::::1;::::0;-1:-1:-1;;;;13047:17:0;::::1;;:26:::0;-1:-1:-1;13047:26:0::1;13039:78;;;::::0;-1:-1:-1;;;13039:78:0;;13525:2:1;13039:78:0::1;::::0;::::1;13507:21:1::0;13564:2;13544:18;;;13537:30;13603:34;13583:18;;;13576:62;-1:-1:-1;;;13654:18:1;;;13647:37;13701:19;;13039:78:0::1;13323:403:1::0;13039:78:0::1;12827:298;12748:377:::0;;:::o;11499:134::-;6351:6;;-1:-1:-1;;;;;6351:6:0;6361:10;6351:20;6343:50;;;;-1:-1:-1;;;6343:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11587:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;11587:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11499:134::o;14057:108::-;14100:7;14143:13;4402:2;14143;:13;:::i;:::-;14127:12;;:30;;;;:::i;9794:117::-;-1:-1:-1;;;;;9887:16:0;9860:7;9887:16;;;;;;;;;;;;9794:117::o;8521:310::-;6351:6;;-1:-1:-1;;;;;6351:6:0;6361:10;6351:20;6343:50;;;;-1:-1:-1;;;6343:50:0;;;;;;;:::i;:::-;8588:14:::1;::::0;::::1;;8580:74;;;::::0;-1:-1:-1;;;8580:74:0;;13933:2:1;8580:74:0::1;::::0;::::1;13915:21:1::0;13972:2;13952:18;;;13945:30;14011:34;13991:18;;;13984:62;-1:-1:-1;;;14062:18:1;;;14055:45;14117:19;;8580:74:0::1;13731:411:1::0;8580:74:0::1;8685:6;::::0;8665:34:::1;::::0;-1:-1:-1;;;;;8685:6:0::1;;8665:19;:34::i;:::-;8729:6;::::0;;-1:-1:-1;;;;;;8746:19:0;::::1;::::0;;;8781:42:::1;::::0;-1:-1:-1;;;;;8729:6:0;;::::1;::::0;8710:16:::1;::::0;8729:6;;8781:42:::1;::::0;8710:16;;8781:42:::1;8569:262;8521:310::o:0;12094:182::-;6351:6;;-1:-1:-1;;;;;6351:6:0;6361:10;6351:20;6343:50;;;;-1:-1:-1;;;6343:50:0;;;;;;;:::i;:::-;12247:14:::1;:21:::0;;-1:-1:-1;;12247:21:0::1;12264:4;12247:21;::::0;;12094:182::o;10579:175::-;6351:6;;10645:4;;-1:-1:-1;;;;;6351:6:0;6361:10;6351:20;6343:50;;;;-1:-1:-1;;;6343:50:0;;;;;;;:::i;:::-;10694:9:::1;::::0;10662:62:::1;::::0;10679:4:::1;::::0;10694:9:::1;::::0;::::1;-1:-1:-1::0;;;;;10694:9:0::1;-1:-1:-1::0;;10662:8:0::1;:62::i;:::-;-1:-1:-1::0;10742:4:0::1;10579:175:::0;:::o;17104:249::-;6351:6;;-1:-1:-1;;;;;6351:6:0;6361:10;6351:20;6343:50;;;;-1:-1:-1;;;6343:50:0;;;;;;;:::i;:::-;17166:14:::1;::::0;::::1;;17165:15;17157:52;;;::::0;-1:-1:-1;;;17157:52:0;;14349:2:1;17157:52:0::1;::::0;::::1;14331:21:1::0;14388:2;14368:18;;;14361:30;14427:26;14407:18;;;14400:54;14471:18;;17157:52:0::1;14147:348:1::0;17157:52:0::1;17228:16;::::0;::::1;::::0;::::1;;;17220:53;;;::::0;-1:-1:-1;;;17220:53:0;;14702:2:1;17220:53:0::1;::::0;::::1;14684:21:1::0;14741:2;14721:18;;;14714:30;14780:26;14760:18;;;14753:54;14824:18;;17220:53:0::1;14500:348:1::0;17220:53:0::1;17284:14;:21:::0;;-1:-1:-1;;17284:21:0::1;17301:4;17284:21;::::0;;17330:15:::1;17316:11;:29:::0;17104:249::o;22535:220::-;6351:6;;-1:-1:-1;;;;;6351:6:0;6361:10;6351:20;6343:50;;;;-1:-1:-1;;;6343:50:0;;;;;;;:::i;:::-;22668:3:::1;22642:22;:29;;22634:64;;;::::0;-1:-1:-1;;;22634:64:0;;15055:2:1;22634:64:0::1;::::0;::::1;15037:21:1::0;15094:2;15074:18;;;15067:30;-1:-1:-1;;;15113:18:1;;;15106:52;15175:18;;22634:64:0::1;14853:346:1::0;22634:64:0::1;22709:13;:38:::0;22535:220::o;21825:702::-;6351:6;;-1:-1:-1;;;;;6351:6:0;6361:10;6351:20;6343:50;;;;-1:-1:-1;;;6343:50:0;;;;;;;:::i;:::-;22028:16;22008;4463:13:::1;4402:2;4463;:13;:::i;:::-;4446:30;::::0;4255:9:::1;4446:30;:::i;:::-;21998:26;;;;:::i;:::-;21997:47;;;;:::i;:::-;21981:13;:63;;;;22096:13;22079;4402:2;4463;:13;;;;:::i;:::-;4446:30;::::0;4255:9:::1;4446:30;:::i;:::-;22069:23;;;;:::i;:::-;22068:41;;;;:::i;:::-;22055:10;:54:::0;;;22128:13:::1;::::0;:27:::1;;22120:73;;;::::0;-1:-1:-1;;;22120:73:0;;15406:2:1;22120:73:0::1;::::0;::::1;15388:21:1::0;15445:2;15425:18;;;15418:30;15484:34;15464:18;;;15457:62;-1:-1:-1;;;15535:18:1;;;15528:31;15576:19;;22120:73:0::1;15204:397:1::0;22120:73:0::1;22237:6;::::0;4672:5:::1;::::0;22227:17:::1;::::0;-1:-1:-1;;;;;22237:6:0::1;22227:9;:17::i;:::-;:23;::::0;22247:3:::1;22227:23;:::i;:::-;22226:44;;;;:::i;:::-;22212:10;;:58;;22204:106;;;::::0;-1:-1:-1;;;22204:106:0;;15808:2:1;22204:106:0::1;::::0;::::1;15790:21:1::0;15847:2;15827:18;;;15820:30;15886:34;15866:18;;;15859:62;-1:-1:-1;;;15937:18:1;;;15930:33;15980:19;;22204:106:0::1;15606:399:1::0;22204:106:0::1;22353:9;4463:13;4402:2;4463;:13;:::i;:::-;4446:30;::::0;4255:9:::1;4446:30;:::i;:::-;22343:19;;;;:::i;:::-;22329:10;;:33;;22321:92;;;;-1:-1:-1::0;;;22321:92:0::1;;;;;;;:::i;:::-;22459:9;4463:13;4402:2;4463;:13;:::i;:::-;4446:30;::::0;4255:9:::1;4446:30;:::i;:::-;22449:19;;;;:::i;:::-;22432:13;;:36;;22424:95;;;;-1:-1:-1::0;;;22424:95:0::1;;;;;;;:::i;:::-;21825:702:::0;;;;:::o;17853:442::-;6351:6;;-1:-1:-1;;;;;6351:6:0;6361:10;6351:20;6343:50;;;;-1:-1:-1;;;6343:50:0;;;;;;;:::i;:::-;17990:7:::1;:14;17971:8;:15;:33;17963:67;;;::::0;-1:-1:-1;;;17963:67:0;;16627:2:1;17963:67:0::1;::::0;::::1;16609:21:1::0;16666:2;16646:18;;;16639:30;-1:-1:-1;;;16685:18:1;;;16678:51;16746:18;;17963:67:0::1;16425:345:1::0;17963:67:0::1;18046:8;18041:247;18064:8;:15;18060:1;:19;;;18041:247;;;18145:13;4402:2;18145;:13;:::i;:::-;18134:7;18142:1;18134:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;18109:21;18119:10;18109:9;:21::i;:::-;:49;;18101:80;;;::::0;-1:-1:-1;;;18101:80:0;;17109:2:1;18101:80:0::1;::::0;::::1;17091:21:1::0;17148:2;17128:18;;;17121:30;-1:-1:-1;;;17167:18:1;;;17160:48;17225:18;;18101:80:0::1;16907:342:1::0;18101:80:0::1;18196;18206:10;18218:8;18227:1;18218:11;;;;;;;;;;:::i;:::-;;;;;;;4402:2;18242;:13;;;;:::i;:::-;18231:7;18239:1;18231:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;18196:80::-;-1:-1:-1::0;18081:3:0;::::1;::::0;::::1;:::i;:::-;;;;18041:247;;17361:177:::0;6351:6;;-1:-1:-1;;;;;6351:6:0;6361:10;6351:20;6343:50;;;;-1:-1:-1;;;6343:50:0;;;;;;;:::i;:::-;17423:16:::1;::::0;::::1;::::0;::::1;;;17422:17;17414:58;;;::::0;-1:-1:-1;;;17414:58:0;;17658:2:1;17414:58:0::1;::::0;::::1;17640:21:1::0;17697:2;17677:18;;;17670:30;17736;17716:18;;;17709:58;17784:18;;17414:58:0::1;17456:352:1::0;17414:58:0::1;17491:6;::::0;17483:47:::1;::::0;-1:-1:-1;;;;;17491:6:0;;::::1;::::0;17508:21:::1;17483:47:::0;::::1;;;::::0;17491:6:::1;17483:47:::0;17491:6;17483:47;17508:21;17491:6;17483:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17361:177::o:0;9919:165::-;9997:4;10014:40;10024:10;10036:9;10047:6;10014:9;:40::i;:::-;-1:-1:-1;10072:4:0;;9919:165;-1:-1:-1;;;9919:165:0:o;22763:266::-;6351:6;;-1:-1:-1;;;;;6351:6:0;6361:10;6351:20;6343:50;;;;-1:-1:-1;;;6343:50:0;;;;;;;:::i;:::-;22875:19:::1;:33:::0;;-1:-1:-1;;;;22875:33:0::1;-1:-1:-1::0;;;22875:33:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;22919:22:::1;:47:::0;;-1:-1:-1;;22919:47:0::1;::::0;::::1;;;::::0;;22982:39:::1;::::0;2059:41:1;;;22982:39:0::1;::::0;2047:2:1;2032:18;22982:39:0::1;;;;;;;;22763:266:::0;;:::o;13782:267::-;6351:6;;-1:-1:-1;;;;;6351:6:0;6361:10;6351:20;6343:50;;;;-1:-1:-1;;;6343:50:0;;;;;;;:::i;:::-;13927:3:::1;4463:13;4402:2;4463;:13;:::i;:::-;4446:30;::::0;4255:9:::1;4446:30;:::i;:::-;13917:13;;;;:::i;:::-;13905:7:::0;13894;4463:13:::1;4402:2;4463;:13;:::i;:::-;4446:30;::::0;4255:9:::1;4446:30;:::i;:::-;13884:17;;;;:::i;:::-;13883:29;;;;:::i;:::-;:48;;13875:109;;;::::0;-1:-1:-1;;;13875:109:0;;18015:2:1;13875:109:0::1;::::0;::::1;17997:21:1::0;18054:2;18034:18;;;18027:30;18093:34;18073:18;;;18066:62;-1:-1:-1;;;18144:18:1;;;18137:46;18200:19;;13875:109:0::1;17813:412:1::0;13875:109:0::1;14034:7:::0;14023;4463:13:::1;4402:2;4463;:13;:::i;:::-;4446:30;::::0;4255:9:::1;4446:30;:::i;:::-;14013:17;;;;:::i;:::-;14012:29;;;;:::i;:::-;13995:14;:46:::0;-1:-1:-1;;13782:267:0:o;20668:671::-;6351:6;;-1:-1:-1;;;;;6351:6:0;6361:10;6351:20;6343:50;;;;-1:-1:-1;;;6343:50:0;;;;;;;:::i;:::-;20748:16:::1;::::0;::::1;::::0;::::1;;;20747:17;20739:60;;;::::0;-1:-1:-1;;;20739:60:0;;18432:2:1;20739:60:0::1;::::0;::::1;18414:21:1::0;18471:2;18451:18;;;18444:30;18510:32;18490:18;;;18483:60;18560:18;;20739:60:0::1;18230:354:1::0;20739:60:0::1;20810:20;20843:9;20810:43;;20864:16;20894:10;-1:-1:-1::0;;;;;20894:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20883:40:0::1;;20932:4;20939:10;-1:-1:-1::0;;;;;20939:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20883:74;::::0;-1:-1:-1;;;;;;20883:74:0::1;::::0;;;;;;-1:-1:-1;;;;;9006:15:1;;;20883:74:0::1;::::0;::::1;8988:34:1::0;9058:15;;9038:18;;;9031:43;8923:18;;20883:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20976:6;::::0;-1:-1:-1;;;;;20976:6:0;;::::1;20986:5;20968:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;20968:23:0::1;::::0;;20864:93;;-1:-1:-1;21006:22:0;::::1;21002:191;;21065:10;-1:-1:-1::0;;;;;21065:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21054:43:0::1;;21106:4;21113:10;-1:-1:-1::0;;;;;21113:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21054:77;::::0;-1:-1:-1;;;;;;21054:77:0::1;::::0;;;;;;-1:-1:-1;;;;;9006:15:1;;;21054:77:0::1;::::0;::::1;8988:34:1::0;9058:15;;9038:18;;;9031:43;8923:18;;21054:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21045:6;:86:::0;;-1:-1:-1;;;;;;21045:86:0::1;-1:-1:-1::0;;;;;21045:86:0;;;::::1;::::0;;;::::1;::::0;;21002:191:::1;;;21164:6;:17:::0;;-1:-1:-1;;;;;;21164:17:0::1;-1:-1:-1::0;;;;;21164:17:0;::::1;;::::0;;21002:191:::1;21203:9;:22:::0;;-1:-1:-1;;;;;;21203:22:0::1;;-1:-1:-1::0;;;;;21203:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;21244:6:::1;::::0;;::::1;-1:-1:-1::0;21236:15:0;;;-1:-1:-1;21236:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;21236:22:0::1;::::0;;::::1;::::0;;21301:9;;21269:62:::1;::::0;21286:4:::1;::::0;21301:9;::::1;;-1:-1:-1::0;;21269:8:0::1;:62::i;17546:299::-:0;6351:6;;-1:-1:-1;;;;;6351:6:0;6361:10;6351:20;6343:50;;;;-1:-1:-1;;;6343:50:0;;;;;;;:::i;:::-;17627:16:::1;::::0;::::1;::::0;::::1;;;17623:111;;;17685:4;-1:-1:-1::0;;;;;17668:22:0;::::1;::::0;17660:62:::1;;;::::0;-1:-1:-1;;;17660:62:0;;19356:2:1;17660:62:0::1;::::0;::::1;19338:21:1::0;19395:2;19375:18;;;19368:30;19434:29;19414:18;;;19407:57;19481:18;;17660:62:0::1;19154:351:1::0;17660:62:0::1;17798:6;::::0;17806:30:::1;::::0;-1:-1:-1;;;17806:30:0;;17830:4:::1;17806:30;::::0;::::1;160:51:1::0;17766:5:0;;-1:-1:-1;;;;;17783:14:0;;::::1;::::0;::::1;::::0;17798:6;;;::::1;::::0;17783:14;;17806:15:::1;::::0;133:18:1;;17806:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17783:54;::::0;-1:-1:-1;;;;;;17783:54:0::1;::::0;;;;;;-1:-1:-1;;;;;19891:32:1;;;17783:54:0::1;::::0;::::1;19873:51:1::0;19940:18;;;19933:34;19846:18;;17783:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13133:357::-:0;6351:6;;-1:-1:-1;;;;;6351:6:0;6361:10;6351:20;6343:50;;;;-1:-1:-1;;;6343:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13275:23:0;::::1;::::0;;::::1;::::0;:69:::1;;-1:-1:-1::0;;;;;;13319:25:0;::::1;::::0;::::1;13275:69;13267:105;;;::::0;-1:-1:-1;;;13267:105:0;;20430:2:1;13267:105:0::1;::::0;::::1;20412:21:1::0;20469:2;20449:18;;;20442:30;20508:25;20488:18;;;20481:53;20551:18;;13267:105:0::1;20228:347:1::0;13267:105:0::1;13383:11;:42:::0;;-1:-1:-1;;;;;13383:42:0;;::::1;-1:-1:-1::0;;;;;;13383:42:0;;::::1;;::::0;;;13436:23;:46;;;;;::::1;::::0;::::1;;::::0;;13133:357::o;21347:470::-;6351:6;;-1:-1:-1;;;;;6351:6:0;6361:10;6351:20;6343:50;;;;-1:-1:-1;;;6343:50:0;;;;;;;:::i;:::-;21432:7:::1;21427:383;;-1:-1:-1::0;;;;;;21456:13:0::1;21472:5;21456:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;21456:21:0::1;::::0;;21347:470::o;21427:383::-:1;21514:17;::::0;:22;21510:135:::1;;21603:6;21583:17;;21565:15;:35;;;;:::i;:::-;:44;21557:72;;;::::0;-1:-1:-1;;;21557:72:0;;20782:2:1;21557:72:0::1;::::0;::::1;20764:21:1::0;20821:2;20801:18;;;20794:30;-1:-1:-1;;;20840:18:1;;;20833:45;20895:18;;21557:72:0::1;20580:339:1::0;21557:72:0::1;-1:-1:-1::0;;;;;21668:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;21667:14;21659:54;;;::::0;-1:-1:-1;;;21659:54:0;;21126:2:1;21659:54:0::1;::::0;::::1;21108:21:1::0;21165:2;21145:18;;;21138:30;21204:29;21184:18;;;21177:57;21251:18;;21659:54:0::1;20924:351:1::0;21659:54:0::1;-1:-1:-1::0;;;;;21728:13:0;::::1;;::::0;;;21744:4:::1;21728:13;::::0;;;;;;;:20;;-1:-1:-1;;21728:20:0::1;::::0;;::::1;::::0;;21783:15:::1;21763:17;:35:::0;21427:383:::1;21347:470:::0;;:::o;11789:148::-;6351:6;;-1:-1:-1;;;;;6351:6:0;6361:10;6351:20;6343:50;;;;-1:-1:-1;;;6343:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11885:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;11885:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11789:148::o;10261:310::-;-1:-1:-1;;;;;10356:20:0;;10348:52;;;;-1:-1:-1;;;10348:52:0;;21482:2:1;10348:52:0;;;21464:21:1;21521:2;21501:18;;;21494:30;-1:-1:-1;;;21540:18:1;;;21533:49;21599:18;;10348:52:0;21280:343:1;10348:52:0;-1:-1:-1;;;;;10419:21:0;;10411:53;;;;-1:-1:-1;;;10411:53:0;;21482:2:1;10411:53:0;;;21464:21:1;21521:2;21501:18;;;21494:30;-1:-1:-1;;;21540:18:1;;;21533:49;21599:18;;10411:53:0;21280:343:1;10411:53:0;-1:-1:-1;;;;;10477:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;10530:33;;368:25:1;;;10530:33:0;;341:18:1;10530:33:0;;;;;;;10261:310;;;:::o;14492:2158::-;14571:4;-1:-1:-1;;;;;14596:18:0;;14588:68;;;;-1:-1:-1;;;14588:68:0;;21830:2:1;14588:68:0;;;21812:21:1;21869:2;21849:18;;;21842:30;21908:34;21888:18;;;21881:62;-1:-1:-1;;;21959:18:1;;;21952:35;22004:19;;14588:68:0;21628:401:1;14588:68:0;-1:-1:-1;;;;;14675:16:0;;14667:64;;;;-1:-1:-1;;;14667:64:0;;22236:2:1;14667:64:0;;;22218:21:1;22275:2;22255:18;;;22248:30;22314:34;22294:18;;;22287:62;-1:-1:-1;;;22365:18:1;;;22358:33;22408:19;;14667:64:0;22034:399:1;14667:64:0;14759:1;14750:6;:10;14742:64;;;;-1:-1:-1;;;14742:64:0;;22640:2:1;14742:64:0;;;22622:21:1;22679:2;22659:18;;;22652:30;22718:34;22698:18;;;22691:62;-1:-1:-1;;;22769:18:1;;;22762:39;22818:19;;14742:64:0;22438:405:1;14742:64:0;-1:-1:-1;;;;;14905:13:0;;14817:8;14905:13;;;:7;:13;;;;;;14817:8;;;;14905:13;;14901:162;;;14941:4;14935:10;;14901:162;;;-1:-1:-1;;;;;14967:11:0;;;;;;:7;:11;;;;;;;;14963:100;;;15002:4;14995:11;;14963:100;;;-1:-1:-1;15047:4:0;14963:100;15077:23;15091:4;15097:2;15077:13;:23::i;:::-;15073:877;;;15121:14;;;;15117:319;;15161:5;15156:265;;15191:34;;-1:-1:-1;;;15191:34:0;;23050:2:1;15191:34:0;;;23032:21:1;23089:2;23069:18;;;23062:30;23128:26;23108:18;;;23101:54;23172:18;;15191:34:0;22848:348:1;15156:265:0;-1:-1:-1;;;;;15256:31:0;;;;;;:25;:31;;;;;;;;15255:32;:66;;;;-1:-1:-1;;;;;;15292:29:0;;;;;;:25;:29;;;;;;;;15291:30;15255:66;15251:170;;;15346:55;;-1:-1:-1;;;15346:55:0;;23403:2:1;15346:55:0;;;23385:21:1;23442:2;23422:18;;;23415:30;23481:34;23461:18;;;23454:62;-1:-1:-1;;;23532:18:1;;;23525:43;23585:19;;15346:55:0;23201:409:1;15251:170:0;15454:3;:11;;;;15461:4;15454:11;15450:232;;;-1:-1:-1;;;;;15490:27:0;;;;;;:21;:27;;;;;;;;15489:28;:58;;;;-1:-1:-1;;;;;;15522:25:0;;;;;;:21;:25;;;;;;;;15521:26;15489:58;15485:182;;;15590:12;;15580:6;:22;;15572:75;;;;-1:-1:-1;;;15572:75:0;;23817:2:1;15572:75:0;;;23799:21:1;23856:2;23836:18;;;23829:30;23895:34;23875:18;;;23868:62;-1:-1:-1;;;23946:18:1;;;23939:38;23994:19;;15572:75:0;23615:404:1;15572:75:0;15714:9;;-1:-1:-1;;;;;15700:24:0;;;15714:9;;;;;15700:24;;;;:33;;;15729:4;15728:5;15700:33;15696:243;;;-1:-1:-1;;;;;15759:25:0;;;;;;:21;:25;;;;;;;;15754:170;;15843:14;;15833:6;15817:13;15827:2;15817:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;15809:95;;;;-1:-1:-1;;;15809:95:0;;24226:2:1;15809:95:0;;;24208:21:1;24265:2;24245:18;;;24238:30;24304:34;24284:18;;;24277:62;-1:-1:-1;;;24355:18:1;;;24348:40;24405:19;;15809:95:0;24024:406:1;15809:95:0;15966:4;:34;;;;-1:-1:-1;;;;;;15975:25:0;;;;;;:19;:25;;;;;;;;15974:26;15966:34;:62;;;;-1:-1:-1;;;;;;16005:23:0;;;;;;:19;:23;;;;;;;;16004:24;15966:62;:73;;;;-1:-1:-1;16033:6:0;;-1:-1:-1;;;16033:6:0;;;;16032:7;15966:73;15962:618;;;16060:19;;-1:-1:-1;;;16060:19:0;;;;16056:513;;;16100:28;16131:24;16149:4;16131:9;:24::i;:::-;16100:55;;16202:13;;16178:20;:37;16174:380;;16258:10;;16295:22;;;;16291:97;;;16352:13;;16342:6;;4672:5;;16352:13;16332:17;;-1:-1:-1;;;;;16342:6:0;16332:9;:17::i;:::-;:33;;;;:::i;:::-;16331:54;;;;:::i;:::-;16321:64;;16291:97;16438:7;16414:20;:31;16410:72;;16472:7;16449:30;;16410:72;16504:30;16513:20;16504:8;:30::i;:::-;16217:337;16174:380;16081:488;16056:513;16597:45;16607:4;16613:2;16617:6;16625:3;16630:4;16636:5;16597:9;:45::i;:::-;16590:52;14492:2158;-1:-1:-1;;;;;;;14492:2158:0:o;19465:1195::-;-1:-1:-1;;;;;19599:25:0;;19577:4;19599:25;;;:19;:25;;;;;;;;19598:26;:54;;;;-1:-1:-1;;;;;;19629:23:0;;;;;;:19;:23;;;;;;;;19628:24;19598:54;19594:723;;;-1:-1:-1;;;;;19669:13:0;;:7;:13;;;;;;;;;;:23;;19686:6;;19669:7;:23;;19686:6;;19669:23;:::i;:::-;;;;-1:-1:-1;;19711:4:0;;:36;;;;-1:-1:-1;19730:9:0;:17;19719:7;;19730:17;;;;;;-1:-1:-1;19719:28:0;19711:36;19707:53;;;-1:-1:-1;19756:4:0;19749:11;;19707:53;19775:22;19800:37;19809:4;19815:2;19819:6;19827:3;19832:4;19800:8;:37::i;:::-;19775:62;;19867:14;19852:7;:11;19860:2;-1:-1:-1;;;;;19852:11:0;-1:-1:-1;;;;;19852:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;19916:2;-1:-1:-1;;;;;19901:34:0;19910:4;-1:-1:-1;;;;;19901:34:0;;19920:14;19901:34;;;;368:25:1;;356:2;341:18;;222:177;19901:34:0;;;;;;;;19654:293;19594:723;;;-1:-1:-1;;;;;19972:11:0;;;;;;:7;:11;;;;;;;;:39;;;;;20005:6;19987:15;19997:4;19987:9;:15::i;:::-;:24;19972:39;19968:156;;;-1:-1:-1;;;;;20032:13:0;;:7;:13;;;;;;;;;;:23;;20049:6;;20032:7;:23;;20049:6;;20032:23;:::i;:::-;;;;-1:-1:-1;;;;;;;20057:11:0;;:7;:11;;;;;;;;;;:21;;20072:6;;20057:7;:21;;20072:6;;20057:21;:::i;:::-;;;;-1:-1:-1;20104:4:0;;-1:-1:-1;20097:11:0;;-1:-1:-1;20097:11:0;19968:156;-1:-1:-1;;;;;20138:13:0;;:7;:13;;;;;;;;;;:23;;20155:6;;20138:7;:23;;20155:6;;20138:23;:::i;:::-;;;;-1:-1:-1;;;;;;;20222:11:0;;20176:22;20222:11;;;;;;;;;;:29;;20201:6;;;;20222:11;:29;;20201:6;;20222:29;:::i;:::-;;;;;;;;20286:2;-1:-1:-1;;;;;20271:34:0;20280:4;-1:-1:-1;;;;;20271:34:0;;20290:14;20271:34;;;;368:25:1;;356:2;341:18;;222:177;20271:34:0;;;;;;;;19953:364;19594:723;20335:16;;;;;;;20330:301;;20368:28;20387:4;20393:2;20368:18;:28::i;:::-;20416:16;;;;;;;20415:17;:44;;;;;20436:23;20450:4;20456:2;20436:13;:23::i;:::-;20415:80;;;;-1:-1:-1;;;;;;20464:31:0;;;;;;:25;:31;;;;;;;;20463:32;20415:80;:114;;;;-1:-1:-1;;;;;;20500:29:0;;;;;;:25;:29;;;;;;;;20499:30;20415:114;:124;;;;;20534:5;20533:6;20415:124;20411:209;;;20560:44;;-1:-1:-1;;;20560:44:0;;24637:2:1;20560:44:0;;;24619:21:1;24676:2;24656:18;;;24649:30;24715:34;24695:18;;;24688:62;-1:-1:-1;;;24766:18:1;;;24759:32;24808:19;;20560:44:0;24435:398:1;20411:209:0;-1:-1:-1;20648:4:0;19465:1195;;;;;;;;;:::o;19096:361::-;19200:6;;19168:4;;-1:-1:-1;;;;;19192:14:0;;;19200:6;;19192:14;;;;:43;;-1:-1:-1;19229:6:0;;-1:-1:-1;;;;;19223:12:0;;;19229:6;;19223:12;;19192:43;:79;;;;-1:-1:-1;19265:6:0;;-1:-1:-1;;;;;19265:6:0;19252:9;:19;;19192:79;:118;;;;-1:-1:-1;;;;;;19289:21:0;;;;;;:17;:21;;;;;;;;19288:22;19192:118;:159;;;;-1:-1:-1;;;;;;19328:23:0;;;;;;:17;:23;;;;;;;;19327:24;19192:159;:186;;;;-1:-1:-1;;;;;;19368:10:0;;4809:42;19368:10;;19192:186;:219;;;;-1:-1:-1;;;;;;19395:16:0;;;;19192:219;:257;;;;-1:-1:-1;;;;;;19428:21:0;;19444:4;19428:21;;19192:257;19185:264;19096:361;-1:-1:-1;;;19096:361:0:o;23037:1286::-;6526:6;:13;;-1:-1:-1;;;;6526:13:0;-1:-1:-1;;;6526:13:0;;;23116:30:::1;::::0;;::::1;::::0;::::1;::::0;;6526:6;23116:30;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;-1:-1:-1;;;23116:30:0;;::::1;;::::0;;;;;;;6526:13;23161:21;23157:60:::1;;23199:7;;;23157:60;23253:4;23233:26;::::0;;;:11:::1;:26;::::0;;;;;;;23268:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;23268:9:0::1;23233:46:::0;;;;;;;;-1:-1:-1;;23233:67:0::1;23229:166;;23337:4;23317:26;::::0;;;:11:::1;:26;::::0;;;;;;;23352:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;23352:9:0::1;23317:46:::0;;;;;;;-1:-1:-1;;23317:66:0;;23229:166:::1;23439:16;::::0;;23453:1:::1;23439:16:::0;;;;;::::1;::::0;;23415:21:::1;::::0;23439:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;23439:16:0::1;23415:40;;23484:4;23466;23471:1;23466:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;23466:23:0::1;;;-1:-1:-1::0;;;;;23466:23:0::1;;;::::0;::::1;23510:9;;;;;;;;;-1:-1:-1::0;;;;;23510:9:0::1;-1:-1:-1::0;;;;;23510:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23500:4;23505:1;23500:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23500:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;23543:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;23543:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;23618:20;;23653:1:::1;::::0;23669:4;;23696::::1;::::0;23716:15:::1;::::0;23543:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;23539:246;;23767:7;;;;23539:246;23797:18;23818:21;23797:42;;23850:12;23873:26:::0;23938:6:::1;:16;;;23902:52;;23916:6;:18;;;23903:31;;:10;:31;;;;:::i;:::-;23902:52;;;;:::i;:::-;23873:81:::0;-1:-1:-1;23965:24:0::1;23992:31;23873:81:::0;23992:10;:31:::1;:::i;:::-;24038:18;::::0;::::1;::::0;23965:58;;-1:-1:-1;24038:22:0::1;;::::0;24034:139:::1;;24090:23:::0;;:71:::1;::::0;-1:-1:-1;;;;;24090:23:0;;::::1;::::0;24151:5:::1;::::0;24126:18;;24090:71:::1;::::0;;;24126:18;24090:23;24151:5;24090:71:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;24077:84:0;;-1:-1:-1;;24034:139:0::1;24187:16:::0;;:20:::1;;::::0;24183:133:::1;;24237:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;24237:21:0;;::::1;::::0;24294:5:::1;::::0;24271:16;;24237:67:::1;::::0;;;24271:16;24237:21;24294:5;24237:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;24224:80:0;;-1:-1:-1;;24183:133:0::1;23105:1218;;;;;;6550:1;-1:-1:-1::0;6562:6:0;:14;;-1:-1:-1;;;;6562:14:0;;;23037:1286::o;18303:785::-;18402:7;18422:18;18455:3;18451:323;;;-1:-1:-1;18488:9:0;:16;;;18451:323;;;18526:4;18522:252;;;-1:-1:-1;18560:9:0;:17;;;;;;18522:252;;;-1:-1:-1;;;;;18614:10:0;;4809:42;18614:10;:36;;;;;18637:13;;18628:6;:22;18614:36;18610:104;;;18681:9;:17;;;;;;18671:7;:27;18610:104;-1:-1:-1;18741:9:0;:21;-1:-1:-1;;;18741:21:0;;;;18522:252;18788:10;18802:1;18788:15;18784:39;;18814:6;18807:13;;;;;18784:39;18833:17;4672:5;18853:19;18862:10;18853:6;:19;:::i;:::-;:38;;;;:::i;:::-;18833:58;-1:-1:-1;18906:13:0;;18902:141;;18952:4;18936:7;:22;;;;;;;;;;:35;;18962:9;;18936:7;:35;;18962:9;;18936:35;:::i;:::-;;;;-1:-1:-1;;18991:40:0;;368:25:1;;;19014:4:0;;-1:-1:-1;;;;;18991:40:0;;;;;356:2:1;341:18;18991:40:0;;;;;;;18902:141;19062:18;19071:9;19062:6;:18;:::i;:::-;19055:25;;;;18303:785;;;;;;;;:::o;16658:438::-;16741:16;;;;;;;16740:17;16732:65;;;;-1:-1:-1;;;16732:65:0;;26235:2:1;16732:65:0;;;26217:21:1;26274:2;26254:18;;;26247:30;26313:34;26293:18;;;26286:62;-1:-1:-1;;;26364:18:1;;;26357:33;26407:19;;16732:65:0;26033:399:1;16732:65:0;16813:23;16827:4;16833:2;16813:13;:23::i;:::-;16812:24;:40;;;;-1:-1:-1;16846:6:0;;-1:-1:-1;;;;;16840:12:0;;;16846:6;;16840:12;16812:40;16808:281;;;-1:-1:-1;;;;;16869:23:0;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;16869:30:0;;;16895:4;16869:30;;;;;;16914:19;:25;;;;;;:32;;;;;;;;;;16961:16;:23;;-1:-1:-1;;16961:23:0;16869:30;16961:23;;;16999:19;:26;;-1:-1:-1;;;;16999:26:0;-1:-1:-1;;;16999:26:0;;;17045:32;2059:41:1;;;17045:32:0;;2032:18:1;17045:32:0;1919:187:1;404:159;471:20;;531:6;520:18;;510:29;;500:57;;553:1;550;543:12;500:57;404:159;;;:::o;568:328::-;642:6;650;658;711:2;699:9;690:7;686:23;682:32;679:52;;;727:1;724;717:12;679:52;750:28;768:9;750:28;:::i;:::-;740:38;;797:37;830:2;819:9;815:18;797:37;:::i;:::-;787:47;;853:37;886:2;875:9;871:18;853:37;:::i;:::-;843:47;;568:328;;;;;:::o;1271:418::-;1420:2;1409:9;1402:21;1383:4;1452:6;1446:13;1495:6;1490:2;1479:9;1475:18;1468:34;1554:6;1549:2;1541:6;1537:15;1532:2;1521:9;1517:18;1511:50;1610:1;1605:2;1596:6;1585:9;1581:22;1577:31;1570:42;1680:2;1673;1669:7;1664:2;1656:6;1652:15;1648:29;1637:9;1633:45;1629:54;1621:62;;;1271:418;;;;:::o;2111:131::-;-1:-1:-1;;;;;2186:31:1;;2176:42;;2166:70;;2232:1;2229;2222:12;2247:315;2315:6;2323;2376:2;2364:9;2355:7;2351:23;2347:32;2344:52;;;2392:1;2389;2382:12;2344:52;2431:9;2418:23;2450:31;2475:5;2450:31;:::i;:::-;2500:5;2552:2;2537:18;;;;2524:32;;-1:-1:-1;;;2247:315:1:o;2567:247::-;2626:6;2679:2;2667:9;2658:7;2654:23;2650:32;2647:52;;;2695:1;2692;2685:12;2647:52;2734:9;2721:23;2753:31;2778:5;2753:31;:::i;2819:248::-;2887:6;2895;2948:2;2936:9;2927:7;2923:23;2919:32;2916:52;;;2964:1;2961;2954:12;2916:52;-1:-1:-1;;2987:23:1;;;3057:2;3042:18;;;3029:32;;-1:-1:-1;2819:248:1:o;3072:456::-;3149:6;3157;3165;3218:2;3206:9;3197:7;3193:23;3189:32;3186:52;;;3234:1;3231;3224:12;3186:52;3273:9;3260:23;3292:31;3317:5;3292:31;:::i;:::-;3342:5;-1:-1:-1;3399:2:1;3384:18;;3371:32;3412:33;3371:32;3412:33;:::i;:::-;3072:456;;3464:7;;-1:-1:-1;;;3518:2:1;3503:18;;;;3490:32;;3072:456::o;3722:118::-;3808:5;3801:13;3794:21;3787:5;3784:32;3774:60;;3830:1;3827;3820:12;3845:382;3910:6;3918;3971:2;3959:9;3950:7;3946:23;3942:32;3939:52;;;3987:1;3984;3977:12;3939:52;4026:9;4013:23;4045:31;4070:5;4045:31;:::i;:::-;4095:5;-1:-1:-1;4152:2:1;4137:18;;4124:32;4165:30;4124:32;4165:30;:::i;:::-;4214:7;4204:17;;;3845:382;;;;;:::o;4232:180::-;4291:6;4344:2;4332:9;4323:7;4319:23;4315:32;4312:52;;;4360:1;4357;4350:12;4312:52;-1:-1:-1;4383:23:1;;4232:180;-1:-1:-1;4232:180:1:o;4417:256::-;4483:6;4491;4544:2;4532:9;4523:7;4519:23;4515:32;4512:52;;;4560:1;4557;4550:12;4512:52;4583:28;4601:9;4583:28;:::i;:::-;4573:38;;4630:37;4663:2;4652:9;4648:18;4630:37;:::i;:::-;4620:47;;4417:256;;;;;:::o;4678:385::-;4764:6;4772;4780;4788;4841:3;4829:9;4820:7;4816:23;4812:33;4809:53;;;4858:1;4855;4848:12;4809:53;-1:-1:-1;;4881:23:1;;;4951:2;4936:18;;4923:32;;-1:-1:-1;5002:2:1;4987:18;;4974:32;;5053:2;5038:18;5025:32;;-1:-1:-1;4678:385:1;-1:-1:-1;4678:385:1:o;5068:127::-;5129:10;5124:3;5120:20;5117:1;5110:31;5160:4;5157:1;5150:15;5184:4;5181:1;5174:15;5200:275;5271:2;5265:9;5336:2;5317:13;;-1:-1:-1;;5313:27:1;5301:40;;5371:18;5356:34;;5392:22;;;5353:62;5350:88;;;5418:18;;:::i;:::-;5454:2;5447:22;5200:275;;-1:-1:-1;5200:275:1:o;5480:183::-;5540:4;5573:18;5565:6;5562:30;5559:56;;;5595:18;;:::i;:::-;-1:-1:-1;5640:1:1;5636:14;5652:4;5632:25;;5480:183::o;5668:668::-;5722:5;5775:3;5768:4;5760:6;5756:17;5752:27;5742:55;;5793:1;5790;5783:12;5742:55;5829:6;5816:20;5855:4;5879:60;5895:43;5935:2;5895:43;:::i;:::-;5879:60;:::i;:::-;5961:3;5985:2;5980:3;5973:15;6013:4;6008:3;6004:14;5997:21;;6070:4;6064:2;6061:1;6057:10;6049:6;6045:23;6041:34;6027:48;;6098:3;6090:6;6087:15;6084:35;;;6115:1;6112;6105:12;6084:35;6151:4;6143:6;6139:17;6165:142;6181:6;6176:3;6173:15;6165:142;;;6247:17;;6235:30;;6285:12;;;;6198;;6165:142;;;-1:-1:-1;6325:5:1;5668:668;-1:-1:-1;;;;;;5668:668:1:o;6341:1215::-;6459:6;6467;6520:2;6508:9;6499:7;6495:23;6491:32;6488:52;;;6536:1;6533;6526:12;6488:52;6576:9;6563:23;6605:18;6646:2;6638:6;6635:14;6632:34;;;6662:1;6659;6652:12;6632:34;6700:6;6689:9;6685:22;6675:32;;6745:7;6738:4;6734:2;6730:13;6726:27;6716:55;;6767:1;6764;6757:12;6716:55;6803:2;6790:16;6825:4;6849:60;6865:43;6905:2;6865:43;:::i;6849:60::-;6943:15;;;7025:1;7021:10;;;;7013:19;;7009:28;;;6974:12;;;;7049:19;;;7046:39;;;7081:1;7078;7071:12;7046:39;7105:11;;;;7125:217;7141:6;7136:3;7133:15;7125:217;;;7221:3;7208:17;7238:31;7263:5;7238:31;:::i;:::-;7282:18;;7158:12;;;;7320;;;;7125:217;;;7361:5;-1:-1:-1;;7404:18:1;;7391:32;;-1:-1:-1;;7435:16:1;;;7432:36;;;7464:1;7461;7454:12;7432:36;;7487:63;7542:7;7531:8;7520:9;7516:24;7487:63;:::i;:::-;7477:73;;;6341:1215;;;;;:::o;7561:376::-;7623:6;7631;7684:2;7672:9;7663:7;7659:23;7655:32;7652:52;;;7700:1;7697;7690:12;7652:52;7739:9;7726:23;7758:28;7780:5;7758:28;:::i;7942:388::-;8010:6;8018;8071:2;8059:9;8050:7;8046:23;8042:32;8039:52;;;8087:1;8084;8077:12;8039:52;8126:9;8113:23;8145:31;8170:5;8145:31;:::i;:::-;8195:5;-1:-1:-1;8252:2:1;8237:18;;8224:32;8265:33;8224:32;8265:33;:::i;9085:341::-;9287:2;9269:21;;;9326:2;9306:18;;;9299:30;-1:-1:-1;;;9360:2:1;9345:18;;9338:47;9417:2;9402:18;;9085:341::o;10129:127::-;10190:10;10185:3;10181:20;10178:1;10171:31;10221:4;10218:1;10211:15;10245:4;10242:1;10235:15;10261:416;10350:1;10387:5;10350:1;10401:270;10422:7;10412:8;10409:21;10401:270;;;10481:4;10477:1;10473:6;10469:17;10463:4;10460:27;10457:53;;;10490:18;;:::i;:::-;10540:7;10530:8;10526:22;10523:55;;;10560:16;;;;10523:55;10639:22;;;;10599:15;;;;10401:270;;;10405:3;10261:416;;;;;:::o;10682:806::-;10731:5;10761:8;10751:80;;-1:-1:-1;10802:1:1;10816:5;;10751:80;10850:4;10840:76;;-1:-1:-1;10887:1:1;10901:5;;10840:76;10932:4;10950:1;10945:59;;;;11018:1;11013:130;;;;10925:218;;10945:59;10975:1;10966:10;;10989:5;;;11013:130;11050:3;11040:8;11037:17;11034:43;;;11057:18;;:::i;:::-;-1:-1:-1;;11113:1:1;11099:16;;11128:5;;10925:218;;11227:2;11217:8;11214:16;11208:3;11202:4;11199:13;11195:36;11189:2;11179:8;11176:16;11171:2;11165:4;11162:12;11158:35;11155:77;11152:159;;;-1:-1:-1;11264:19:1;;;11296:5;;11152:159;11343:34;11368:8;11362:4;11343:34;:::i;:::-;11413:6;11409:1;11405:6;11401:19;11392:7;11389:32;11386:58;;;11424:18;;:::i;:::-;11462:20;;10682:806;-1:-1:-1;;;10682:806:1:o;11493:140::-;11551:5;11580:47;11621:4;11611:8;11607:19;11601:4;11580:47;:::i;11638:217::-;11678:1;11704;11694:132;;11748:10;11743:3;11739:20;11736:1;11729:31;11783:4;11780:1;11773:15;11811:4;11808:1;11801:15;11694:132;-1:-1:-1;11840:9:1;;11638:217::o;11860:168::-;11933:9;;;11964;;11981:15;;;11975:22;;11961:37;11951:71;;12002:18;;:::i;12457:128::-;12524:9;;;12545:11;;;12542:37;;;12559:18;;:::i;12590:125::-;12655:9;;;12676:10;;;12673:36;;;12689:18;;:::i;12720:425::-;12922:2;12904:21;;;12961:2;12941:18;;;12934:30;13000:34;12995:2;12980:18;;12973:62;13071:31;13066:2;13051:18;;13044:59;13135:3;13120:19;;12720:425::o;13150:168::-;13217:6;13243:10;;;13255;;;13239:27;;13278:11;;;13275:37;;;13292:18;;:::i;:::-;13275:37;13150:168;;;;:::o;16010:410::-;16212:2;16194:21;;;16251:2;16231:18;;;16224:30;16290:34;16285:2;16270:18;;16263:62;-1:-1:-1;;;16356:2:1;16341:18;;16334:44;16410:3;16395:19;;16010:410::o;16775:127::-;16836:10;16831:3;16827:20;16824:1;16817:31;16867:4;16864:1;16857:15;16891:4;16888:1;16881:15;17254:197;17292:3;17320:6;17361:2;17354:5;17350:14;17388:2;17379:7;17376:15;17373:41;;17394:18;;:::i;:::-;17443:1;17430:15;;17254:197;-1:-1:-1;;;17254:197:1:o;18589:251::-;18659:6;18712:2;18700:9;18691:7;18687:23;18683:32;18680:52;;;18728:1;18725;18718:12;18680:52;18760:9;18754:16;18779:31;18804:5;18779:31;:::i;19510:184::-;19580:6;19633:2;19621:9;19612:7;19608:23;19604:32;19601:52;;;19649:1;19646;19639:12;19601:52;-1:-1:-1;19672:16:1;;19510:184;-1:-1:-1;19510:184:1:o;19978:245::-;20045:6;20098:2;20086:9;20077:7;20073:23;20069:32;20066:52;;;20114:1;20111;20104:12;20066:52;20146:9;20140:16;20165:28;20187:5;20165:28;:::i;24838:980::-;25100:4;25148:3;25137:9;25133:19;25179:6;25168:9;25161:25;25205:2;25243:6;25238:2;25227:9;25223:18;25216:34;25286:3;25281:2;25270:9;25266:18;25259:31;25310:6;25345;25339:13;25376:6;25368;25361:22;25414:3;25403:9;25399:19;25392:26;;25453:2;25445:6;25441:15;25427:29;;25474:1;25484:195;25498:6;25495:1;25492:13;25484:195;;;25563:13;;-1:-1:-1;;;;;25559:39:1;25547:52;;25654:15;;;;25619:12;;;;25595:1;25513:9;25484:195;;;-1:-1:-1;;;;;;;25735:32:1;;;;25730:2;25715:18;;25708:60;-1:-1:-1;;;25799:3:1;25784:19;25777:35;25696:3;24838:980;-1:-1:-1;;;24838:980:1:o
Swarm Source
ipfs://f2054fef6c0181853105c1e2f515f291391b8c0e1c568f7c5f4a458f6476a711
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.
Add Token to MetaMask (Web3)