Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 5 from a total of 5 transactions
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers.
Latest 13 internal transactions
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
|||
|---|---|---|---|---|---|---|---|---|
| Transfer | 15849757 | 1236 days ago | 0 ETH | |||||
| Balance Of | 15849757 | 1236 days ago | 0 ETH | |||||
| Transfer | 15849757 | 1236 days ago | 0 ETH | |||||
| Balance Of | 15849757 | 1236 days ago | 0 ETH | |||||
| Balance Of | 15849733 | 1236 days ago | 0 ETH | |||||
| Balance Of | 15849733 | 1236 days ago | 0 ETH | |||||
| Transfer | 15849733 | 1236 days ago | 0 ETH | |||||
| Balance Of | 15849733 | 1236 days ago | 0 ETH | |||||
| Balance Of | 15849718 | 1236 days ago | 0 ETH | |||||
| Transfer From | 15849718 | 1236 days ago | 0 ETH | |||||
| Create Pair | 15849697 | 1236 days ago | 0 ETH | |||||
| WETH | 15849697 | 1236 days ago | 0 ETH | |||||
| Factory | 15849697 | 1236 days ago | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
TRUMP
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-10-28
*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.13;
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount)
external
returns (bool);
function allowance(address owner, address spender)
external
view
returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
}
interface IFactory {
function createPair(address tokenA, address tokenB)
external
returns (address pair);
function getPair(address tokenA, address tokenB)
external
view
returns (address pair);
}
interface IRouter {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
)
external
payable
returns (
uint256 amountToken,
uint256 amountETH,
uint256 liquidity
);
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
library Address {
function isContract(address account) internal view returns (bool) {
uint256 size;
assembly {
size := extcodesize(account)
}
return size > 0;
}
function sendValue(address payable recipient, uint256 amount) internal {
require(
address(this).balance >= amount,
"Address: insufficient balance"
);
(bool success, ) = recipient.call{value: amount}("");
require(
success,
"Address: unable to send value, recipient may have reverted"
);
}
function functionCall(address target, bytes memory data)
internal
returns (bytes memory)
{
return functionCall(target, data, "Address: low-level call failed");
}
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
function functionCallWithValue(
address target,
bytes memory data,
uint256 value
) internal returns (bytes memory) {
return
functionCallWithValue(
target,
data,
value,
"Address: low-level call with value failed"
);
}
function functionCallWithValue(
address target,
bytes memory data,
uint256 value,
string memory errorMessage
) internal returns (bytes memory) {
require(
address(this).balance >= value,
"Address: insufficient balance for call"
);
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{value: value}(
data
);
return _verifyCallResult(success, returndata, errorMessage);
}
function functionStaticCall(address target, bytes memory data)
internal
view
returns (bytes memory)
{
return
functionStaticCall(
target,
data,
"Address: low-level static call failed"
);
}
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
(bool success, bytes memory returndata) = target.staticcall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function functionDelegateCall(address target, bytes memory data)
internal
returns (bytes memory)
{
return
functionDelegateCall(
target,
data,
"Address: low-level delegate call failed"
);
}
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
(bool success, bytes memory returndata) = target.delegatecall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function _verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) private pure returns (bytes memory) {
if (success) {
return returndata;
} else {
if (returndata.length > 0) {
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
contract TRUMP is IERC20, Ownable {
using Address for address;
using SafeMath for uint256;
IRouter public uniswapV2Router;
address public immutable uniswapV2Pair;
string private constant _name = "TRUMP IS BACK";
string private constant _symbol = "TRUMP";
uint8 private constant _decimals = 18;
mapping (address => uint256) private _rOwned;
mapping (address => uint256) private _tOwned;
mapping (address => mapping (address => uint256)) private _allowances;
uint256 private constant MAX = ~uint256(0);
uint256 private constant _tTotal = 100000000 * 10**18;
uint256 private _rTotal = (MAX - (MAX % _tTotal));
uint256 private _tFeeTotal;
bool public isTradingEnabled;
// max wallet is 3.0% of initialSupply
uint256 public maxWalletAmount = _tTotal;
// max tx is 0.33% of initialSupply
uint256 public maxTxAmount = _tTotal;
bool private _swapping;
// max wallet is 0.025% of initialSupply
uint256 public minimumTokensBeforeSwap = _tTotal * 250 / 1000000;
address private dead = 0x000000000000000000000000000000000000dEaD;
address public liquidityWallet;
address public marketingWallet;
address public buyBackWallet;
address public devWallet;
struct CustomTaxPeriod {
bytes23 periodName;
uint8 blocksInPeriod;
uint256 timeInPeriod;
uint8 liquidityFeeOnBuy;
uint8 liquidityFeeOnSell;
uint8 marketingFeeOnBuy;
uint8 marketingFeeOnSell;
uint8 devFeeOnBuy;
uint8 devFeeOnSell;
uint8 buyBackFeeOnBuy;
uint8 buyBackFeeOnSell;
uint8 holdersFeeOnBuy;
uint8 holdersFeeOnSell;
}
// Base taxes
CustomTaxPeriod private _base = CustomTaxPeriod('base',0,0,1,1,3,3,2,2,2,2,2,2);
uint256 private constant _blockedTimeLimit = 259200;
uint256 private _launchBlockNumber;
uint256 private _launchTimestamp;
mapping (address => bool) private _isBlocked;
mapping (address => bool) private _isExcludedFromFee;
mapping (address => bool) private _isExcludedFromMaxWalletLimit;
mapping (address => bool) private _isExcludedFromMaxTransactionLimit;
mapping (address => bool) public automatedMarketMakerPairs;
mapping (address => bool) private _isExcludedFromDividends;
mapping (address => bool) private _isAllowedToTradeWhenDisabled;
address[] private _excludedFromDividends;
uint8 private _liquidityFee;
uint8 private _marketingFee;
uint8 private _devFee;
uint8 private _buyBackFee;
uint8 private _holdersFee;
uint8 private _totalFee;
event AutomatedMarketMakerPairChange(address indexed pair, bool indexed value);
event AllowedWhenTradingDisabledChange(address indexed account, bool isExcluded);
event BlockedAccountChange(address indexed holder, bool indexed status);
event UniswapV2RouterChange(address indexed newAddress, address indexed oldAddress);
event WalletChange(string indexed indentifier, address indexed newWallet, address indexed oldWallet);
event FeeChange(string indexed identifier, uint8 liquidityFee, uint8 marketingFee, uint8 devFee, uint8 buyBackFee, uint8 holdersFee);
event CustomTaxPeriodChange(uint256 indexed newValue, uint256 indexed oldValue, string indexed taxType, bytes23 period);
event MaxWalletAmountChange(uint256 indexed newValue, uint256 indexed oldValue);
event MaxTransactionAmountChange(uint256 indexed newValue, uint256 indexed oldValue);
event ExcludeFromDividendsChange(address indexed account, bool isExcluded);
event ExcludeFromFeesChange(address indexed account, bool isExcluded);
event ExcludeFromMaxTransferChange(address indexed account, bool isExcluded);
event ExcludeFromMaxWalletChange(address indexed account, bool isExcluded);
event MinTokenAmountBeforeSwapChange(uint256 indexed newValue, uint256 indexed oldValue);
event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived,uint256 tokensIntoLiqudity);
event ClaimETHOverflow(uint256 amount);
event FeesApplied(uint8 liquidityFee, uint8 marketingFee, uint8 devFee, uint8 buyBackFee, uint8 holdersFee, uint8 totalFee);
constructor() {
liquidityWallet = owner();
marketingWallet = owner();
buyBackWallet = owner();
devWallet = owner();
IRouter _uniswapV2Router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
address _uniswapV2Pair = IFactory(_uniswapV2Router.factory()).createPair(
address(this),
_uniswapV2Router.WETH()
);
uniswapV2Router = _uniswapV2Router;
uniswapV2Pair = _uniswapV2Pair;
_setAutomatedMarketMakerPair(_uniswapV2Pair, true);
_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[address(this)] = true;
excludeFromDividends(address(this), true);
excludeFromDividends(address(dead), true);
excludeFromDividends(address(_uniswapV2Router), true);
_isAllowedToTradeWhenDisabled[owner()] = true;
_isAllowedToTradeWhenDisabled[address(this)] = true;
_isExcludedFromMaxWalletLimit[_uniswapV2Pair] = true;
_isExcludedFromMaxWalletLimit[address(uniswapV2Router)] = true;
_isExcludedFromMaxWalletLimit[address(this)] = true;
_isExcludedFromMaxWalletLimit[owner()] = true;
_isExcludedFromMaxTransactionLimit[address(this)] = true;
_isExcludedFromMaxTransactionLimit[address(dead)] = true;
_isExcludedFromMaxTransactionLimit[owner()] = true;
_rOwned[owner()] = _rTotal;
emit Transfer(address(0), owner(), _tTotal);
}
receive() external payable {}
// Setters
function transfer(address recipient, uint256 amount) external override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom( address sender,address recipient,uint256 amount) external override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount,"ERC20: transfer amount exceeds allowance"));
return true;
}
function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool){
_approve(_msgSender(),spender,_allowances[_msgSender()][spender].add(addedValue));
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) {
_approve(_msgSender(),spender,_allowances[_msgSender()][spender].sub(subtractedValue,"ERC20: decreased allowance below zero"));
return true;
}
function _approve(address owner,address spender,uint256 amount) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function activateTrading() external onlyOwner {
isTradingEnabled = true;
if (_launchTimestamp == 0) {
_launchTimestamp = block.timestamp;
_launchBlockNumber = block.number;
}
}
function deactivateTrading() external onlyOwner {
isTradingEnabled = false;
}
function _setAutomatedMarketMakerPair(address pair, bool value) private {
require(automatedMarketMakerPairs[pair] != value, "TRUMP: Automated market maker pair is already set to that value");
automatedMarketMakerPairs[pair] = value;
emit AutomatedMarketMakerPairChange(pair, value);
}
function blockAccount(address account) external onlyOwner {
require(!_isBlocked[account], "TRUMP: Account is already blocked");
require((block.timestamp - _launchTimestamp) < _blockedTimeLimit, "TRUMP: Time to block accounts has expired");
_isBlocked[account] = true;
emit BlockedAccountChange(account, true);
}
function unblockAccount(address account) external onlyOwner {
require(_isBlocked[account], "TRUMP: Account is not blcoked");
_isBlocked[account] = false;
emit BlockedAccountChange(account, false);
}
function allowTradingWhenDisabled(address account, bool allowed) external onlyOwner {
_isAllowedToTradeWhenDisabled[account] = allowed;
emit AllowedWhenTradingDisabledChange(account, allowed);
}
function excludeFromFees(address account, bool excluded) external onlyOwner {
require(_isExcludedFromFee[account] != excluded, "TRUMP: Account is already the value of 'excluded'");
_isExcludedFromFee[account] = excluded;
emit ExcludeFromFeesChange(account, excluded);
}
function excludeFromMaxWalletLimit(address account, bool excluded) external onlyOwner {
require(_isExcludedFromMaxWalletLimit[account] != excluded, "TRUMP: Account is already the value of 'excluded'");
_isExcludedFromMaxWalletLimit[account] = excluded;
emit ExcludeFromMaxWalletChange(account, excluded);
}
function excludeFromMaxTransactionLimit(address account, bool excluded) external onlyOwner {
require(_isExcludedFromMaxTransactionLimit[account] != excluded, "TRUMP: Account is already the value of 'excluded'");
_isExcludedFromMaxTransactionLimit[account] = excluded;
emit ExcludeFromMaxTransferChange(account, excluded);
}
function setWallets(address newLiquidityWallet, address newMarketingWallet, address newDevWallet, address newBuyBackWallet) external onlyOwner {
if(liquidityWallet != newLiquidityWallet) {
require(newLiquidityWallet != address(0), "TRUMP: The liquidityWallet cannot be 0");
emit WalletChange('liquidityWallet', newLiquidityWallet, liquidityWallet);
liquidityWallet = newLiquidityWallet;
}
if(marketingWallet != newMarketingWallet) {
require(newMarketingWallet != address(0), "TRUMP: The marketingWallet cannot be 0");
emit WalletChange('marketingWallet', newMarketingWallet, marketingWallet);
marketingWallet = newMarketingWallet;
}
if(devWallet != newDevWallet) {
require(newDevWallet != address(0), "TRUMP: The devWallet cannot be 0");
emit WalletChange('devWallet', newDevWallet, devWallet);
devWallet = newDevWallet;
}
if(buyBackWallet != newBuyBackWallet) {
require(newBuyBackWallet != address(0), "TRUMP: The buyBackWallet cannot be 0");
emit WalletChange('buyBackWallet', newBuyBackWallet, buyBackWallet);
buyBackWallet = newBuyBackWallet;
}
}
// Base fees
function setBaseFeesOnBuy(uint8 _liquidityFeeOnBuy, uint8 _marketingFeeOnBuy, uint8 _devFeeOnBuy, uint8 _buyBackFeeOnBuy, uint8 _holdersFeeOnBuy) external onlyOwner {
_setCustomBuyTaxPeriod(_base, _liquidityFeeOnBuy, _marketingFeeOnBuy, _devFeeOnBuy, _buyBackFeeOnBuy, _holdersFeeOnBuy);
emit FeeChange('baseFees-Buy', _liquidityFeeOnBuy, _marketingFeeOnBuy, _devFeeOnBuy, _buyBackFeeOnBuy, _holdersFeeOnBuy);
}
function setBaseFeesOnSell(uint8 _liquidityFeeOnSell, uint8 _marketingFeeOnSell, uint8 _devFeeOnSell, uint8 _buyBackFeeOnSell, uint8 _holdersFeeOnSell) external onlyOwner {
_setCustomSellTaxPeriod(_base, _liquidityFeeOnSell, _marketingFeeOnSell, _devFeeOnSell, _buyBackFeeOnSell, _holdersFeeOnSell);
emit FeeChange('baseFees-Sell', _liquidityFeeOnSell, _marketingFeeOnSell, _devFeeOnSell, _buyBackFeeOnSell, _holdersFeeOnSell);
}
function setMaxWalletAmount(uint256 newValue) external onlyOwner {
require(newValue != maxWalletAmount, "TRUMP: Cannot update maxWalletAmount to same value");
emit MaxWalletAmountChange(newValue, maxWalletAmount);
maxWalletAmount = newValue;
}
function setMaxTransactionAmount(uint256 newValue) external onlyOwner {
require(newValue != maxTxAmount, "TRUMP: Cannot update maxTxAmount to same value");
emit MaxTransactionAmountChange(newValue, maxTxAmount);
maxTxAmount = newValue;
}
function excludeFromDividends(address account, bool excluded) public onlyOwner {
require(_isExcludedFromDividends[account] != excluded, "TRUMP: Account is already the value of 'excluded'");
if(excluded) {
if(_rOwned[account] > 0) {
_tOwned[account] = tokenFromReflection(_rOwned[account]);
}
_isExcludedFromDividends[account] = excluded;
_excludedFromDividends.push(account);
} else {
for (uint256 i = 0; i < _excludedFromDividends.length; i++) {
if (_excludedFromDividends[i] == account) {
_excludedFromDividends[i] = _excludedFromDividends[_excludedFromDividends.length - 1];
_tOwned[account] = 0;
_isExcludedFromDividends[account] = false;
_excludedFromDividends.pop();
break;
}
}
}
emit ExcludeFromDividendsChange(account, excluded);
}
function setMinimumTokensBeforeSwap(uint256 newValue) external onlyOwner {
require(newValue != minimumTokensBeforeSwap, "TRUMP: Cannot update minimumTokensBeforeSwap to same value");
emit MinTokenAmountBeforeSwapChange(newValue, minimumTokensBeforeSwap);
minimumTokensBeforeSwap = newValue;
}
function claimETHOverflow() external onlyOwner {
require(address(this).balance > 0, "TRUMP: Cannot send more than contract balance");
uint256 amount = address(this).balance;
(bool success,) = address(owner()).call{value : amount}("");
if (success){
emit ClaimETHOverflow(amount);
}
}
// Getters
function name() external view returns (string memory) {
return _name;
}
function symbol() external view returns (string memory) {
return _symbol;
}
function decimals() external view virtual returns (uint8) {
return _decimals;
}
function totalSupply() external view override returns (uint256) {
return _tTotal;
}
function balanceOf(address account) public view override returns (uint256) {
if (_isExcludedFromDividends[account]) return _tOwned[account];
return tokenFromReflection(_rOwned[account]);
}
function totalFees() external view returns (uint256) {
return _tFeeTotal;
}
function allowance(address owner, address spender) external view override returns (uint256) {
return _allowances[owner][spender];
}
function getBaseBuyFees() external view returns (uint8, uint8, uint8, uint8, uint8){
return (_base.liquidityFeeOnBuy, _base.marketingFeeOnBuy, _base.devFeeOnBuy, _base.buyBackFeeOnBuy, _base.holdersFeeOnBuy);
}
function getBaseSellFees() external view returns (uint8, uint8, uint8, uint8, uint8){
return (_base.liquidityFeeOnSell, _base.marketingFeeOnSell, _base.devFeeOnSell, _base.buyBackFeeOnSell, _base.holdersFeeOnSell);
}
function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
require(rAmount <= _rTotal, "TRUMP: Amount must be less than total reflections");
uint256 currentRate = _getRate();
return rAmount / currentRate;
}
function reflectionFromToken(uint256 tAmount, bool deductTransferFee) external view returns (uint256) {
require(tAmount <= _tTotal, "TRUMP: Amount must be less than supply");
uint256 currentRate = _getRate();
uint256 rAmount = tAmount * currentRate;
if (!deductTransferFee) {
return rAmount;
}
else {
uint256 rTotalFee = tAmount * _totalFee / 100 * currentRate;
uint256 rTransferAmount = rAmount - rTotalFee;
return rTransferAmount;
}
}
// Main
function _transfer(
address from,
address to,
uint256 amount
) internal {
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");
require(amount <= balanceOf(from), "TRUMP: Cannot transfer more than balance");
bool isBuyFromLp = automatedMarketMakerPairs[from];
bool isSelltoLp = automatedMarketMakerPairs[to];
if(!_isAllowedToTradeWhenDisabled[from] && !_isAllowedToTradeWhenDisabled[to]) {
require(isTradingEnabled, "TRUMP: Trading is currently disabled.");
require(!_isBlocked[to], "TRUMP: Account is blocked");
require(!_isBlocked[from], "TRUMP: Account is blocked");
if (!_isExcludedFromMaxTransactionLimit[to] && !_isExcludedFromMaxTransactionLimit[from]) {
require(amount <= maxTxAmount, "TRUMP: Transfer amount exceeds the maxTxAmount.");
}
if (!_isExcludedFromMaxWalletLimit[to]) {
require((balanceOf(to) + amount) <= maxWalletAmount, "TRUMP: Expected wallet amount exceeds the maxWalletAmount.");
}
}
_adjustTaxes(isBuyFromLp, isSelltoLp);
bool canSwap = balanceOf(address(this)) >= minimumTokensBeforeSwap;
if (
isTradingEnabled &&
canSwap &&
!_swapping &&
_totalFee > 0 &&
automatedMarketMakerPairs[to]
) {
_swapping = true;
_swapAndLiquify();
_swapping = false;
}
bool takeFee = !_swapping && isTradingEnabled;
if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
takeFee = false;
}
_tokenTransfer(from, to, amount, takeFee);
}
function _tokenTransfer(address sender,address recipient, uint256 tAmount, bool takeFee) private {
(uint256 tTransferAmount,uint256 tFee, uint256 tOther) = _getTValues(tAmount, takeFee);
(uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 rOther) = _getRValues(tAmount, tFee, tOther, _getRate());
if (_isExcludedFromDividends[sender]) {
_tOwned[sender] = _tOwned[sender] - tAmount;
}
if (_isExcludedFromDividends[recipient]) {
_tOwned[recipient] = _tOwned[recipient] + tTransferAmount;
}
_rOwned[sender] = _rOwned[sender] - rAmount;
_rOwned[recipient] = _rOwned[recipient] + rTransferAmount;
_takeContractFees(rOther, tOther);
_reflectFee(rFee, tFee);
emit Transfer(sender, recipient, tTransferAmount);
}
function _reflectFee(uint256 rFee, uint256 tFee) private {
_rTotal -= rFee;
_tFeeTotal += tFee;
}
function _getTValues(uint256 tAmount, bool takeFee) private view returns (uint256,uint256,uint256){
if (!takeFee) {
return (tAmount, 0, 0);
}
else {
uint256 tFee = tAmount * _holdersFee / 100;
uint256 tOther = tAmount * (_liquidityFee + _devFee + _marketingFee + _buyBackFee) / 100;
uint256 tTransferAmount = tAmount - (tFee + tOther);
return (tTransferAmount, tFee, tOther);
}
}
function _getRValues(
uint256 tAmount,
uint256 tFee,
uint256 tOther,
uint256 currentRate
) private pure returns ( uint256, uint256, uint256, uint256) {
uint256 rAmount = tAmount * currentRate;
uint256 rFee = tFee * currentRate;
uint256 rOther = tOther * currentRate;
uint256 rTransferAmount = rAmount - (rFee + rOther);
return (rAmount, rTransferAmount, rFee, rOther);
}
function _getRate() private view returns (uint256) {
(uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
return rSupply.div(tSupply);
}
function _getCurrentSupply() private view returns (uint256, uint256) {
uint256 rSupply = _rTotal;
uint256 tSupply = _tTotal;
for (uint256 i = 0; i < _excludedFromDividends.length; i++) {
if (
_rOwned[_excludedFromDividends[i]] > rSupply ||
_tOwned[_excludedFromDividends[i]] > tSupply
) return (_rTotal, _tTotal);
rSupply = rSupply - _rOwned[_excludedFromDividends[i]];
tSupply = tSupply - _tOwned[_excludedFromDividends[i]];
}
if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal);
return (rSupply, tSupply);
}
function _takeContractFees(uint256 rOther, uint256 tOther) private {
if (_isExcludedFromDividends[address(this)]) {
_tOwned[address(this)] += tOther;
}
_rOwned[address(this)] += rOther;
}
function _adjustTaxes(bool isBuyFromLp, bool isSelltoLp) private {
_liquidityFee = 0;
_devFee = 0;
_marketingFee = 0;
_buyBackFee = 0;
_holdersFee = 0;
if (isBuyFromLp) {
if ((block.number - _launchBlockNumber) <= 5) {
_liquidityFee = 100;
} else {
_liquidityFee = _base.liquidityFeeOnBuy;
_devFee = _base.devFeeOnBuy;
_marketingFee = _base.marketingFeeOnBuy;
_buyBackFee = _base.buyBackFeeOnBuy;
_holdersFee = _base.holdersFeeOnBuy;
}
}
if (isSelltoLp) {
_liquidityFee = _base.liquidityFeeOnSell;
_devFee = _base.devFeeOnSell;
_marketingFee = _base.marketingFeeOnSell;
_buyBackFee = _base.buyBackFeeOnSell;
_holdersFee = _base.holdersFeeOnSell;
if (block.timestamp - _launchTimestamp <= 259200) {
_liquidityFee = 2;
_devFee = 3;
_marketingFee = 10;
_buyBackFee = 8;
_holdersFee = 2;
}
}
_totalFee = _liquidityFee + _marketingFee + _devFee + _buyBackFee + _holdersFee;
emit FeesApplied(_liquidityFee, _marketingFee, _devFee, _buyBackFee, _holdersFee, _totalFee);
}
function _setCustomSellTaxPeriod(CustomTaxPeriod storage map,
uint8 _liquidityFeeOnSell,
uint8 _marketingFeeOnSell,
uint8 _devFeeOnSell,
uint8 _buyBackFeeOnSell,
uint8 _holdersFeeOnSell
) private {
if (map.liquidityFeeOnSell != _liquidityFeeOnSell) {
emit CustomTaxPeriodChange(_liquidityFeeOnSell, map.liquidityFeeOnSell, 'liquidityFeeOnSell', map.periodName);
map.liquidityFeeOnSell = _liquidityFeeOnSell;
}
if (map.marketingFeeOnSell != _marketingFeeOnSell) {
emit CustomTaxPeriodChange(_marketingFeeOnSell, map.marketingFeeOnSell, 'marketingFeeOnSell', map.periodName);
map.marketingFeeOnSell = _marketingFeeOnSell;
}
if (map.devFeeOnSell != _devFeeOnSell) {
emit CustomTaxPeriodChange(_devFeeOnSell, map.devFeeOnSell, 'devFeeOnSell', map.periodName);
map.devFeeOnSell = _devFeeOnSell;
}
if (map.buyBackFeeOnSell != _buyBackFeeOnSell) {
emit CustomTaxPeriodChange(_buyBackFeeOnSell, map.buyBackFeeOnSell, 'buyBackFeeOnSell', map.periodName);
map.buyBackFeeOnSell = _buyBackFeeOnSell;
}
if (map.holdersFeeOnSell != _holdersFeeOnSell) {
emit CustomTaxPeriodChange(_holdersFeeOnSell, map.holdersFeeOnSell, 'holdersFeeOnSell', map.periodName);
map.holdersFeeOnSell = _holdersFeeOnSell;
}
}
function _setCustomBuyTaxPeriod(CustomTaxPeriod storage map,
uint8 _liquidityFeeOnBuy,
uint8 _marketingFeeOnBuy,
uint8 _devFeeOnBuy,
uint8 _buyBackFeeOnBuy,
uint8 _holdersFeeOnBuy
) private {
if (map.liquidityFeeOnBuy != _liquidityFeeOnBuy) {
emit CustomTaxPeriodChange(_liquidityFeeOnBuy, map.liquidityFeeOnBuy, 'liquidityFeeOnBuy', map.periodName);
map.liquidityFeeOnBuy = _liquidityFeeOnBuy;
}
if (map.marketingFeeOnBuy != _marketingFeeOnBuy) {
emit CustomTaxPeriodChange(_marketingFeeOnBuy, map.marketingFeeOnBuy, 'marketingFeeOnBuy', map.periodName);
map.marketingFeeOnBuy = _marketingFeeOnBuy;
}
if (map.devFeeOnBuy != _devFeeOnBuy) {
emit CustomTaxPeriodChange(_devFeeOnBuy, map.devFeeOnBuy, 'devFeeOnBuy', map.periodName);
map.devFeeOnBuy = _devFeeOnBuy;
}
if (map.buyBackFeeOnBuy != _buyBackFeeOnBuy) {
emit CustomTaxPeriodChange(_buyBackFeeOnBuy, map.buyBackFeeOnBuy, 'buyBackFeeOnBuy', map.periodName);
map.buyBackFeeOnBuy = _buyBackFeeOnBuy;
}
if (map.holdersFeeOnBuy != _holdersFeeOnBuy) {
emit CustomTaxPeriodChange(_holdersFeeOnBuy, map.holdersFeeOnBuy, 'holdersFeeOnBuy', map.periodName);
map.holdersFeeOnBuy = _holdersFeeOnBuy;
}
}
function _swapAndLiquify() private {
uint256 contractBalance = balanceOf(address(this));
uint256 initialETHBalance = address(this).balance;
uint8 totalFeePrior = _totalFee;
uint8 liquidityFeePrior = _liquidityFee;
uint8 marketingFeePrior = _marketingFee;
uint8 devFeePrior = _devFee;
uint8 buyBackFeePrior = _buyBackFee;
uint8 holdersFeePrior = _holdersFee;
uint256 amountToLiquify = contractBalance * _liquidityFee / _totalFee / 2;
uint256 amountToSwapForETH = contractBalance - amountToLiquify;
_swapTokensForETH(amountToSwapForETH);
uint256 ETHBalanceAfterSwap = address(this).balance - initialETHBalance;
uint256 totalETHFee = totalFeePrior - (liquidityFeePrior / 2) - (holdersFeePrior);
uint256 amountETHLiquidity = ETHBalanceAfterSwap * liquidityFeePrior / totalETHFee / 2;
uint256 amountETHDev = ETHBalanceAfterSwap * devFeePrior / totalETHFee;
uint256 amountETHBuyBack = ETHBalanceAfterSwap * buyBackFeePrior / totalETHFee;
uint256 amountETHMarketing = ETHBalanceAfterSwap - (amountETHLiquidity + amountETHDev + amountETHBuyBack);
payable(marketingWallet).transfer(amountETHMarketing);
payable(devWallet).transfer(amountETHDev);
payable(buyBackWallet).transfer(amountETHBuyBack);
if (amountToLiquify > 0) {
_addLiquidity(amountToLiquify, amountETHLiquidity);
emit SwapAndLiquify(amountToSwapForETH, amountETHLiquidity, amountToLiquify);
}
_totalFee = totalFeePrior;
_liquidityFee = liquidityFeePrior;
_marketingFee = marketingFeePrior;
_devFee = devFeePrior;
_buyBackFee = buyBackFeePrior;
_holdersFee = holdersFeePrior;
}
function _swapTokensForETH(uint256 tokenAmount) private {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this),
block.timestamp
);
}
function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
liquidityWallet,
block.timestamp
);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"AllowedWhenTradingDisabledChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"AutomatedMarketMakerPairChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":true,"internalType":"bool","name":"status","type":"bool"}],"name":"BlockedAccountChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimETHOverflow","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"},{"indexed":true,"internalType":"string","name":"taxType","type":"string"},{"indexed":false,"internalType":"bytes23","name":"period","type":"bytes23"}],"name":"CustomTaxPeriodChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromDividendsChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFeesChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromMaxTransferChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromMaxWalletChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"identifier","type":"string"},{"indexed":false,"internalType":"uint8","name":"liquidityFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"marketingFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"devFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"buyBackFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"holdersFee","type":"uint8"}],"name":"FeeChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"liquidityFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"marketingFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"devFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"buyBackFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"holdersFee","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"totalFee","type":"uint8"}],"name":"FeesApplied","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"MaxTransactionAmountChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"MaxWalletAmountChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newValue","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"oldValue","type":"uint256"}],"name":"MinTokenAmountBeforeSwapChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UniswapV2RouterChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"string","name":"indentifier","type":"string"},{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"WalletChange","type":"event"},{"inputs":[],"name":"activateTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"allowed","type":"bool"}],"name":"allowTradingWhenDisabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"blockAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyBackWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimETHOverflow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deactivateTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBaseBuyFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBaseSellFees","outputs":[{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"},{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isTradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_liquidityFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_marketingFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_devFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_buyBackFeeOnBuy","type":"uint8"},{"internalType":"uint8","name":"_holdersFeeOnBuy","type":"uint8"}],"name":"setBaseFeesOnBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_liquidityFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_marketingFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_devFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_buyBackFeeOnSell","type":"uint8"},{"internalType":"uint8","name":"_holdersFeeOnSell","type":"uint8"}],"name":"setBaseFeesOnSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMinimumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityWallet","type":"address"},{"internalType":"address","name":"newMarketingWallet","type":"address"},{"internalType":"address","name":"newDevWallet","type":"address"},{"internalType":"address","name":"newBuyBackWallet","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"unblockAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60a06040526200001d6a52b7d2dcc80cd2e400000060001962000d19565b6200002b9060001962000d46565b6005556a52b7d2dcc80cd2e40000006008556a52b7d2dcc80cd2e4000000600955620f42406a52b7d2dcc80cd2e400000060fa6200006a919062000d60565b62000076919062000d82565b600b55600c80546001600160a01b03191661dead179055604080516101a081018252636261736560e01b81526000602082018190529181018290526001606082018190526080820152600360a0820181905260c0820152600260e08201819052610100820181905261012082018190526101408201819052610160820181905261018090910152601180546001600160c01b031916636261736560981b1790556012556013805469020202020202030301016001600160501b03199091161790553480156200014457600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060008054600d80546001600160a01b039092166001600160a01b03199283168117909155600e8054831682179055600f8054831682179055601080549092161790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa1580156200021d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000243919062000d99565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000291573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b7919062000d99565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000305573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032b919062000d99565b600180546001600160a01b0319166001600160a01b0385811691909117825582166080529091506200035f908290620005d5565b600160176000620003786000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553080825260179093522080549092166001908117909255620003c691620006c5565b600c54620003df906001600160a01b03166001620006c5565b620003ec826001620006c5565b6001601c6000620004056000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530808252601c855283822080548716600190811790915587841683526018958690528483208054881682179055805490931682528382208054871684179055815291822080549094168117909355620004946000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152601993849052828120805486166001908117909155600c54909216815291822080549094168117909355620005026000546001600160a01b031690565b6001600160a01b0316815260208101919091526040016000908120805460ff19169215159290921790915560055490600290620005476000546001600160a01b031690565b6001600160a01b03168152602081019190915260400160002055620005746000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6a52b7d2dcc80cd2e4000000604051620005c591815260200190565b60405180910390a3505062000e64565b6001600160a01b0382166000908152601a602052604090205481151560ff909116151503620006715760405162461bcd60e51b815260206004820152603f60248201527f5452554d503a204175746f6d61746564206d61726b6574206d616b657220706160448201527f697220697320616c72656164792073657420746f20746861742076616c75650060648201526084015b60405180910390fd5b6001600160a01b0382166000818152601a6020526040808220805460ff191685151590811790915590519092917fa666b9b2dc2c8f2d86fda7ba3a115be30d3a958fd84d359cbc6bc919df97990a91a35050565b6000546001600160a01b03163314620007215760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000668565b6001600160a01b0382166000908152601b602052604090205481151560ff909116151503620007ad5760405162461bcd60e51b815260206004820152603160248201527f5452554d503a204163636f756e7420697320616c7265616479207468652076616044820152706c7565206f6620276578636c756465642760781b606482015260840162000668565b80156200087a576001600160a01b0382166000908152600260205260409020541562000811576001600160a01b038216600090815260026020526040902054620007f790620009fb565b6001600160a01b0383166000908152600360205260409020555b6001600160a01b0382166000818152601b60205260408120805460ff1916841515179055601d805460018101825591527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f0180546001600160a01b0319169091179055620009b1565b60005b601d54811015620009af57826001600160a01b0316601d8281548110620008a857620008a862000dc4565b6000918252602090912001546001600160a01b0316036200099a57601d8054620008d59060019062000d46565b81548110620008e857620008e862000dc4565b600091825260209091200154601d80546001600160a01b03909216918390811062000917576200091762000dc4565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600382526040808220829055601b90925220805460ff19169055601d80548062000972576200097262000dda565b600082815260209020810160001990810180546001600160a01b0319169055019055620009af565b80620009a68162000df0565b9150506200087d565b505b816001600160a01b03167fcb9d59a6e9da25dee1a9ddef81481537dfd94e20b1593b58b08193bea9e9baa982604051620009ef911515815260200190565b60405180910390a25050565b600060055482111562000a6b5760405162461bcd60e51b815260206004820152603160248201527f5452554d503a20416d6f756e74206d757374206265206c657373207468616e20604482015270746f74616c207265666c656374696f6e7360781b606482015260840162000668565b600062000a7762000a8c565b905062000a85818462000d82565b9392505050565b6000808062000a9a62000abf565b9150915062000ab8818362000c7d60201b62001dbd1790919060201c565b9250505090565b60055460009081906a52b7d2dcc80cd2e4000000825b601d5481101562000c38578260026000601d848154811062000afb5762000afb62000dc4565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118062000b6a57508160036000601d848154811062000b435762000b4362000dc4565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1562000b89575050600554936a52b7d2dcc80cd2e40000009350915050565b60026000601d838154811062000ba35762000ba362000dc4565b60009182526020808320909101546001600160a01b0316835282019290925260400190205462000bd4908462000d46565b925060036000601d838154811062000bf05762000bf062000dc4565b60009182526020808320909101546001600160a01b0316835282019290925260400190205462000c21908362000d46565b91508062000c2f8162000df0565b91505062000ad5565b506a52b7d2dcc80cd2e400000060055462000c54919062000d82565b82101562000c74575050600554926a52b7d2dcc80cd2e400000092509050565b90939092509050565b600062000a8583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000cc760201b60201c565b6000818362000ceb5760405162461bcd60e51b815260040162000668919062000e0c565b50600062000cfa848662000d82565b95945050505050565b634e487b7160e01b600052601260045260246000fd5b60008262000d2b5762000d2b62000d03565b500690565b634e487b7160e01b600052601160045260246000fd5b60008282101562000d5b5762000d5b62000d30565b500390565b600081600019048311821515161562000d7d5762000d7d62000d30565b500290565b60008262000d945762000d9462000d03565b500490565b60006020828403121562000dac57600080fd5b81516001600160a01b038116811462000a8557600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60006001820162000e055762000e0562000d30565b5060010190565b600060208083528351808285015260005b8181101562000e3b5785810183015185820160400152820162000e1d565b8181111562000e4e576000604083870101525b50601f01601f1916929092016040019392505050565b608051613dcc62000e8060003960006104ea0152613dcc6000f3fe6080604052600436106102815760003560e01c8063781edb3c1161014f578063aa4bde28116100c1578063d2d7ad831161007a578063d2d7ad831461080f578063d322157614610825578063d469801614610845578063dd62ed3e14610865578063f2fde38b146108ab578063fe017535146108cb57600080fd5b8063aa4bde28146106f8578063aee50b1e1461070e578063b1ba39ea1461072e578063b62496f51461074e578063c02466681461077e578063cd43e2281461079e57600080fd5b80638da5cb5b116101135780638da5cb5b1461062c5780638ea5220f1461064a57806395d89b411461066a5780639fad968314610698578063a457c2d7146106b8578063a9059cbb146106d857600080fd5b8063781edb3c146105965780637c0a893d146105b657806383672f3e146105d6578063880bcbc1146105f65780638c0b5e221461061657600080fd5b806327a14fc2116101f357806349bd5a5e116101ac57806349bd5a5e146104d85780634d78fdc61461050c57806366164f6f1461052c57806370a0823114610541578063715018a61461056157806375f0a8741461057657600080fd5b806327a14fc2146104275780632d83811914610447578063313ce5671461046757806334cf1fea1461048357806339509351146104985780634549b039146104b857600080fd5b806313114a9d1161024557806313114a9d146103525780631694505e1461037157806318160ddd146103a95780631cd348c0146103c75780631e293c10146103e757806323b872dd1461040757600080fd5b80630483f7a01461028d578063064a59d0146102af57806306fdde03146102de578063095ea7b31461031d5780630bd05b691461033d57600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102ad6102a8366004613818565b610911565b005b3480156102bb57600080fd5b506007546102c99060ff1681565b60405190151581526020015b60405180910390f35b3480156102ea57600080fd5b5060408051808201909152600d81526c5452554d50204953204241434b60981b60208201525b6040516102d5919061384d565b34801561032957600080fd5b506102c96103383660046138a2565b610bb8565b34801561034957600080fd5b506102ad610bcf565b34801561035e57600080fd5b506006545b6040519081526020016102d5565b34801561037d57600080fd5b50600154610391906001600160a01b031681565b6040516001600160a01b0390911681526020016102d5565b3480156103b557600080fd5b506a52b7d2dcc80cd2e4000000610363565b3480156103d357600080fd5b50600f54610391906001600160a01b031681565b3480156103f357600080fd5b506102ad6104023660046138ce565b610c1b565b34801561041357600080fd5b506102c96104223660046138e7565b610ce0565b34801561043357600080fd5b506102ad6104423660046138ce565b610d49565b34801561045357600080fd5b506103636104623660046138ce565b610e12565b34801561047357600080fd5b50604051601281526020016102d5565b34801561048f57600080fd5b506102ad610e9d565b3480156104a457600080fd5b506102c96104b33660046138a2565b610ed3565b3480156104c457600080fd5b506103636104d3366004613928565b610f09565b3480156104e457600080fd5b506103917f000000000000000000000000000000000000000000000000000000000000000081565b34801561051857600080fd5b506102ad61052736600461394b565b610fea565b34801561053857600080fd5b506102ad6110c9565b34801561054d57600080fd5b5061036361055c36600461394b565b611200565b34801561056d57600080fd5b506102ad61125f565b34801561058257600080fd5b50600e54610391906001600160a01b031681565b3480156105a257600080fd5b506102ad6105b1366004613818565b6112d3565b3480156105c257600080fd5b506102ad6105d136600461394b565b611395565b3480156105e257600080fd5b506102ad6105f1366004613968565b6114f5565b34801561060257600080fd5b506102ad610611366004613818565b61188f565b34801561062257600080fd5b5061036360095481565b34801561063857600080fd5b506000546001600160a01b0316610391565b34801561065657600080fd5b50601054610391906001600160a01b031681565b34801561067657600080fd5b5060408051808201909152600581526405452554d560dc1b6020820152610310565b3480156106a457600080fd5b506102ad6106b33660046139d5565b611951565b3480156106c457600080fd5b506102c96106d33660046138a2565b611a08565b3480156106e457600080fd5b506102c96106f33660046138a2565b611a57565b34801561070457600080fd5b5061036360085481565b34801561071a57600080fd5b506102ad6107293660046138ce565b611a64565b34801561073a57600080fd5b506102ad6107493660046139d5565b611b38565b34801561075a57600080fd5b506102c961076936600461394b565b601a6020526000908152604090205460ff1681565b34801561078a57600080fd5b506102ad610799366004613818565b611b8f565b3480156107aa57600080fd5b5060135460ff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b909104165b6040805160ff968716815294861660208601529285169284019290925283166060830152909116608082015260a0016102d5565b34801561081b57600080fd5b50610363600b5481565b34801561083157600080fd5b506102ad610840366004613818565b611c51565b34801561085157600080fd5b50600d54610391906001600160a01b031681565b34801561087157600080fd5b50610363610880366004613a3a565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156108b757600080fd5b506102ad6108c636600461394b565b611cd3565b3480156108d757600080fd5b5060135460ff610100820481169163010000008104821691600160281b8204811691600160381b8104821691600160481b909104166107db565b6000546001600160a01b031633146109445760405162461bcd60e51b815260040161093b90613a73565b60405180910390fd5b6001600160a01b0382166000908152601b602052604090205481151560ff9091161515036109845760405162461bcd60e51b815260040161093b90613aa8565b8015610a4c576001600160a01b038216600090815260026020526040902054156109e4576001600160a01b0382166000908152600260205260409020546109ca90610e12565b6001600160a01b0383166000908152600360205260409020555b6001600160a01b0382166000818152601b60205260408120805460ff1916841515179055601d805460018101825591527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f0180546001600160a01b0319169091179055610b6f565b60005b601d54811015610b6d57826001600160a01b0316601d8281548110610a7657610a76613af9565b6000918252602090912001546001600160a01b031603610b5b57601d8054610aa090600190613b25565b81548110610ab057610ab0613af9565b600091825260209091200154601d80546001600160a01b039092169183908110610adc57610adc613af9565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600382526040808220829055601b90925220805460ff19169055601d805480610b3457610b34613b3c565b600082815260209020810160001990810180546001600160a01b0319169055019055610b6d565b80610b6581613b52565b915050610a4f565b505b816001600160a01b03167fcb9d59a6e9da25dee1a9ddef81481537dfd94e20b1593b58b08193bea9e9baa982604051610bac911515815260200190565b60405180910390a25050565b6000610bc5338484611dff565b5060015b92915050565b6000546001600160a01b03163314610bf95760405162461bcd60e51b815260040161093b90613a73565b6007805460ff19166001179055601554600003610c195742601555436014555b565b6000546001600160a01b03163314610c455760405162461bcd60e51b815260040161093b90613a73565b6009548103610cad5760405162461bcd60e51b815260206004820152602e60248201527f5452554d503a2043616e6e6f7420757064617465206d61785478416d6f756e7460448201526d20746f2073616d652076616c756560901b606482015260840161093b565b60095460405182907f75f1c17bf623f0f7a2bd91ba61e89dff216960370e3e9a46b250750d03e4215e90600090a3600955565b6000610ced848484611f23565b610d3f8433610d3a85604051806060016040528060288152602001613d2a602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906124b4565b611dff565b5060019392505050565b6000546001600160a01b03163314610d735760405162461bcd60e51b815260040161093b90613a73565b6008548103610ddf5760405162461bcd60e51b815260206004820152603260248201527f5452554d503a2043616e6e6f7420757064617465206d617857616c6c6574416d6044820152716f756e7420746f2073616d652076616c756560701b606482015260840161093b565b60085460405182907f6d3e257c59a11116c3e97bb144abf5ba1a6a9da6bd509192ecf0d48f7be1fc7690600090a3600855565b6000600554821115610e805760405162461bcd60e51b815260206004820152603160248201527f5452554d503a20416d6f756e74206d757374206265206c657373207468616e20604482015270746f74616c207265666c656374696f6e7360781b606482015260840161093b565b6000610e8a6124ee565b9050610e968184613b81565b9392505050565b6000546001600160a01b03163314610ec75760405162461bcd60e51b815260040161093b90613a73565b6007805460ff19169055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610bc5918590610d3a9086612511565b60006a52b7d2dcc80cd2e4000000831115610f755760405162461bcd60e51b815260206004820152602660248201527f5452554d503a20416d6f756e74206d757374206265206c657373207468616e20604482015265737570706c7960d01b606482015260840161093b565b6000610f7f6124ee565b90506000610f8d8286613b95565b905083610f9d579150610bc99050565b601e546000908390606490610fbc90600160281b900460ff1689613b95565b610fc69190613b81565b610fd09190613b95565b90506000610fde8284613b25565b9450610bc99350505050565b6000546001600160a01b031633146110145760405162461bcd60e51b815260040161093b90613a73565b6001600160a01b03811660009081526016602052604090205460ff1661107c5760405162461bcd60e51b815260206004820152601d60248201527f5452554d503a204163636f756e74206973206e6f7420626c636f6b6564000000604482015260640161093b565b6001600160a01b038116600081815260166020526040808220805460ff19169055519091907f2f092974a5a89dc001cc04aa60bc3afe575e0b7444ef2197f7bb5714b51528ba908390a350565b6000546001600160a01b031633146110f35760405162461bcd60e51b815260040161093b90613a73565b600047116111595760405162461bcd60e51b815260206004820152602d60248201527f5452554d503a2043616e6e6f742073656e64206d6f7265207468616e20636f6e60448201526c74726163742062616c616e636560981b606482015260840161093b565b47600061116e6000546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d80600081146111b8576040519150601f19603f3d011682016040523d82523d6000602084013e6111bd565b606091505b5050905080156111fc576040518281527f362ae087cf4ccfc970d45b9e8ce6520f03b4eda3f9d76a70b655dc22badcca48906020015b60405180910390a15b5050565b6001600160a01b0381166000908152601b602052604081205460ff161561123d57506001600160a01b031660009081526003602052604090205490565b6001600160a01b038216600090815260026020526040902054610bc990610e12565b6000546001600160a01b031633146112895760405162461bcd60e51b815260040161093b90613a73565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146112fd5760405162461bcd60e51b815260040161093b90613a73565b6001600160a01b03821660009081526018602052604090205481151560ff90911615150361133d5760405162461bcd60e51b815260040161093b90613aa8565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527ff5133f371b17bf21ce0df4ae2c1b6e11ca7c2f27257eb55282edb1ccfd4ecb2e9101610bac565b6000546001600160a01b031633146113bf5760405162461bcd60e51b815260040161093b90613a73565b6001600160a01b03811660009081526016602052604090205460ff16156114325760405162461bcd60e51b815260206004820152602160248201527f5452554d503a204163636f756e7420697320616c726561647920626c6f636b656044820152601960fa1b606482015260840161093b565b6203f480601554426114449190613b25565b106114a35760405162461bcd60e51b815260206004820152602960248201527f5452554d503a2054696d6520746f20626c6f636b206163636f756e74732068616044820152681cc8195e1c1a5c995960ba1b606482015260840161093b565b6001600160a01b038116600081815260166020526040808220805460ff1916600190811790915590519092917f2f092974a5a89dc001cc04aa60bc3afe575e0b7444ef2197f7bb5714b51528ba91a350565b6000546001600160a01b0316331461151f5760405162461bcd60e51b815260040161093b90613a73565b600d546001600160a01b03858116911614611600576001600160a01b0384166115995760405162461bcd60e51b815260206004820152602660248201527f5452554d503a20546865206c697175696469747957616c6c65742063616e6e6f60448201526507420626520360d41b606482015260840161093b565b600d546040516e1b1a5c5d5a591a5d1e55d85b1b195d608a1b81526001600160a01b0391821691861690600f0160405190819003812090600080516020613d0a83398151915290600090a4600d80546001600160a01b0319166001600160a01b0386161790555b600e546001600160a01b038481169116146116e1576001600160a01b03831661167a5760405162461bcd60e51b815260206004820152602660248201527f5452554d503a20546865206d61726b6574696e6757616c6c65742063616e6e6f60448201526507420626520360d41b606482015260840161093b565b600e546040516e1b585c9ad95d1a5b99d5d85b1b195d608a1b81526001600160a01b0391821691851690600f0160405190819003812090600080516020613d0a83398151915290600090a4600e80546001600160a01b0319166001600160a01b0385161790555b6010546001600160a01b038381169116146117ad576001600160a01b03821661174c5760405162461bcd60e51b815260206004820181905260248201527f5452554d503a205468652064657657616c6c65742063616e6e6f742062652030604482015260640161093b565b6010546040516819195d95d85b1b195d60ba1b81526001600160a01b039182169184169060090160405190819003812090600080516020613d0a83398151915290600090a4601080546001600160a01b0319166001600160a01b0384161790555b600f546001600160a01b03828116911614611889576001600160a01b0381166118245760405162461bcd60e51b8152602060048201526024808201527f5452554d503a20546865206275794261636b57616c6c65742063616e6e6f74206044820152630626520360e41b606482015260840161093b565b600f546040516c189d5e509858dad5d85b1b195d609a1b81526001600160a01b0391821691831690600d0160405190819003812090600080516020613d0a83398151915290600090a4600f80546001600160a01b0319166001600160a01b0383161790555b50505050565b6000546001600160a01b031633146118b95760405162461bcd60e51b815260040161093b90613a73565b6001600160a01b03821660009081526019602052604090205481151560ff9091161515036118f95760405162461bcd60e51b815260040161093b90613aa8565b6001600160a01b038216600081815260196020908152604091829020805460ff191685151590811790915591519182527f30098fc83ab61b1a98835d32c4e611adedccfc260eeef586bd329d48e8a40a409101610bac565b6000546001600160a01b0316331461197b5760405162461bcd60e51b815260040161093b90613a73565b61198a60118686868686612570565b6040516b62617365466565732d42757960a01b8152600c015b6040805191829003822060ff8881168452878116602085015286811684840152858116606085015284166080840152905190917f9a3619059270a48acdf850268d8f96db29f0cfe103bc17b5b4040a05af4d4f67919081900360a00190a25050505050565b6000610bc53384610d3a85604051806060016040528060258152602001613d72602591393360009081526004602090815260408083206001600160a01b038d16845290915290205491906124b4565b6000610bc5338484611f23565b6000546001600160a01b03163314611a8e5760405162461bcd60e51b815260040161093b90613a73565b600b548103611b055760405162461bcd60e51b815260206004820152603a60248201527f5452554d503a2043616e6e6f7420757064617465206d696e696d756d546f6b6560448201527f6e734265666f72655377617020746f2073616d652076616c7565000000000000606482015260840161093b565b600b5460405182907f5b0491f767c1463bea8972339f785795be1a38784cc6483cf649cdcbb28c46b090600090a3600b55565b6000546001600160a01b03163314611b625760405162461bcd60e51b815260040161093b90613a73565b611b7160118686868686612854565b6040516c18985cd95199595ccb54d95b1b609a1b8152600d016119a3565b6000546001600160a01b03163314611bb95760405162461bcd60e51b815260040161093b90613a73565b6001600160a01b03821660009081526017602052604090205481151560ff909116151503611bf95760405162461bcd60e51b815260040161093b90613aa8565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527fa856ba9fdc54a5434b2359874c95612f520a2d7f858864ae98d15c1b2099ca8b9101610bac565b6000546001600160a01b03163314611c7b5760405162461bcd60e51b815260040161093b90613a73565b6001600160a01b0382166000818152601c6020908152604091829020805460ff191685151590811790915591519182527fcb9f97b7b4b41413e5c8d418a8cf9a88db1cf34dee66b213d070faf881d9d3509101610bac565b6000546001600160a01b03163314611cfd5760405162461bcd60e51b815260040161093b90613a73565b6001600160a01b038116611d625760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161093b565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e9683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b54565b6001600160a01b038316611e615760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161093b565b6001600160a01b038216611ec25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161093b565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611f875760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161093b565b6001600160a01b038216611fe95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161093b565b6000811161204b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161093b565b61205483611200565b8111156120b45760405162461bcd60e51b815260206004820152602860248201527f5452554d503a2043616e6e6f74207472616e73666572206d6f7265207468616e6044820152672062616c616e636560c01b606482015260840161093b565b6001600160a01b038084166000818152601a6020908152604080832054948716835280832054938352601c90915290205460ff92831692918216911615801561211657506001600160a01b0384166000908152601c602052604090205460ff16155b156123a15760075460ff1661217b5760405162461bcd60e51b815260206004820152602560248201527f5452554d503a2054726164696e672069732063757272656e746c792064697361604482015264313632b21760d91b606482015260840161093b565b6001600160a01b03841660009081526016602052604090205460ff16156121e05760405162461bcd60e51b815260206004820152601960248201527815149553540e881058d8dbdd5b9d081a5cc8189b1bd8dad959603a1b604482015260640161093b565b6001600160a01b03851660009081526016602052604090205460ff16156122455760405162461bcd60e51b815260206004820152601960248201527815149553540e881058d8dbdd5b9d081a5cc8189b1bd8dad959603a1b604482015260640161093b565b6001600160a01b03841660009081526019602052604090205460ff1615801561228757506001600160a01b03851660009081526019602052604090205460ff16155b156122f6576009548311156122f65760405162461bcd60e51b815260206004820152602f60248201527f5452554d503a205472616e7366657220616d6f756e742065786365656473207460448201526e34329036b0bc2a3c20b6b7bab73a1760891b606482015260840161093b565b6001600160a01b03841660009081526018602052604090205460ff166123a1576008548361232386611200565b61232d9190613bb4565b11156123a15760405162461bcd60e51b815260206004820152603a60248201527f5452554d503a2045787065637465642077616c6c657420616d6f756e7420657860448201527f636565647320746865206d617857616c6c6574416d6f756e742e000000000000606482015260840161093b565b6123ab8282612b82565b6000600b546123b930611200565b600754911115915060ff1680156123cd5750805b80156123dc5750600a5460ff16155b80156123f35750601e54600160281b900460ff1615155b801561241757506001600160a01b0385166000908152601a602052604090205460ff165b1561243c57600a805460ff19166001179055612431612dcb565b600a805460ff191690555b600a5460009060ff16158015612454575060075460ff165b6001600160a01b03881660009081526017602052604090205490915060ff168061249657506001600160a01b03861660009081526017602052604090205460ff165b1561249f575060005b6124ab878787846130bd565b50505050505050565b600081848411156124d85760405162461bcd60e51b815260040161093b919061384d565b5060006124e58486613b25565b95945050505050565b60008060006124fb61328e565b909250905061250a8282611dbd565b9250505090565b60008061251e8385613bb4565b905083811015610e965760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161093b565b600286015460ff8681169116146125f157604051706c69717569646974794665654f6e42757960781b815260110160405190819003812060028801548854919260ff9182169291891691600080516020613d52833981519152916125d79160481b90613bcc565b60405180910390a460028601805460ff191660ff87161790555b600286015460ff85811662010000909204161461268557604051706d61726b6574696e674665654f6e42757960781b815260110160405190819003812060028801548854919260ff6201000090920482169291881691600080516020613d52833981519152916126649160481b90613bcc565b60405180910390a460028601805462ff000019166201000060ff8716021790555b600286015460ff848116600160201b9092041614612718576040516a6465764665654f6e42757960a81b8152600b0160405190819003812060028801548854919260ff600160201b90920482169291871691600080516020613d52833981519152916126f49160481b90613bcc565b60405180910390a460028601805464ff000000001916600160201b60ff8616021790555b600286015460ff838116600160301b90920416146127b1576040516e6275794261636b4665654f6e42757960881b8152600f0160405190819003812060028801548854919260ff600160301b90920482169291861691600080516020613d528339815191529161278b9160481b90613bcc565b60405180910390a460028601805466ff0000000000001916600160301b60ff8516021790555b600286015460ff828116600160401b909204161461284c576040516e686f6c646572734665654f6e42757960881b8152600f0160405190819003812060028801548854919260ff600160401b90920482169291851691600080516020613d52833981519152916128249160481b90613bcc565b60405180910390a460028601805468ff00000000000000001916600160401b60ff8416021790555b505050505050565b600286015460ff86811661010090920416146128e557604051711b1a5c5d5a591a5d1e51995953db94d95b1b60721b815260120160405190819003812060028801548854919260ff61010090920482169291891691600080516020613d52833981519152916128c69160481b90613bcc565b60405180910390a460028601805461ff00191661010060ff8816021790555b600286015460ff8581166301000000909204161461297e57604051711b585c9ad95d1a5b99d1995953db94d95b1b60721b815260120160405190819003812060028801548854919260ff630100000090920482169291881691600080516020613d528339815191529161295b9160481b90613bcc565b60405180910390a460028601805463ff0000001916630100000060ff8716021790555b600286015460ff848116600160281b9092041614612a13576040516b19195d91995953db94d95b1b60a21b8152600c0160405190819003812060028801548854919260ff600160281b90920482169291871691600080516020613d52833981519152916129ee9160481b90613bcc565b60405180910390a460028601805465ff00000000001916600160281b60ff8616021790555b600286015460ff838116600160381b9092041614612aae576040516f189d5e509858dad1995953db94d95b1b60821b815260100160405190819003812060028801548854919260ff600160381b90920482169291861691600080516020613d5283398151915291612a879160481b90613bcc565b60405180910390a460028601805467ff000000000000001916600160381b60ff8516021790555b600286015460ff828116600160481b909204161461284c576040516f1a1bdb19195c9cd1995953db94d95b1b60821b815260100160405190819003812060028801548854919260ff600160481b90920482169291851691600080516020613d5283398151915291612b229160481b90613bcc565b60405180910390a460028601805460ff8316600160481b0269ff00000000000000000019909116179055505050505050565b60008183612b755760405162461bcd60e51b815260040161093b919061384d565b5060006124e58486613b81565b601e805464ffffffffff191690558115612c3457600560145443612ba69190613b25565b11612bbd57601e805460ff19166064179055612c34565b601354601e805460ff80841662ff00ff1990921691909117600160201b8085048316620100009081029290921763ff00ff00191661010092860484169290920263ff000000191691909117600160301b850483166301000000021764ff000000001916600160401b90940491909116029190911790555b8015612cdc57601354601e805461010080840460ff90811662ff00ff1990931692909217600160281b8504831662010000021763ff00ff001916630100000080860484169290920263ff000000191617600160381b85048316919091021764ff000000001916600160481b90930416600160201b029190911790556015546203f48090612cc19042613b25565b11612cdc57601e805464ffffffffff1916640208030a021790555b601e5460ff600160201b820481169163010000008104821691620100008204811691612d1091610100820481169116613be3565b612d1a9190613be3565b612d249190613be3565b612d2e9190613be3565b601e805465ff0000000000198116600160281b60ff948516810291821793849055604080519386169286169290921783526101008404851660208401526201000084048516918301919091526301000000830484166060830152600160201b83048416608083015290910490911660a08201527f6c6977cb51242ec6e05aba0e2a29a5292ed1a8a5cffa3b87ff66395b7997d6d29060c0016111f3565b6000612dd630611200565b601e54909150479060ff600160281b820481169181811691610100820481169162010000810482169163010000008204811691600160201b9004166000600287612e20888c613b95565b612e2a9190613b81565b612e349190613b81565b90506000612e42828b613b25565b9050612e4d81613433565b6000612e598a47613b25565b9050600084612e6960028b613c08565b612e73908c613c2a565b612e7d9190613c2a565b60ff16905060006002828b60ff1685612e969190613b95565b612ea09190613b81565b612eaa9190613b81565b9050600082612ebc60ff8b1686613b95565b612ec69190613b81565b9050600083612ed860ff8b1687613b95565b612ee29190613b81565b9050600081612ef18486613bb4565b612efb9190613bb4565b612f059087613b25565b600e546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612f40573d6000803e3d6000fd5b506010546040516001600160a01b039091169084156108fc029085906000818181858888f19350505050158015612f7b573d6000803e3d6000fd5b50600f546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612fb6573d6000803e3d6000fd5b50871561300957612fc78885613585565b60408051888152602081018690529081018990527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b8d601e60056101000a81548160ff021916908360ff1602179055508c601e60006101000a81548160ff021916908360ff1602179055508b601e60016101000a81548160ff021916908360ff1602179055508a601e60026101000a81548160ff021916908360ff16021790555089601e60036101000a81548160ff021916908360ff16021790555088601e60046101000a81548160ff021916908360ff16021790555050505050505050505050505050505050565b60008060006130cc8585613639565b9250925092506000806000806130eb8987876130e66124ee565b613703565b6001600160a01b038f166000908152601b60205260409020549397509195509350915060ff1615613154576001600160a01b038b1660009081526003602052604090205461313a908a90613b25565b6001600160a01b038c166000908152600360205260409020555b6001600160a01b038a166000908152601b602052604090205460ff16156131b3576001600160a01b038a16600090815260036020526040902054613199908890613bb4565b6001600160a01b038b166000908152600360205260409020555b6001600160a01b038b166000908152600260205260409020546131d7908590613b25565b6001600160a01b03808d1660009081526002602052604080822093909355908c1681522054613207908490613bb4565b6001600160a01b038b1660009081526002602052604090205561322a818661375b565b61323482876137c0565b896001600160a01b03168b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8960405161327991815260200190565b60405180910390a35050505050505050505050565b60055460009081906a52b7d2dcc80cd2e4000000825b601d548110156133f1578260026000601d84815481106132c6576132c6613af9565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061333157508160036000601d848154811061330a5761330a613af9565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561334f575050600554936a52b7d2dcc80cd2e40000009350915050565b60026000601d838154811061336657613366613af9565b60009182526020808320909101546001600160a01b031683528201929092526040019020546133959084613b25565b925060036000601d83815481106133ae576133ae613af9565b60009182526020808320909101546001600160a01b031683528201929092526040019020546133dd9083613b25565b9150806133e981613b52565b9150506132a4565b506a52b7d2dcc80cd2e400000060055461340b9190613b81565b82101561342a575050600554926a52b7d2dcc80cd2e400000092509050565b90939092509050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061346857613468613af9565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156134c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134e59190613c4d565b816001815181106134f8576134f8613af9565b6001600160a01b03928316602091820292909201015260015461351e9130911684611dff565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac94790613557908590600090869030904290600401613c6a565b600060405180830381600087803b15801561357157600080fd5b505af115801561284c573d6000803e3d6000fd5b60015461359d9030906001600160a01b031684611dff565b600154600d5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af115801561360d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906136329190613cdb565b5050505050565b600080600083613651575083915060009050806136fc565b601e5460009060649061366e90600160201b900460ff1688613b95565b6136789190613b81565b601e5490915060009060649060ff6301000000820481169161010081048216916136ab9162010000810482169116613be3565b6136b59190613be3565b6136bf9190613be3565b6136cc9060ff1689613b95565b6136d69190613b81565b905060006136e48284613bb4565b6136ee9089613b25565b955091935091506136fc9050565b9250925092565b600080808080613713868a613b95565b90506000613721878a613b95565b9050600061372f888a613b95565b9050600061373d8284613bb4565b6137479085613b25565b939c939b5091995097509095505050505050565b306000908152601b602052604090205460ff1615613798573060009081526003602052604081208054839290613792908490613bb4565b90915550505b30600090815260026020526040812080548492906137b7908490613bb4565b90915550505050565b81600560008282546137d29190613b25565b9250508190555080600660008282546137b79190613bb4565b6001600160a01b038116811461380057600080fd5b50565b8035801515811461381357600080fd5b919050565b6000806040838503121561382b57600080fd5b8235613836816137eb565b915061384460208401613803565b90509250929050565b600060208083528351808285015260005b8181101561387a5785810183015185820160400152820161385e565b8181111561388c576000604083870101525b50601f01601f1916929092016040019392505050565b600080604083850312156138b557600080fd5b82356138c0816137eb565b946020939093013593505050565b6000602082840312156138e057600080fd5b5035919050565b6000806000606084860312156138fc57600080fd5b8335613907816137eb565b92506020840135613917816137eb565b929592945050506040919091013590565b6000806040838503121561393b57600080fd5b8235915061384460208401613803565b60006020828403121561395d57600080fd5b8135610e96816137eb565b6000806000806080858703121561397e57600080fd5b8435613989816137eb565b93506020850135613999816137eb565b925060408501356139a9816137eb565b915060608501356139b9816137eb565b939692955090935050565b803560ff8116811461381357600080fd5b600080600080600060a086880312156139ed57600080fd5b6139f6866139c4565b9450613a04602087016139c4565b9350613a12604087016139c4565b9250613a20606087016139c4565b9150613a2e608087016139c4565b90509295509295909350565b60008060408385031215613a4d57600080fd5b8235613a58816137eb565b91506020830135613a68816137eb565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f5452554d503a204163636f756e7420697320616c7265616479207468652076616040820152706c7565206f6620276578636c756465642760781b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015613b3757613b37613b0f565b500390565b634e487b7160e01b600052603160045260246000fd5b600060018201613b6457613b64613b0f565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082613b9057613b90613b6b565b500490565b6000816000190483118215151615613baf57613baf613b0f565b500290565b60008219821115613bc757613bc7613b0f565b500190565b68ffffffffffffffffff1991909116815260200190565b600060ff821660ff84168060ff03821115613c0057613c00613b0f565b019392505050565b600060ff831680613c1b57613c1b613b6b565b8060ff84160491505092915050565b600060ff821660ff841680821015613c4457613c44613b0f565b90039392505050565b600060208284031215613c5f57600080fd5b8151610e96816137eb565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613cba5784516001600160a01b031683529383019391830191600101613c95565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613cf057600080fd5b835192506020840151915060408401519050925092509256fe4af24be54adc5e716fbcaa3fca0ad593e28dff90dffd49487c0a33b1547c6b5245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636500edc71549f0cbe47086c2237ce0cf874d6897fd1d7ce43ee6b65c0230d7606e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ed8f82aee309a599feb023faaf65fe7ca03980eb6509b66660ff650274feb66664736f6c634300080d0033
Deployed Bytecode
0x6080604052600436106102815760003560e01c8063781edb3c1161014f578063aa4bde28116100c1578063d2d7ad831161007a578063d2d7ad831461080f578063d322157614610825578063d469801614610845578063dd62ed3e14610865578063f2fde38b146108ab578063fe017535146108cb57600080fd5b8063aa4bde28146106f8578063aee50b1e1461070e578063b1ba39ea1461072e578063b62496f51461074e578063c02466681461077e578063cd43e2281461079e57600080fd5b80638da5cb5b116101135780638da5cb5b1461062c5780638ea5220f1461064a57806395d89b411461066a5780639fad968314610698578063a457c2d7146106b8578063a9059cbb146106d857600080fd5b8063781edb3c146105965780637c0a893d146105b657806383672f3e146105d6578063880bcbc1146105f65780638c0b5e221461061657600080fd5b806327a14fc2116101f357806349bd5a5e116101ac57806349bd5a5e146104d85780634d78fdc61461050c57806366164f6f1461052c57806370a0823114610541578063715018a61461056157806375f0a8741461057657600080fd5b806327a14fc2146104275780632d83811914610447578063313ce5671461046757806334cf1fea1461048357806339509351146104985780634549b039146104b857600080fd5b806313114a9d1161024557806313114a9d146103525780631694505e1461037157806318160ddd146103a95780631cd348c0146103c75780631e293c10146103e757806323b872dd1461040757600080fd5b80630483f7a01461028d578063064a59d0146102af57806306fdde03146102de578063095ea7b31461031d5780630bd05b691461033d57600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102ad6102a8366004613818565b610911565b005b3480156102bb57600080fd5b506007546102c99060ff1681565b60405190151581526020015b60405180910390f35b3480156102ea57600080fd5b5060408051808201909152600d81526c5452554d50204953204241434b60981b60208201525b6040516102d5919061384d565b34801561032957600080fd5b506102c96103383660046138a2565b610bb8565b34801561034957600080fd5b506102ad610bcf565b34801561035e57600080fd5b506006545b6040519081526020016102d5565b34801561037d57600080fd5b50600154610391906001600160a01b031681565b6040516001600160a01b0390911681526020016102d5565b3480156103b557600080fd5b506a52b7d2dcc80cd2e4000000610363565b3480156103d357600080fd5b50600f54610391906001600160a01b031681565b3480156103f357600080fd5b506102ad6104023660046138ce565b610c1b565b34801561041357600080fd5b506102c96104223660046138e7565b610ce0565b34801561043357600080fd5b506102ad6104423660046138ce565b610d49565b34801561045357600080fd5b506103636104623660046138ce565b610e12565b34801561047357600080fd5b50604051601281526020016102d5565b34801561048f57600080fd5b506102ad610e9d565b3480156104a457600080fd5b506102c96104b33660046138a2565b610ed3565b3480156104c457600080fd5b506103636104d3366004613928565b610f09565b3480156104e457600080fd5b506103917f000000000000000000000000fc853aed54b2c1be9a6d9b954e1369fb40cbed5581565b34801561051857600080fd5b506102ad61052736600461394b565b610fea565b34801561053857600080fd5b506102ad6110c9565b34801561054d57600080fd5b5061036361055c36600461394b565b611200565b34801561056d57600080fd5b506102ad61125f565b34801561058257600080fd5b50600e54610391906001600160a01b031681565b3480156105a257600080fd5b506102ad6105b1366004613818565b6112d3565b3480156105c257600080fd5b506102ad6105d136600461394b565b611395565b3480156105e257600080fd5b506102ad6105f1366004613968565b6114f5565b34801561060257600080fd5b506102ad610611366004613818565b61188f565b34801561062257600080fd5b5061036360095481565b34801561063857600080fd5b506000546001600160a01b0316610391565b34801561065657600080fd5b50601054610391906001600160a01b031681565b34801561067657600080fd5b5060408051808201909152600581526405452554d560dc1b6020820152610310565b3480156106a457600080fd5b506102ad6106b33660046139d5565b611951565b3480156106c457600080fd5b506102c96106d33660046138a2565b611a08565b3480156106e457600080fd5b506102c96106f33660046138a2565b611a57565b34801561070457600080fd5b5061036360085481565b34801561071a57600080fd5b506102ad6107293660046138ce565b611a64565b34801561073a57600080fd5b506102ad6107493660046139d5565b611b38565b34801561075a57600080fd5b506102c961076936600461394b565b601a6020526000908152604090205460ff1681565b34801561078a57600080fd5b506102ad610799366004613818565b611b8f565b3480156107aa57600080fd5b5060135460ff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b909104165b6040805160ff968716815294861660208601529285169284019290925283166060830152909116608082015260a0016102d5565b34801561081b57600080fd5b50610363600b5481565b34801561083157600080fd5b506102ad610840366004613818565b611c51565b34801561085157600080fd5b50600d54610391906001600160a01b031681565b34801561087157600080fd5b50610363610880366004613a3a565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156108b757600080fd5b506102ad6108c636600461394b565b611cd3565b3480156108d757600080fd5b5060135460ff610100820481169163010000008104821691600160281b8204811691600160381b8104821691600160481b909104166107db565b6000546001600160a01b031633146109445760405162461bcd60e51b815260040161093b90613a73565b60405180910390fd5b6001600160a01b0382166000908152601b602052604090205481151560ff9091161515036109845760405162461bcd60e51b815260040161093b90613aa8565b8015610a4c576001600160a01b038216600090815260026020526040902054156109e4576001600160a01b0382166000908152600260205260409020546109ca90610e12565b6001600160a01b0383166000908152600360205260409020555b6001600160a01b0382166000818152601b60205260408120805460ff1916841515179055601d805460018101825591527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f0180546001600160a01b0319169091179055610b6f565b60005b601d54811015610b6d57826001600160a01b0316601d8281548110610a7657610a76613af9565b6000918252602090912001546001600160a01b031603610b5b57601d8054610aa090600190613b25565b81548110610ab057610ab0613af9565b600091825260209091200154601d80546001600160a01b039092169183908110610adc57610adc613af9565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152600382526040808220829055601b90925220805460ff19169055601d805480610b3457610b34613b3c565b600082815260209020810160001990810180546001600160a01b0319169055019055610b6d565b80610b6581613b52565b915050610a4f565b505b816001600160a01b03167fcb9d59a6e9da25dee1a9ddef81481537dfd94e20b1593b58b08193bea9e9baa982604051610bac911515815260200190565b60405180910390a25050565b6000610bc5338484611dff565b5060015b92915050565b6000546001600160a01b03163314610bf95760405162461bcd60e51b815260040161093b90613a73565b6007805460ff19166001179055601554600003610c195742601555436014555b565b6000546001600160a01b03163314610c455760405162461bcd60e51b815260040161093b90613a73565b6009548103610cad5760405162461bcd60e51b815260206004820152602e60248201527f5452554d503a2043616e6e6f7420757064617465206d61785478416d6f756e7460448201526d20746f2073616d652076616c756560901b606482015260840161093b565b60095460405182907f75f1c17bf623f0f7a2bd91ba61e89dff216960370e3e9a46b250750d03e4215e90600090a3600955565b6000610ced848484611f23565b610d3f8433610d3a85604051806060016040528060288152602001613d2a602891396001600160a01b038a16600090815260046020908152604080832033845290915290205491906124b4565b611dff565b5060019392505050565b6000546001600160a01b03163314610d735760405162461bcd60e51b815260040161093b90613a73565b6008548103610ddf5760405162461bcd60e51b815260206004820152603260248201527f5452554d503a2043616e6e6f7420757064617465206d617857616c6c6574416d6044820152716f756e7420746f2073616d652076616c756560701b606482015260840161093b565b60085460405182907f6d3e257c59a11116c3e97bb144abf5ba1a6a9da6bd509192ecf0d48f7be1fc7690600090a3600855565b6000600554821115610e805760405162461bcd60e51b815260206004820152603160248201527f5452554d503a20416d6f756e74206d757374206265206c657373207468616e20604482015270746f74616c207265666c656374696f6e7360781b606482015260840161093b565b6000610e8a6124ee565b9050610e968184613b81565b9392505050565b6000546001600160a01b03163314610ec75760405162461bcd60e51b815260040161093b90613a73565b6007805460ff19169055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610bc5918590610d3a9086612511565b60006a52b7d2dcc80cd2e4000000831115610f755760405162461bcd60e51b815260206004820152602660248201527f5452554d503a20416d6f756e74206d757374206265206c657373207468616e20604482015265737570706c7960d01b606482015260840161093b565b6000610f7f6124ee565b90506000610f8d8286613b95565b905083610f9d579150610bc99050565b601e546000908390606490610fbc90600160281b900460ff1689613b95565b610fc69190613b81565b610fd09190613b95565b90506000610fde8284613b25565b9450610bc99350505050565b6000546001600160a01b031633146110145760405162461bcd60e51b815260040161093b90613a73565b6001600160a01b03811660009081526016602052604090205460ff1661107c5760405162461bcd60e51b815260206004820152601d60248201527f5452554d503a204163636f756e74206973206e6f7420626c636f6b6564000000604482015260640161093b565b6001600160a01b038116600081815260166020526040808220805460ff19169055519091907f2f092974a5a89dc001cc04aa60bc3afe575e0b7444ef2197f7bb5714b51528ba908390a350565b6000546001600160a01b031633146110f35760405162461bcd60e51b815260040161093b90613a73565b600047116111595760405162461bcd60e51b815260206004820152602d60248201527f5452554d503a2043616e6e6f742073656e64206d6f7265207468616e20636f6e60448201526c74726163742062616c616e636560981b606482015260840161093b565b47600061116e6000546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d80600081146111b8576040519150601f19603f3d011682016040523d82523d6000602084013e6111bd565b606091505b5050905080156111fc576040518281527f362ae087cf4ccfc970d45b9e8ce6520f03b4eda3f9d76a70b655dc22badcca48906020015b60405180910390a15b5050565b6001600160a01b0381166000908152601b602052604081205460ff161561123d57506001600160a01b031660009081526003602052604090205490565b6001600160a01b038216600090815260026020526040902054610bc990610e12565b6000546001600160a01b031633146112895760405162461bcd60e51b815260040161093b90613a73565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146112fd5760405162461bcd60e51b815260040161093b90613a73565b6001600160a01b03821660009081526018602052604090205481151560ff90911615150361133d5760405162461bcd60e51b815260040161093b90613aa8565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527ff5133f371b17bf21ce0df4ae2c1b6e11ca7c2f27257eb55282edb1ccfd4ecb2e9101610bac565b6000546001600160a01b031633146113bf5760405162461bcd60e51b815260040161093b90613a73565b6001600160a01b03811660009081526016602052604090205460ff16156114325760405162461bcd60e51b815260206004820152602160248201527f5452554d503a204163636f756e7420697320616c726561647920626c6f636b656044820152601960fa1b606482015260840161093b565b6203f480601554426114449190613b25565b106114a35760405162461bcd60e51b815260206004820152602960248201527f5452554d503a2054696d6520746f20626c6f636b206163636f756e74732068616044820152681cc8195e1c1a5c995960ba1b606482015260840161093b565b6001600160a01b038116600081815260166020526040808220805460ff1916600190811790915590519092917f2f092974a5a89dc001cc04aa60bc3afe575e0b7444ef2197f7bb5714b51528ba91a350565b6000546001600160a01b0316331461151f5760405162461bcd60e51b815260040161093b90613a73565b600d546001600160a01b03858116911614611600576001600160a01b0384166115995760405162461bcd60e51b815260206004820152602660248201527f5452554d503a20546865206c697175696469747957616c6c65742063616e6e6f60448201526507420626520360d41b606482015260840161093b565b600d546040516e1b1a5c5d5a591a5d1e55d85b1b195d608a1b81526001600160a01b0391821691861690600f0160405190819003812090600080516020613d0a83398151915290600090a4600d80546001600160a01b0319166001600160a01b0386161790555b600e546001600160a01b038481169116146116e1576001600160a01b03831661167a5760405162461bcd60e51b815260206004820152602660248201527f5452554d503a20546865206d61726b6574696e6757616c6c65742063616e6e6f60448201526507420626520360d41b606482015260840161093b565b600e546040516e1b585c9ad95d1a5b99d5d85b1b195d608a1b81526001600160a01b0391821691851690600f0160405190819003812090600080516020613d0a83398151915290600090a4600e80546001600160a01b0319166001600160a01b0385161790555b6010546001600160a01b038381169116146117ad576001600160a01b03821661174c5760405162461bcd60e51b815260206004820181905260248201527f5452554d503a205468652064657657616c6c65742063616e6e6f742062652030604482015260640161093b565b6010546040516819195d95d85b1b195d60ba1b81526001600160a01b039182169184169060090160405190819003812090600080516020613d0a83398151915290600090a4601080546001600160a01b0319166001600160a01b0384161790555b600f546001600160a01b03828116911614611889576001600160a01b0381166118245760405162461bcd60e51b8152602060048201526024808201527f5452554d503a20546865206275794261636b57616c6c65742063616e6e6f74206044820152630626520360e41b606482015260840161093b565b600f546040516c189d5e509858dad5d85b1b195d609a1b81526001600160a01b0391821691831690600d0160405190819003812090600080516020613d0a83398151915290600090a4600f80546001600160a01b0319166001600160a01b0383161790555b50505050565b6000546001600160a01b031633146118b95760405162461bcd60e51b815260040161093b90613a73565b6001600160a01b03821660009081526019602052604090205481151560ff9091161515036118f95760405162461bcd60e51b815260040161093b90613aa8565b6001600160a01b038216600081815260196020908152604091829020805460ff191685151590811790915591519182527f30098fc83ab61b1a98835d32c4e611adedccfc260eeef586bd329d48e8a40a409101610bac565b6000546001600160a01b0316331461197b5760405162461bcd60e51b815260040161093b90613a73565b61198a60118686868686612570565b6040516b62617365466565732d42757960a01b8152600c015b6040805191829003822060ff8881168452878116602085015286811684840152858116606085015284166080840152905190917f9a3619059270a48acdf850268d8f96db29f0cfe103bc17b5b4040a05af4d4f67919081900360a00190a25050505050565b6000610bc53384610d3a85604051806060016040528060258152602001613d72602591393360009081526004602090815260408083206001600160a01b038d16845290915290205491906124b4565b6000610bc5338484611f23565b6000546001600160a01b03163314611a8e5760405162461bcd60e51b815260040161093b90613a73565b600b548103611b055760405162461bcd60e51b815260206004820152603a60248201527f5452554d503a2043616e6e6f7420757064617465206d696e696d756d546f6b6560448201527f6e734265666f72655377617020746f2073616d652076616c7565000000000000606482015260840161093b565b600b5460405182907f5b0491f767c1463bea8972339f785795be1a38784cc6483cf649cdcbb28c46b090600090a3600b55565b6000546001600160a01b03163314611b625760405162461bcd60e51b815260040161093b90613a73565b611b7160118686868686612854565b6040516c18985cd95199595ccb54d95b1b609a1b8152600d016119a3565b6000546001600160a01b03163314611bb95760405162461bcd60e51b815260040161093b90613a73565b6001600160a01b03821660009081526017602052604090205481151560ff909116151503611bf95760405162461bcd60e51b815260040161093b90613aa8565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527fa856ba9fdc54a5434b2359874c95612f520a2d7f858864ae98d15c1b2099ca8b9101610bac565b6000546001600160a01b03163314611c7b5760405162461bcd60e51b815260040161093b90613a73565b6001600160a01b0382166000818152601c6020908152604091829020805460ff191685151590811790915591519182527fcb9f97b7b4b41413e5c8d418a8cf9a88db1cf34dee66b213d070faf881d9d3509101610bac565b6000546001600160a01b03163314611cfd5760405162461bcd60e51b815260040161093b90613a73565b6001600160a01b038116611d625760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161093b565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610e9683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b54565b6001600160a01b038316611e615760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161093b565b6001600160a01b038216611ec25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161093b565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611f875760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161093b565b6001600160a01b038216611fe95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161093b565b6000811161204b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161093b565b61205483611200565b8111156120b45760405162461bcd60e51b815260206004820152602860248201527f5452554d503a2043616e6e6f74207472616e73666572206d6f7265207468616e6044820152672062616c616e636560c01b606482015260840161093b565b6001600160a01b038084166000818152601a6020908152604080832054948716835280832054938352601c90915290205460ff92831692918216911615801561211657506001600160a01b0384166000908152601c602052604090205460ff16155b156123a15760075460ff1661217b5760405162461bcd60e51b815260206004820152602560248201527f5452554d503a2054726164696e672069732063757272656e746c792064697361604482015264313632b21760d91b606482015260840161093b565b6001600160a01b03841660009081526016602052604090205460ff16156121e05760405162461bcd60e51b815260206004820152601960248201527815149553540e881058d8dbdd5b9d081a5cc8189b1bd8dad959603a1b604482015260640161093b565b6001600160a01b03851660009081526016602052604090205460ff16156122455760405162461bcd60e51b815260206004820152601960248201527815149553540e881058d8dbdd5b9d081a5cc8189b1bd8dad959603a1b604482015260640161093b565b6001600160a01b03841660009081526019602052604090205460ff1615801561228757506001600160a01b03851660009081526019602052604090205460ff16155b156122f6576009548311156122f65760405162461bcd60e51b815260206004820152602f60248201527f5452554d503a205472616e7366657220616d6f756e742065786365656473207460448201526e34329036b0bc2a3c20b6b7bab73a1760891b606482015260840161093b565b6001600160a01b03841660009081526018602052604090205460ff166123a1576008548361232386611200565b61232d9190613bb4565b11156123a15760405162461bcd60e51b815260206004820152603a60248201527f5452554d503a2045787065637465642077616c6c657420616d6f756e7420657860448201527f636565647320746865206d617857616c6c6574416d6f756e742e000000000000606482015260840161093b565b6123ab8282612b82565b6000600b546123b930611200565b600754911115915060ff1680156123cd5750805b80156123dc5750600a5460ff16155b80156123f35750601e54600160281b900460ff1615155b801561241757506001600160a01b0385166000908152601a602052604090205460ff165b1561243c57600a805460ff19166001179055612431612dcb565b600a805460ff191690555b600a5460009060ff16158015612454575060075460ff165b6001600160a01b03881660009081526017602052604090205490915060ff168061249657506001600160a01b03861660009081526017602052604090205460ff165b1561249f575060005b6124ab878787846130bd565b50505050505050565b600081848411156124d85760405162461bcd60e51b815260040161093b919061384d565b5060006124e58486613b25565b95945050505050565b60008060006124fb61328e565b909250905061250a8282611dbd565b9250505090565b60008061251e8385613bb4565b905083811015610e965760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161093b565b600286015460ff8681169116146125f157604051706c69717569646974794665654f6e42757960781b815260110160405190819003812060028801548854919260ff9182169291891691600080516020613d52833981519152916125d79160481b90613bcc565b60405180910390a460028601805460ff191660ff87161790555b600286015460ff85811662010000909204161461268557604051706d61726b6574696e674665654f6e42757960781b815260110160405190819003812060028801548854919260ff6201000090920482169291881691600080516020613d52833981519152916126649160481b90613bcc565b60405180910390a460028601805462ff000019166201000060ff8716021790555b600286015460ff848116600160201b9092041614612718576040516a6465764665654f6e42757960a81b8152600b0160405190819003812060028801548854919260ff600160201b90920482169291871691600080516020613d52833981519152916126f49160481b90613bcc565b60405180910390a460028601805464ff000000001916600160201b60ff8616021790555b600286015460ff838116600160301b90920416146127b1576040516e6275794261636b4665654f6e42757960881b8152600f0160405190819003812060028801548854919260ff600160301b90920482169291861691600080516020613d528339815191529161278b9160481b90613bcc565b60405180910390a460028601805466ff0000000000001916600160301b60ff8516021790555b600286015460ff828116600160401b909204161461284c576040516e686f6c646572734665654f6e42757960881b8152600f0160405190819003812060028801548854919260ff600160401b90920482169291851691600080516020613d52833981519152916128249160481b90613bcc565b60405180910390a460028601805468ff00000000000000001916600160401b60ff8416021790555b505050505050565b600286015460ff86811661010090920416146128e557604051711b1a5c5d5a591a5d1e51995953db94d95b1b60721b815260120160405190819003812060028801548854919260ff61010090920482169291891691600080516020613d52833981519152916128c69160481b90613bcc565b60405180910390a460028601805461ff00191661010060ff8816021790555b600286015460ff8581166301000000909204161461297e57604051711b585c9ad95d1a5b99d1995953db94d95b1b60721b815260120160405190819003812060028801548854919260ff630100000090920482169291881691600080516020613d528339815191529161295b9160481b90613bcc565b60405180910390a460028601805463ff0000001916630100000060ff8716021790555b600286015460ff848116600160281b9092041614612a13576040516b19195d91995953db94d95b1b60a21b8152600c0160405190819003812060028801548854919260ff600160281b90920482169291871691600080516020613d52833981519152916129ee9160481b90613bcc565b60405180910390a460028601805465ff00000000001916600160281b60ff8616021790555b600286015460ff838116600160381b9092041614612aae576040516f189d5e509858dad1995953db94d95b1b60821b815260100160405190819003812060028801548854919260ff600160381b90920482169291861691600080516020613d5283398151915291612a879160481b90613bcc565b60405180910390a460028601805467ff000000000000001916600160381b60ff8516021790555b600286015460ff828116600160481b909204161461284c576040516f1a1bdb19195c9cd1995953db94d95b1b60821b815260100160405190819003812060028801548854919260ff600160481b90920482169291851691600080516020613d5283398151915291612b229160481b90613bcc565b60405180910390a460028601805460ff8316600160481b0269ff00000000000000000019909116179055505050505050565b60008183612b755760405162461bcd60e51b815260040161093b919061384d565b5060006124e58486613b81565b601e805464ffffffffff191690558115612c3457600560145443612ba69190613b25565b11612bbd57601e805460ff19166064179055612c34565b601354601e805460ff80841662ff00ff1990921691909117600160201b8085048316620100009081029290921763ff00ff00191661010092860484169290920263ff000000191691909117600160301b850483166301000000021764ff000000001916600160401b90940491909116029190911790555b8015612cdc57601354601e805461010080840460ff90811662ff00ff1990931692909217600160281b8504831662010000021763ff00ff001916630100000080860484169290920263ff000000191617600160381b85048316919091021764ff000000001916600160481b90930416600160201b029190911790556015546203f48090612cc19042613b25565b11612cdc57601e805464ffffffffff1916640208030a021790555b601e5460ff600160201b820481169163010000008104821691620100008204811691612d1091610100820481169116613be3565b612d1a9190613be3565b612d249190613be3565b612d2e9190613be3565b601e805465ff0000000000198116600160281b60ff948516810291821793849055604080519386169286169290921783526101008404851660208401526201000084048516918301919091526301000000830484166060830152600160201b83048416608083015290910490911660a08201527f6c6977cb51242ec6e05aba0e2a29a5292ed1a8a5cffa3b87ff66395b7997d6d29060c0016111f3565b6000612dd630611200565b601e54909150479060ff600160281b820481169181811691610100820481169162010000810482169163010000008204811691600160201b9004166000600287612e20888c613b95565b612e2a9190613b81565b612e349190613b81565b90506000612e42828b613b25565b9050612e4d81613433565b6000612e598a47613b25565b9050600084612e6960028b613c08565b612e73908c613c2a565b612e7d9190613c2a565b60ff16905060006002828b60ff1685612e969190613b95565b612ea09190613b81565b612eaa9190613b81565b9050600082612ebc60ff8b1686613b95565b612ec69190613b81565b9050600083612ed860ff8b1687613b95565b612ee29190613b81565b9050600081612ef18486613bb4565b612efb9190613bb4565b612f059087613b25565b600e546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612f40573d6000803e3d6000fd5b506010546040516001600160a01b039091169084156108fc029085906000818181858888f19350505050158015612f7b573d6000803e3d6000fd5b50600f546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612fb6573d6000803e3d6000fd5b50871561300957612fc78885613585565b60408051888152602081018690529081018990527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a15b8d601e60056101000a81548160ff021916908360ff1602179055508c601e60006101000a81548160ff021916908360ff1602179055508b601e60016101000a81548160ff021916908360ff1602179055508a601e60026101000a81548160ff021916908360ff16021790555089601e60036101000a81548160ff021916908360ff16021790555088601e60046101000a81548160ff021916908360ff16021790555050505050505050505050505050505050565b60008060006130cc8585613639565b9250925092506000806000806130eb8987876130e66124ee565b613703565b6001600160a01b038f166000908152601b60205260409020549397509195509350915060ff1615613154576001600160a01b038b1660009081526003602052604090205461313a908a90613b25565b6001600160a01b038c166000908152600360205260409020555b6001600160a01b038a166000908152601b602052604090205460ff16156131b3576001600160a01b038a16600090815260036020526040902054613199908890613bb4565b6001600160a01b038b166000908152600360205260409020555b6001600160a01b038b166000908152600260205260409020546131d7908590613b25565b6001600160a01b03808d1660009081526002602052604080822093909355908c1681522054613207908490613bb4565b6001600160a01b038b1660009081526002602052604090205561322a818661375b565b61323482876137c0565b896001600160a01b03168b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8960405161327991815260200190565b60405180910390a35050505050505050505050565b60055460009081906a52b7d2dcc80cd2e4000000825b601d548110156133f1578260026000601d84815481106132c6576132c6613af9565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061333157508160036000601d848154811061330a5761330a613af9565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561334f575050600554936a52b7d2dcc80cd2e40000009350915050565b60026000601d838154811061336657613366613af9565b60009182526020808320909101546001600160a01b031683528201929092526040019020546133959084613b25565b925060036000601d83815481106133ae576133ae613af9565b60009182526020808320909101546001600160a01b031683528201929092526040019020546133dd9083613b25565b9150806133e981613b52565b9150506132a4565b506a52b7d2dcc80cd2e400000060055461340b9190613b81565b82101561342a575050600554926a52b7d2dcc80cd2e400000092509050565b90939092509050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061346857613468613af9565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156134c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134e59190613c4d565b816001815181106134f8576134f8613af9565b6001600160a01b03928316602091820292909201015260015461351e9130911684611dff565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac94790613557908590600090869030904290600401613c6a565b600060405180830381600087803b15801561357157600080fd5b505af115801561284c573d6000803e3d6000fd5b60015461359d9030906001600160a01b031684611dff565b600154600d5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af115801561360d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906136329190613cdb565b5050505050565b600080600083613651575083915060009050806136fc565b601e5460009060649061366e90600160201b900460ff1688613b95565b6136789190613b81565b601e5490915060009060649060ff6301000000820481169161010081048216916136ab9162010000810482169116613be3565b6136b59190613be3565b6136bf9190613be3565b6136cc9060ff1689613b95565b6136d69190613b81565b905060006136e48284613bb4565b6136ee9089613b25565b955091935091506136fc9050565b9250925092565b600080808080613713868a613b95565b90506000613721878a613b95565b9050600061372f888a613b95565b9050600061373d8284613bb4565b6137479085613b25565b939c939b5091995097509095505050505050565b306000908152601b602052604090205460ff1615613798573060009081526003602052604081208054839290613792908490613bb4565b90915550505b30600090815260026020526040812080548492906137b7908490613bb4565b90915550505050565b81600560008282546137d29190613b25565b9250508190555080600660008282546137b79190613bb4565b6001600160a01b038116811461380057600080fd5b50565b8035801515811461381357600080fd5b919050565b6000806040838503121561382b57600080fd5b8235613836816137eb565b915061384460208401613803565b90509250929050565b600060208083528351808285015260005b8181101561387a5785810183015185820160400152820161385e565b8181111561388c576000604083870101525b50601f01601f1916929092016040019392505050565b600080604083850312156138b557600080fd5b82356138c0816137eb565b946020939093013593505050565b6000602082840312156138e057600080fd5b5035919050565b6000806000606084860312156138fc57600080fd5b8335613907816137eb565b92506020840135613917816137eb565b929592945050506040919091013590565b6000806040838503121561393b57600080fd5b8235915061384460208401613803565b60006020828403121561395d57600080fd5b8135610e96816137eb565b6000806000806080858703121561397e57600080fd5b8435613989816137eb565b93506020850135613999816137eb565b925060408501356139a9816137eb565b915060608501356139b9816137eb565b939692955090935050565b803560ff8116811461381357600080fd5b600080600080600060a086880312156139ed57600080fd5b6139f6866139c4565b9450613a04602087016139c4565b9350613a12604087016139c4565b9250613a20606087016139c4565b9150613a2e608087016139c4565b90509295509295909350565b60008060408385031215613a4d57600080fd5b8235613a58816137eb565b91506020830135613a68816137eb565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f5452554d503a204163636f756e7420697320616c7265616479207468652076616040820152706c7565206f6620276578636c756465642760781b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082821015613b3757613b37613b0f565b500390565b634e487b7160e01b600052603160045260246000fd5b600060018201613b6457613b64613b0f565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082613b9057613b90613b6b565b500490565b6000816000190483118215151615613baf57613baf613b0f565b500290565b60008219821115613bc757613bc7613b0f565b500190565b68ffffffffffffffffff1991909116815260200190565b600060ff821660ff84168060ff03821115613c0057613c00613b0f565b019392505050565b600060ff831680613c1b57613c1b613b6b565b8060ff84160491505092915050565b600060ff821660ff841680821015613c4457613c44613b0f565b90039392505050565b600060208284031215613c5f57600080fd5b8151610e96816137eb565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613cba5784516001600160a01b031683529383019391830191600101613c95565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613cf057600080fd5b835192506020840151915060408401519050925092509256fe4af24be54adc5e716fbcaa3fca0ad593e28dff90dffd49487c0a33b1547c6b5245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636500edc71549f0cbe47086c2237ce0cf874d6897fd1d7ce43ee6b65c0230d7606e45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ed8f82aee309a599feb023faaf65fe7ca03980eb6509b66660ff650274feb66664736f6c634300080d0033
Deployed Bytecode Sourcemap
7734:25623:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19403:825;;;;;;;;;;-1:-1:-1;19403:825:0;;;;;:::i;:::-;;:::i;:::-;;8413:28;;;;;;;;;;-1:-1:-1;8413:28:0;;;;;;;;;;;800:14:1;;793:22;775:41;;763:2;748:18;8413:28:0;;;;;;;;20865:76;;;;;;;;;;-1:-1:-1;20931:5:0;;;;;;;;;;;;-1:-1:-1;;;20931:5:0;;;;20865:76;;;;;;;:::i;13337:146::-;;;;;;;;;;-1:-1:-1;13337:146:0;;;;;:::i;:::-;;:::i;14551:201::-;;;;;;;;;;;;;:::i;21404:80::-;;;;;;;;;;-1:-1:-1;21469:10:0;;21404:80;;;1895:25:1;;;1883:2;1868:18;21404:80:0;1749:177:1;7836:30:0;;;;;;;;;;-1:-1:-1;7836:30:0;;;;-1:-1:-1;;;;;7836:30:0;;;;;;-1:-1:-1;;;;;2110:32:1;;;2092:51;;2080:2;2065:18;7836:30:0;1931:218:1;21114:88:0;;;;;;;;;;-1:-1:-1;8306:18:0;21114:88;;8906:28;;;;;;;;;;-1:-1:-1;8906:28:0;;;;-1:-1:-1;;;;;8906:28:0;;;19140:260;;;;;;;;;;-1:-1:-1;19140:260:0;;;;;:::i;:::-;;:::i;13486:292::-;;;;;;;;;;-1:-1:-1;13486:292:0;;;;;:::i;:::-;;:::i;18883:254::-;;;;;;;;;;-1:-1:-1;18883:254:0;;;;;:::i;:::-;;:::i;22071:236::-;;;;;;;;;;-1:-1:-1;22071:236:0;;;;;:::i;:::-;;:::i;21027:84::-;;;;;;;;;;-1:-1:-1;21027:84:0;;8046:2;3150:36:1;;3138:2;3123:18;21027:84:0;3008:184:1;14755:82:0;;;;;;;;;;;;;:::i;13781:202::-;;;;;;;;;;-1:-1:-1;13781:202:0;;;;;:::i;:::-;;:::i;22310:477::-;;;;;;;;;;-1:-1:-1;22310:477:0;;;;;:::i;:::-;;:::i;7870:38::-;;;;;;;;;;;;;;;15472:209;;;;;;;;;;-1:-1:-1;15472:209:0;;;;;:::i;:::-;;:::i;20537:310::-;;;;;;;;;;;;;:::i;21205:196::-;;;;;;;;;;-1:-1:-1;21205:196:0;;;;;:::i;:::-;;:::i;7366:133::-;;;;;;;;;;;;;:::i;8872:30::-;;;;;;;;;;-1:-1:-1;8872:30:0;;;;-1:-1:-1;;;;;8872:30:0;;;16175:317;;;;;;;;;;-1:-1:-1;16175:317:0;;;;;:::i;:::-;;:::i;15144:325::-;;;;;;;;;;-1:-1:-1;15144:325:0;;;;;:::i;:::-;;:::i;16832:1166::-;;;;;;;;;;-1:-1:-1;16832:1166:0;;;;;:::i;:::-;;:::i;16495:334::-;;;;;;;;;;-1:-1:-1;16495:334:0;;;;;:::i;:::-;;:::i;8575:36::-;;;;;;;;;;;;;;;;7182:70;;;;;;;;;;-1:-1:-1;7220:7:0;7241:6;-1:-1:-1;;;;;7241:6:0;7182:70;;8938:24;;;;;;;;;;-1:-1:-1;8938:24:0;;;;-1:-1:-1;;;;;8938:24:0;;;20944:80;;;;;;;;;;-1:-1:-1;21012:7:0;;;;;;;;;;;;-1:-1:-1;;;21012:7:0;;;;20944:80;;18019:421;;;;;;;;;;-1:-1:-1;18019:421:0;;;;;:::i;:::-;;:::i;13986:253::-;;;;;;;;;;-1:-1:-1;13986:253:0;;;;;:::i;:::-;;:::i;13180:154::-;;;;;;;;;;-1:-1:-1;13180:154:0;;;;;:::i;:::-;;:::i;8488:40::-;;;;;;;;;;;;;;;;20231:303;;;;;;;;;;-1:-1:-1;20231:303:0;;;;;:::i;:::-;;:::i;18443:437::-;;;;;;;;;;-1:-1:-1;18443:437:0;;;;;:::i;:::-;;:::i;9830:58::-;;;;;;;;;;-1:-1:-1;9830:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15889:280;;;;;;;;;;-1:-1:-1;15889:280:0;;;;;:::i;:::-;;:::i;21629:215::-;;;;;;;;;;-1:-1:-1;21725:23:0;;;;;;;21750;;;;;;-1:-1:-1;;;21775:17:0;;;;;-1:-1:-1;;;21794:21:0;;;;;-1:-1:-1;;;21817:21:0;;;;21629:215;;;;5277:4:1;5265:17;;;5247:36;;5319:17;;;5314:2;5299:18;;5292:45;5373:17;;;5353:18;;;5346:45;;;;5427:17;;5422:2;5407:18;;5400:45;5482:17;;;5476:3;5461:19;;5454:46;5234:3;5219:19;21629:215:0;5008:498:1;8691:64:0;;;;;;;;;;;;;;;;15684:202;;;;;;;;;;-1:-1:-1;15684:202:0;;;;;:::i;:::-;;:::i;8835:30::-;;;;;;;;;;-1:-1:-1;8835:30:0;;;;-1:-1:-1;;;;;8835:30:0;;;21487:136;;;;;;;;;;-1:-1:-1;21487:136:0;;;;;:::i;:::-;-1:-1:-1;;;;;21591:18:0;;;21570:7;21591:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;21487:136;7504:223;;;;;;;;;;-1:-1:-1;7504:223:0;;;;;:::i;:::-;;:::i;21847:221::-;;;;;;;;;;-1:-1:-1;21944:24:0;;;;;;;;;21970;;;;;;-1:-1:-1;;;21996:18:0;;;;;-1:-1:-1;;;22016:22:0;;;;;-1:-1:-1;;;22040:22:0;;;;21847:221;;19403:825;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;19495:33:0;::::1;;::::0;;;:24:::1;:33;::::0;;;;;:45;::::1;;:33;::::0;;::::1;:45;;::::0;19487:107:::1;;;;-1:-1:-1::0;;;19487:107:0::1;;;;;;;:::i;:::-;19602:8;19599:570;;;-1:-1:-1::0;;;;;19621:16:0;::::1;19640:1;19621:16:::0;;;:7:::1;:16;::::0;;;;;:20;19618:95:::1;;-1:-1:-1::0;;;;;19689:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;19669:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;19650:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;19618:95:::1;-1:-1:-1::0;;;;;19718:33:0;::::1;;::::0;;;:24:::1;:33;::::0;;;;:44;;-1:-1:-1;;19718:44:0::1;::::0;::::1;;;::::0;;19768:22:::1;:36:::0;;-1:-1:-1;19768:36:0;::::1;::::0;;;;;::::1;::::0;;-1:-1:-1;;;;;;19768:36:0::1;::::0;;::::1;::::0;;19599:570:::1;;;19827:9;19822:342;19846:22;:29:::0;19842:33;::::1;19822:342;;;19922:7;-1:-1:-1::0;;;;;19893:36:0::1;:22;19916:1;19893:25;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;19893:25:0::1;:36:::0;19889:269:::1;;19967:22;19990:29:::0;;:33:::1;::::0;20022:1:::1;::::0;19990:33:::1;:::i;:::-;19967:57;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;19939:22:::1;:25:::0;;-1:-1:-1;;;;;19967:57:0;;::::1;::::0;19962:1;;19939:25;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:85:::0;;-1:-1:-1;;;;;;19939:85:0::1;-1:-1:-1::0;;;;;19939:85:0;;::::1;;::::0;;20032:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;20060:24:::1;:33:::0;;;;:41;;-1:-1:-1;;20060:41:0::1;::::0;;20109:22:::1;:28:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;20109:28:0;;;;;-1:-1:-1;;;;;;20109:28:0::1;::::0;;;;;20145:5:::1;;19889:269;19877:3:::0;::::1;::::0;::::1;:::i;:::-;;;;19822:342;;;;19599:570;20205:7;-1:-1:-1::0;;;;;20178:45:0::1;;20214:8;20178:45;;;;800:14:1::0;793:22;775:41;;763:2;748:18;;635:187;20178:45:0::1;;;;;;;;19403:825:::0;;:::o;13337:146::-;13412:4;13423:39;6648:10;13446:7;13455:6;13423:8;:39::i;:::-;-1:-1:-1;13474:4:0;13337:146;;;;;:::o;14551:201::-;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;14602:16:::1;:23:::0;;-1:-1:-1;;14602:23:0::1;14621:4;14602:23;::::0;;14640:16:::1;::::0;14602::::1;14640:21:::0;14636:112:::1;;14688:15;14669:16;:34:::0;14730:12:::1;14709:18;:33:::0;14636:112:::1;14551:201::o:0;19140:260::-;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;19235:11:::1;;19223:8;:23:::0;19215:82:::1;;;::::0;-1:-1:-1;;;19215:82:0;;7551:2:1;19215:82:0::1;::::0;::::1;7533:21:1::0;7590:2;7570:18;;;7563:30;7629:34;7609:18;;;7602:62;-1:-1:-1;;;7680:18:1;;;7673:44;7734:19;;19215:82:0::1;7349:410:1::0;19215:82:0::1;19350:11;::::0;19313:49:::1;::::0;19340:8;;19313:49:::1;::::0;;;::::1;19373:11;:22:::0;19140:260::o;13486:292::-;13585:4;13596:36;13606:6;13614:9;13625:6;13596:9;:36::i;:::-;13637:120;13646:6;6648:10;13668:88;13706:6;13668:88;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13668:19:0;;;;;;:11;:19;;;;;;;;6648:10;13668:33;;;;;;;;;;:37;:88::i;:::-;13637:8;:120::i;:::-;-1:-1:-1;13769:4:0;13486:292;;;;;:::o;18883:254::-;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;18973:15:::1;;18961:8;:27:::0;18953:90:::1;;;::::0;-1:-1:-1;;;18953:90:0;;7966:2:1;18953:90:0::1;::::0;::::1;7948:21:1::0;8005:2;7985:18;;;7978:30;8044:34;8024:18;;;8017:62;-1:-1:-1;;;8095:18:1;;;8088:48;8153:19;;18953:90:0::1;7764:414:1::0;18953:90:0::1;19085:15;::::0;19053:48:::1;::::0;19075:8;;19053:48:::1;::::0;;;::::1;19106:15;:26:::0;18883:254::o;22071:236::-;22137:7;22170;;22159;:18;;22151:80;;;;-1:-1:-1;;;22151:80:0;;8385:2:1;22151:80:0;;;8367:21:1;8424:2;8404:18;;;8397:30;8463:34;8443:18;;;8436:62;-1:-1:-1;;;8514:18:1;;;8507:47;8571:19;;22151:80:0;8183:413:1;22151:80:0;22236:19;22259:10;:8;:10::i;:::-;22236:33;-1:-1:-1;22281:21:0;22236:33;22281:7;:21;:::i;:::-;22274:28;22071:236;-1:-1:-1;;;22071:236:0:o;14755:82::-;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;14808:16:::1;:24:::0;;-1:-1:-1;;14808:24:0::1;::::0;;14755:82::o;13781:202::-;6648:10;13871:4;13911:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13911:34:0;;;;;;;;;;13871:4;;13881:81;;13903:7;;13911:50;;13950:10;13911:38;:50::i;22310:477::-;22403:7;8306:18;22425:7;:18;;22417:69;;;;-1:-1:-1;;;22417:69:0;;9060:2:1;22417:69:0;;;9042:21:1;9099:2;9079:18;;;9072:30;9138:34;9118:18;;;9111:62;-1:-1:-1;;;9189:18:1;;;9182:36;9235:19;;22417:69:0;8858:402:1;22417:69:0;22491:19;22513:10;:8;:10::i;:::-;22491:32;-1:-1:-1;22528:15:0;22547:21;22491:32;22547:7;:21;:::i;:::-;22528:40;;22578:17;22573:210;;22610:7;-1:-1:-1;22603:14:0;;-1:-1:-1;22603:14:0;22573:210;22669:9;;22638:17;;22687:11;;22681:3;;22659:19;;-1:-1:-1;;;22669:9:0;;;;22659:7;:19;:::i;:::-;:25;;;;:::i;:::-;:39;;;;:::i;:::-;22638:60;-1:-1:-1;22704:23:0;22730:19;22638:60;22730:7;:19;:::i;:::-;22704:45;-1:-1:-1;22755:22:0;;-1:-1:-1;;;;22755:22:0;15472:209;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15545:19:0;::::1;;::::0;;;:10:::1;:19;::::0;;;;;::::1;;15537:61;;;::::0;-1:-1:-1;;;15537:61:0;;9640:2:1;15537:61:0::1;::::0;::::1;9622:21:1::0;9679:2;9659:18;;;9652:30;9718:31;9698:18;;;9691:59;9767:18;;15537:61:0::1;9438:353:1::0;15537:61:0::1;-1:-1:-1::0;;;;;15603:19:0;::::1;15625:5;15603:19:::0;;;:10:::1;:19;::::0;;;;;:27;;-1:-1:-1;;15603:27:0::1;::::0;;15640:36;15625:5;;15603:19;15640:36:::1;::::0;15625:5;;15640:36:::1;15472:209:::0;:::o;20537:310::-;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;20621:1:::1;20597:21;:25;20589:83;;;::::0;-1:-1:-1;;;20589:83:0;;9998:2:1;20589:83:0::1;::::0;::::1;9980:21:1::0;10037:2;10017:18;;;10010:30;10076:34;10056:18;;;10049:62;-1:-1:-1;;;10127:18:1;;;10120:43;10180:19;;20589:83:0::1;9796:409:1::0;20589:83:0::1;20700:21;20683:14;20752:7;7220::::0;7241:6;-1:-1:-1;;;;;7241:6:0;;7182:70;20752:7:::1;-1:-1:-1::0;;;;;20744:21:0::1;20774:6;20744:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20726:59;;;20794:7;20790:53;;;20813:24;::::0;1895:25:1;;;20813:24:0::1;::::0;1883:2:1;1868:18;20813:24:0::1;;;;;;;;20790:53;20584:263;;20537:310::o:0;21205:196::-;-1:-1:-1;;;;;21289:33:0;;21271:7;21289:33;;;:24;:33;;;;;;;;21285:62;;;-1:-1:-1;;;;;;21331:16:0;;;;;:7;:16;;;;;;;21205:196::o;21285:62::-;-1:-1:-1;;;;;21379:16:0;;;;;;:7;:16;;;;;;21359:37;;:19;:37::i;7366:133::-;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;7467:1:::1;7451:6:::0;;7430:40:::1;::::0;-1:-1:-1;;;;;7451:6:0;;::::1;::::0;7430:40:::1;::::0;7467:1;;7430:40:::1;7492:1;7475:19:::0;;-1:-1:-1;;;;;;7475:19:0::1;::::0;;7366:133::o;16175:317::-;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16274:38:0;::::1;;::::0;;;:29:::1;:38;::::0;;;;;:50;::::1;;:38;::::0;;::::1;:50;;::::0;16266:112:::1;;;;-1:-1:-1::0;;;16266:112:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16383:38:0;::::1;;::::0;;;:29:::1;:38;::::0;;;;;;;;:49;;-1:-1:-1;;16383:49:0::1;::::0;::::1;;::::0;;::::1;::::0;;;16442:45;;775:41:1;;;16442:45:0::1;::::0;748:18:1;16442:45:0::1;635:187:1::0;15144:325:0;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15216:19:0;::::1;;::::0;;;:10:::1;:19;::::0;;;;;::::1;;15215:20;15207:66;;;::::0;-1:-1:-1;;;15207:66:0;;10622:2:1;15207:66:0::1;::::0;::::1;10604:21:1::0;10661:2;10641:18;;;10634:30;10700:34;10680:18;;;10673:62;-1:-1:-1;;;10751:18:1;;;10744:31;10792:19;;15207:66:0::1;10420:397:1::0;15207:66:0::1;9494:6;15305:16;;15287:15;:34;;;;:::i;:::-;15286:56;15278:110;;;::::0;-1:-1:-1;;;15278:110:0;;11024:2:1;15278:110:0::1;::::0;::::1;11006:21:1::0;11063:2;11043:18;;;11036:30;11102:34;11082:18;;;11075:62;-1:-1:-1;;;11153:18:1;;;11146:39;11202:19;;15278:110:0::1;10822:405:1::0;15278:110:0::1;-1:-1:-1::0;;;;;15393:19:0;::::1;;::::0;;;:10:::1;:19;::::0;;;;;:26;;-1:-1:-1;;15393:26:0::1;15415:4;15393:26:::0;;::::1;::::0;;;15429:35;;15415:4;;15393:19;15429:35:::1;::::0;::::1;15144:325:::0;:::o;16832:1166::-;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;16983:15:::1;::::0;-1:-1:-1;;;;;16983:37:0;;::::1;:15:::0;::::1;:37;16980:267;;-1:-1:-1::0;;;;;17045:32:0;::::1;17037:83;;;::::0;-1:-1:-1;;;17037:83:0;;11434:2:1;17037:83:0::1;::::0;::::1;11416:21:1::0;11473:2;11453:18;;;11446:30;11512:34;11492:18;;;11485:62;-1:-1:-1;;;11563:18:1;;;11556:36;11609:19;;17037:83:0::1;11232:402:1::0;17037:83:0::1;17183:15;::::0;17131:68:::1;::::0;-1:-1:-1;;;11841:30:1;;-1:-1:-1;;;;;17183:15:0;;::::1;::::0;17131:68;::::1;::::0;11896:2:1;11887:12;17131:68:0::1;::::0;;;;::::1;::::0;;;-1:-1:-1;;;;;;;;;;;17131:68:0;;;::::1;17205:15;:36:::0;;-1:-1:-1;;;;;;17205:36:0::1;-1:-1:-1::0;;;;;17205:36:0;::::1;;::::0;;16980:267:::1;17260:15;::::0;-1:-1:-1;;;;;17260:37:0;;::::1;:15:::0;::::1;:37;17257:267;;-1:-1:-1::0;;;;;17322:32:0;::::1;17314:83;;;::::0;-1:-1:-1;;;17314:83:0;;12112:2:1;17314:83:0::1;::::0;::::1;12094:21:1::0;12151:2;12131:18;;;12124:30;12190:34;12170:18;;;12163:62;-1:-1:-1;;;12241:18:1;;;12234:36;12287:19;;17314:83:0::1;11910:402:1::0;17314:83:0::1;17460:15;::::0;17408:68:::1;::::0;-1:-1:-1;;;12519:30:1;;-1:-1:-1;;;;;17460:15:0;;::::1;::::0;17408:68;::::1;::::0;12574:2:1;12565:12;17408:68:0::1;::::0;;;;::::1;::::0;;;-1:-1:-1;;;;;;;;;;;17408:68:0;;;::::1;17482:15;:36:::0;;-1:-1:-1;;;;;;17482:36:0::1;-1:-1:-1::0;;;;;17482:36:0;::::1;;::::0;;17257:267:::1;17531:9;::::0;-1:-1:-1;;;;;17531:25:0;;::::1;:9:::0;::::1;:25;17528:213;;-1:-1:-1::0;;;;;17581:26:0;::::1;17573:71;;;::::0;-1:-1:-1;;;17573:71:0;;12790:2:1;17573:71:0::1;::::0;::::1;12772:21:1::0;;;12809:18;;;12802:30;12868:34;12848:18;;;12841:62;12920:18;;17573:71:0::1;12588:356:1::0;17573:71:0::1;17695:9;::::0;17655:50:::1;::::0;-1:-1:-1;;;13151:24:1;;-1:-1:-1;;;;;17695:9:0;;::::1;::::0;17655:50;::::1;::::0;13200:1:1;13191:11;17655:50:0::1;::::0;;;;::::1;::::0;;;-1:-1:-1;;;;;;;;;;;17655:50:0;;;::::1;17711:9;:24:::0;;-1:-1:-1;;;;;;17711:24:0::1;-1:-1:-1::0;;;;;17711:24:0;::::1;;::::0;;17528:213:::1;17748:13;::::0;-1:-1:-1;;;;;17748:33:0;;::::1;:13:::0;::::1;:33;17745:249;;-1:-1:-1::0;;;;;17806:30:0;::::1;17798:79;;;::::0;-1:-1:-1;;;17798:79:0;;13415:2:1;17798:79:0::1;::::0;::::1;13397:21:1::0;13454:2;13434:18;;;13427:30;13493:34;13473:18;;;13466:62;-1:-1:-1;;;13544:18:1;;;13537:34;13588:19;;17798:79:0::1;13213:400:1::0;17798:79:0::1;17936:13;::::0;17888:62:::1;::::0;-1:-1:-1;;;13820:28:1;;-1:-1:-1;;;;;17936:13:0;;::::1;::::0;17888:62;::::1;::::0;13873:2:1;13864:12;17888:62:0::1;::::0;;;;::::1;::::0;;;-1:-1:-1;;;;;;;;;;;17888:62:0;;;::::1;17956:13;:32:::0;;-1:-1:-1;;;;;;17956:32:0::1;-1:-1:-1::0;;;;;17956:32:0;::::1;;::::0;;17745:249:::1;16832:1166:::0;;;;:::o;16495:334::-;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16599:43:0;::::1;;::::0;;;:34:::1;:43;::::0;;;;;:55;::::1;;:43;::::0;;::::1;:55;;::::0;16591:117:::1;;;;-1:-1:-1::0;;;16591:117:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16713:43:0;::::1;;::::0;;;:34:::1;:43;::::0;;;;;;;;:54;;-1:-1:-1;;16713:54:0::1;::::0;::::1;;::::0;;::::1;::::0;;;16777:47;;775:41:1;;;16777:47:0::1;::::0;748:18:1;16777:47:0::1;635:187:1::0;18019:421:0;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;18191:119:::1;18214:5;18221:18;18241;18261:12;18275:16;18293;18191:22;:119::i;:::-;18320:115;::::0;-1:-1:-1;;;14089:27:1;;14141:2;14132:12;18320:115:0::1;;::::0;;;;;::::1;::::0;;5277:4:1;5265:17;;;5247:36;;5319:17;;;5314:2;5299:18;;5292:45;5373:17;;;5353:18;;;5346:45;5427:17;;;5422:2;5407:18;;5400:45;5482:17;;5476:3;5461:19;;5454:46;18320:115:0;;;;::::1;::::0;;;;;5234:3:1;18320:115:0;;::::1;18019:421:::0;;;;;:::o;13986:253::-;14081:4;14092:126;6648:10;14114:7;14122:95;14161:15;14122:95;;;;;;;;;;;;;;;;;6648:10;14122:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14122:34:0;;;;;;;;;;;;:38;:95::i;13180:154::-;13260:4;13271:42;6648:10;13295:9;13306:6;13271:9;:42::i;20231:303::-;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;20329:23:::1;;20317:8;:35:::0;20309:106:::1;;;::::0;-1:-1:-1;;;20309:106:0;;14357:2:1;20309:106:0::1;::::0;::::1;14339:21:1::0;14396:2;14376:18;;;14369:30;14435:34;14415:18;;;14408:62;14506:28;14486:18;;;14479:56;14552:19;;20309:106:0::1;14155:422:1::0;20309:106:0::1;20466:23;::::0;20425:65:::1;::::0;20456:8;;20425:65:::1;::::0;;;::::1;20495:23;:34:::0;20231:303::o;18443:437::-;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;18619:125:::1;18643:5;18650:19;18671;18692:13;18707:17;18726;18619:23;:125::i;:::-;18754:121;::::0;-1:-1:-1;;;14784:28:1;;14837:2;14828:12;18754:121:0::1;14582:264:1::0;15889:280:0;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15978:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;:39;::::1;;:27;::::0;;::::1;:39;;::::0;15970:101:::1;;;;-1:-1:-1::0;;;15970:101:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16076:27:0;::::1;;::::0;;;:18:::1;:27;::::0;;;;;;;;:38;;-1:-1:-1;;16076:38:0::1;::::0;::::1;;::::0;;::::1;::::0;;;16124:40;;775:41:1;;;16124:40:0::1;::::0;748:18:1;16124:40:0::1;635:187:1::0;15684:202:0;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15773:38:0;::::1;;::::0;;;:29:::1;:38;::::0;;;;;;;;:48;;-1:-1:-1;;15773:48:0::1;::::0;::::1;;::::0;;::::1;::::0;;;15831:50;;775:41:1;;;15831:50:0::1;::::0;748:18:1;15831:50:0::1;635:187:1::0;7504:223:0;7291:6;;-1:-1:-1;;;;;7291:6:0;6648:10;7291:22;7283:67;;;;-1:-1:-1;;;7283:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7587:22:0;::::1;7579:73;;;::::0;-1:-1:-1;;;7579:73:0;;15053:2:1;7579:73:0::1;::::0;::::1;15035:21:1::0;15092:2;15072:18;;;15065:30;15131:34;15111:18;;;15104:62;-1:-1:-1;;;15182:18:1;;;15175:36;15228:19;;7579:73:0::1;14851:402:1::0;7579:73:0::1;7683:6;::::0;;7662:38:::1;::::0;-1:-1:-1;;;;;7662:38:0;;::::1;::::0;7683:6;::::1;::::0;7662:38:::1;::::0;::::1;7705:6;:17:::0;;-1:-1:-1;;;;;;7705:17:0::1;-1:-1:-1::0;;;;;7705:17:0;;;::::1;::::0;;;::::1;::::0;;7504:223::o;2663:123::-;2721:7;2742:39;2746:1;2749;2742:39;;;;;;;;;;;;;;;;;:3;:39::i;14242:306::-;-1:-1:-1;;;;;14327:19:0;;14319:68;;;;-1:-1:-1;;;14319:68:0;;15460:2:1;14319:68:0;;;15442:21:1;15499:2;15479:18;;;15472:30;15538:34;15518:18;;;15511:62;-1:-1:-1;;;15589:18:1;;;15582:34;15633:19;;14319:68:0;15258:400:1;14319:68:0;-1:-1:-1;;;;;14400:21:0;;14392:68;;;;-1:-1:-1;;;14392:68:0;;15865:2:1;14392:68:0;;;15847:21:1;15904:2;15884:18;;;15877:30;15943:34;15923:18;;;15916:62;-1:-1:-1;;;15994:18:1;;;15987:32;16036:19;;14392:68:0;15663:398:1;14392:68:0;-1:-1:-1;;;;;14465:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14511:32;;1895:25:1;;;14511:32:0;;1868:18:1;14511:32:0;;;;;;;14242:306;;;:::o;22802:1675::-;-1:-1:-1;;;;;22895:18:0;;22887:68;;;;-1:-1:-1;;;22887:68:0;;16268:2:1;22887:68:0;;;16250:21:1;16307:2;16287:18;;;16280:30;16346:34;16326:18;;;16319:62;-1:-1:-1;;;16397:18:1;;;16390:35;16442:19;;22887:68:0;16066:401:1;22887:68:0;-1:-1:-1;;;;;22968:16:0;;22960:64;;;;-1:-1:-1;;;22960:64:0;;16674:2:1;22960:64:0;;;16656:21:1;16713:2;16693:18;;;16686:30;16752:34;16732:18;;;16725:62;-1:-1:-1;;;16803:18:1;;;16796:33;16846:19;;22960:64:0;16472:399:1;22960:64:0;23046:1;23037:6;:10;23029:64;;;;-1:-1:-1;;;23029:64:0;;17078:2:1;23029:64:0;;;17060:21:1;17117:2;17097:18;;;17090:30;17156:34;17136:18;;;17129:62;-1:-1:-1;;;17207:18:1;;;17200:39;17256:19;;23029:64:0;16876:405:1;23029:64:0;23116:15;23126:4;23116:9;:15::i;:::-;23106:6;:25;;23098:78;;;;-1:-1:-1;;;23098:78:0;;17488:2:1;23098:78:0;;;17470:21:1;17527:2;17507:18;;;17500:30;17566:34;17546:18;;;17539:62;-1:-1:-1;;;17617:18:1;;;17610:38;17665:19;;23098:78:0;17286:404:1;23098:78:0;-1:-1:-1;;;;;23202:31:0;;;23183:16;23202:31;;;:25;:31;;;;;;;;;23256:29;;;;;;;;;23296:35;;;:29;:35;;;;;;23202:31;;;;;23256:29;;;;23296:35;23295:36;:74;;;;-1:-1:-1;;;;;;23336:33:0;;;;;;:29;:33;;;;;;;;23335:34;23295:74;23292:679;;;23385:16;;;;23377:66;;;;-1:-1:-1;;;23377:66:0;;17897:2:1;23377:66:0;;;17879:21:1;17936:2;17916:18;;;17909:30;17975:34;17955:18;;;17948:62;-1:-1:-1;;;18026:18:1;;;18019:35;18071:19;;23377:66:0;17695:401:1;23377:66:0;-1:-1:-1;;;;;23467:14:0;;;;;;:10;:14;;;;;;;;23466:15;23458:53;;;;-1:-1:-1;;;23458:53:0;;18303:2:1;23458:53:0;;;18285:21:1;18342:2;18322:18;;;18315:30;-1:-1:-1;;;18361:18:1;;;18354:55;18426:18;;23458:53:0;18101:349:1;23458:53:0;-1:-1:-1;;;;;23526:16:0;;;;;;:10;:16;;;;;;;;23525:17;23517:55;;;;-1:-1:-1;;;23517:55:0;;18303:2:1;23517:55:0;;;18285:21:1;18342:2;18322:18;;;18315:30;-1:-1:-1;;;18361:18:1;;;18354:55;18426:18;;23517:55:0;18101:349:1;23517:55:0;-1:-1:-1;;;;;23592:38:0;;;;;;:34;:38;;;;;;;;23591:39;:84;;;;-1:-1:-1;;;;;;23635:40:0;;;;;;:34;:40;;;;;;;;23634:41;23591:84;23587:206;;;23714:11;;23704:6;:21;;23696:81;;;;-1:-1:-1;;;23696:81:0;;18657:2:1;23696:81:0;;;18639:21:1;18696:2;18676:18;;;18669:30;18735:34;18715:18;;;18708:62;-1:-1:-1;;;18786:18:1;;;18779:45;18841:19;;23696:81:0;18455:411:1;23696:81:0;-1:-1:-1;;;;;23803:33:0;;;;;;:29;:33;;;;;;;;23798:168;;23881:15;;23870:6;23854:13;23864:2;23854:9;:13::i;:::-;:22;;;;:::i;:::-;23853:43;;23845:114;;;;-1:-1:-1;;;23845:114:0;;19206:2:1;23845:114:0;;;19188:21:1;19245:2;19225:18;;;19218:30;19284:34;19264:18;;;19257:62;19355:28;19335:18;;;19328:56;19401:19;;23845:114:0;19004:422:1;23845:114:0;23977:37;23990:11;24003:10;23977:12;:37::i;:::-;24019:12;24062:23;;24034:24;24052:4;24034:9;:24::i;:::-;24101:16;;24034:51;-1:-1:-1;24034:51:0;;-1:-1:-1;24101:16:0;;:31;;;;;24125:7;24101:31;:49;;;;-1:-1:-1;24141:9:0;;;;24140:10;24101:49;:70;;;;-1:-1:-1;24158:9:0;;-1:-1:-1;;;24158:9:0;;;;:13;;24101:70;:107;;;;-1:-1:-1;;;;;;24179:29:0;;;;;;:25;:29;;;;;;;;24101:107;24092:196;;;24220:9;:16;;-1:-1:-1;;24220:16:0;24232:4;24220:16;;;24242:17;:15;:17::i;:::-;24265:9;:17;;-1:-1:-1;;24265:17:0;;;24092:196;24310:9;;24294:12;;24310:9;;24309:10;:30;;;;-1:-1:-1;24323:16:0;;;;24309:30;-1:-1:-1;;;;;24349:24:0;;;;;;:18;:24;;;;;;24294:45;;-1:-1:-1;24349:24:0;;;:50;;-1:-1:-1;;;;;;24377:22:0;;;;;;:18;:22;;;;;;;;24349:50;24346:81;;;-1:-1:-1;24416:5:0;24346:81;24431:41;24446:4;24452:2;24456:6;24464:7;24431:14;:41::i;:::-;22882:1595;;;;22802:1675;;;:::o;2071:171::-;2157:7;2187:12;2179:6;;;;2171:29;;;;-1:-1:-1;;;2171:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2205:9:0;2217:5;2221:1;2217;:5;:::i;:::-;2205:17;2071:171;-1:-1:-1;;;;;2071:171:0:o;26174:149::-;26216:7;26231:15;26248;26267:19;:17;:19::i;:::-;26230:56;;-1:-1:-1;26230:56:0;-1:-1:-1;26298:20:0;26230:56;;26298:11;:20::i;:::-;26291:27;;;;26174:149;:::o;1774:160::-;1832:7;;1858:5;1862:1;1858;:5;:::i;:::-;1846:17;;1881:1;1876;:6;;1868:46;;;;-1:-1:-1;;;1868:46:0;;19633:2:1;1868:46:0;;;19615:21:1;19672:2;19652:18;;;19645:30;19711:29;19691:18;;;19684:57;19758:18;;1868:46:0;19431:351:1;29655:1249:0;29877:21;;;;:43;;;;:21;;:43;29873:215;;29933:101;;-1:-1:-1;;;19989:32:1;;20046:2;20037:12;29933:101:0;;;;;;;;29975:21;;;;30019:14;;29933:101;;29975:21;;;;;29933:101;;;;-1:-1:-1;;;;;;;;;;;29933:101:0;;;30019:14;;;29933:101;:::i;:::-;;;;;;;;30040:21;;;:42;;-1:-1:-1;;30040:42:0;;;;;;;29873:215;30096:21;;;;:43;;;;:21;;;;;:43;30092:215;;30152:101;;-1:-1:-1;;;20476:32:1;;20533:2;20524:12;30152:101:0;;;;;;;;30194:21;;;;30238:14;;30152:101;;30194:21;;;;;;;;30152:101;;;;-1:-1:-1;;;;;;;;;;;30152:101:0;;;30238:14;;;30152:101;:::i;:::-;;;;;;;;30259:21;;;:42;;-1:-1:-1;;30259:42:0;;;;;;;;;30092:215;30321:15;;;;:31;;;;-1:-1:-1;;;30321:15:0;;;;:31;30317:173;;30365:83;;-1:-1:-1;;;20749:26:1;;20800:2;20791:12;30365:83:0;;;;;;;;30401:15;;;;30433:14;;30365:83;;30401:15;-1:-1:-1;;;30401:15:0;;;;;;30365:83;;;;-1:-1:-1;;;;;;;;;;;30365:83:0;;;30433:14;;;30365:83;:::i;:::-;;;;;;;;30454:15;;;:30;;-1:-1:-1;;30454:30:0;-1:-1:-1;;;30454:30:0;;;;;;;30317:173;30498:19;;;;:39;;;;-1:-1:-1;;;30498:19:0;;;;:39;30494:201;;30550:95;;-1:-1:-1;;;21016:30:1;;21071:2;21062:12;30550:95:0;;;;;;;;30590:19;;;;30630:14;;30550:95;;30590:19;-1:-1:-1;;;30590:19:0;;;;;;30550:95;;;;-1:-1:-1;;;;;;;;;;;30550:95:0;;;30630:14;;;30550:95;:::i;:::-;;;;;;;;30651:19;;;:38;;-1:-1:-1;;30651:38:0;-1:-1:-1;;;30651:38:0;;;;;;;30494:201;30703:19;;;;:39;;;;-1:-1:-1;;;30703:19:0;;;;:39;30699:201;;30755:95;;-1:-1:-1;;;21287:30:1;;21342:2;21333:12;30755:95:0;;;;;;;;30795:19;;;;30835:14;;30755:95;;30795:19;-1:-1:-1;;;30795:19:0;;;;;;30755:95;;;;-1:-1:-1;;;;;;;;;;;30755:95:0;;;30835:14;;;30755:95;:::i;:::-;;;;;;;;30856:19;;;:38;;-1:-1:-1;;30856:38:0;-1:-1:-1;;;30856:38:0;;;;;;;30699:201;29655:1249;;;;;;:::o;28362:1290::-;28590:22;;;;:45;;;;:22;;;;;:45;28586:222;;28648:104;;-1:-1:-1;;;21558:33:1;;21616:2;21607:12;28648:104:0;;;;;;;;28691:22;;;;28737:14;;28648:104;;28691:22;;;;;;;;28648:104;;;;-1:-1:-1;;;;;;;;;;;28648:104:0;;;28737:14;;;28648:104;:::i;:::-;;;;;;;;28758:22;;;:44;;-1:-1:-1;;28758:44:0;;;;;;;;;28586:222;28816:22;;;;:45;;;;:22;;;;;:45;28812:222;;28874:104;;-1:-1:-1;;;21832:33:1;;21890:2;21881:12;28874:104:0;;;;;;;;28917:22;;;;28963:14;;28874:104;;28917:22;;;;;;;;28874:104;;;;-1:-1:-1;;;;;;;;;;;28874:104:0;;;28963:14;;;28874:104;:::i;:::-;;;;;;;;28984:22;;;:44;;-1:-1:-1;;28984:44:0;;;;;;;;;28812:222;29048:16;;;;:33;;;;-1:-1:-1;;;29048:16:0;;;;:33;29044:180;;29094:86;;-1:-1:-1;;;22106:27:1;;22158:2;22149:12;29094:86:0;;;;;;;;29131:16;;;;29165:14;;29094:86;;29131:16;-1:-1:-1;;;29131:16:0;;;;;;29094:86;;;;-1:-1:-1;;;;;;;;;;;29094:86:0;;;29165:14;;;29094:86;:::i;:::-;;;;;;;;29186:16;;;:32;;-1:-1:-1;;29186:32:0;-1:-1:-1;;;29186:32:0;;;;;;;29044:180;29232:20;;;;:41;;;;-1:-1:-1;;;29232:20:0;;;;:41;29228:208;;29286:98;;-1:-1:-1;;;22374:31:1;;22430:2;22421:12;29286:98:0;;;;;;;;29327:20;;;;29369:14;;29286:98;;29327:20;-1:-1:-1;;;29327:20:0;;;;;;29286:98;;;;-1:-1:-1;;;;;;;;;;;29286:98:0;;;29369:14;;;29286:98;:::i;:::-;;;;;;;;29390:20;;;:40;;-1:-1:-1;;29390:40:0;-1:-1:-1;;;29390:40:0;;;;;;;29228:208;29444:20;;;;:41;;;;-1:-1:-1;;;29444:20:0;;;;:41;29440:208;;29498:98;;-1:-1:-1;;;22646:31:1;;22702:2;22693:12;29498:98:0;;;;;;;;29539:20;;;;29581:14;;29498:98;;29539:20;-1:-1:-1;;;29539:20:0;;;;;;29498:98;;;;-1:-1:-1;;;;;;;;;;;29498:98:0;;;29581:14;;;29498:98;:::i;:::-;;;;;;;;29602:20;;;:40;;;;;-1:-1:-1;;;29602:40:0;-1:-1:-1;;29602:40:0;;;;;;28362:1290;;;;;;:::o;2791:251::-;2877:7;2906:12;2899:5;2891:28;;;;-1:-1:-1;;;2891:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2924:9:0;2936:5;2940:1;2936;:5;:::i;27096:1263::-;27166:13;:17;;-1:-1:-1;;27246:15:0;;;27268:408;;;;27343:1;27320:18;;27305:12;:33;;;;:::i;:::-;27304:40;27300:371;;27353:13;:19;;-1:-1:-1;;27353:19:0;27369:3;27353:19;;;27300:371;;;27420:23;;27404:13;:39;;27420:23;;;;-1:-1:-1;;27462:27:0;;;;;;;-1:-1:-1;;;27472:17:0;;;;;27462:27;;;;;;;;-1:-1:-1;;27566:35:0;27420:23;27524;;;;;27508:39;;;;-1:-1:-1;;27566:35:0;;;;;-1:-1:-1;;;27580:21:0;;;;27566:35;;;-1:-1:-1;;27620:35:0;-1:-1:-1;;;27634:21:0;;;;;;;27620:35;;;;;;;27300:371;27684:10;27680:494;;;27727:24;;27711:13;:40;;27727:24;;;;;;;;-1:-1:-1;;27757:28:0;;;;;;;-1:-1:-1;;;27767:18:0;;;;27757:28;;;-1:-1:-1;;27837:36:0;27807:24;;;;;;27791:40;;;;-1:-1:-1;;27837:36:0;;-1:-1:-1;;;27851:22:0;;;;27837:36;;;;;-1:-1:-1;;27879:36:0;-1:-1:-1;;;27893:22:0;;;;-1:-1:-1;;;27879:36:0;;;;;;;27954:16;;27974:6;;27936:34;;:15;:34;:::i;:::-;:44;27932:237;;28001:13;:17;;-1:-1:-1;;28138:15:0;;;;;27932:237;28246:11;;;-1:-1:-1;;;28246:11:0;;;;;28232;;;;;;28222:7;;;;;;28190:29;;28246:11;28206:13;;;;;28190;:29;:::i;:::-;:39;;;;:::i;:::-;:53;;;;:::i;:::-;:67;;;;:::i;:::-;28178:9;:79;;-1:-1:-1;;28178:79:0;;-1:-1:-1;;;28178:79:0;;;;;;;;;;;;;28267:87;;;28279:13;;;;;;;;;;23211:34:1;;28178:79:0;28294:13;;;;23276:2:1;23261:18;;23254:43;28309:7:0;;;;;23313:18:1;;;23306:43;;;;28318:11:0;;;;;23380:2:1;23365:18;;23358:43;-1:-1:-1;;;28331:11:0;;;;23432:3:1;23417:19;;23410:44;28344:9:0;;;;;;23485:3:1;23470:19;;23463:44;28267:87:0;;23175:3:1;23160:19;28267:87:0;22925:588:1;30907:1685:0;30947:23;30973:24;30991:4;30973:9;:24::i;:::-;31080:9;;30947:50;;-1:-1:-1;31030:21:0;;31080:9;-1:-1:-1;;;31080:9:0;;;;;31126:13;;;;31080:9;31176:13;;;;;31220:7;;;;;;31263:11;;;;;;-1:-1:-1;;;31303:11:0;;;31002:25;31220:7;31080:9;31347:31;31126:13;30947:50;31347:31;:::i;:::-;:43;;;;:::i;:::-;:47;;;;:::i;:::-;31321:73;-1:-1:-1;31399:26:0;31428:33;31321:73;31428:15;:33;:::i;:::-;31399:62;;31468:37;31486:18;31468:17;:37::i;:::-;31512:27;31542:41;31566:17;31542:21;:41;:::i;:::-;31512:71;-1:-1:-1;31588:19:0;31653:15;31627:21;31647:1;31627:17;:21;:::i;:::-;31610:39;;:13;:39;:::i;:::-;:59;;;;:::i;:::-;31588:81;;;;31674:26;31759:1;31745:11;31725:17;31703:39;;:19;:39;;;;:::i;:::-;:53;;;;:::i;:::-;:57;;;;:::i;:::-;31674:86;-1:-1:-1;31765:20:0;31824:11;31788:33;;;;:19;:33;:::i;:::-;:47;;;;:::i;:::-;31765:70;-1:-1:-1;31840:24:0;31907:11;31867:37;;;;:19;:37;:::i;:::-;:51;;;;:::i;:::-;31840:78;-1:-1:-1;31923:26:0;31840:78;31975:33;31996:12;31975:18;:33;:::i;:::-;:52;;;;:::i;:::-;31952:76;;:19;:76;:::i;:::-;32043:15;;32035:53;;31923:105;;-1:-1:-1;;;;;;32043:15:0;;32035:53;;;;;31923:105;;32043:15;32035:53;32043:15;32035:53;31923:105;32043:15;32035:53;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32101:9:0;;32093:41;;-1:-1:-1;;;;;32101:9:0;;;;32093:41;;;;;32121:12;;32101:9;32093:41;32101:9;32093:41;32121:12;32101:9;32093:41;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32147:13:0;;32139:49;;-1:-1:-1;;;;;32147:13:0;;;;32139:49;;;;;32171:16;;32147:13;32139:49;32147:13;32139:49;32171:16;32147:13;32139:49;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32199:19:0;;32195:169;;32226:50;32240:15;32257:18;32226:13;:50::i;:::-;32287:71;;;24090:25:1;;;24146:2;24131:18;;24124:34;;;24174:18;;;24167:34;;;32287:71:0;;24078:2:1;24063:18;32287:71:0;;;;;;;32195:169;32380:13;32368:9;;:25;;;;;;;;;;;;;;;;;;32420:17;32404:13;;:33;;;;;;;;;;;;;;;;;;32464:17;32448:13;;:33;;;;;;;;;;;;;;;;;;32502:11;32492:7;;:21;;;;;;;;;;;;;;;;;;32538:15;32524:11;;:29;;;;;;;;;;;;;;;;;;32572:15;32558:11;;:29;;;;;;;;;;;;;;;;;;30942:1650;;;;;;;;;;;;;;;;30907:1685::o;24480:762::-;24583:23;24607:12;24621:14;24639:29;24651:7;24660;24639:11;:29::i;:::-;24582:86;;;;;;24674:15;24691:23;24716:12;24730:14;24748:46;24760:7;24769:4;24775:6;24783:10;:8;:10::i;:::-;24748:11;:46::i;:::-;-1:-1:-1;;;;;24805:32:0;;;;;;:24;:32;;;;;;24673:121;;-1:-1:-1;24673:121:0;;-1:-1:-1;24673:121:0;-1:-1:-1;24673:121:0;-1:-1:-1;24805:32:0;;24801:93;;;-1:-1:-1;;;;;24863:15:0;;;;;;:7;:15;;;;;;:25;;24881:7;;24863:25;:::i;:::-;-1:-1:-1;;;;;24845:15:0;;;;;;:7;:15;;;;;:43;24801:93;-1:-1:-1;;;;;24902:35:0;;;;;;:24;:35;;;;;;;;24898:110;;;-1:-1:-1;;;;;24966:18:0;;;;;;:7;:18;;;;;;:36;;24987:15;;24966:36;:::i;:::-;-1:-1:-1;;;;;24945:18:0;;;;;;:7;:18;;;;;:57;24898:110;-1:-1:-1;;;;;25030:15:0;;;;;;:7;:15;;;;;;:25;;25048:7;;25030:25;:::i;:::-;-1:-1:-1;;;;;25012:15:0;;;;;;;:7;:15;;;;;;:43;;;;25081:18;;;;;;;:36;;25102:15;;25081:36;:::i;:::-;-1:-1:-1;;;;;25060:18:0;;;;;;:7;:18;;;;;:57;25122:33;25140:6;25148;25122:17;:33::i;:::-;25160:23;25172:4;25178;25160:11;:23::i;:::-;25210:9;-1:-1:-1;;;;;25193:44:0;25202:6;-1:-1:-1;;;;;25193:44:0;;25221:15;25193:44;;;;1895:25:1;;1883:2;1868:18;;1749:177;25193:44:0;;;;;;;;24577:665;;;;;;;24480:762;;;;:::o;26326:562::-;26418:7;;26377;;;;8306:18;26377:7;26460:331;26484:22;:29;26480:33;;26460:331;;;26573:7;26536;:34;26544:22;26567:1;26544:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;26544:25:0;26536:34;;;;;;;;;;;;;:44;;:97;;;26626:7;26589;:34;26597:22;26620:1;26597:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;26597:25:0;26589:34;;;;;;;;;;;;;:44;26536:97;26526:139;;;-1:-1:-1;;26648:7:0;;;8306:18;;-1:-1:-1;26326:562:0;-1:-1:-1;;26326:562:0:o;26526:139::-;26691:7;:34;26699:22;26722:1;26699:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;26699:25:0;26691:34;;;;;;;;;;;;;26681:44;;:7;:44;:::i;:::-;26671:54;;26751:7;:34;26759:22;26782:1;26759:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;26759:25:0;26751:34;;;;;;;;;;;;;26741:44;;:7;:44;:::i;:::-;26731:54;-1:-1:-1;26515:3:0;;;;:::i;:::-;;;;26460:331;;;;8306:18;26809:7;;:17;;;;:::i;:::-;26799:7;:27;26795:58;;;-1:-1:-1;;26836:7:0;;;8306:18;;-1:-1:-1;26326:562:0;-1:-1:-1;26326:562:0:o;26795:58::-;26866:7;;26875;;-1:-1:-1;26326:562:0;-1:-1:-1;26326:562:0:o;32595:411::-;32680:16;;;32694:1;32680:16;;;;;;;;32656:21;;32680:16;;;;;;;;;;-1:-1:-1;32680:16:0;32656:40;;32719:4;32701;32706:1;32701:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;32701:23:0;;;:7;;;;;;;;;;:23;;;;32739:15;;:22;;;-1:-1:-1;;;32739:22:0;;;;:15;;;;;:20;;:22;;;;;32701:7;;32739:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32729:4;32734:1;32729:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;32729:32:0;;;:7;;;;;;;;;:32;32798:15;;32766:62;;32783:4;;32798:15;32816:11;32766:8;:62::i;:::-;32833:15;;:168;;-1:-1:-1;;;32833:168:0;;-1:-1:-1;;;;;32833:15:0;;;;:66;;:168;;32904:11;;32833:15;;32954:4;;32971;;32981:15;;32833:168;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33009:345;33117:15;;33085:62;;33102:4;;-1:-1:-1;;;;;33117:15:0;33135:11;33085:8;:62::i;:::-;33152:15;;33306;;33152:194;;-1:-1:-1;;;33152:194:0;;33214:4;33152:194;;;25926:34:1;25976:18;;;25969:34;;;33152:15:0;26019:18:1;;;26012:34;;;26062:18;;;26055:34;-1:-1:-1;;;;;33306:15:0;;;26105:19:1;;;26098:44;33326:15:0;26158:19:1;;;26151:35;33152:15:0;;;:31;;33191:9;;25860:19:1;;33152:194:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;33009:345;;:::o;25353:413::-;25427:7;25435;25443;25461;25456:306;;-1:-1:-1;25484:7:0;;-1:-1:-1;25493:1:0;;-1:-1:-1;25493:1:0;25476:22;;25456:306;25544:11;;25519:12;;25558:3;;25534:21;;-1:-1:-1;;;25544:11:0;;;;25534:7;:21;:::i;:::-;:27;;;;:::i;:::-;25637:11;;25519:42;;-1:-1:-1;25567:14:0;;25652:3;;25637:11;;;;;;;;25621:13;;;;;25595:23;;25611:7;;;;;;25595:13;:23;:::i;:::-;:39;;;;:::i;:::-;:53;;;;:::i;:::-;25584:65;;;;:7;:65;:::i;:::-;:71;;;;:::i;:::-;25567:88;-1:-1:-1;25661:23:0;25698:13;25567:88;25698:4;:13;:::i;:::-;25687:25;;:7;:25;:::i;:::-;25661:51;-1:-1:-1;25743:4:0;;-1:-1:-1;25749:6:0;-1:-1:-1;25718:38:0;;-1:-1:-1;25718:38:0;25456:306;25353:413;;;;;:::o;25769:402::-;25898:7;;;;;25957:21;25967:11;25957:7;:21;:::i;:::-;25939:39;-1:-1:-1;25983:12:0;25998:18;26005:11;25998:4;:18;:::i;:::-;25983:33;-1:-1:-1;26021:14:0;26038:20;26047:11;26038:6;:20;:::i;:::-;26021:37;-1:-1:-1;26063:23:0;26100:13;26021:37;26100:4;:13;:::i;:::-;26089:25;;:7;:25;:::i;:::-;26127:7;;;;-1:-1:-1;26153:4:0;;-1:-1:-1;26153:4:0;-1:-1:-1;25769:402:0;;-1:-1:-1;;;;;;25769:402:0:o;26891:202::-;27000:4;26967:39;;;;:24;:39;;;;;;;;26963:89;;;27030:4;27014:22;;;;:7;:22;;;;;:32;;27040:6;;27014:22;:32;;27040:6;;27014:32;:::i;:::-;;;;-1:-1:-1;;26963:89:0;27072:4;27056:22;;;;:7;:22;;;;;:32;;27082:6;;27056:22;:32;;27082:6;;27056:32;:::i;:::-;;;;-1:-1:-1;;;;26891:202:0:o;25245:105::-;25318:4;25307:7;;:15;;;;;;;:::i;:::-;;;;;;;;25341:4;25327:10;;:18;;;;;;;:::i;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:160::-;215:20;;271:13;;264:21;254:32;;244:60;;300:1;297;290:12;244:60;150:160;;;:::o;315:315::-;380:6;388;441:2;429:9;420:7;416:23;412:32;409:52;;;457:1;454;447:12;409:52;496:9;483:23;515:31;540:5;515:31;:::i;:::-;565:5;-1:-1:-1;589:35:1;620:2;605:18;;589:35;:::i;:::-;579:45;;315:315;;;;;:::o;827:597::-;939:4;968:2;997;986:9;979:21;1029:6;1023:13;1072:6;1067:2;1056:9;1052:18;1045:34;1097:1;1107:140;1121:6;1118:1;1115:13;1107:140;;;1216:14;;;1212:23;;1206:30;1182:17;;;1201:2;1178:26;1171:66;1136:10;;1107:140;;;1265:6;1262:1;1259:13;1256:91;;;1335:1;1330:2;1321:6;1310:9;1306:22;1302:31;1295:42;1256:91;-1:-1:-1;1408:2:1;1387:15;-1:-1:-1;;1383:29:1;1368:45;;;;1415:2;1364:54;;827:597;-1:-1:-1;;;827:597:1:o;1429:315::-;1497:6;1505;1558:2;1546:9;1537:7;1533:23;1529:32;1526:52;;;1574:1;1571;1564:12;1526:52;1613:9;1600:23;1632:31;1657:5;1632:31;:::i;:::-;1682:5;1734:2;1719:18;;;;1706:32;;-1:-1:-1;;;1429:315:1:o;2362:180::-;2421:6;2474:2;2462:9;2453:7;2449:23;2445:32;2442:52;;;2490:1;2487;2480:12;2442:52;-1:-1:-1;2513:23:1;;2362:180;-1:-1:-1;2362:180:1:o;2547:456::-;2624:6;2632;2640;2693:2;2681:9;2672:7;2668:23;2664:32;2661:52;;;2709:1;2706;2699:12;2661:52;2748:9;2735:23;2767:31;2792:5;2767:31;:::i;:::-;2817:5;-1:-1:-1;2874:2:1;2859:18;;2846:32;2887:33;2846:32;2887:33;:::i;:::-;2547:456;;2939:7;;-1:-1:-1;;;2993:2:1;2978:18;;;;2965:32;;2547:456::o;3197:248::-;3262:6;3270;3323:2;3311:9;3302:7;3298:23;3294:32;3291:52;;;3339:1;3336;3329:12;3291:52;3375:9;3362:23;3352:33;;3404:35;3435:2;3424:9;3420:18;3404:35;:::i;3450:247::-;3509:6;3562:2;3550:9;3541:7;3537:23;3533:32;3530:52;;;3578:1;3575;3568:12;3530:52;3617:9;3604:23;3636:31;3661:5;3636:31;:::i;3702:671::-;3788:6;3796;3804;3812;3865:3;3853:9;3844:7;3840:23;3836:33;3833:53;;;3882:1;3879;3872:12;3833:53;3921:9;3908:23;3940:31;3965:5;3940:31;:::i;:::-;3990:5;-1:-1:-1;4047:2:1;4032:18;;4019:32;4060:33;4019:32;4060:33;:::i;:::-;4112:7;-1:-1:-1;4171:2:1;4156:18;;4143:32;4184:33;4143:32;4184:33;:::i;:::-;4236:7;-1:-1:-1;4295:2:1;4280:18;;4267:32;4308:33;4267:32;4308:33;:::i;:::-;3702:671;;;;-1:-1:-1;3702:671:1;;-1:-1:-1;;3702:671:1:o;4378:156::-;4444:20;;4504:4;4493:16;;4483:27;;4473:55;;4524:1;4521;4514:12;4539:464;4624:6;4632;4640;4648;4656;4709:3;4697:9;4688:7;4684:23;4680:33;4677:53;;;4726:1;4723;4716:12;4677:53;4749:27;4766:9;4749:27;:::i;:::-;4739:37;;4795:36;4827:2;4816:9;4812:18;4795:36;:::i;:::-;4785:46;;4850:36;4882:2;4871:9;4867:18;4850:36;:::i;:::-;4840:46;;4905:36;4937:2;4926:9;4922:18;4905:36;:::i;:::-;4895:46;;4960:37;4992:3;4981:9;4977:19;4960:37;:::i;:::-;4950:47;;4539:464;;;;;;;;:::o;5511:388::-;5579:6;5587;5640:2;5628:9;5619:7;5615:23;5611:32;5608:52;;;5656:1;5653;5646:12;5608:52;5695:9;5682:23;5714:31;5739:5;5714:31;:::i;:::-;5764:5;-1:-1:-1;5821:2:1;5806:18;;5793:32;5834:33;5793:32;5834:33;:::i;:::-;5886:7;5876:17;;;5511:388;;;;;:::o;5904:356::-;6106:2;6088:21;;;6125:18;;;6118:30;6184:34;6179:2;6164:18;;6157:62;6251:2;6236:18;;5904:356::o;6265:413::-;6467:2;6449:21;;;6506:2;6486:18;;;6479:30;6545:34;6540:2;6525:18;;6518:62;-1:-1:-1;;;6611:2:1;6596:18;;6589:47;6668:3;6653:19;;6265:413::o;6683:127::-;6744:10;6739:3;6735:20;6732:1;6725:31;6775:4;6772:1;6765:15;6799:4;6796:1;6789:15;6815:127;6876:10;6871:3;6867:20;6864:1;6857:31;6907:4;6904:1;6897:15;6931:4;6928:1;6921:15;6947:125;6987:4;7015:1;7012;7009:8;7006:34;;;7020:18;;:::i;:::-;-1:-1:-1;7057:9:1;;6947:125::o;7077:127::-;7138:10;7133:3;7129:20;7126:1;7119:31;7169:4;7166:1;7159:15;7193:4;7190:1;7183:15;7209:135;7248:3;7269:17;;;7266:43;;7289:18;;:::i;:::-;-1:-1:-1;7336:1:1;7325:13;;7209:135::o;8601:127::-;8662:10;8657:3;8653:20;8650:1;8643:31;8693:4;8690:1;8683:15;8717:4;8714:1;8707:15;8733:120;8773:1;8799;8789:35;;8804:18;;:::i;:::-;-1:-1:-1;8838:9:1;;8733:120::o;9265:168::-;9305:7;9371:1;9367;9363:6;9359:14;9356:1;9353:21;9348:1;9341:9;9334:17;9330:45;9327:71;;;9378:18;;:::i;:::-;-1:-1:-1;9418:9:1;;9265:168::o;18871:128::-;18911:3;18942:1;18938:6;18935:1;18932:13;18929:39;;;18948:18;;:::i;:::-;-1:-1:-1;18984:9:1;;18871:128::o;20060:209::-;-1:-1:-1;;20224:38:1;;;;20206:57;;20194:2;20179:18;;20060:209::o;22716:204::-;22754:3;22790:4;22787:1;22783:12;22822:4;22819:1;22815:12;22857:3;22851:4;22847:14;22842:3;22839:23;22836:49;;;22865:18;;:::i;:::-;22901:13;;22716:204;-1:-1:-1;;;22716:204:1:o;23518:165::-;23556:1;23590:4;23587:1;23583:12;23614:3;23604:37;;23621:18;;:::i;:::-;23673:3;23666:4;23663:1;23659:12;23655:22;23650:27;;;23518:165;;;;:::o;23688:195::-;23726:4;23763;23760:1;23756:12;23795:4;23792:1;23788:12;23820:3;23815;23812:12;23809:38;;;23827:18;;:::i;:::-;23864:13;;;23688:195;-1:-1:-1;;;23688:195:1:o;24344:251::-;24414:6;24467:2;24455:9;24446:7;24442:23;24438:32;24435:52;;;24483:1;24480;24473:12;24435:52;24515:9;24509:16;24534:31;24559:5;24534:31;:::i;24600:980::-;24862:4;24910:3;24899:9;24895:19;24941:6;24930:9;24923:25;24967:2;25005:6;25000:2;24989:9;24985:18;24978:34;25048:3;25043:2;25032:9;25028:18;25021:31;25072:6;25107;25101:13;25138:6;25130;25123:22;25176:3;25165:9;25161:19;25154:26;;25215:2;25207:6;25203:15;25189:29;;25236:1;25246:195;25260:6;25257:1;25254:13;25246:195;;;25325:13;;-1:-1:-1;;;;;25321:39:1;25309:52;;25416:15;;;;25381:12;;;;25357:1;25275:9;25246:195;;;-1:-1:-1;;;;;;;25497:32:1;;;;25492:2;25477:18;;25470:60;-1:-1:-1;;;25561:3:1;25546:19;25539:35;25458:3;24600:980;-1:-1:-1;;;24600:980:1:o;26197:306::-;26285:6;26293;26301;26354:2;26342:9;26333:7;26329:23;26325:32;26322:52;;;26370:1;26367;26360:12;26322:52;26399:9;26393:16;26383:26;;26449:2;26438:9;26434:18;26428:25;26418:35;;26493:2;26482:9;26478:18;26472:25;26462:35;;26197:306;;;;;:::o
Swarm Source
ipfs://ed8f82aee309a599feb023faaf65fe7ca03980eb6509b66660ff650274feb666
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.