Overview
Max Total Supply
1,000,000,000,000 DIAMONDS
Holders
399 (0.00%)
Transfers
-
0
Market
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Name:
Diamond
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-03-25
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address to, 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 from,
address to,
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 IERC20Metadata is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
function name() public view virtual override returns (string memory) {
return _name;
}
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
function decimals() public view virtual override returns (uint8) {
return 18;
}
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account)
public
view
virtual
override
returns (uint256)
{
return _balances[account];
}
function transfer(address to, uint256 amount)
public
virtual
override
returns (bool)
{
address owner = _msgSender();
_transfer(owner, to, amount);
return true;
}
function allowance(address owner, address spender)
public
view
virtual
override
returns (uint256)
{
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount)
public
virtual
override
returns (bool)
{
address owner = _msgSender();
_approve(owner, spender, amount);
return true;
}
function transferFrom(
address from,
address to,
uint256 amount
) public virtual override returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, amount);
_transfer(from, to, amount);
return true;
}
function increaseAllowance(address spender, uint256 addedValue)
public
virtual
returns (bool)
{
address owner = _msgSender();
_approve(owner, spender, _allowances[owner][spender] + addedValue);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue)
public
virtual
returns (bool)
{
address owner = _msgSender();
uint256 currentAllowance = _allowances[owner][spender];
require(
currentAllowance >= subtractedValue,
"ERC20: decreased allowance below zero"
);
unchecked {
_approve(owner, spender, currentAllowance - subtractedValue);
}
return true;
}
function _transfer(
address from,
address to,
uint256 amount
) internal virtual {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(from, to, amount);
uint256 fromBalance = _balances[from];
require(
fromBalance >= amount,
"ERC20: transfer amount exceeds balance"
);
unchecked {
_balances[from] = fromBalance - amount;
}
_balances[to] += amount;
emit Transfer(from, to, amount);
_afterTokenTransfer(from, to, amount);
}
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply += amount;
_balances[account] += amount;
emit Transfer(address(0), account, amount);
_afterTokenTransfer(address(0), account, amount);
}
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
uint256 accountBalance = _balances[account];
require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
unchecked {
_balances[account] = accountBalance - amount;
}
_totalSupply -= amount;
emit Transfer(account, address(0), amount);
_afterTokenTransfer(account, address(0), amount);
}
function _approve(
address owner,
address spender,
uint256 amount
) internal virtual {
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 _spendAllowance(
address owner,
address spender,
uint256 amount
) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance != type(uint256).max) {
require(
currentAllowance >= amount,
"ERC20: insufficient allowance"
);
unchecked {
_approve(owner, spender, currentAllowance - amount);
}
}
}
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
function _afterTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
}
library SafeMath {
function tryAdd(uint256 a, uint256 b)
internal
pure
returns (bool, uint256)
{
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
function trySub(uint256 a, uint256 b)
internal
pure
returns (bool, uint256)
{
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
function tryMul(uint256 a, uint256 b)
internal
pure
returns (bool, uint256)
{
unchecked {
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
function tryDiv(uint256 a, uint256 b)
internal
pure
returns (bool, uint256)
{
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
function tryMod(uint256 a, uint256 b)
internal
pure
returns (bool, uint256)
{
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
library Counters {
struct Counter {
uint256 _value;
}
function current(Counter storage counter) internal view returns (uint256) {
return counter._value;
}
function increment(Counter storage counter) internal {
unchecked {
counter._value += 1;
}
}
function decrement(Counter storage counter) internal {
uint256 value = counter._value;
require(value > 0, "Counter: decrement overflow");
unchecked {
counter._value = value - 1;
}
}
function reset(Counter storage counter) internal {
counter._value = 0;
}
}
contract Ownable {
address private _owner;
address private _previousOwner;
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
constructor() {
_owner = msg.sender;
emit OwnershipTransferred(address(0), _owner);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == msg.sender, "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
}
interface IUniswapV2Router02 {
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external payable;
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
);
}
interface IUniswapV2Factory {
function createPair(address tokenA, address tokenB)
external
returns (address pair);
}
library SignedSafeMath {
function mul(int256 a, int256 b) internal pure returns (int256) {
return a * b;
}
function div(int256 a, int256 b) internal pure returns (int256) {
return a / b;
}
function sub(int256 a, int256 b) internal pure returns (int256) {
return a - b;
}
function add(int256 a, int256 b) internal pure returns (int256) {
return a + b;
}
}
library SafeCast {
function toUint224(uint256 value) internal pure returns (uint224) {
require(
value <= type(uint224).max,
"SafeCast: value doesn't fit in 224 bits"
);
return uint224(value);
}
function toUint128(uint256 value) internal pure returns (uint128) {
require(
value <= type(uint128).max,
"SafeCast: value doesn't fit in 128 bits"
);
return uint128(value);
}
function toUint96(uint256 value) internal pure returns (uint96) {
require(
value <= type(uint96).max,
"SafeCast: value doesn't fit in 96 bits"
);
return uint96(value);
}
function toUint64(uint256 value) internal pure returns (uint64) {
require(
value <= type(uint64).max,
"SafeCast: value doesn't fit in 64 bits"
);
return uint64(value);
}
function toUint32(uint256 value) internal pure returns (uint32) {
require(
value <= type(uint32).max,
"SafeCast: value doesn't fit in 32 bits"
);
return uint32(value);
}
function toUint16(uint256 value) internal pure returns (uint16) {
require(
value <= type(uint16).max,
"SafeCast: value doesn't fit in 16 bits"
);
return uint16(value);
}
function toUint8(uint256 value) internal pure returns (uint8) {
require(
value <= type(uint8).max,
"SafeCast: value doesn't fit in 8 bits"
);
return uint8(value);
}
function toUint256(int256 value) internal pure returns (uint256) {
require(value >= 0, "SafeCast: value must be positive");
return uint256(value);
}
function toInt128(int256 value) internal pure returns (int128) {
require(
value >= type(int128).min && value <= type(int128).max,
"SafeCast: value doesn't fit in 128 bits"
);
return int128(value);
}
function toInt64(int256 value) internal pure returns (int64) {
require(
value >= type(int64).min && value <= type(int64).max,
"SafeCast: value doesn't fit in 64 bits"
);
return int64(value);
}
function toInt32(int256 value) internal pure returns (int32) {
require(
value >= type(int32).min && value <= type(int32).max,
"SafeCast: value doesn't fit in 32 bits"
);
return int32(value);
}
function toInt16(int256 value) internal pure returns (int16) {
require(
value >= type(int16).min && value <= type(int16).max,
"SafeCast: value doesn't fit in 16 bits"
);
return int16(value);
}
function toInt8(int256 value) internal pure returns (int8) {
require(
value >= type(int8).min && value <= type(int8).max,
"SafeCast: value doesn't fit in 8 bits"
);
return int8(value);
}
function toInt256(uint256 value) internal pure returns (int256) {
require(
value <= uint256(type(int256).max),
"SafeCast: value doesn't fit in an int256"
);
return int256(value);
}
}
interface DividendPayingTokenInterface {
function dividendOf(address _owner) external view returns (uint256);
function distributeDividends() external payable;
function withdrawDividend() external;
event DividendsDistributed(address indexed from, uint256 weiAmount);
event DividendWithdrawn(
address indexed to,
uint256 weiAmount,
address received
);
}
interface DividendPayingTokenOptionalInterface {
function withdrawableDividendOf(address _owner)
external
view
returns (uint256);
function withdrawnDividendOf(address _owner)
external
view
returns (uint256);
function accumulativeDividendOf(address _owner)
external
view
returns (uint256);
}
abstract contract DividendPayingToken is
ERC20,
DividendPayingTokenInterface,
DividendPayingTokenOptionalInterface
{
using SafeMath for uint256;
using SignedSafeMath for int256;
using SafeCast for uint256;
using SafeCast for int256;
uint256 internal constant magnitude = 2**128;
uint256 internal magnifiedDividendPerShare;
mapping(address => int256) internal magnifiedDividendCorrections;
mapping(address => uint256) internal withdrawnDividends;
uint256 public totalDividendsDistributed;
constructor(string memory _name, string memory _symbol)
ERC20(_name, _symbol)
{}
receive() external payable {
distributeDividends();
}
function distributeDividends() public payable override {
require(totalSupply() > 0);
if (msg.value > 0) {
magnifiedDividendPerShare = magnifiedDividendPerShare.add(
(msg.value).mul(magnitude) / totalSupply()
);
emit DividendsDistributed(msg.sender, msg.value);
totalDividendsDistributed = totalDividendsDistributed.add(
msg.value
);
}
}
function withdrawDividend() public virtual override {
_withdrawDividendOfUser(payable(msg.sender), payable(msg.sender));
}
function _withdrawDividendOfUser(address payable user, address payable to)
internal
returns (uint256)
{
uint256 _withdrawableDividend = withdrawableDividendOf(user);
if (_withdrawableDividend > 0) {
withdrawnDividends[user] = withdrawnDividends[user].add(
_withdrawableDividend
);
emit DividendWithdrawn(user, _withdrawableDividend, to);
(bool success, ) = to.call{value: _withdrawableDividend}("");
if (!success) {
withdrawnDividends[user] = withdrawnDividends[user].sub(
_withdrawableDividend
);
return 0;
}
return _withdrawableDividend;
}
return 0;
}
function dividendOf(address _owner) public view override returns (uint256) {
return withdrawableDividendOf(_owner);
}
function withdrawableDividendOf(address _owner)
public
view
override
returns (uint256)
{
return accumulativeDividendOf(_owner).sub(withdrawnDividends[_owner]);
}
function withdrawnDividendOf(address _owner)
public
view
override
returns (uint256)
{
return withdrawnDividends[_owner];
}
function accumulativeDividendOf(address _owner)
public
view
override
returns (uint256)
{
return
magnifiedDividendPerShare
.mul(balanceOf(_owner))
.toInt256()
.add(magnifiedDividendCorrections[_owner])
.toUint256() / magnitude;
}
function _mint(address account, uint256 value) internal override {
super._mint(account, value);
magnifiedDividendCorrections[account] = magnifiedDividendCorrections[
account
].sub((magnifiedDividendPerShare.mul(value)).toInt256());
}
function _burn(address account, uint256 value) internal override {
super._burn(account, value);
magnifiedDividendCorrections[account] = magnifiedDividendCorrections[
account
].add((magnifiedDividendPerShare.mul(value)).toInt256());
}
function _setBalance(address account, uint256 newBalance) internal {
uint256 currentBalance = balanceOf(account);
if (newBalance > currentBalance) {
uint256 mintAmount = newBalance.sub(currentBalance);
_mint(account, mintAmount);
} else if (newBalance < currentBalance) {
uint256 burnAmount = currentBalance.sub(newBalance);
_burn(account, burnAmount);
}
}
function getAccount(address _account)
public
view
returns (uint256 _withdrawableDividends, uint256 _withdrawnDividends)
{
_withdrawableDividends = withdrawableDividendOf(_account);
_withdrawnDividends = withdrawnDividends[_account];
}
}
contract DiamondDividendTracker is DividendPayingToken, Ownable {
using SafeMath for uint256;
using Counters for Counters.Counter;
Counters.Counter private tokenHoldersCount;
mapping(address => bool) private tokenHoldersMap;
mapping(address => bool) public excludedFromDividends;
uint256 public immutable minimumTokenBalanceForDividends;
event ExcludeFromDividends(address indexed account);
constructor()
DividendPayingToken(
"Diamond_Dividend_Tracker",
"Diamond_Dividend_Tracker"
)
{
minimumTokenBalanceForDividends = 10000 * 10**18;
}
function decimals() public view virtual override returns (uint8) {
return 18;
}
function _approve(
address,
address,
uint256
) internal pure override {
require(false, "Diamond_Dividend_Tracker: No approvals allowed");
}
function _transfer(
address,
address,
uint256
) internal pure override {
require(false, "Diamond_Dividend_Tracker: No transfers allowed");
}
function withdrawDividend() public pure override {
require(
false,
"Diamond_Dividend_Tracker: withdrawDividend disabled. Use the 'claim' function on the main Diamond contract."
);
}
function excludeFromDividends(address account) external onlyOwner {
excludedFromDividends[account] = true;
_setBalance(account, 0);
if (tokenHoldersMap[account] == true) {
tokenHoldersMap[account] = false;
tokenHoldersCount.decrement();
}
emit ExcludeFromDividends(account);
}
function includeFromDividends(address account, uint256 balance)
external
onlyOwner
{
excludedFromDividends[account] = false;
if (balance >= minimumTokenBalanceForDividends) {
_setBalance(account, balance);
if (tokenHoldersMap[account] == false) {
tokenHoldersMap[account] = true;
tokenHoldersCount.increment();
}
}
emit ExcludeFromDividends(account);
}
function isExcludeFromDividends(address account)
external
view
onlyOwner
returns (bool)
{
return excludedFromDividends[account];
}
function getNumberOfTokenHolders() external view returns (uint256) {
return tokenHoldersCount.current();
}
function setBalance(address payable account, uint256 newBalance)
external
onlyOwner
{
if (excludedFromDividends[account]) {
return;
}
if (newBalance >= minimumTokenBalanceForDividends) {
_setBalance(account, newBalance);
if (tokenHoldersMap[account] == false) {
tokenHoldersMap[account] = true;
tokenHoldersCount.increment();
}
} else {
_setBalance(account, 0);
if (tokenHoldersMap[account] == true) {
tokenHoldersMap[account] = false;
tokenHoldersCount.decrement();
}
}
}
function processAccount(address account, address toAccount)
public
onlyOwner
returns (uint256)
{
uint256 amount = _withdrawDividendOfUser(
payable(account),
payable(toAccount)
);
return amount;
}
}
contract Diamond is ERC20, Ownable {
using SafeMath for uint256;
using Counters for Counters.Counter;
string private constant _name = "Diamond";
string private constant _symbol = "DIAMONDS";
uint8 private constant _decimals = 18;
uint256 private constant _tTotal = 1e12 * 10**18;
IUniswapV2Router02 private uniswapV2Router =
IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
bool private tradingOpen = false;
uint256 private launchBlock = 0;
address private uniswapV2Pair;
IERC20 private MyBagsInstance;
uint256 private minimumMyBagsToken = 1e8 * 10**18;
uint256 private privateSaleTimestamp;
uint256 private publicSaleTimestamp;
mapping(address => bool) private automatedMarketMakerPairs;
mapping(address => bool) public isExcludeFromFee;
mapping(address => bool) public isBot;
uint256 private walletLimitPercentage = 50;
mapping(address => bool) public isExludeFromWalletLimit;
uint256 private baseBuyTax = 10;
uint256 public baseSellTax = 5;
uint256 public sellPercentageOfHolding = 20;
uint256 public minutesIntervalPerSell = 7200 minutes;
mapping(address => uint256) public initialSellTimestamp;
uint256 private autoLP = 27;
uint256 private devFee = 40;
uint256 private marketingFee = 33;
uint256 public minContractTokensToSwap = 2e9 * 10**18;
bool public swapAll = false;
struct MinutesRangeTax {
uint256 from;
uint256 to;
uint256 tax;
}
mapping(address => uint256) public initialBuyTimestamp;
mapping(uint8 => MinutesRangeTax) public minutesRangeTaxes;
uint8 public maxIndexMinutesRange;
address private devWalletAddress;
address private marketingWalletAddress;
DiamondDividendTracker public dividendTracker;
uint256 minimumTokenBalanceForDividends = 10000 * 10**18;
mapping(address => uint256) public lastTransfer;
uint256 public pendingTokensForReward;
uint256 public minRewardTokensToSwap = 10000 * 10**18;
uint256 public pendingEthReward;
struct ClaimedEth {
uint256 ethAmount;
uint256 tokenAmount;
uint256 timestamp;
}
Counters.Counter private claimedHistoryIds;
mapping(uint256 => ClaimedEth) private claimedEthMap;
mapping(address => uint256[]) private userClaimedIds;
event BuyFees(address from, address to, uint256 amountTokens);
event SellFees(address from, address to, uint256 amountTokens);
event AddLiquidity(uint256 amountTokens, uint256 amountEth);
event SwapTokensForEth(uint256 sentTokens, uint256 receivedEth);
event SwapEthForTokens(uint256 sentEth, uint256 receivedTokens);
event DistributeFees(uint256 devEth, uint256 remarketingEth);
event AddRewardPool(uint256 _ethAmount);
event SendDividends(uint256 amount);
event DividendClaimed(
uint256 ethAmount,
uint256 tokenAmount,
address account
);
constructor(
address _devWalletAddress,
address _marketingWalletAddress,
address _myBagsTokenAddress
) ERC20(_name, _symbol) {
devWalletAddress = _devWalletAddress;
marketingWalletAddress = _marketingWalletAddress;
MyBagsInstance = IERC20(_myBagsTokenAddress);
isExcludeFromFee[owner()] = true;
isExcludeFromFee[address(this)] = true;
isExludeFromWalletLimit[owner()] = true;
isExludeFromWalletLimit[address(this)] = true;
isExludeFromWalletLimit[address(uniswapV2Router)] = true;
dividendTracker = new DiamondDividendTracker();
dividendTracker.excludeFromDividends(address(dividendTracker));
dividendTracker.excludeFromDividends(address(this));
dividendTracker.excludeFromDividends(owner());
dividendTracker.excludeFromDividends(address(uniswapV2Router));
minutesRangeTaxes[1].from = 0 minutes;
minutesRangeTaxes[1].to = 7200 minutes;
minutesRangeTaxes[1].tax = 30;
minutesRangeTaxes[2].from = 7200 minutes;
minutesRangeTaxes[2].to = 14400 minutes;
minutesRangeTaxes[2].tax = 25;
minutesRangeTaxes[3].from = 14400 minutes;
minutesRangeTaxes[3].to = 21600 minutes;
minutesRangeTaxes[3].tax = 20;
minutesRangeTaxes[4].from = 21600 minutes;
minutesRangeTaxes[4].to = 28800 minutes;
minutesRangeTaxes[4].tax = 15;
maxIndexMinutesRange = 4;
_mint(owner(), _tTotal);
}
function openTrading(uint256 _launchTime, uint256 _minutesForPrivateSale)
external
onlyOwner
{
require(!tradingOpen, "Diamond: Trading is already open");
require(_launchTime > block.timestamp, "Diamond: Invalid timestamp");
uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
address(this),
uniswapV2Router.WETH()
);
automatedMarketMakerPairs[uniswapV2Pair] = true;
dividendTracker.excludeFromDividends(uniswapV2Pair);
addLiquidity(balanceOf(address(this)), address(this).balance);
IERC20(uniswapV2Pair).approve(
address(uniswapV2Router),
type(uint256).max
);
tradingOpen = true;
privateSaleTimestamp = _launchTime;
publicSaleTimestamp = _launchTime.add(
_minutesForPrivateSale.mul(1 minutes)
);
launchBlock = block.number;
}
function manualSwap() external onlyOwner {
uint256 totalTokens = balanceOf(address(this)).sub(
pendingTokensForReward
);
swapTokensForEth(totalTokens);
}
function manualSend() external onlyOwner {
uint256 totalEth = address(this).balance.sub(pendingEthReward);
uint256 devFeesToSend = totalEth.mul(devFee).div(
uint256(100).sub(autoLP)
);
uint256 marketingFeesToSend = totalEth.mul(marketingFee).div(
uint256(100).sub(autoLP)
);
uint256 remainingEthForFees = totalEth.sub(devFeesToSend).sub(
marketingFeesToSend
);
devFeesToSend = devFeesToSend.add(remainingEthForFees);
sendEthToWallets(devFeesToSend, marketingFeesToSend);
}
function getTax(address _ad) public view returns (uint256) {
uint256 tax = baseSellTax;
for (uint8 x = 1; x <= maxIndexMinutesRange; x++) {
if (
(initialBuyTimestamp[_ad] + minutesRangeTaxes[x].from <=
block.timestamp &&
initialBuyTimestamp[_ad] + minutesRangeTaxes[x].to >=
block.timestamp)
) {
tax = minutesRangeTaxes[x].tax;
return tax;
}
}
return tax;
}
function getTotalDividendsDistributed() external view returns (uint256) {
return dividendTracker.totalDividendsDistributed();
}
function withdrawableDividendOf(address _account)
public
view
returns (uint256)
{
return dividendTracker.withdrawableDividendOf(_account);
}
function dividendTokenBalanceOf(address _account)
public
view
returns (uint256)
{
return dividendTracker.balanceOf(_account);
}
function claim() external {
_claim(payable(msg.sender), false);
}
function reinvest() external {
_claim(payable(msg.sender), true);
}
function _claim(address payable _account, bool _reinvest) private {
uint256 withdrawableAmount = dividendTracker.withdrawableDividendOf(
_account
);
require(
withdrawableAmount > 0,
"Diamond: Claimer has no withdrawable dividend"
);
uint256 ethAmount;
uint256 tokenAmount;
if (!_reinvest) {
ethAmount = dividendTracker.processAccount(_account, _account);
} else {
ethAmount = dividendTracker.processAccount(_account, address(this));
if (ethAmount > 0) {
tokenAmount = swapEthForTokens(ethAmount, _account);
}
}
if (ethAmount > 0) {
claimedHistoryIds.increment();
uint256 hId = claimedHistoryIds.current();
claimedEthMap[hId].ethAmount = ethAmount;
claimedEthMap[hId].tokenAmount = tokenAmount;
claimedEthMap[hId].timestamp = block.timestamp;
userClaimedIds[_account].push(hId);
emit DividendClaimed(ethAmount, tokenAmount, _account);
}
}
function getNumberOfDividendTokenHolders() external view returns (uint256) {
return dividendTracker.getNumberOfTokenHolders();
}
function getAccount(address _account)
public
view
returns (
uint256 withdrawableDividends,
uint256 withdrawnDividends,
uint256 balance
)
{
(withdrawableDividends, withdrawnDividends) = dividendTracker
.getAccount(_account);
return (withdrawableDividends, withdrawnDividends, balanceOf(_account));
}
function decimals() public view virtual override returns (uint8) {
return _decimals;
}
function _transfer(
address _from,
address _to,
uint256 _amount
) internal virtual override {
require(!isBot[_from] && !isBot[_to]);
uint256 transferAmount = _amount;
uint256 prevWalletLimit = walletLimitPercentage;
if (
tradingOpen &&
(automatedMarketMakerPairs[_from] ||
automatedMarketMakerPairs[_to]) &&
!isExcludeFromFee[_from] &&
!isExcludeFromFee[_to]
) {
require(
privateSaleTimestamp <= block.timestamp,
"Diamond: Private and public sale is not open"
);
if (
privateSaleTimestamp <= block.timestamp &&
publicSaleTimestamp > block.timestamp
) {
walletLimitPercentage = 10;
require(
MyBagsInstance.balanceOf(_to) >= minimumMyBagsToken,
"Diamond: Not enough $MyBagsToken"
);
}
transferAmount = takeFees(_from, _to, _amount);
}
if (initialBuyTimestamp[_to] == 0) {
initialBuyTimestamp[_to] = block.timestamp;
}
if (!automatedMarketMakerPairs[_to] && !isExludeFromWalletLimit[_to]) {
uint256 addressBalance = balanceOf(_to).add(transferAmount);
require(
addressBalance <=
totalSupply().mul(walletLimitPercentage).div(10000),
"Diamond: Wallet balance limit reached"
);
}
super._transfer(_from, _to, transferAmount);
walletLimitPercentage = prevWalletLimit;
if (!dividendTracker.isExcludeFromDividends(_from)) {
try
dividendTracker.setBalance(payable(_from), balanceOf(_from))
{} catch {}
}
if (!dividendTracker.isExcludeFromDividends(_to)) {
try
dividendTracker.setBalance(payable(_to), balanceOf(_to))
{} catch {}
}
}
function _setAutomatedMarketMakerPair(address _pair, bool _value) private {
require(
automatedMarketMakerPairs[_pair] != _value,
"Diamond: Automated market maker pair is already set to that value"
);
automatedMarketMakerPairs[_pair] = _value;
if (_value) {
dividendTracker.excludeFromDividends(_pair);
}
}
function setMinimumMyBagsToken(uint256 _minimumMyBagsToken)
external
onlyOwner
{
minimumMyBagsToken = _minimumMyBagsToken;
}
function setExcludeFromFee(address _address, bool _isExludeFromFee)
external
onlyOwner
{
isExcludeFromFee[_address] = _isExludeFromFee;
}
function setExludeFromDividends(
address _address,
bool _isExludeFromDividends
) external onlyOwner {
if (_isExludeFromDividends) {
dividendTracker.excludeFromDividends(_address);
} else {
dividendTracker.includeFromDividends(_address, balanceOf(_address));
}
}
function setExludeFromWalletLimit(
address _address,
bool _isExludeFromWalletLimit
) external onlyOwner {
isExludeFromWalletLimit[_address] = _isExludeFromWalletLimit;
}
function setWalletLimitPercentage(uint256 _percentage) external onlyOwner {
walletLimitPercentage = _percentage;
}
function setTaxes(
uint256 _baseBuyTax,
uint256 _baseSellTax,
uint256 _autoLP,
uint256 _devFee,
uint256 _marketingFee
) external onlyOwner {
require(_baseBuyTax <= 10 && baseSellTax <= 5);
baseBuyTax = _baseBuyTax;
baseSellTax = _baseSellTax;
autoLP = _autoLP;
devFee = _devFee;
marketingFee = _marketingFee;
}
function setMinContractTokensToSwap(uint256 _numToken) public onlyOwner {
minContractTokensToSwap = _numToken;
}
function setMinRewardTokensToSwap(uint256 _numToken) public onlyOwner {
minRewardTokensToSwap = _numToken;
}
function setSwapAll(bool _isWapAll) public onlyOwner {
swapAll = _isWapAll;
}
function setMinutesRangeTax(
uint8 _index,
uint256 _from,
uint256 _to,
uint256 _tax
) external onlyOwner {
minutesRangeTaxes[_index].from = _from.mul(1 minutes);
minutesRangeTaxes[_index].to = _to.mul(1 minutes);
minutesRangeTaxes[_index].tax = _tax;
}
function setMaxIndexMinutesRange(uint8 _maxIndex) external onlyOwner {
maxIndexMinutesRange = _maxIndex;
}
function setPercentageOfHolding(
uint256 _sellPercentageOfHolding,
uint256 _minutesIntervalPerSell
) external onlyOwner {
sellPercentageOfHolding = _sellPercentageOfHolding;
minutesIntervalPerSell = _minutesIntervalPerSell.mul(1 minutes);
}
function setBots(address[] calldata _bots) public onlyOwner {
for (uint256 i = 0; i < _bots.length; i++) {
if (
_bots[i] != uniswapV2Pair &&
_bots[i] != address(uniswapV2Router)
) {
isBot[_bots[i]] = true;
}
}
}
function setWalletAddress(address _devWallet, address _marketingWallet)
external
onlyOwner
{
devWalletAddress = _devWallet;
marketingWalletAddress = _marketingWallet;
}
function takeFees(
address _from,
address _to,
uint256 _amount
) private returns (uint256) {
uint256 fees;
uint256 remainingAmount;
require(
automatedMarketMakerPairs[_from] || automatedMarketMakerPairs[_to],
"Diamond: No market makers found"
);
if (automatedMarketMakerPairs[_from]) {
fees = _amount.mul(baseBuyTax).div(100);
remainingAmount = _amount.sub(fees);
super._transfer(_from, address(this), fees);
emit BuyFees(_from, address(this), fees);
} else {
uint256 totalSellTax;
if (isExcludeByInitialSell(_from, _amount)) {
totalSellTax = baseSellTax;
} else {
totalSellTax = getTax(_from);
}
fees = _amount.mul(totalSellTax).div(100);
uint256 rewardTokens = _amount
.mul(totalSellTax.sub(baseSellTax))
.div(100);
pendingTokensForReward = pendingTokensForReward.add(rewardTokens);
remainingAmount = _amount.sub(fees);
super._transfer(_from, address(this), fees);
uint256 tokensToSwap = balanceOf(address(this)).sub(
pendingTokensForReward
);
if (tokensToSwap > minContractTokensToSwap) {
if (!swapAll) {
tokensToSwap = minContractTokensToSwap;
}
distributeTokensEth(tokensToSwap);
}
if (pendingTokensForReward > minRewardTokensToSwap) {
swapAndSendDividends(pendingTokensForReward);
}
emit SellFees(_from, address(this), fees);
}
return remainingAmount;
}
function distributeTokensEth(uint256 _tokenAmount) private {
uint256 tokensForLiquidity = _tokenAmount.mul(autoLP).div(100);
uint256 halfLiquidity = tokensForLiquidity.div(2);
uint256 tokensForSwap = _tokenAmount.sub(halfLiquidity);
uint256 totalEth = swapTokensForEth(tokensForSwap);
uint256 ethForAddLP = totalEth.mul(autoLP).div(100);
uint256 devFeesToSend = totalEth.mul(devFee).div(100);
uint256 marketingFeesToSend = totalEth.mul(marketingFee).div(100);
uint256 remainingEthForFees = totalEth
.sub(ethForAddLP)
.sub(devFeesToSend)
.sub(marketingFeesToSend);
devFeesToSend = devFeesToSend.add(remainingEthForFees);
sendEthToWallets(devFeesToSend, marketingFeesToSend);
if (halfLiquidity > 0 && ethForAddLP > 0) {
addLiquidity(halfLiquidity, ethForAddLP);
}
}
function sendEthToWallets(uint256 _devFees, uint256 _marketingFees)
private
{
if (_devFees > 0) {
payable(devWalletAddress).transfer(_devFees);
}
if (_marketingFees > 0) {
payable(marketingWalletAddress).transfer(_marketingFees);
}
emit DistributeFees(_devFees, _marketingFees);
}
function swapTokensForEth(uint256 _tokenAmount) private returns (uint256) {
uint256 initialEthBalance = address(this).balance;
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), _tokenAmount);
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
_tokenAmount,
0,
path,
address(this),
block.timestamp
);
uint256 receivedEth = address(this).balance.sub(initialEthBalance);
emit SwapTokensForEth(_tokenAmount, receivedEth);
return receivedEth;
}
function swapEthForTokens(uint256 _ethAmount, address _to)
private
returns (uint256)
{
uint256 initialTokenBalance = balanceOf(address(this));
address[] memory path = new address[](2);
path[0] = uniswapV2Router.WETH();
path[1] = address(this);
uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{
value: _ethAmount
}(0, path, _to, block.timestamp);
uint256 receivedTokens = balanceOf(address(this)).sub(
initialTokenBalance
);
emit SwapEthForTokens(_ethAmount, receivedTokens);
return receivedTokens;
}
function addLiquidity(uint256 _tokenAmount, uint256 _ethAmount) private {
_approve(address(this), address(uniswapV2Router), _tokenAmount);
uniswapV2Router.addLiquidityETH{value: _ethAmount}(
address(this),
_tokenAmount,
0,
0,
owner(),
block.timestamp
);
emit AddLiquidity(_tokenAmount, _ethAmount);
}
function swapAndSendDividends(uint256 _tokenAmount) private {
uint256 dividends = swapTokensForEth(_tokenAmount);
pendingTokensForReward = pendingTokensForReward.sub(_tokenAmount);
uint256 totalEthToSend = dividends.add(pendingEthReward);
(bool success, ) = address(dividendTracker).call{value: totalEthToSend}(
""
);
if (success) {
emit SendDividends(dividends);
} else {
pendingEthReward = pendingEthReward.add(dividends);
}
}
function isExcludeByInitialSell(address _ad, uint256 _tokenAmount)
private
returns (bool)
{
if (
initialSellTimestamp[_ad] + minutesIntervalPerSell <=
block.timestamp
) {
initialSellTimestamp[_ad] = block.timestamp;
if (
_tokenAmount <=
balanceOf(_ad).mul(sellPercentageOfHolding).div(100)
) {
return true;
}
}
return false;
}
function availableContractTokenBalance() public view returns (uint256) {
return balanceOf(address(this)).sub(pendingTokensForReward);
}
function getHistory(
address _account,
uint256 _limit,
uint256 _pageNumber
) external view returns (ClaimedEth[] memory) {
require(_limit > 0 && _pageNumber > 0, "Diamond: Invalid arguments");
uint256 userClaimedCount = userClaimedIds[_account].length;
uint256 end = _pageNumber * _limit;
uint256 start = end - _limit;
require(start < userClaimedCount, "Diamond: Out of range");
uint256 limit = _limit;
if (end > userClaimedCount) {
end = userClaimedCount;
limit = userClaimedCount % _limit;
}
ClaimedEth[] memory myClaimedEth = new ClaimedEth[](limit);
uint256 currentIndex = 0;
for (uint256 i = start; i < end; i++) {
uint256 hId = userClaimedIds[_account][i];
myClaimedEth[currentIndex] = claimedEthMap[hId];
currentIndex += 1;
}
return myClaimedEth;
}
function getHistoryCount(address _account) external view returns (uint256) {
return userClaimedIds[_account].length;
}
receive() external payable {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_devWalletAddress","type":"address"},{"internalType":"address","name":"_marketingWalletAddress","type":"address"},{"internalType":"address","name":"_myBagsTokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountEth","type":"uint256"}],"name":"AddLiquidity","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_ethAmount","type":"uint256"}],"name":"AddRewardPool","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":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"BuyFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"devEth","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"remarketingEth","type":"uint256"}],"name":"DistributeFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"DividendClaimed","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":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"SellFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SendDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sentEth","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"receivedTokens","type":"uint256"}],"name":"SwapEthForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sentTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"receivedEth","type":"uint256"}],"name":"SwapTokensForEth","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"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":[],"name":"availableContractTokenBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseSellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"dividendTokenBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendTracker","outputs":[{"internalType":"contract DiamondDividendTracker","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"getAccount","outputs":[{"internalType":"uint256","name":"withdrawableDividends","type":"uint256"},{"internalType":"uint256","name":"withdrawnDividends","type":"uint256"},{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint256","name":"_limit","type":"uint256"},{"internalType":"uint256","name":"_pageNumber","type":"uint256"}],"name":"getHistory","outputs":[{"components":[{"internalType":"uint256","name":"ethAmount","type":"uint256"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"internalType":"struct Diamond.ClaimedEth[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"getHistoryCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfDividendTokenHolders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_ad","type":"address"}],"name":"getTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDividendsDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"initialBuyTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"initialSellTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludeFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExludeFromWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastTransfer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxIndexMinutesRange","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minContractTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minRewardTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minutesIntervalPerSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"}],"name":"minutesRangeTaxes","outputs":[{"internalType":"uint256","name":"from","type":"uint256"},{"internalType":"uint256","name":"to","type":"uint256"},{"internalType":"uint256","name":"tax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_launchTime","type":"uint256"},{"internalType":"uint256","name":"_minutesForPrivateSale","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingEthReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingTokensForReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reinvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellPercentageOfHolding","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_bots","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isExludeFromFee","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isExludeFromDividends","type":"bool"}],"name":"setExludeFromDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isExludeFromWalletLimit","type":"bool"}],"name":"setExludeFromWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_maxIndex","type":"uint8"}],"name":"setMaxIndexMinutesRange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_numToken","type":"uint256"}],"name":"setMinContractTokensToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_numToken","type":"uint256"}],"name":"setMinRewardTokensToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minimumMyBagsToken","type":"uint256"}],"name":"setMinimumMyBagsToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_index","type":"uint8"},{"internalType":"uint256","name":"_from","type":"uint256"},{"internalType":"uint256","name":"_to","type":"uint256"},{"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"setMinutesRangeTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellPercentageOfHolding","type":"uint256"},{"internalType":"uint256","name":"_minutesIntervalPerSell","type":"uint256"}],"name":"setPercentageOfHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isWapAll","type":"bool"}],"name":"setSwapAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_baseBuyTax","type":"uint256"},{"internalType":"uint256","name":"_baseSellTax","type":"uint256"},{"internalType":"uint256","name":"_autoLP","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devWallet","type":"address"},{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"name":"setWalletLimitPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"withdrawableDividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
6080604052600780546001600160a81b031916737a250d5630b4cf539739df2c5dacb4c659f2488d17905560006008556a52b7d2dcc80cd2e4000000600b556032601155600a6013556005601490815560155562069780601655601b601881905560286019556021601a556b06765c793fa10079d00000009055601c805460ff1916905569021e19e0c9bab24000006022819055602555348015620000a357600080fd5b5060405162005ac038038062005ac0833981016040819052620000c691620007c1565b6040805180820182526007815266111a585b5bdb9960ca1b6020808301918252835180850190945260088452674449414d4f4e445360c01b9084015281519192916200011591600391620006f0565b5080516200012b906004906020840190620006f0565b5050600580546001600160a01b031916339081179091556040519091506000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3601f8054610100600160a81b0319166101006001600160a01b038681169190910291909117909155602080546001600160a01b0319908116858416178255600a80549091168484161790556005805483166000908152600f83526040808220805460ff199081166001908117909255308085528385208054831684179055945487168452601290955281832080548616821790559282528082208054851684179055600754909416815283902080549092161790555162000231906200077f565b604051809103906000f0801580156200024e573d6000803e3d6000fd5b50602180546001600160a01b0319166001600160a01b0392909216918217905560405163031e79db60e41b8152600481018290526331e79db090602401600060405180830381600087803b158015620002a657600080fd5b505af1158015620002bb573d6000803e3d6000fd5b505060215460405163031e79db60e41b81523060048201526001600160a01b0390911692506331e79db09150602401600060405180830381600087803b1580156200030557600080fd5b505af11580156200031a573d6000803e3d6000fd5b50506021546001600160a01b031691506331e79db09050620003446005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b1580156200038657600080fd5b505af11580156200039b573d6000803e3d6000fd5b505060215460075460405163031e79db60e41b81526001600160a01b039182166004820152911692506331e79db09150602401600060405180830381600087803b158015620003e957600080fd5b505af1158015620003fe573d6000803e3d6000fd5b5050601e602081905260007f873299c6a6c39b8b92f01922bb622df4a3236ea2876aac2da76f6c092cf7e98f819055620697807f873299c6a6c39b8b92f01922bb622df4a3236ea2876aac2da76f6c092cf7e9908190557f873299c6a6c39b8b92f01922bb622df4a3236ea2876aac2da76f6c092cf7e991929092557f8a1ea6ccfdf9f988bdc16303c81231f9b192785454b34880c28e5c30362354c591909155620d2f007f8a1ea6ccfdf9f988bdc16303c81231f9b192785454b34880c28e5c30362354c681905560197f8a1ea6ccfdf9f988bdc16303c81231f9b192785454b34880c28e5c30362354c7557f4bbb14a9b8bdd7baf7e45936eef68b1d3b69ec665e4d3d9f22d086627a2b0880556213c6807f4bbb14a9b8bdd7baf7e45936eef68b1d3b69ec665e4d3d9f22d086627a2b088181905560147f4bbb14a9b8bdd7baf7e45936eef68b1d3b69ec665e4d3d9f22d086627a2b0882556004918290527f2eca6469c5988648711d819e241e59ec9e94a879e5d491ce337260f9e754141255621a5e007f2eca6469c5988648711d819e241e59ec9e94a879e5d491ce337260f9e754141355600f7f2eca6469c5988648711d819e241e59ec9e94a879e5d491ce337260f9e754141455601f805460ff191690911790555050600554620005ff906001600160a01b03166c0c9f2c9cd04674edea4000000062000608565b5050506200086e565b6001600160a01b038216620006635760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b80600260008282546200067791906200080b565b90915550506001600160a01b03821660009081526020819052604081208054839290620006a69084906200080b565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620006fe9062000832565b90600052602060002090601f0160209004810192826200072257600085556200076d565b82601f106200073d57805160ff19168380011785556200076d565b828001600101855582156200076d579182015b828111156200076d57825182559160200191906001019062000750565b506200077b9291506200078d565b5090565b6119b9806200410783390190565b5b808211156200077b57600081556001016200078e565b80516001600160a01b0381168114620007bc57600080fd5b919050565b600080600060608486031215620007d757600080fd5b620007e284620007a4565b9250620007f260208501620007a4565b91506200080260408501620007a4565b90509250925092565b600082198211156200082d57634e487b7160e01b600052601160045260246000fd5b500190565b600181811c908216806200084757607f821691505b6020821081036200086857634e487b7160e01b600052602260045260246000fd5b50919050565b613889806200087e6000396000f3fe6080604052600436106103855760003560e01c80638aaa9389116101d1578063b579b29411610102578063e3402c67116100a0578063ec29f4e91161006f578063ec29f4e914610ab4578063f429389014610ae1578063fbcbc0f114610af6578063fdb5a03e14610b1657600080fd5b8063e3402c6714610a31578063e4441f0a14610a47578063e5fc10ed14610a74578063e7a919f914610a9457600080fd5b8063d2971059116100dc578063d297105914610995578063d539be5f146109ab578063dd62ed3e146109cb578063de30aad114610a1157600080fd5b8063b579b2941461094a578063b652ef3b14610960578063ba762ddd1461098057600080fd5b8063a457c2d71161016f578063af9549e011610149578063af9549e0146108ba578063b1fdb11b146108da578063b485430b14610910578063b515566a1461092a57600080fd5b8063a457c2d71461085a578063a8b9d2401461087a578063a9059cbb1461089a57600080fd5b806390677833116101ab57806390677833146107a157806395d89b41146107ce578063963bafa0146107e3578063a2923a0f1461083a57600080fd5b80638aaa9389146107335780638da5cb5b146107535780638e5916b21461077157600080fd5b80634297a7ca116102b657806366cc702611610254578063715018a611610223578063715018a6146106d25780637c4b492e146106e75780638954fb4a146106fd57806389a5c6911461071d57600080fd5b806366cc7026146106525780636843cd84146106725780636973cd091461069257806370a08231146106b257600080fd5b80635b6612ad116102905780635b6612ad146105da5780635b683e66146106075780635fcefa421461061d57806364b0f6531461063d57600080fd5b80634297a7ca146105805780634e71d92d146105b057806351bc3c85146105c557600080fd5b806323b872dd11610323578063313ce567116102fd578063313ce567146104f457806339509351146105165780633bbac579146105365780633e9ffbea1461056657600080fd5b806323b872dd146104875780632c1f5216146104a757806330bb4cff146104df57600080fd5b806312dfbd331161035f57806312dfbd3314610410578063168380131461043257806318160ddd146104525780631c08bc5d1461046757600080fd5b806306fdde03146103915780630866e0e9146103bc578063095ea7b3146103e057600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103a6610b2b565b6040516103b39190613218565b60405180910390f35b3480156103c857600080fd5b506103d260155481565b6040519081526020016103b3565b3480156103ec57600080fd5b506104006103fb366004613285565b610bbd565b60405190151581526020016103b3565b34801561041c57600080fd5b5061043061042b3660046132b1565b610bd7565b005b34801561043e57600080fd5b5061043061044d3660046132ca565b610c0f565b34801561045e57600080fd5b506002546103d2565b34801561047357600080fd5b506104306104823660046132b1565b610c50565b34801561049357600080fd5b506104006104a23660046132ec565b610c7f565b3480156104b357600080fd5b506021546104c7906001600160a01b031681565b6040516001600160a01b0390911681526020016103b3565b3480156104eb57600080fd5b506103d2610ca3565b34801561050057600080fd5b5060125b60405160ff90911681526020016103b3565b34801561052257600080fd5b50610400610531366004613285565b610d16565b34801561054257600080fd5b5061040061055136600461332d565b60106020526000908152604090205460ff1681565b34801561057257600080fd5b50601c546104009060ff1681565b34801561058c57600080fd5b5061040061059b36600461332d565b60126020526000908152604090205460ff1681565b3480156105bc57600080fd5b50610430610d55565b3480156105d157600080fd5b50610430610d62565b3480156105e657600080fd5b506103d26105f536600461332d565b60236020526000908152604090205481565b34801561061357600080fd5b506103d260145481565b34801561062957600080fd5b5061043061063836600461334a565b610db2565b34801561064957600080fd5b506103d2610e10565b34801561065e57600080fd5b5061043061066d3660046132b1565b610e5a565b34801561067e57600080fd5b506103d261068d36600461332d565b610e89565b34801561069e57600080fd5b506104306106ad366004613385565b610ef9565b3480156106be57600080fd5b506103d26106cd36600461332d565b610f5b565b3480156106de57600080fd5b50610430610f76565b3480156106f357600080fd5b506103d260245481565b34801561070957600080fd5b506104306107183660046133cc565b610fea565b34801561072957600080fd5b506103d2601b5481565b34801561073f57600080fd5b5061043061074e3660046132b1565b6110ca565b34801561075f57600080fd5b506005546001600160a01b03166104c7565b34801561077d57600080fd5b5061040061078c36600461332d565b600f6020526000908152604090205460ff1681565b3480156107ad57600080fd5b506103d26107bc36600461332d565b601d6020526000908152604090205481565b3480156107da57600080fd5b506103a66110f9565b3480156107ef57600080fd5b5061081f6107fe366004613410565b601e6020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016103b3565b34801561084657600080fd5b5061043061085536600461342b565b611108565b34801561086657600080fd5b50610400610875366004613285565b611183565b34801561088657600080fd5b506103d261089536600461332d565b611215565b3480156108a657600080fd5b506104006108b5366004613285565b611248565b3480156108c657600080fd5b506104306108d53660046133cc565b611256565b3480156108e657600080fd5b506103d26108f536600461332d565b6001600160a01b031660009081526029602052604090205490565b34801561091c57600080fd5b50601f546105049060ff1681565b34801561093657600080fd5b50610430610945366004613464565b6112ab565b34801561095657600080fd5b506103d260165481565b34801561096c57600080fd5b506103d261097b36600461332d565b6113d6565b34801561098c57600080fd5b506103d26114a4565b3480156109a157600080fd5b506103d260265481565b3480156109b757600080fd5b506104306109c6366004613410565b6114b5565b3480156109d757600080fd5b506103d26109e6366004613385565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a1d57600080fd5b50610430610a2c3660046134d9565b6114f5565b348015610a3d57600080fd5b506103d260255481565b348015610a5357600080fd5b506103d2610a6236600461332d565b60176020526000908152604090205481565b348015610a8057600080fd5b50610430610a8f3660046133cc565b611532565b348015610aa057600080fd5b50610430610aaf3660046132ca565b611587565b348015610ac057600080fd5b50610ad4610acf3660046134f6565b61191d565b6040516103b3919061352b565b348015610aed57600080fd5b50610430611b4e565b348015610b0257600080fd5b5061081f610b1136600461332d565b611c1b565b348015610b2257600080fd5b50610430611cac565b606060038054610b3a90613584565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6690613584565b8015610bb35780601f10610b8857610100808354040283529160200191610bb3565b820191906000526020600020905b815481529060010190602001808311610b9657829003601f168201915b5050505050905090565b600033610bcb818585611cb7565b60019150505b92915050565b6005546001600160a01b03163314610c0a5760405162461bcd60e51b8152600401610c01906135be565b60405180910390fd5b601b55565b6005546001600160a01b03163314610c395760405162461bcd60e51b8152600401610c01906135be565b6015829055610c4981603c611ddb565b6016555050565b6005546001600160a01b03163314610c7a5760405162461bcd60e51b8152600401610c01906135be565b602555565b600033610c8d858285611dee565b610c98858585611e7a565b506001949350505050565b602154604080516342d359d760e11b815290516000926001600160a01b0316916385a6b3ae9160048083019260209291908290030181865afa158015610ced573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1191906135f3565b905090565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190610bcb9082908690610d50908790613622565b611cb7565b610d603360006123b1565b565b6005546001600160a01b03163314610d8c5760405162461bcd60e51b8152600401610c01906135be565b6000610da3602454610d9d30610f5b565b9061264c565b9050610dae81612658565b5050565b6005546001600160a01b03163314610ddc5760405162461bcd60e51b8152600401610c01906135be565b600a8511158015610df05750600560145411155b610df957600080fd5b601394909455601492909255601855601955601a55565b602154604080516304ddf6ef60e11b815290516000926001600160a01b0316916309bbedde9160048083019260209291908290030181865afa158015610ced573d6000803e3d6000fd5b6005546001600160a01b03163314610e845760405162461bcd60e51b8152600401610c01906135be565b600b55565b6021546040516370a0823160e01b81526001600160a01b03838116600483015260009216906370a08231906024015b602060405180830381865afa158015610ed5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd191906135f3565b6005546001600160a01b03163314610f235760405162461bcd60e51b8152600401610c01906135be565b601f8054610100600160a81b0319166101006001600160a01b0394851602179055602080546001600160a01b03191691909216179055565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610fa05760405162461bcd60e51b8152600401610c01906135be565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146110145760405162461bcd60e51b8152600401610c01906135be565b801561107e5760215460405163031e79db60e41b81526001600160a01b038481166004830152909116906331e79db0906024015b600060405180830381600087803b15801561106257600080fd5b505af1158015611076573d6000803e3d6000fd5b505050505050565b6021546001600160a01b03166318c18adb8361109981610f5b565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401611048565b6005546001600160a01b031633146110f45760405162461bcd60e51b8152600401610c01906135be565b601155565b606060048054610b3a90613584565b6005546001600160a01b031633146111325760405162461bcd60e51b8152600401610c01906135be565b61113d83603c611ddb565b60ff85166000908152601e602052604090205561115b82603c611ddb565b60ff9094166000908152601e6020526040902060018101949094556002909301929092555050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156112085760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c01565b610c988286868403611cb7565b6021546040516302a2e74960e61b81526001600160a01b038381166004830152600092169063a8b9d24090602401610eb8565b600033610bcb818585611e7a565b6005546001600160a01b031633146112805760405162461bcd60e51b8152600401610c01906135be565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112d55760405162461bcd60e51b8152600401610c01906135be565b60005b818110156113d1576009546001600160a01b03168383838181106112fe576112fe61363a565b9050602002016020810190611313919061332d565b6001600160a01b03161415801561136457506007546001600160a01b03168383838181106113435761134361363a565b9050602002016020810190611358919061332d565b6001600160a01b031614155b156113bf576001601060008585858181106113815761138161363a565b9050602002016020810190611396919061332d565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b806113c981613650565b9150506112d8565b505050565b60145460009060015b601f5460ff9081169082161161149d5760ff81166000908152601e60209081526040808320546001600160a01b0388168452601d90925290912054429161142591613622565b1115801561146a575060ff81166000908152601e60209081526040808320600101546001600160a01b0388168452601d90925290912054429161146791613622565b10155b1561148b5760ff166000908152601e60205260409020600201549392505050565b8061149581613669565b9150506113df565b5092915050565b6000610d11602454610d9d30610f5b565b6005546001600160a01b031633146114df5760405162461bcd60e51b8152600401610c01906135be565b601f805460ff191660ff92909216919091179055565b6005546001600160a01b0316331461151f5760405162461bcd60e51b8152600401610c01906135be565b601c805460ff1916911515919091179055565b6005546001600160a01b0316331461155c5760405162461bcd60e51b8152600401610c01906135be565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146115b15760405162461bcd60e51b8152600401610c01906135be565b600754600160a01b900460ff161561160b5760405162461bcd60e51b815260206004820181905260248201527f4469616d6f6e643a2054726164696e6720697320616c7265616479206f70656e6044820152606401610c01565b42821161165a5760405162461bcd60e51b815260206004820152601a60248201527f4469616d6f6e643a20496e76616c69642074696d657374616d700000000000006044820152606401610c01565b600760009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d19190613688565b6001600160a01b031663c9c6539630600760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611733573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117579190613688565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156117a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c89190613688565b600980546001600160a01b0319166001600160a01b0392831690811782556000908152600e602052604090819020805460ff191660011790556021549154905163031e79db60e41b815290831660048201529116906331e79db090602401600060405180830381600087803b15801561184057600080fd5b505af1158015611854573d6000803e3d6000fd5b5050505061186a61186430610f5b565b4761280d565b60095460075460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156118c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e491906136a5565b506007805460ff60a01b1916600160a01b179055600c82905561191261190b82603c611ddb565b839061291c565b600d55505043600855565b606060008311801561192f5750600082115b61197b5760405162461bcd60e51b815260206004820152601a60248201527f4469616d6f6e643a20496e76616c696420617267756d656e74730000000000006044820152606401610c01565b6001600160a01b0384166000908152602960205260408120549061199f85856136c2565b905060006119ad86836136e1565b90508281106119f65760405162461bcd60e51b81526020600482015260156024820152744469616d6f6e643a204f7574206f662072616e676560581b6044820152606401610c01565b8583831115611a0f57839250611a0c878461370e565b90505b60008167ffffffffffffffff811115611a2a57611a2a613722565b604051908082528060200260200182016040528015611a7f57816020015b611a6c60405180606001604052806000815260200160008152602001600081525090565b815260200190600190039081611a485790505b5090506000835b85811015611b3f576001600160a01b038b166000908152602960205260408120805483908110611ab857611ab861363a565b90600052602060002001549050602860008281526020019081526020016000206040518060600160405290816000820154815260200160018201548152602001600282015481525050848481518110611b1357611b1361363a565b6020908102919091010152611b29600184613622565b9250508080611b3790613650565b915050611a86565b50909998505050505050505050565b6005546001600160a01b03163314611b785760405162461bcd60e51b8152600401610c01906135be565b6000611b8f6026544761264c90919063ffffffff16565b90506000611bc0611bac601854606461264c90919063ffffffff16565b601954611bba908590611ddb565b90612928565b90506000611beb611bdd601854606461264c90919063ffffffff16565b601a54611bba908690611ddb565b90506000611bfd82610d9d868661264c565b9050611c09838261291c565b9250611c158383612934565b50505050565b60215460405163fbcbc0f160e01b81526001600160a01b038381166004830152600092839283929091169063fbcbc0f1906024016040805180830381865afa158015611c6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8f9190613738565b90935091508282611c9f86610f5b565b9250925092509193909250565b610d603360016123b1565b6001600160a01b038316611d195760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c01565b6001600160a01b038216611d7a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c01565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000611de782846136c2565b9392505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114611c155781811015611e6d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610c01565b611c158484848403611cb7565b6001600160a01b03831660009081526010602052604090205460ff16158015611ebc57506001600160a01b03821660009081526010602052604090205460ff16155b611ec557600080fd5b601154600754829190600160a01b900460ff168015611f1e57506001600160a01b0385166000908152600e602052604090205460ff1680611f1e57506001600160a01b0384166000908152600e602052604090205460ff165b8015611f4357506001600160a01b0385166000908152600f602052604090205460ff16155b8015611f6857506001600160a01b0384166000908152600f602052604090205460ff16155b156120bf5742600c541115611fd45760405162461bcd60e51b815260206004820152602c60248201527f4469616d6f6e643a205072697661746520616e64207075626c69632073616c6560448201526b1034b9903737ba1037b832b760a11b6064820152608401610c01565b42600c5411158015611fe7575042600d54115b156120b157600a6011819055600b5490546040516370a0823160e01b81526001600160a01b038781166004830152909116906370a0823190602401602060405180830381865afa15801561203f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206391906135f3565b10156120b15760405162461bcd60e51b815260206004820181905260248201527f4469616d6f6e643a204e6f7420656e6f75676820244d7942616773546f6b656e6044820152606401610c01565b6120bc8585856129f2565b91505b6001600160a01b0384166000908152601d602052604081205490036120fa576001600160a01b0384166000908152601d602052604090204290555b6001600160a01b0384166000908152600e602052604090205460ff1615801561213c57506001600160a01b03841660009081526012602052604090205460ff16155b156121d25760006121568361215087610f5b565b9061291c565b9050612173612710611bba60115461216d60025490565b90611ddb565b8111156121d05760405162461bcd60e51b815260206004820152602560248201527f4469616d6f6e643a2057616c6c65742062616c616e6365206c696d69742072656044820152641858da195960da1b6064820152608401610c01565b505b6121dd858584612c4c565b6011819055602154604051631b4a89ab60e11b81526001600160a01b03878116600483015290911690633695135690602401602060405180830381865afa15801561222c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225091906136a5565b6122c8576021546001600160a01b031663e30443bc8661226f81610f5b565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156122b557600080fd5b505af19250505080156122c6575060015b505b602154604051631b4a89ab60e11b81526001600160a01b03868116600483015290911690633695135690602401602060405180830381865afa158015612312573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233691906136a5565b6123aa576021546001600160a01b031663e30443bc8561235581610f5b565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561239b57600080fd5b505af192505050801561107657505b5050505050565b6021546040516302a2e74960e61b81526001600160a01b038481166004830152600092169063a8b9d24090602401602060405180830381865afa1580156123fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242091906135f3565b9050600081116124885760405162461bcd60e51b815260206004820152602d60248201527f4469616d6f6e643a20436c61696d657220686173206e6f20776974686472617760448201526c18589b1948191a5d9a59195b99609a1b6064820152608401610c01565b6000808361250e576021546040516352b5f81d60e01b81526001600160a01b03878116600483018190526024830152909116906352b5f81d906044016020604051808303816000875af11580156124e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250791906135f3565b9150612599565b6021546040516352b5f81d60e01b81526001600160a01b038781166004830152306024830152909116906352b5f81d906044016020604051808303816000875af1158015612560573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258491906135f3565b91508115612599576125968286612e1a565b90505b81156123aa576125ad602780546001019055565b60006125b860275490565b60008181526028602090815260408083208781556001808201889055426002909201919091556001600160a01b038b1680855260298452828520805492830181558552938390200184905580518781529182018690528101919091529091507f67dd3d116bf53e0ddda53bb148a5fdc129854e1c507c0eeda9190049a9bbc84f9060600160405180910390a1505050505050565b6000611de782846136e1565b60408051600280825260608201835260009247928492909160208301908036833701905050905030816000815181106126935761269361363a565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156126ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127109190613688565b816001815181106127235761272361363a565b6001600160a01b0392831660209182029290920101526007546127499130911686611cb7565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac947906127829087906000908690309042906004016137a0565b600060405180830381600087803b15801561279c57600080fd5b505af11580156127b0573d6000803e3d6000fd5b5050505060006127c9834761264c90919063ffffffff16565b60408051878152602081018390529192507f4a6c12eb4e479a4ea28c8acad8efde466ef9bf69cf473501dd76865234496273910160405180910390a1949350505050565b6007546128259030906001600160a01b031684611cb7565b6007546001600160a01b031663f305d71982308560008061284e6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156128b6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128db91906137dc565b505060408051848152602081018490527fcb1652de9aeec38545fc281847b3dbfc89aab56dfa907b1ab68466f602c36fb49250015b60405180910390a15050565b6000611de78284613622565b6000611de7828461380a565b811561297a57601f546040516101009091046001600160a01b0316906108fc8415029084906000818181858888f19350505050158015612978573d6000803e3d6000fd5b505b80156129bc576020546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156129ba573d6000803e3d6000fd5b505b60408051838152602081018390527f916ad8171ef8c567c7790377a142f0200f9565940680c06e30dd105cfd9249689101612910565b6001600160a01b0383166000908152600e60205260408120548190819060ff1680612a3557506001600160a01b0385166000908152600e602052604090205460ff165b612a815760405162461bcd60e51b815260206004820152601f60248201527f4469616d6f6e643a204e6f206d61726b6574206d616b65727320666f756e64006044820152606401610c01565b6001600160a01b0386166000908152600e602052604090205460ff1615612b2357612abc6064611bba60135487611ddb90919063ffffffff16565b9150612ac8848361264c565b9050612ad5863084612c4c565b604080516001600160a01b03881681523060208201529081018390527f6b0b46d0273ce53f1de696d2100b35dd3a405dcecbcbeede66215d858d5c401d9060600160405180910390a1612c43565b6000612b2f8786612fcc565b15612b3d5750601454612b49565b612b46876113d6565b90505b612b586064611bba8784611ddb565b92506000612b806064611bba612b796014548661264c90919063ffffffff16565b8990611ddb565b602454909150612b90908261291c565b602455612b9d868561264c565b9250612baa883086612c4c565b6000612bbb602454610d9d30610f5b565b9050601b54811115612bdf57601c5460ff16612bd65750601b545b612bdf81613044565b6025546024541115612bf657612bf660245461313a565b604080516001600160a01b038b1681523060208201529081018690527f4ab5e0df8ff1605133dbdd1b8e3f52edb9539abe64595f6f70b30d2fea7f204a9060600160405180910390a15050505b95945050505050565b6001600160a01b038316612cb05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c01565b6001600160a01b038216612d125760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c01565b6001600160a01b03831660009081526020819052604090205481811015612d8a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610c01565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612dc1908490613622565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e0d91815260200190565b60405180910390a3611c15565b600080612e2630610f5b565b60408051600280825260608201835292935060009290916020830190803683375050600754604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015612e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb99190613688565b81600081518110612ecc57612ecc61363a565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110612f0057612f0061363a565b6001600160a01b03928316602091820292909201015260075460405163b6f9de9560e01b815291169063b6f9de95908790612f469060009086908a90429060040161381e565b6000604051808303818588803b158015612f5f57600080fd5b505af1158015612f73573d6000803e3d6000fd5b50505050506000612f8783610d9d30610f5b565b60408051888152602081018390529192507f2d5c8efb676a77fc04b6b50a19f6ccbf08ee66df0202de33576485f1f77b4b69910160405180910390a195945050505050565b6016546001600160a01b03831660009081526017602052604081205490914291612ff69190613622565b1161303b576001600160a01b038316600090815260176020526040902042905560155461302d90606490611bba9061216d87610f5b565b821161303b57506001610bd1565b50600092915050565b60006130606064611bba60185485611ddb90919063ffffffff16565b9050600061306f826002612928565b9050600061307d848361264c565b9050600061308a82612658565b905060006130a86064611bba60185485611ddb90919063ffffffff16565b905060006130c66064611bba60195486611ddb90919063ffffffff16565b905060006130e46064611bba601a5487611ddb90919063ffffffff16565b905060006130f882610d9d8581898961264c565b9050613104838261291c565b92506131108383612934565b6000871180156131205750600084115b1561312f5761312f878561280d565b505050505050505050565b600061314582612658565b602454909150613155908361264c565b60245560265460009061316990839061291c565b6021546040519192506000916001600160a01b039091169083908381818185875af1925050503d80600081146131bb576040519150601f19603f3d011682016040523d82523d6000602084013e6131c0565b606091505b505090508015613202576040518381527fb0cc2628d6d644cf6be9d8110e142297ac910d6d8026d795a99f272fd9ad60b19060200160405180910390a1611c15565b60265461320f908461291c565b60265550505050565b600060208083528351808285015260005b8181101561324557858101830151858201604001528201613229565b81811115613257576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461328257600080fd5b50565b6000806040838503121561329857600080fd5b82356132a38161326d565b946020939093013593505050565b6000602082840312156132c357600080fd5b5035919050565b600080604083850312156132dd57600080fd5b50508035926020909101359150565b60008060006060848603121561330157600080fd5b833561330c8161326d565b9250602084013561331c8161326d565b929592945050506040919091013590565b60006020828403121561333f57600080fd5b8135611de78161326d565b600080600080600060a0868803121561336257600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806040838503121561339857600080fd5b82356133a38161326d565b915060208301356133b38161326d565b809150509250929050565b801515811461328257600080fd5b600080604083850312156133df57600080fd5b82356133ea8161326d565b915060208301356133b3816133be565b803560ff8116811461340b57600080fd5b919050565b60006020828403121561342257600080fd5b611de7826133fa565b6000806000806080858703121561344157600080fd5b61344a856133fa565b966020860135965060408601359560600135945092505050565b6000806020838503121561347757600080fd5b823567ffffffffffffffff8082111561348f57600080fd5b818501915085601f8301126134a357600080fd5b8135818111156134b257600080fd5b8660208260051b85010111156134c757600080fd5b60209290920196919550909350505050565b6000602082840312156134eb57600080fd5b8135611de7816133be565b60008060006060848603121561350b57600080fd5b83356135168161326d565b95602085013595506040909401359392505050565b602080825282518282018190526000919060409081850190868401855b828110156135775781518051855286810151878601528501518585015260609093019290850190600101613548565b5091979650505050505050565b600181811c9082168061359857607f821691505b6020821081036135b857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561360557600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156136355761363561360c565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600182016136625761366261360c565b5060010190565b600060ff821660ff810361367f5761367f61360c565b60010192915050565b60006020828403121561369a57600080fd5b8151611de78161326d565b6000602082840312156136b757600080fd5b8151611de7816133be565b60008160001904831182151516156136dc576136dc61360c565b500290565b6000828210156136f3576136f361360c565b500390565b634e487b7160e01b600052601260045260246000fd5b60008261371d5761371d6136f8565b500690565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561374b57600080fd5b505080516020909101519092909150565b600081518084526020808501945080840160005b838110156137955781516001600160a01b031687529582019590820190600101613770565b509495945050505050565b85815284602082015260a0604082015260006137bf60a083018661375c565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156137f157600080fd5b8351925060208401519150604084015190509250925092565b600082613819576138196136f8565b500490565b848152608060208201526000613837608083018661375c565b6001600160a01b0394909416604083015250606001529291505056fea26469706673582212202e540b5a3e7dcb0f75c128cf2474288c27365e453f8194004876824ba30e81e864736f6c634300080d003360a06040523480156200001157600080fd5b5060408051808201825260188082527f4469616d6f6e645f4469766964656e645f547261636b65720000000000000000602080840182815285518087019096529285528401528151919291839183916200006e91600391620000df565b50805162000084906004906020840190620000df565b5050600980546001600160a01b03191633908117909155604051909350600092507f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091508290a369021e19e0c9bab2400000608052620001c1565b828054620000ed9062000185565b90600052602060002090601f0160209004810192826200011157600085556200015c565b82601f106200012c57805160ff19168380011785556200015c565b828001600101855582156200015c579182015b828111156200015c5782518255916020019190600101906200013f565b506200016a9291506200016e565b5090565b5b808211156200016a57600081556001016200016f565b600181811c908216806200019a57607f821691505b602082108103620001bb57634e487b7160e01b600052602260045260246000fd5b50919050565b6080516117ce620001eb6000396000818161051c0152818161077d0152610cb101526117ce6000f3fe6080604052600436106101c65760003560e01c80636a474002116100f7578063a457c2d711610095578063be10b61411610064578063be10b6141461050a578063dd62ed3e1461053e578063e30443bc14610584578063fbcbc0f1146105a457600080fd5b8063a457c2d714610474578063a8b9d24014610494578063a9059cbb146104b4578063aafd847a146104d457600080fd5b806385a6b3ae116100d157806385a6b3ae146104015780638da5cb5b1461041757806391b89fba1461043f57806395d89b411461045f57600080fd5b80636a474002146103a157806370a08231146103b6578063715018a6146103ec57600080fd5b806327ce014711610164578063369513561161013e578063369513561461031157806339509351146103315780634e7b827f1461035157806352b5f81d1461038157600080fd5b806327ce0147146102b5578063313ce567146102d557806331e79db0146102f157600080fd5b806309bbedde116101a057806309bbedde1461023d57806318160ddd1461026057806318c18adb1461027557806323b872dd1461029557600080fd5b806303c83302146101da57806306fdde03146101e2578063095ea7b31461020d57600080fd5b366101d5576101d36105d9565b005b600080fd5b6101d36105d9565b3480156101ee57600080fd5b506101f761066c565b60405161020491906114f3565b60405180910390f35b34801561021957600080fd5b5061022d610228366004611560565b6106fe565b6040519015158152602001610204565b34801561024957600080fd5b50610252610718565b604051908152602001610204565b34801561026c57600080fd5b50600254610252565b34801561028157600080fd5b506101d3610290366004611560565b610728565b3480156102a157600080fd5b5061022d6102b036600461158c565b610839565b3480156102c157600080fd5b506102526102d03660046115cd565b61085d565b3480156102e157600080fd5b5060405160128152602001610204565b3480156102fd57600080fd5b506101d361030c3660046115cd565b6108b9565b34801561031d57600080fd5b5061022d61032c3660046115cd565b610997565b34801561033d57600080fd5b5061022d61034c366004611560565b6109e3565b34801561035d57600080fd5b5061022d61036c3660046115cd565b600d6020526000908152604090205460ff1681565b34801561038d57600080fd5b5061025261039c3660046115ea565b610a22565b3480156103ad57600080fd5b506101d3610a63565b3480156103c257600080fd5b506102526103d13660046115cd565b6001600160a01b031660009081526020819052604090205490565b3480156103f857600080fd5b506101d3610b0b565b34801561040d57600080fd5b5061025260085481565b34801561042357600080fd5b506009546040516001600160a01b039091168152602001610204565b34801561044b57600080fd5b5061025261045a3660046115cd565b610b7f565b34801561046b57600080fd5b506101f7610b8a565b34801561048057600080fd5b5061022d61048f366004611560565b610b99565b3480156104a057600080fd5b506102526104af3660046115cd565b610c2b565b3480156104c057600080fd5b5061022d6104cf366004611560565b610c57565b3480156104e057600080fd5b506102526104ef3660046115cd565b6001600160a01b031660009081526007602052604090205490565b34801561051657600080fd5b506102527f000000000000000000000000000000000000000000000000000000000000000081565b34801561054a57600080fd5b506102526105593660046115ea565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561059057600080fd5b506101d361059f366004611560565b610c65565b3480156105b057600080fd5b506105c46105bf3660046115cd565b610d93565b60408051928352602083019190915201610204565b60006105e460025490565b116105ee57600080fd5b341561066a5761062161060060025490565b61060e34600160801b610dc0565b6106189190611639565b60055490610dd3565b60055560405134815233907fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d784541165119060200160405180910390a26008546106669034610dd3565b6008555b565b60606003805461067b9061165b565b80601f01602080910402602001604051908101604052809291908181526020018280546106a79061165b565b80156106f45780601f106106c9576101008083540402835291602001916106f4565b820191906000526020600020905b8154815290600101906020018083116106d757829003601f168201915b5050505050905090565b60003361070c818585610ddf565b60019150505b92915050565b6000610723600b5490565b905090565b6009546001600160a01b0316331461075b5760405162461bcd60e51b815260040161075290611695565b60405180910390fd5b6001600160a01b0382166000908152600d60205260409020805460ff191690557f00000000000000000000000000000000000000000000000000000000000000008110610801576107ac8282610e43565b6001600160a01b0382166000908152600c602052604081205460ff1615159003610801576001600160a01b0382166000908152600c60205260409020805460ff19166001179055610801600b80546001019055565b6040516001600160a01b038316907fa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b2590600090a25050565b600033610847858285610ea2565b610852858585610f2e565b506001949350505050565b6001600160a01b03811660009081526006602090815260408083205491839052822054600554600160801b926108af926108aa926108a49161089f9190610dc0565b610f8d565b90610ffb565b611007565b6107129190611639565b6009546001600160a01b031633146108e35760405162461bcd60e51b815260040161075290611695565b6001600160a01b0381166000908152600d60205260408120805460ff19166001179055610911908290610e43565b6001600160a01b0381166000908152600c602052604090205460ff161515600103610960576001600160a01b0381166000908152600c60205260409020805460ff19169055610960600b611059565b6040516001600160a01b038216907fa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b2590600090a250565b6009546000906001600160a01b031633146109c45760405162461bcd60e51b815260040161075290611695565b506001600160a01b03166000908152600d602052604090205460ff1690565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061070c9082908690610a1d9087906116ca565b610ddf565b6009546000906001600160a01b03163314610a4f5760405162461bcd60e51b815260040161075290611695565b6000610a5b84846110b0565b949350505050565b60405162461bcd60e51b815260206004820152606b60248201527f4469616d6f6e645f4469766964656e645f547261636b65723a2077697468647260448201527f61774469766964656e642064697361626c65642e20557365207468652027636c60648201527f61696d272066756e6374696f6e206f6e20746865206d61696e204469616d6f6e60848201526a321031b7b73a3930b1ba1760a91b60a482015260c401610752565b6009546001600160a01b03163314610b355760405162461bcd60e51b815260040161075290611695565b6009546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600980546001600160a01b0319169055565b600061071282610c2b565b60606004805461067b9061165b565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610c1e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610752565b6108528286868403610ddf565b6001600160a01b03811660009081526007602052604081205461071290610c518461085d565b90611206565b60003361070c818585610f2e565b6009546001600160a01b03163314610c8f5760405162461bcd60e51b815260040161075290611695565b6001600160a01b0382166000908152600d602052604090205460ff16610d35577f00000000000000000000000000000000000000000000000000000000000000008110610d3957610ce08282610e43565b6001600160a01b0382166000908152600c602052604081205460ff1615159003610d35576001600160a01b0382166000908152600c60205260409020805460ff19166001179055610d35600b80546001019055565b5050565b610d44826000610e43565b6001600160a01b0382166000908152600c602052604090205460ff161515600103610d35576001600160a01b0382166000908152600c60205260409020805460ff19169055610d35600b611059565b600080610d9f83610c2b565b6001600160a01b039093166000908152600760205260409020549293915050565b6000610dcc82846116e2565b9392505050565b6000610dcc82846116ca565b60405162461bcd60e51b815260206004820152602e60248201527f4469616d6f6e645f4469766964656e645f547261636b65723a204e6f2061707060448201526d1c9bdd985b1cc8185b1b1bddd95960921b6064820152608401610752565b505050565b6001600160a01b03821660009081526020819052604090205480821115610e82576000610e708383611206565b9050610e7c8482611212565b50505050565b80821015610e3e576000610e968284611206565b9050610e7c8482611276565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610e7c5781811015610f215760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610752565b610e7c8484848403610ddf565b60405162461bcd60e51b815260206004820152602e60248201527f4469616d6f6e645f4469766964656e645f547261636b65723a204e6f2074726160448201526d1b9cd9995c9cc8185b1b1bddd95960921b6064820152608401610752565b60006001600160ff1b03821115610ff75760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401610752565b5090565b6000610dcc8284611701565b600080821215610ff75760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f7369746976656044820152606401610752565b8054806110a85760405162461bcd60e51b815260206004820152601b60248201527f436f756e7465723a2064656372656d656e74206f766572666c6f7700000000006044820152606401610752565b600019019055565b6000806110bc84610c2b565b905080156111fc576001600160a01b0384166000908152600760205260409020546110e79082610dd3565b6001600160a01b038516600081815260076020526040908190209290925590517feb063efb53b3790d2bc15284b59af7544466c8787c2883321ee27095647911b69061114890849087909182526001600160a01b0316602082015260400190565b60405180910390a26000836001600160a01b03168260405160006040518083038185875af1925050503d806000811461119d576040519150601f19603f3d011682016040523d82523d6000602084013e6111a2565b606091505b50509050806111f4576001600160a01b0385166000908152600760205260409020546111ce9083611206565b6001600160a01b0386166000908152600760205260408120919091559250610712915050565b509050610712565b5060009392505050565b6000610dcc8284611742565b61121c82826112ba565b61125661123761089f83600554610dc090919063ffffffff16565b6001600160a01b03841660009081526006602052604090205490611399565b6001600160a01b0390921660009081526006602052604090209190915550565b61128082826113a5565b61125661129b61089f83600554610dc090919063ffffffff16565b6001600160a01b03841660009081526006602052604090205490610ffb565b6001600160a01b0382166113105760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610752565b806002600082825461132291906116ca565b90915550506001600160a01b0382166000908152602081905260408120805483929061134f9084906116ca565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000610dcc8284611759565b6001600160a01b0382166114055760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610752565b6001600160a01b038216600090815260208190526040902054818110156114795760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610752565b6001600160a01b03831660009081526020819052604081208383039055600280548492906114a8908490611742565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b600060208083528351808285015260005b8181101561152057858101830151858201604001528201611504565b81811115611532576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461155d57600080fd5b50565b6000806040838503121561157357600080fd5b823561157e81611548565b946020939093013593505050565b6000806000606084860312156115a157600080fd5b83356115ac81611548565b925060208401356115bc81611548565b929592945050506040919091013590565b6000602082840312156115df57600080fd5b8135610dcc81611548565b600080604083850312156115fd57600080fd5b823561160881611548565b9150602083013561161881611548565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b60008261165657634e487b7160e01b600052601260045260246000fd5b500490565b600181811c9082168061166f57607f821691505b60208210810361168f57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082198211156116dd576116dd611623565b500190565b60008160001904831182151516156116fc576116fc611623565b500290565b600080821280156001600160ff1b038490038513161561172357611723611623565b600160ff1b839003841281161561173c5761173c611623565b50500190565b60008282101561175457611754611623565b500390565b60008083128015600160ff1b85018412161561177757611777611623565b6001600160ff1b038401831381161561179257611792611623565b5050039056fea2646970667358221220a1a3e832f086de6cb61f3b31813c5ae482d8dd06bf6b057ed57fae724de6effc64736f6c634300080d00330000000000000000000000004f7a3ed9c0f94058174ee767a95c3055453bdfa3000000000000000000000000840b69f38634860897f925cd9d85b860a59c088a000000000000000000000000e8f3ac3f57ae08d1c1f12233dee069e5b84cb7d8
Deployed Bytecode
0x6080604052600436106103855760003560e01c80638aaa9389116101d1578063b579b29411610102578063e3402c67116100a0578063ec29f4e91161006f578063ec29f4e914610ab4578063f429389014610ae1578063fbcbc0f114610af6578063fdb5a03e14610b1657600080fd5b8063e3402c6714610a31578063e4441f0a14610a47578063e5fc10ed14610a74578063e7a919f914610a9457600080fd5b8063d2971059116100dc578063d297105914610995578063d539be5f146109ab578063dd62ed3e146109cb578063de30aad114610a1157600080fd5b8063b579b2941461094a578063b652ef3b14610960578063ba762ddd1461098057600080fd5b8063a457c2d71161016f578063af9549e011610149578063af9549e0146108ba578063b1fdb11b146108da578063b485430b14610910578063b515566a1461092a57600080fd5b8063a457c2d71461085a578063a8b9d2401461087a578063a9059cbb1461089a57600080fd5b806390677833116101ab57806390677833146107a157806395d89b41146107ce578063963bafa0146107e3578063a2923a0f1461083a57600080fd5b80638aaa9389146107335780638da5cb5b146107535780638e5916b21461077157600080fd5b80634297a7ca116102b657806366cc702611610254578063715018a611610223578063715018a6146106d25780637c4b492e146106e75780638954fb4a146106fd57806389a5c6911461071d57600080fd5b806366cc7026146106525780636843cd84146106725780636973cd091461069257806370a08231146106b257600080fd5b80635b6612ad116102905780635b6612ad146105da5780635b683e66146106075780635fcefa421461061d57806364b0f6531461063d57600080fd5b80634297a7ca146105805780634e71d92d146105b057806351bc3c85146105c557600080fd5b806323b872dd11610323578063313ce567116102fd578063313ce567146104f457806339509351146105165780633bbac579146105365780633e9ffbea1461056657600080fd5b806323b872dd146104875780632c1f5216146104a757806330bb4cff146104df57600080fd5b806312dfbd331161035f57806312dfbd3314610410578063168380131461043257806318160ddd146104525780631c08bc5d1461046757600080fd5b806306fdde03146103915780630866e0e9146103bc578063095ea7b3146103e057600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103a6610b2b565b6040516103b39190613218565b60405180910390f35b3480156103c857600080fd5b506103d260155481565b6040519081526020016103b3565b3480156103ec57600080fd5b506104006103fb366004613285565b610bbd565b60405190151581526020016103b3565b34801561041c57600080fd5b5061043061042b3660046132b1565b610bd7565b005b34801561043e57600080fd5b5061043061044d3660046132ca565b610c0f565b34801561045e57600080fd5b506002546103d2565b34801561047357600080fd5b506104306104823660046132b1565b610c50565b34801561049357600080fd5b506104006104a23660046132ec565b610c7f565b3480156104b357600080fd5b506021546104c7906001600160a01b031681565b6040516001600160a01b0390911681526020016103b3565b3480156104eb57600080fd5b506103d2610ca3565b34801561050057600080fd5b5060125b60405160ff90911681526020016103b3565b34801561052257600080fd5b50610400610531366004613285565b610d16565b34801561054257600080fd5b5061040061055136600461332d565b60106020526000908152604090205460ff1681565b34801561057257600080fd5b50601c546104009060ff1681565b34801561058c57600080fd5b5061040061059b36600461332d565b60126020526000908152604090205460ff1681565b3480156105bc57600080fd5b50610430610d55565b3480156105d157600080fd5b50610430610d62565b3480156105e657600080fd5b506103d26105f536600461332d565b60236020526000908152604090205481565b34801561061357600080fd5b506103d260145481565b34801561062957600080fd5b5061043061063836600461334a565b610db2565b34801561064957600080fd5b506103d2610e10565b34801561065e57600080fd5b5061043061066d3660046132b1565b610e5a565b34801561067e57600080fd5b506103d261068d36600461332d565b610e89565b34801561069e57600080fd5b506104306106ad366004613385565b610ef9565b3480156106be57600080fd5b506103d26106cd36600461332d565b610f5b565b3480156106de57600080fd5b50610430610f76565b3480156106f357600080fd5b506103d260245481565b34801561070957600080fd5b506104306107183660046133cc565b610fea565b34801561072957600080fd5b506103d2601b5481565b34801561073f57600080fd5b5061043061074e3660046132b1565b6110ca565b34801561075f57600080fd5b506005546001600160a01b03166104c7565b34801561077d57600080fd5b5061040061078c36600461332d565b600f6020526000908152604090205460ff1681565b3480156107ad57600080fd5b506103d26107bc36600461332d565b601d6020526000908152604090205481565b3480156107da57600080fd5b506103a66110f9565b3480156107ef57600080fd5b5061081f6107fe366004613410565b601e6020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016103b3565b34801561084657600080fd5b5061043061085536600461342b565b611108565b34801561086657600080fd5b50610400610875366004613285565b611183565b34801561088657600080fd5b506103d261089536600461332d565b611215565b3480156108a657600080fd5b506104006108b5366004613285565b611248565b3480156108c657600080fd5b506104306108d53660046133cc565b611256565b3480156108e657600080fd5b506103d26108f536600461332d565b6001600160a01b031660009081526029602052604090205490565b34801561091c57600080fd5b50601f546105049060ff1681565b34801561093657600080fd5b50610430610945366004613464565b6112ab565b34801561095657600080fd5b506103d260165481565b34801561096c57600080fd5b506103d261097b36600461332d565b6113d6565b34801561098c57600080fd5b506103d26114a4565b3480156109a157600080fd5b506103d260265481565b3480156109b757600080fd5b506104306109c6366004613410565b6114b5565b3480156109d757600080fd5b506103d26109e6366004613385565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610a1d57600080fd5b50610430610a2c3660046134d9565b6114f5565b348015610a3d57600080fd5b506103d260255481565b348015610a5357600080fd5b506103d2610a6236600461332d565b60176020526000908152604090205481565b348015610a8057600080fd5b50610430610a8f3660046133cc565b611532565b348015610aa057600080fd5b50610430610aaf3660046132ca565b611587565b348015610ac057600080fd5b50610ad4610acf3660046134f6565b61191d565b6040516103b3919061352b565b348015610aed57600080fd5b50610430611b4e565b348015610b0257600080fd5b5061081f610b1136600461332d565b611c1b565b348015610b2257600080fd5b50610430611cac565b606060038054610b3a90613584565b80601f0160208091040260200160405190810160405280929190818152602001828054610b6690613584565b8015610bb35780601f10610b8857610100808354040283529160200191610bb3565b820191906000526020600020905b815481529060010190602001808311610b9657829003601f168201915b5050505050905090565b600033610bcb818585611cb7565b60019150505b92915050565b6005546001600160a01b03163314610c0a5760405162461bcd60e51b8152600401610c01906135be565b60405180910390fd5b601b55565b6005546001600160a01b03163314610c395760405162461bcd60e51b8152600401610c01906135be565b6015829055610c4981603c611ddb565b6016555050565b6005546001600160a01b03163314610c7a5760405162461bcd60e51b8152600401610c01906135be565b602555565b600033610c8d858285611dee565b610c98858585611e7a565b506001949350505050565b602154604080516342d359d760e11b815290516000926001600160a01b0316916385a6b3ae9160048083019260209291908290030181865afa158015610ced573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1191906135f3565b905090565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190610bcb9082908690610d50908790613622565b611cb7565b610d603360006123b1565b565b6005546001600160a01b03163314610d8c5760405162461bcd60e51b8152600401610c01906135be565b6000610da3602454610d9d30610f5b565b9061264c565b9050610dae81612658565b5050565b6005546001600160a01b03163314610ddc5760405162461bcd60e51b8152600401610c01906135be565b600a8511158015610df05750600560145411155b610df957600080fd5b601394909455601492909255601855601955601a55565b602154604080516304ddf6ef60e11b815290516000926001600160a01b0316916309bbedde9160048083019260209291908290030181865afa158015610ced573d6000803e3d6000fd5b6005546001600160a01b03163314610e845760405162461bcd60e51b8152600401610c01906135be565b600b55565b6021546040516370a0823160e01b81526001600160a01b03838116600483015260009216906370a08231906024015b602060405180830381865afa158015610ed5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd191906135f3565b6005546001600160a01b03163314610f235760405162461bcd60e51b8152600401610c01906135be565b601f8054610100600160a81b0319166101006001600160a01b0394851602179055602080546001600160a01b03191691909216179055565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b03163314610fa05760405162461bcd60e51b8152600401610c01906135be565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146110145760405162461bcd60e51b8152600401610c01906135be565b801561107e5760215460405163031e79db60e41b81526001600160a01b038481166004830152909116906331e79db0906024015b600060405180830381600087803b15801561106257600080fd5b505af1158015611076573d6000803e3d6000fd5b505050505050565b6021546001600160a01b03166318c18adb8361109981610f5b565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401611048565b6005546001600160a01b031633146110f45760405162461bcd60e51b8152600401610c01906135be565b601155565b606060048054610b3a90613584565b6005546001600160a01b031633146111325760405162461bcd60e51b8152600401610c01906135be565b61113d83603c611ddb565b60ff85166000908152601e602052604090205561115b82603c611ddb565b60ff9094166000908152601e6020526040902060018101949094556002909301929092555050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156112085760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610c01565b610c988286868403611cb7565b6021546040516302a2e74960e61b81526001600160a01b038381166004830152600092169063a8b9d24090602401610eb8565b600033610bcb818585611e7a565b6005546001600160a01b031633146112805760405162461bcd60e51b8152600401610c01906135be565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112d55760405162461bcd60e51b8152600401610c01906135be565b60005b818110156113d1576009546001600160a01b03168383838181106112fe576112fe61363a565b9050602002016020810190611313919061332d565b6001600160a01b03161415801561136457506007546001600160a01b03168383838181106113435761134361363a565b9050602002016020810190611358919061332d565b6001600160a01b031614155b156113bf576001601060008585858181106113815761138161363a565b9050602002016020810190611396919061332d565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b806113c981613650565b9150506112d8565b505050565b60145460009060015b601f5460ff9081169082161161149d5760ff81166000908152601e60209081526040808320546001600160a01b0388168452601d90925290912054429161142591613622565b1115801561146a575060ff81166000908152601e60209081526040808320600101546001600160a01b0388168452601d90925290912054429161146791613622565b10155b1561148b5760ff166000908152601e60205260409020600201549392505050565b8061149581613669565b9150506113df565b5092915050565b6000610d11602454610d9d30610f5b565b6005546001600160a01b031633146114df5760405162461bcd60e51b8152600401610c01906135be565b601f805460ff191660ff92909216919091179055565b6005546001600160a01b0316331461151f5760405162461bcd60e51b8152600401610c01906135be565b601c805460ff1916911515919091179055565b6005546001600160a01b0316331461155c5760405162461bcd60e51b8152600401610c01906135be565b6001600160a01b03919091166000908152601260205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146115b15760405162461bcd60e51b8152600401610c01906135be565b600754600160a01b900460ff161561160b5760405162461bcd60e51b815260206004820181905260248201527f4469616d6f6e643a2054726164696e6720697320616c7265616479206f70656e6044820152606401610c01565b42821161165a5760405162461bcd60e51b815260206004820152601a60248201527f4469616d6f6e643a20496e76616c69642074696d657374616d700000000000006044820152606401610c01565b600760009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d19190613688565b6001600160a01b031663c9c6539630600760009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611733573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117579190613688565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156117a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c89190613688565b600980546001600160a01b0319166001600160a01b0392831690811782556000908152600e602052604090819020805460ff191660011790556021549154905163031e79db60e41b815290831660048201529116906331e79db090602401600060405180830381600087803b15801561184057600080fd5b505af1158015611854573d6000803e3d6000fd5b5050505061186a61186430610f5b565b4761280d565b60095460075460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156118c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e491906136a5565b506007805460ff60a01b1916600160a01b179055600c82905561191261190b82603c611ddb565b839061291c565b600d55505043600855565b606060008311801561192f5750600082115b61197b5760405162461bcd60e51b815260206004820152601a60248201527f4469616d6f6e643a20496e76616c696420617267756d656e74730000000000006044820152606401610c01565b6001600160a01b0384166000908152602960205260408120549061199f85856136c2565b905060006119ad86836136e1565b90508281106119f65760405162461bcd60e51b81526020600482015260156024820152744469616d6f6e643a204f7574206f662072616e676560581b6044820152606401610c01565b8583831115611a0f57839250611a0c878461370e565b90505b60008167ffffffffffffffff811115611a2a57611a2a613722565b604051908082528060200260200182016040528015611a7f57816020015b611a6c60405180606001604052806000815260200160008152602001600081525090565b815260200190600190039081611a485790505b5090506000835b85811015611b3f576001600160a01b038b166000908152602960205260408120805483908110611ab857611ab861363a565b90600052602060002001549050602860008281526020019081526020016000206040518060600160405290816000820154815260200160018201548152602001600282015481525050848481518110611b1357611b1361363a565b6020908102919091010152611b29600184613622565b9250508080611b3790613650565b915050611a86565b50909998505050505050505050565b6005546001600160a01b03163314611b785760405162461bcd60e51b8152600401610c01906135be565b6000611b8f6026544761264c90919063ffffffff16565b90506000611bc0611bac601854606461264c90919063ffffffff16565b601954611bba908590611ddb565b90612928565b90506000611beb611bdd601854606461264c90919063ffffffff16565b601a54611bba908690611ddb565b90506000611bfd82610d9d868661264c565b9050611c09838261291c565b9250611c158383612934565b50505050565b60215460405163fbcbc0f160e01b81526001600160a01b038381166004830152600092839283929091169063fbcbc0f1906024016040805180830381865afa158015611c6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8f9190613738565b90935091508282611c9f86610f5b565b9250925092509193909250565b610d603360016123b1565b6001600160a01b038316611d195760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c01565b6001600160a01b038216611d7a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c01565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000611de782846136c2565b9392505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114611c155781811015611e6d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610c01565b611c158484848403611cb7565b6001600160a01b03831660009081526010602052604090205460ff16158015611ebc57506001600160a01b03821660009081526010602052604090205460ff16155b611ec557600080fd5b601154600754829190600160a01b900460ff168015611f1e57506001600160a01b0385166000908152600e602052604090205460ff1680611f1e57506001600160a01b0384166000908152600e602052604090205460ff165b8015611f4357506001600160a01b0385166000908152600f602052604090205460ff16155b8015611f6857506001600160a01b0384166000908152600f602052604090205460ff16155b156120bf5742600c541115611fd45760405162461bcd60e51b815260206004820152602c60248201527f4469616d6f6e643a205072697661746520616e64207075626c69632073616c6560448201526b1034b9903737ba1037b832b760a11b6064820152608401610c01565b42600c5411158015611fe7575042600d54115b156120b157600a6011819055600b5490546040516370a0823160e01b81526001600160a01b038781166004830152909116906370a0823190602401602060405180830381865afa15801561203f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206391906135f3565b10156120b15760405162461bcd60e51b815260206004820181905260248201527f4469616d6f6e643a204e6f7420656e6f75676820244d7942616773546f6b656e6044820152606401610c01565b6120bc8585856129f2565b91505b6001600160a01b0384166000908152601d602052604081205490036120fa576001600160a01b0384166000908152601d602052604090204290555b6001600160a01b0384166000908152600e602052604090205460ff1615801561213c57506001600160a01b03841660009081526012602052604090205460ff16155b156121d25760006121568361215087610f5b565b9061291c565b9050612173612710611bba60115461216d60025490565b90611ddb565b8111156121d05760405162461bcd60e51b815260206004820152602560248201527f4469616d6f6e643a2057616c6c65742062616c616e6365206c696d69742072656044820152641858da195960da1b6064820152608401610c01565b505b6121dd858584612c4c565b6011819055602154604051631b4a89ab60e11b81526001600160a01b03878116600483015290911690633695135690602401602060405180830381865afa15801561222c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225091906136a5565b6122c8576021546001600160a01b031663e30443bc8661226f81610f5b565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156122b557600080fd5b505af19250505080156122c6575060015b505b602154604051631b4a89ab60e11b81526001600160a01b03868116600483015290911690633695135690602401602060405180830381865afa158015612312573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233691906136a5565b6123aa576021546001600160a01b031663e30443bc8561235581610f5b565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561239b57600080fd5b505af192505050801561107657505b5050505050565b6021546040516302a2e74960e61b81526001600160a01b038481166004830152600092169063a8b9d24090602401602060405180830381865afa1580156123fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242091906135f3565b9050600081116124885760405162461bcd60e51b815260206004820152602d60248201527f4469616d6f6e643a20436c61696d657220686173206e6f20776974686472617760448201526c18589b1948191a5d9a59195b99609a1b6064820152608401610c01565b6000808361250e576021546040516352b5f81d60e01b81526001600160a01b03878116600483018190526024830152909116906352b5f81d906044016020604051808303816000875af11580156124e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250791906135f3565b9150612599565b6021546040516352b5f81d60e01b81526001600160a01b038781166004830152306024830152909116906352b5f81d906044016020604051808303816000875af1158015612560573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061258491906135f3565b91508115612599576125968286612e1a565b90505b81156123aa576125ad602780546001019055565b60006125b860275490565b60008181526028602090815260408083208781556001808201889055426002909201919091556001600160a01b038b1680855260298452828520805492830181558552938390200184905580518781529182018690528101919091529091507f67dd3d116bf53e0ddda53bb148a5fdc129854e1c507c0eeda9190049a9bbc84f9060600160405180910390a1505050505050565b6000611de782846136e1565b60408051600280825260608201835260009247928492909160208301908036833701905050905030816000815181106126935761269361363a565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156126ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127109190613688565b816001815181106127235761272361363a565b6001600160a01b0392831660209182029290920101526007546127499130911686611cb7565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac947906127829087906000908690309042906004016137a0565b600060405180830381600087803b15801561279c57600080fd5b505af11580156127b0573d6000803e3d6000fd5b5050505060006127c9834761264c90919063ffffffff16565b60408051878152602081018390529192507f4a6c12eb4e479a4ea28c8acad8efde466ef9bf69cf473501dd76865234496273910160405180910390a1949350505050565b6007546128259030906001600160a01b031684611cb7565b6007546001600160a01b031663f305d71982308560008061284e6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156128b6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906128db91906137dc565b505060408051848152602081018490527fcb1652de9aeec38545fc281847b3dbfc89aab56dfa907b1ab68466f602c36fb49250015b60405180910390a15050565b6000611de78284613622565b6000611de7828461380a565b811561297a57601f546040516101009091046001600160a01b0316906108fc8415029084906000818181858888f19350505050158015612978573d6000803e3d6000fd5b505b80156129bc576020546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156129ba573d6000803e3d6000fd5b505b60408051838152602081018390527f916ad8171ef8c567c7790377a142f0200f9565940680c06e30dd105cfd9249689101612910565b6001600160a01b0383166000908152600e60205260408120548190819060ff1680612a3557506001600160a01b0385166000908152600e602052604090205460ff165b612a815760405162461bcd60e51b815260206004820152601f60248201527f4469616d6f6e643a204e6f206d61726b6574206d616b65727320666f756e64006044820152606401610c01565b6001600160a01b0386166000908152600e602052604090205460ff1615612b2357612abc6064611bba60135487611ddb90919063ffffffff16565b9150612ac8848361264c565b9050612ad5863084612c4c565b604080516001600160a01b03881681523060208201529081018390527f6b0b46d0273ce53f1de696d2100b35dd3a405dcecbcbeede66215d858d5c401d9060600160405180910390a1612c43565b6000612b2f8786612fcc565b15612b3d5750601454612b49565b612b46876113d6565b90505b612b586064611bba8784611ddb565b92506000612b806064611bba612b796014548661264c90919063ffffffff16565b8990611ddb565b602454909150612b90908261291c565b602455612b9d868561264c565b9250612baa883086612c4c565b6000612bbb602454610d9d30610f5b565b9050601b54811115612bdf57601c5460ff16612bd65750601b545b612bdf81613044565b6025546024541115612bf657612bf660245461313a565b604080516001600160a01b038b1681523060208201529081018690527f4ab5e0df8ff1605133dbdd1b8e3f52edb9539abe64595f6f70b30d2fea7f204a9060600160405180910390a15050505b95945050505050565b6001600160a01b038316612cb05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c01565b6001600160a01b038216612d125760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c01565b6001600160a01b03831660009081526020819052604090205481811015612d8a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610c01565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612dc1908490613622565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e0d91815260200190565b60405180910390a3611c15565b600080612e2630610f5b565b60408051600280825260608201835292935060009290916020830190803683375050600754604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015612e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb99190613688565b81600081518110612ecc57612ecc61363a565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110612f0057612f0061363a565b6001600160a01b03928316602091820292909201015260075460405163b6f9de9560e01b815291169063b6f9de95908790612f469060009086908a90429060040161381e565b6000604051808303818588803b158015612f5f57600080fd5b505af1158015612f73573d6000803e3d6000fd5b50505050506000612f8783610d9d30610f5b565b60408051888152602081018390529192507f2d5c8efb676a77fc04b6b50a19f6ccbf08ee66df0202de33576485f1f77b4b69910160405180910390a195945050505050565b6016546001600160a01b03831660009081526017602052604081205490914291612ff69190613622565b1161303b576001600160a01b038316600090815260176020526040902042905560155461302d90606490611bba9061216d87610f5b565b821161303b57506001610bd1565b50600092915050565b60006130606064611bba60185485611ddb90919063ffffffff16565b9050600061306f826002612928565b9050600061307d848361264c565b9050600061308a82612658565b905060006130a86064611bba60185485611ddb90919063ffffffff16565b905060006130c66064611bba60195486611ddb90919063ffffffff16565b905060006130e46064611bba601a5487611ddb90919063ffffffff16565b905060006130f882610d9d8581898961264c565b9050613104838261291c565b92506131108383612934565b6000871180156131205750600084115b1561312f5761312f878561280d565b505050505050505050565b600061314582612658565b602454909150613155908361264c565b60245560265460009061316990839061291c565b6021546040519192506000916001600160a01b039091169083908381818185875af1925050503d80600081146131bb576040519150601f19603f3d011682016040523d82523d6000602084013e6131c0565b606091505b505090508015613202576040518381527fb0cc2628d6d644cf6be9d8110e142297ac910d6d8026d795a99f272fd9ad60b19060200160405180910390a1611c15565b60265461320f908461291c565b60265550505050565b600060208083528351808285015260005b8181101561324557858101830151858201604001528201613229565b81811115613257576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461328257600080fd5b50565b6000806040838503121561329857600080fd5b82356132a38161326d565b946020939093013593505050565b6000602082840312156132c357600080fd5b5035919050565b600080604083850312156132dd57600080fd5b50508035926020909101359150565b60008060006060848603121561330157600080fd5b833561330c8161326d565b9250602084013561331c8161326d565b929592945050506040919091013590565b60006020828403121561333f57600080fd5b8135611de78161326d565b600080600080600060a0868803121561336257600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806040838503121561339857600080fd5b82356133a38161326d565b915060208301356133b38161326d565b809150509250929050565b801515811461328257600080fd5b600080604083850312156133df57600080fd5b82356133ea8161326d565b915060208301356133b3816133be565b803560ff8116811461340b57600080fd5b919050565b60006020828403121561342257600080fd5b611de7826133fa565b6000806000806080858703121561344157600080fd5b61344a856133fa565b966020860135965060408601359560600135945092505050565b6000806020838503121561347757600080fd5b823567ffffffffffffffff8082111561348f57600080fd5b818501915085601f8301126134a357600080fd5b8135818111156134b257600080fd5b8660208260051b85010111156134c757600080fd5b60209290920196919550909350505050565b6000602082840312156134eb57600080fd5b8135611de7816133be565b60008060006060848603121561350b57600080fd5b83356135168161326d565b95602085013595506040909401359392505050565b602080825282518282018190526000919060409081850190868401855b828110156135775781518051855286810151878601528501518585015260609093019290850190600101613548565b5091979650505050505050565b600181811c9082168061359857607f821691505b6020821081036135b857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561360557600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156136355761363561360c565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600182016136625761366261360c565b5060010190565b600060ff821660ff810361367f5761367f61360c565b60010192915050565b60006020828403121561369a57600080fd5b8151611de78161326d565b6000602082840312156136b757600080fd5b8151611de7816133be565b60008160001904831182151516156136dc576136dc61360c565b500290565b6000828210156136f3576136f361360c565b500390565b634e487b7160e01b600052601260045260246000fd5b60008261371d5761371d6136f8565b500690565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561374b57600080fd5b505080516020909101519092909150565b600081518084526020808501945080840160005b838110156137955781516001600160a01b031687529582019590820190600101613770565b509495945050505050565b85815284602082015260a0604082015260006137bf60a083018661375c565b6001600160a01b0394909416606083015250608001529392505050565b6000806000606084860312156137f157600080fd5b8351925060208401519150604084015190509250925092565b600082613819576138196136f8565b500490565b848152608060208201526000613837608083018661375c565b6001600160a01b0394909416604083015250606001529291505056fea26469706673582212202e540b5a3e7dcb0f75c128cf2474288c27365e453f8194004876824ba30e81e864736f6c634300080d0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004F7a3ed9C0F94058174EE767A95c3055453BDfA3000000000000000000000000840b69F38634860897f925cd9d85b860a59C088A000000000000000000000000e8f3ac3f57ae08d1c1f12233dee069e5b84cb7d8
-----Decoded View---------------
Arg [0] : _devWalletAddress (address): 0x4F7a3ed9C0F94058174EE767A95c3055453BDfA3
Arg [1] : _marketingWalletAddress (address): 0x840b69F38634860897f925cd9d85b860a59C088A
Arg [2] : _myBagsTokenAddress (address): 0xe8F3ac3f57aE08D1C1f12233DEe069E5B84cb7d8
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000004F7a3ed9C0F94058174EE767A95c3055453BDfA3
Arg [1] : 000000000000000000000000840b69F38634860897f925cd9d85b860a59C088A
Arg [2] : 000000000000000000000000e8f3ac3f57ae08d1c1f12233dee069e5b84cb7d8
Deployed Bytecode Sourcemap
24692:22607:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1707:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25782:43;;;;;;;;;;;;;;;;;;;762:25:1;;;750:2;735:18;25782:43:0;616:177:1;2780:242:0;;;;;;;;;;-1:-1:-1;2780:242:0;;;;;:::i;:::-;;:::i;:::-;;;1419:14:1;;1412:22;1394:41;;1382:2;1367:18;2780:242:0;1254:187:1;38216:126:0;;;;;;;;;;-1:-1:-1;38216:126:0;;;;;:::i;:::-;;:::i;:::-;;39040:286;;;;;;;;;;-1:-1:-1;39040:286:0;;;;;:::i;:::-;;:::i;2028:108::-;;;;;;;;;;-1:-1:-1;2116:12:0;;2028:108;;38350:122;;;;;;;;;;-1:-1:-1;38350:122:0;;;;;:::i;:::-;;:::i;3030:295::-;;;;;;;;;;-1:-1:-1;3030:295:0;;;;;:::i;:::-;;:::i;26520:45::-;;;;;;;;;;-1:-1:-1;26520:45:0;;;;-1:-1:-1;;;;;26520:45:0;;;;;;-1:-1:-1;;;;;2548:32:1;;;2530:51;;2518:2;2503:18;26520:45:0;2345:242:1;31683:141:0;;;;;;;;;;;;;:::i;34109:100::-;;;;;;;;;;-1:-1:-1;24945:2:0;34109:100;;;2764:4:1;2752:17;;;2734:36;;2722:2;2707:18;34109:100:0;2592:184:1;3333:272:0;;;;;;;;;;-1:-1:-1;3333:272:0;;;;;:::i;:::-;;:::i;25548:37::-;;;;;;;;;;-1:-1:-1;25548:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;26125:27;;;;;;;;;;-1:-1:-1;26125:27:0;;;;;;;;25643:55;;;;;;;;;;-1:-1:-1;25643:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;32207:79;;;;;;;;;;;;;:::i;30303:200::-;;;;;;;;;;;;;:::i;26635:47::-;;;;;;;;;;-1:-1:-1;26635:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;25745:30;;;;;;;;;;;;;;;;37787:421;;;;;;;;;;-1:-1:-1;37787:421:0;;;;;:::i;:::-;;:::i;33537:142::-;;;;;;;;;;;;;:::i;36736:161::-;;;;;;;;;;-1:-1:-1;36736:161:0;;;;;:::i;:::-;;:::i;32026:173::-;;;;;;;;;;-1:-1:-1;32026:173:0;;;;;:::i;:::-;;:::i;39666:214::-;;;;;;;;;;-1:-1:-1;39666:214:0;;;;;:::i;:::-;;:::i;2144:177::-;;;;;;;;;;-1:-1:-1;2144:177:0;;;;;:::i;:::-;;:::i;10791:148::-;;;;;;;;;;;;;:::i;26691:37::-;;;;;;;;;;;;;;;;37087:342;;;;;;;;;;-1:-1:-1;37087:342:0;;;;;:::i;:::-;;:::i;26065:53::-;;;;;;;;;;;;;;;;37651:128;;;;;;;;;;-1:-1:-1;37651:128:0;;;;;:::i;:::-;;:::i;10579:79::-;;;;;;;;;;-1:-1:-1;10644:6:0;;-1:-1:-1;;;;;10644:6:0;10579:79;;25493:48;;;;;;;;;;-1:-1:-1;25493:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;26266:54;;;;;;;;;;-1:-1:-1;26266:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;1815:104;;;;;;;;;;;;;:::i;26327:58::-;;;;;;;;;;-1:-1:-1;26327:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5153:25:1;;;5209:2;5194:18;;5187:34;;;;5237:18;;;5230:34;5141:2;5126:18;26327:58:0;4951:319:1;38579:325:0;;;;;;;;;;-1:-1:-1;38579:325:0;;;;;:::i;:::-;;:::i;3613:507::-;;;;;;;;;;-1:-1:-1;3613:507:0;;;;;:::i;:::-;;:::i;31832:186::-;;;;;;;;;;-1:-1:-1;31832:186:0;;;;;:::i;:::-;;:::i;2329:234::-;;;;;;;;;;-1:-1:-1;2329:234:0;;;;;:::i;:::-;;:::i;36905:174::-;;;;;;;;;;-1:-1:-1;36905:174:0;;;;;:::i;:::-;;:::i;47127:132::-;;;;;;;;;;-1:-1:-1;47127:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;47220:24:0;47193:7;47220:24;;;:14;:24;;;;;:31;;47127:132;26392:33;;;;;;;;;;-1:-1:-1;26392:33:0;;;;;;;;39334:324;;;;;;;;;;-1:-1:-1;39334:324:0;;;;;:::i;:::-;;:::i;25832:52::-;;;;;;;;;;;;;;;;31120:555;;;;;;;;;;-1:-1:-1;31120:555:0;;;;;:::i;:::-;;:::i;45986:149::-;;;;;;;;;;;;;:::i;26797:31::-;;;;;;;;;;;;;;;;38912:120;;;;;;;;;;-1:-1:-1;38912:120:0;;;;;:::i;:::-;;:::i;2571:201::-;;;;;;;;;;-1:-1:-1;2571:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;2737:18:0;;;2705:7;2737:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2571:201;38480:91;;;;;;;;;;-1:-1:-1;38480:91:0;;;;;:::i;:::-;;:::i;26735:53::-;;;;;;;;;;;;;;;;25891:55;;;;;;;;;;-1:-1:-1;25891:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;37437:206;;;;;;;;;;-1:-1:-1;37437:206:0;;;;;:::i;:::-;;:::i;29312:983::-;;;;;;;;;;-1:-1:-1;29312:983:0;;;;;:::i;:::-;;:::i;46143:976::-;;;;;;;;;;-1:-1:-1;46143:976:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;30511:601::-;;;;;;;;;;;;;:::i;33687:414::-;;;;;;;;;;-1:-1:-1;33687:414:0;;;;;:::i;:::-;;:::i;32294:81::-;;;;;;;;;;;;;:::i;1707:100::-;1761:13;1794:5;1787:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1707:100;:::o;2780:242::-;2899:4;1167:10;2960:32;1167:10;2976:7;2985:6;2960:8;:32::i;:::-;3010:4;3003:11;;;2780:242;;;;;:::o;38216:126::-;10706:6;;-1:-1:-1;;;;;10706:6:0;10716:10;10706:20;10698:65;;;;-1:-1:-1;;;10698:65:0;;;;;;;:::i;:::-;;;;;;;;;38299:23:::1;:35:::0;38216:126::o;39040:286::-;10706:6;;-1:-1:-1;;;;;10706:6:0;10716:10;10706:20;10698:65;;;;-1:-1:-1;;;10698:65:0;;;;;;;:::i;:::-;39194:23:::1;:50:::0;;;39280:38:::1;:23:::0;39308:9:::1;39280:27;:38::i;:::-;39255:22;:63:::0;-1:-1:-1;;39040:286:0:o;38350:122::-;10706:6;;-1:-1:-1;;;;;10706:6:0;10716:10;10706:20;10698:65;;;;-1:-1:-1;;;10698:65:0;;;;;;;:::i;:::-;38431:21:::1;:33:::0;38350:122::o;3030:295::-;3161:4;1167:10;3219:38;3235:4;1167:10;3250:6;3219:15;:38::i;:::-;3268:27;3278:4;3284:2;3288:6;3268:9;:27::i;:::-;-1:-1:-1;3313:4:0;;3030:295;-1:-1:-1;;;;3030:295:0:o;31683:141::-;31773:15;;:43;;;-1:-1:-1;;;31773:43:0;;;;31746:7;;-1:-1:-1;;;;;31773:15:0;;:41;;:43;;;;;;;;;;;;;;:15;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31766:50;;31683:141;:::o;3333:272::-;1167:10;3448:4;3534:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;3534:27:0;;;;;;;;;;3448:4;;1167:10;3509:66;;1167:10;;3534:27;;:40;;3564:10;;3534:40;:::i;:::-;3509:8;:66::i;32207:79::-;32244:34;32259:10;32272:5;32244:6;:34::i;:::-;32207:79::o;30303:200::-;10706:6;;-1:-1:-1;;;;;10706:6:0;10716:10;10706:20;10698:65;;;;-1:-1:-1;;;10698:65:0;;;;;;;:::i;:::-;30355:19:::1;30377:76;30420:22;;30377:24;30395:4;30377:9;:24::i;:::-;:28:::0;::::1;:76::i;:::-;30355:98;;30466:29;30483:11;30466:16;:29::i;:::-;;30344:159;30303:200::o:0;37787:421::-;10706:6;;-1:-1:-1;;;;;10706:6:0;10716:10;10706:20;10698:65;;;;-1:-1:-1;;;10698:65:0;;;;;;;:::i;:::-;38010:2:::1;37995:11;:17;;:37;;;;;38031:1;38016:11;;:16;;37995:37;37987:46;;;::::0;::::1;;38046:10;:24:::0;;;;38081:11:::1;:26:::0;;;;38118:6:::1;:16:::0;38145:6:::1;:16:::0;38172:12:::1;:28:::0;37787:421::o;33537:142::-;33630:15;;:41;;;-1:-1:-1;;;33630:41:0;;;;33603:7;;-1:-1:-1;;;;;33630:15:0;;:39;;:41;;;;;;;;;;;;;;:15;:41;;;;;;;;;;;;;;36736:161;10706:6;;-1:-1:-1;;;;;10706:6:0;10716:10;10706:20;10698:65;;;;-1:-1:-1;;;10698:65:0;;;;;;;:::i;:::-;36849:18:::1;:40:::0;36736:161::o;32026:173::-;32156:15;;:35;;-1:-1:-1;;;32156:35:0;;-1:-1:-1;;;;;2548:32:1;;;32156:35:0;;;2530:51:1;32124:7:0;;32156:15;;:25;;2503:18:1;;32156:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;39666:214::-;10706:6;;-1:-1:-1;;;;;10706:6:0;10716:10;10706:20;10698:65;;;;-1:-1:-1;;;10698:65:0;;;;;;;:::i;:::-;39791:16:::1;:29:::0;;-1:-1:-1;;;;;;39791:29:0::1;;-1:-1:-1::0;;;;;39791:29:0;;::::1;;;::::0;;39831:22:::1;:41:::0;;-1:-1:-1;;;;;;39831:41:0::1;::::0;;;::::1;;::::0;;39666:214::o;2144:177::-;-1:-1:-1;;;;;2295:18:0;2263:7;2295:18;;;;;;;;;;;;2144:177::o;10791:148::-;10706:6;;-1:-1:-1;;;;;10706:6:0;10716:10;10706:20;10698:65;;;;-1:-1:-1;;;10698:65:0;;;;;;;:::i;:::-;10882:6:::1;::::0;10861:40:::1;::::0;10898:1:::1;::::0;-1:-1:-1;;;;;10882:6:0::1;::::0;10861:40:::1;::::0;10898:1;;10861:40:::1;10912:6;:19:::0;;-1:-1:-1;;;;;;10912:19:0::1;::::0;;10791:148::o;37087:342::-;10706:6;;-1:-1:-1;;;;;10706:6:0;10716:10;10706:20;10698:65;;;;-1:-1:-1;;;10698:65:0;;;;;;;:::i;:::-;37225:22:::1;37221:201;;;37264:15;::::0;:46:::1;::::0;-1:-1:-1;;;37264:46:0;;-1:-1:-1;;;;;2548:32:1;;;37264:46:0::1;::::0;::::1;2530:51:1::0;37264:15:0;;::::1;::::0;:36:::1;::::0;2503:18:1;;37264:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;30466:29;30344:159;30303:200::o:0;37221:201::-:1;37343:15;::::0;-1:-1:-1;;;;;37343:15:0::1;:36;37380:8:::0;37390:19:::1;37380:8:::0;37390:9:::1;:19::i;:::-;37343:67;::::0;-1:-1:-1;;;;;;37343:67:0::1;::::0;;;;;;-1:-1:-1;;;;;9167:32:1;;;37343:67:0::1;::::0;::::1;9149:51:1::0;9216:18;;;9209:34;9122:18;;37343:67:0::1;8975:274:1::0;37651:128:0;10706:6;;-1:-1:-1;;;;;10706:6:0;10716:10;10706:20;10698:65;;;;-1:-1:-1;;;10698:65:0;;;;;;;:::i;:::-;37736:21:::1;:35:::0;37651:128::o;1815:104::-;1871:13;1904:7;1897:14;;;;;:::i;38579:325::-;10706:6;;-1:-1:-1;;;;;10706:6:0;10716:10;10706:20;10698:65;;;;-1:-1:-1;;;10698:65:0;;;;;;;:::i;:::-;38769:20:::1;:5:::0;38779:9:::1;38769;:20::i;:::-;38736:25;::::0;::::1;;::::0;;;:17:::1;:25;::::0;;;;:53;38831:18:::1;:3:::0;38839:9:::1;38831:7;:18::i;:::-;38800:25;::::0;;::::1;;::::0;;;:17:::1;:25;::::0;;;;:28:::1;::::0;::::1;:49:::0;;;;38860:29:::1;::::0;;::::1;:36:::0;;;;-1:-1:-1;;38579:325:0:o;3613:507::-;1167:10;3733:4;3821:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;3821:27:0;;;;;;;;;;3733:4;;1167:10;3881:35;;;;3859:122;;;;-1:-1:-1;;;3859:122:0;;9456:2:1;3859:122:0;;;9438:21:1;9495:2;9475:18;;;9468:30;9534:34;9514:18;;;9507:62;-1:-1:-1;;;9585:18:1;;;9578:35;9630:19;;3859:122:0;9254:401:1;3859:122:0;4017:60;4026:5;4033:7;4061:15;4042:16;:34;4017:8;:60::i;31832:186::-;31962:15;;:48;;-1:-1:-1;;;31962:48:0;;-1:-1:-1;;;;;2548:32:1;;;31962:48:0;;;2530:51:1;31930:7:0;;31962:15;;:38;;2503:18:1;;31962:48:0;2345:242:1;2329:234:0;2444:4;1167:10;2505:28;1167:10;2522:2;2526:6;2505:9;:28::i;36905:174::-;10706:6;;-1:-1:-1;;;;;10706:6:0;10716:10;10706:20;10698:65;;;;-1:-1:-1;;;10698:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37026:26:0;;;::::1;;::::0;;;:16:::1;:26;::::0;;;;:45;;-1:-1:-1;;37026:45:0::1;::::0;::::1;;::::0;;;::::1;::::0;;36905:174::o;39334:324::-;10706:6;;-1:-1:-1;;;;;10706:6:0;10716:10;10706:20;10698:65;;;;-1:-1:-1;;;10698:65:0;;;;;;;:::i;:::-;39410:9:::1;39405:246;39425:16:::0;;::::1;39405:246;;;39497:13;::::0;-1:-1:-1;;;;;39497:13:0::1;39485:5:::0;;39491:1;39485:8;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;39485:25:0::1;;;:82;;;;-1:-1:-1::0;39551:15:0::1;::::0;-1:-1:-1;;;;;39551:15:0::1;39531:5:::0;;39537:1;39531:8;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;39531:36:0::1;;;39485:82;39463:177;;;39620:4;39602:5;:15;39608:5;;39614:1;39608:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;39602:15:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;39602:15:0;:22;;-1:-1:-1;;39602:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;39463:177:::1;39443:3:::0;::::1;::::0;::::1;:::i;:::-;;;;39405:246;;;;39334:324:::0;;:::o;31120:555::-;31204:11;;31170:7;;31243:1;31228:417;31251:20;;;;;;31246:25;;;;31228:417;;31343:20;;;;;;;:17;:20;;;;;;;;:25;-1:-1:-1;;;;;31316:24:0;;;;:19;:24;;;;;;;31393:15;;31316:52;;;:::i;:::-;:92;;:207;;;;-1:-1:-1;31460:20:0;;;;;;;:17;:20;;;;;;;;:23;;;-1:-1:-1;;;;;31433:24:0;;;;:19;:24;;;;;;;31508:15;;31433:50;;;:::i;:::-;:90;;31316:207;31293:341;;;31565:20;;;;;;:17;:20;;;;;:24;;;;31120:555;-1:-1:-1;;;31120:555:0:o;31293:341::-;31273:3;;;;:::i;:::-;;;;31228:417;;;-1:-1:-1;31664:3:0;31120:555;-1:-1:-1;;31120:555:0:o;45986:149::-;46048:7;46075:52;46104:22;;46075:24;46093:4;46075:9;:24::i;38912:120::-;10706:6;;-1:-1:-1;;;;;10706:6:0;10716:10;10706:20;10698:65;;;;-1:-1:-1;;;10698:65:0;;;;;;;:::i;:::-;38992:20:::1;:32:::0;;-1:-1:-1;;38992:32:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;38912:120::o;38480:91::-;10706:6;;-1:-1:-1;;;;;10706:6:0;10716:10;10706:20;10698:65;;;;-1:-1:-1;;;10698:65:0;;;;;;;:::i;:::-;38544:7:::1;:19:::0;;-1:-1:-1;;38544:19:0::1;::::0;::::1;;::::0;;;::::1;::::0;;38480:91::o;37437:206::-;10706:6;;-1:-1:-1;;;;;10706:6:0;10716:10;10706:20;10698:65;;;;-1:-1:-1;;;10698:65:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;37575:33:0;;;::::1;;::::0;;;:23:::1;:33;::::0;;;;:60;;-1:-1:-1;;37575:60:0::1;::::0;::::1;;::::0;;;::::1;::::0;;37437:206::o;29312:983::-;10706:6;;-1:-1:-1;;;;;10706:6:0;10716:10;10706:20;10698:65;;;;-1:-1:-1;;;10698:65:0;;;;;;;:::i;:::-;29448:11:::1;::::0;-1:-1:-1;;;29448:11:0;::::1;;;29447:12;29439:57;;;::::0;-1:-1:-1;;;29439:57:0;;10314:2:1;29439:57:0::1;::::0;::::1;10296:21:1::0;;;10333:18;;;10326:30;10392:34;10372:18;;;10365:62;10444:18;;29439:57:0::1;10112:356:1::0;29439:57:0::1;29529:15;29515:11;:29;29507:68;;;::::0;-1:-1:-1;;;29507:68:0;;10675:2:1;29507:68:0::1;::::0;::::1;10657:21:1::0;10714:2;10694:18;;;10687:30;10753:28;10733:18;;;10726:56;10799:18;;29507:68:0::1;10473:350:1::0;29507:68:0::1;29620:15;;;;;;;;;-1:-1:-1::0;;;;;29620:15:0::1;-1:-1:-1::0;;;;;29620:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;29602:55:0::1;;29684:4;29708:15;;;;;;;;;-1:-1:-1::0;;;;;29708:15:0::1;-1:-1:-1::0;;;;;29708:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29602:143;::::0;-1:-1:-1;;;;;;29602:143:0::1;::::0;;;;;;-1:-1:-1;;;;;11314:15:1;;;29602:143:0::1;::::0;::::1;11296:34:1::0;11366:15;;11346:18;;;11339:43;11231:18;;29602:143:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29586:13;:159:::0;;-1:-1:-1;;;;;;29586:159:0::1;-1:-1:-1::0;;;;;29586:159:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;29758:40:0;;;:25:::1;:40;::::0;;;;;;:47;;-1:-1:-1;;29758:47:0::1;-1:-1:-1::0;29758:47:0::1;::::0;;29816:15:::1;::::0;29853:13;;29816:51;;-1:-1:-1;;;29816:51:0;;29853:13;;::::1;29816:51;::::0;::::1;2530::1::0;29816:15:0;::::1;::::0;:36:::1;::::0;2503:18:1;;29816:51:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;29880:61;29893:24;29911:4;29893:9;:24::i;:::-;29919:21;29880:12;:61::i;:::-;29959:13;::::0;30004:15:::1;::::0;29952:111:::1;::::0;-1:-1:-1;;;29952:111:0;;-1:-1:-1;;;;;30004:15:0;;::::1;29952:111;::::0;::::1;9149:51:1::0;-1:-1:-1;;9216:18:1;;;9209:34;29959:13:0;::::1;::::0;29952:29:::1;::::0;9122:18:1;;29952:111:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;30076:11:0::1;:18:::0;;-1:-1:-1;;;;30076:18:0::1;-1:-1:-1::0;;;30076:18:0::1;::::0;;30105:20:::1;:34:::0;;;30172:78:::1;30202:37;:22:::0;30229:9:::1;30202:26;:37::i;:::-;30172:11:::0;;:15:::1;:78::i;:::-;30150:19;:100:::0;-1:-1:-1;;30275:12:0::1;30261:11;:26:::0;29312:983::o;46143:976::-;46275:19;46324:1;46315:6;:10;:29;;;;;46343:1;46329:11;:15;46315:29;46307:68;;;;-1:-1:-1;;;46307:68:0;;11845:2:1;46307:68:0;;;11827:21:1;11884:2;11864:18;;;11857:30;11923:28;11903:18;;;11896:56;11969:18;;46307:68:0;11643:350:1;46307:68:0;-1:-1:-1;;;;;46413:24:0;;46386;46413;;;:14;:24;;;;;:31;;46469:20;46483:6;46469:11;:20;:::i;:::-;46455:34;-1:-1:-1;46500:13:0;46516:12;46522:6;46455:34;46516:12;:::i;:::-;46500:28;;46555:16;46547:5;:24;46539:58;;;;-1:-1:-1;;;46539:58:0;;12503:2:1;46539:58:0;;;12485:21:1;12542:2;12522:18;;;12515:30;-1:-1:-1;;;12561:18:1;;;12554:51;12622:18;;46539:58:0;12301:345:1;46539:58:0;46624:6;46645:22;;;46641:125;;;46690:16;;-1:-1:-1;46729:25:0;46748:6;46690:16;46729:25;:::i;:::-;46721:33;;46641:125;46778:32;46830:5;46813:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;46813:23:0;;;;;;;;;;;;;;;;-1:-1:-1;46778:58:0;-1:-1:-1;46847:20:0;46899:5;46882:200;46910:3;46906:1;:7;46882:200;;;-1:-1:-1;;;;;46949:24:0;;46935:11;46949:24;;;:14;:24;;;;;:27;;46974:1;;46949:27;;;;;;:::i;:::-;;;;;;;;;46935:41;;47020:13;:18;47034:3;47020:18;;;;;;;;;;;46991:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;47004;46991:26;;;;;;;;:::i;:::-;;;;;;;;;;:47;47053:17;47069:1;47053:17;;:::i;:::-;;;46920:162;46915:3;;;;;:::i;:::-;;;;46882:200;;;-1:-1:-1;47099:12:0;;46143:976;-1:-1:-1;;;;;;;;;46143:976:0:o;30511:601::-;10706:6;;-1:-1:-1;;;;;10706:6:0;10716:10;10706:20;10698:65;;;;-1:-1:-1;;;10698:65:0;;;;;;;:::i;:::-;30563:16:::1;30582:43;30608:16;;30582:21;:25;;:43;;;;:::i;:::-;30563:62;;30638:21;30662:74;30701:24;30718:6;;30709:3;30701:16;;:24;;;;:::i;:::-;30675:6;::::0;30662:20:::1;::::0;:8;;:12:::1;:20::i;:::-;:24:::0;::::1;:74::i;:::-;30638:98;;30747:27;30777:80;30822:24;30839:6;;30830:3;30822:16;;:24;;;;:::i;:::-;30790:12;::::0;30777:26:::1;::::0;:8;;:12:::1;:26::i;:80::-;30747:110:::0;-1:-1:-1;30868:27:0::1;30898:76;30747:110:::0;30898:27:::1;:8:::0;30911:13;30898:12:::1;:27::i;:76::-;30868:106:::0;-1:-1:-1;31001:38:0::1;:13:::0;30868:106;31001:17:::1;:38::i;:::-;30985:54;;31052:52;31069:13;31084:19;31052:16;:52::i;:::-;30552:560;;;;30511:601::o:0;33687:414::-;33961:15;;:50;;-1:-1:-1;;;33961:50:0;;-1:-1:-1;;;;;2548:32:1;;;33961:50:0;;;2530:51:1;33787:29:0;;;;;;33961:15;;;;:40;;2503:18:1;;33961:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33915:96;;-1:-1:-1;33915:96:0;-1:-1:-1;33915:96:0;;34073:19;34083:8;34073:9;:19::i;:::-;34022:71;;;;;;33687:414;;;;;:::o;32294:81::-;32334:33;32349:10;32362:4;32334:6;:33::i;5850:380::-;-1:-1:-1;;;;;5986:19:0;;5978:68;;;;-1:-1:-1;;;5978:68:0;;13484:2:1;5978:68:0;;;13466:21:1;13523:2;13503:18;;;13496:30;13562:34;13542:18;;;13535:62;-1:-1:-1;;;13613:18:1;;;13606:34;13657:19;;5978:68:0;13282:400:1;5978:68:0;-1:-1:-1;;;;;6065:21:0;;6057:68;;;;-1:-1:-1;;;6057:68:0;;13889:2:1;6057:68:0;;;13871:21:1;13928:2;13908:18;;;13901:30;13967:34;13947:18;;;13940:62;-1:-1:-1;;;14018:18:1;;;14011:32;14060:19;;6057:68:0;13687:398:1;6057:68:0;-1:-1:-1;;;;;6138:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6190:32;;762:25:1;;;6190:32:0;;735:18:1;6190:32:0;;;;;;;5850:380;;;:::o;8524:98::-;8582:7;8609:5;8613:1;8609;:5;:::i;:::-;8602:12;8524:98;-1:-1:-1;;;8524:98:0:o;6238:502::-;-1:-1:-1;;;;;2737:18:0;;;6373:24;2737:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;6440:37:0;;6436:297;;6540:6;6520:16;:26;;6494:117;;;;-1:-1:-1;;;6494:117:0;;14292:2:1;6494:117:0;;;14274:21:1;14331:2;14311:18;;;14304:30;14370:31;14350:18;;;14343:59;14419:18;;6494:117:0;14090:353:1;6494:117:0;6655:51;6664:5;6671:7;6699:6;6680:16;:25;6655:8;:51::i;34217:2107::-;-1:-1:-1;;;;;34361:12:0;;;;;;:5;:12;;;;;;;;34360:13;:28;;;;-1:-1:-1;;;;;;34378:10:0;;;;;;:5;:10;;;;;;;;34377:11;34360:28;34352:37;;;;;;34471:21;;34521:11;;34427:7;;34471:21;-1:-1:-1;;;34521:11:0;;;;:113;;;;-1:-1:-1;;;;;;34550:32:0;;;;;;:25;:32;;;;;;;;;:83;;-1:-1:-1;;;;;;34603:30:0;;;;;;:25;:30;;;;;;;;34550:83;34521:154;;;;-1:-1:-1;;;;;;34652:23:0;;;;;;:16;:23;;;;;;;;34651:24;34521:154;:193;;;;-1:-1:-1;;;;;;34693:21:0;;;;;;:16;:21;;;;;;;;34692:22;34521:193;34503:842;;;34791:15;34767:20;;:39;;34741:145;;;;-1:-1:-1;;;34741:145:0;;14650:2:1;34741:145:0;;;14632:21:1;14689:2;14669:18;;;14662:30;14728:34;14708:18;;;14701:62;-1:-1:-1;;;14779:18:1;;;14772:42;14831:19;;34741:145:0;14448:408:1;34741:145:0;34947:15;34923:20;;:39;;:97;;;;;35005:15;34983:19;;:37;34923:97;34901:372;;;35079:2;35055:21;:26;;;35163:18;;35130:14;;:29;;-1:-1:-1;;;35130:29:0;;-1:-1:-1;;;;;2548:32:1;;;35130:29:0;;;2530:51:1;35130:14:0;;;;:24;;2503:18:1;;35130:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;;35100:157;;;;-1:-1:-1;;;35100:157:0;;15063:2:1;35100:157:0;;;15045:21:1;;;15082:18;;;15075:30;15141:34;15121:18;;;15114:62;15193:18;;35100:157:0;14861:356:1;35100:157:0;35304:29;35313:5;35320:3;35325:7;35304:8;:29::i;:::-;35287:46;;34503:842;-1:-1:-1;;;;;35359:24:0;;;;;;:19;:24;;;;;;:29;;35355:104;;-1:-1:-1;;;;;35405:24:0;;;;;;:19;:24;;;;;35432:15;35405:42;;35355:104;-1:-1:-1;;;;;35474:30:0;;;;;;:25;:30;;;;;;;;35473:31;:64;;;;-1:-1:-1;;;;;;35509:28:0;;;;;;:23;:28;;;;;;;;35508:29;35473:64;35469:360;;;35554:22;35579:34;35598:14;35579;35589:3;35579:9;:14::i;:::-;:18;;:34::i;:::-;35554:59;;35693:51;35738:5;35693:40;35711:21;;35693:13;2116:12;;;2028:108;35693:13;:17;;:40::i;:51::-;35654:14;:90;;35628:189;;;;-1:-1:-1;;;35628:189:0;;15424:2:1;35628:189:0;;;15406:21:1;15463:2;15443:18;;;15436:30;15502:34;15482:18;;;15475:62;-1:-1:-1;;;15553:18:1;;;15546:35;15598:19;;35628:189:0;15222:401:1;35628:189:0;35539:290;35469:360;35841:43;35857:5;35864:3;35869:14;35841:15;:43::i;:::-;35895:21;:39;;;35950:15;;:45;;-1:-1:-1;;;35950:45:0;;-1:-1:-1;;;;;2548:32:1;;;35950:45:0;;;2530:51:1;35950:15:0;;;;:38;;2503:18:1;;35950:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35945:184;;36033:15;;-1:-1:-1;;;;;36033:15:0;:26;36068:5;36076:16;36068:5;36076:9;:16::i;:::-;36033:60;;-1:-1:-1;;;;;;36033:60:0;;;;;;;-1:-1:-1;;;;;9167:32:1;;;36033:60:0;;;9149:51:1;9216:18;;;9209:34;9122:18;;36033:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36012:106;;36144:15;;:43;;-1:-1:-1;;;36144:43:0;;-1:-1:-1;;;;;2548:32:1;;;36144:43:0;;;2530:51:1;36144:15:0;;;;:38;;2503:18:1;;36144:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36139:178;;36225:15;;-1:-1:-1;;;;;36225:15:0;:26;36260:3;36266:14;36260:3;36266:9;:14::i;:::-;36225:56;;-1:-1:-1;;;;;;36225:56:0;;;;;;;-1:-1:-1;;;;;9167:32:1;;;36225:56:0;;;9149:51:1;9216:18;;;9209:34;9122:18;;36225:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36204:102;34341:1983;;34217:2107;;;:::o;32383:1146::-;32489:15;;:72;;-1:-1:-1;;;32489:72:0;;-1:-1:-1;;;;;2548:32:1;;;32489:72:0;;;2530:51:1;32460:26:0;;32489:15;;:38;;2503:18:1;;32489:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32460:101;;32615:1;32594:18;:22;32572:117;;;;-1:-1:-1;;;32572:117:0;;16341:2:1;32572:117:0;;;16323:21:1;16380:2;16360:18;;;16353:30;16419:34;16399:18;;;16392:62;-1:-1:-1;;;16470:18:1;;;16463:43;16523:19;;32572:117:0;16139:409:1;32572:117:0;32700:17;32728:19;32765:9;32760:324;;32803:15;;:50;;-1:-1:-1;;;32803:50:0;;-1:-1:-1;;;;;11314:15:1;;;32803:50:0;;;11296:34:1;;;11346:18;;;11339:43;32803:15:0;;;;:30;;11231:18:1;;32803:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32791:62;;32760:324;;;32898:15;;:55;;-1:-1:-1;;;32898:55:0;;-1:-1:-1;;;;;11314:15:1;;;32898:55:0;;;11296:34:1;32947:4:0;11346:18:1;;;11339:43;32898:15:0;;;;:30;;11231:18:1;;32898:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32886:67;-1:-1:-1;32972:13:0;;32968:105;;33020:37;33037:9;33048:8;33020:16;:37::i;:::-;33006:51;;32968:105;33098:13;;33094:428;;33128:29;:17;9874:19;;9892:1;9874:19;;;9785:127;33128:29;33172:11;33186:27;:17;9755:14;;9663:114;33186:27;33228:18;;;;:13;:18;;;;;;;;:40;;;33283:30;;;;:44;;;33373:15;33342:28;;;;:46;;;;-1:-1:-1;;;;;33405:24:0;;;;;:14;:24;;;;;:34;;;;;;;;;;;;;;;;;33461:49;;17405:25:1;;;17446:18;;;17439:34;;;17489:18;;17482:60;;;;33228:18:0;;-1:-1:-1;33461:49:0;;17393:2:1;17378:18;33461:49:0;;;;;;;33113:409;32449:1080;;;32383:1146;;:::o;8418:98::-;8476:7;8503:5;8507:1;8503;:5;:::i;43068:721::-;43237:16;;;43251:1;43237:16;;;;;;;;43133:7;;43181:21;;43133:7;;43237:16;;;;;;;;;;;;-1:-1:-1;43237:16:0;43213:40;;43282:4;43264;43269:1;43264:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;43264:23:0;;;:7;;;;;;;;;;:23;;;;43308:15;;:22;;;-1:-1:-1;;;43308:22:0;;;;:15;;;;;:20;;:22;;;;;43264:7;;43308:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43298:4;43303:1;43298:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;43298:32:0;;;:7;;;;;;;;;:32;43373:15;;43341:63;;43358:4;;43373:15;43391:12;43341:8;:63::i;:::-;43415:15;;:197;;-1:-1:-1;;;43415:197:0;;-1:-1:-1;;;;;43415:15:0;;;;:66;;:197;;43496:12;;43415:15;;43539:4;;43566;;43586:15;;43415:197;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43625:19;43647:44;43673:17;43647:21;:25;;:44;;;;:::i;:::-;43709:43;;;18780:25:1;;;18836:2;18821:18;;18814:34;;;43625:66:0;;-1:-1:-1;43709:43:0;;18753:18:1;43709:43:0;;;;;;;43770:11;43068:721;-1:-1:-1;;;;43068:721:0:o;44472:419::-;44587:15;;44555:63;;44572:4;;-1:-1:-1;;;;;44587:15:0;44605:12;44555:8;:63::i;:::-;44629:15;;-1:-1:-1;;;;;44629:15:0;:31;44668:10;44702:4;44722:12;44629:15;;44781:7;10644:6;;-1:-1:-1;;;;;10644:6:0;;10579:79;44781:7;44629:200;;;;;;-1:-1:-1;;;;;;44629:200:0;;;-1:-1:-1;;;;;19218:15:1;;;44629:200:0;;;19200:34:1;19250:18;;;19243:34;;;;19293:18;;;19286:34;;;;19336:18;;;19329:34;19400:15;;;19379:19;;;19372:44;44803:15:0;19432:19:1;;;19425:35;19134:19;;44629:200:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;44845:38:0;;;18780:25:1;;;18836:2;18821:18;;18814:34;;;44845:38:0;;-1:-1:-1;18753:18:1;44845:38:0;;;;;;;;44472:419;;:::o;8312:98::-;8370:7;8397:5;8401:1;8397;:5;:::i;8630:98::-;8688:7;8715:5;8719:1;8715;:5;:::i;42690:370::-;42795:12;;42791:89;;42832:16;;42824:44;;42832:16;;;;-1:-1:-1;;;;;42832:16:0;;42824:44;;;;;;;;;;;;42832:16;42824:44;;;;;;;;;;;;;;;;;;;;;42791:89;42894:18;;42890:107;;42937:22;;42929:56;;-1:-1:-1;;;;;42937:22:0;;;;42929:56;;;;;42970:14;;42937:22;42929:56;42937:22;42929:56;42970:14;42937:22;42929:56;;;;;;;;;;;;;;;;;;;;;42890:107;43012:40;;;18780:25:1;;;18836:2;18821:18;;18814:34;;;43012:40:0;;18753:18:1;43012:40:0;18606:248:1;39888:1848:0;-1:-1:-1;;;;;40101:32:0;;40002:7;40101:32;;;:25;:32;;;;;;40002:7;;;;40101:32;;;:66;;-1:-1:-1;;;;;;40137:30:0;;;;;;:25;:30;;;;;;;;40101:66;40079:147;;;;-1:-1:-1;;;40079:147:0;;20109:2:1;40079:147:0;;;20091:21:1;20148:2;20128:18;;;20121:30;20187:33;20167:18;;;20160:61;20238:18;;40079:147:0;19907:355:1;40079:147:0;-1:-1:-1;;;;;40243:32:0;;;;;;:25;:32;;;;;;;;40239:1455;;;40299:32;40327:3;40299:23;40311:10;;40299:7;:11;;:23;;;;:::i;:32::-;40292:39;-1:-1:-1;40364:17:0;:7;40292:39;40364:11;:17::i;:::-;40346:35;;40398:43;40414:5;40429:4;40436;40398:15;:43::i;:::-;40463:35;;;-1:-1:-1;;;;;20525:15:1;;20507:34;;40486:4:0;20572:2:1;20557:18;;20550:43;20609:18;;;20602:34;;;40463:35:0;;20457:2:1;20442:18;40463:35:0;;;;;;;40239:1455;;;40531:20;40570:38;40593:5;40600:7;40570:22;:38::i;:::-;40566:174;;;-1:-1:-1;40644:11:0;;40566:174;;;40711:13;40718:5;40711:6;:13::i;:::-;40696:28;;40566:174;40763:34;40793:3;40763:25;:7;40775:12;40763:11;:25::i;:34::-;40756:41;;40812:20;40835:87;40918:3;40835:60;40865:29;40882:11;;40865:12;:16;;:29;;;;:::i;:::-;40835:7;;:29;:60::i;:87::-;40962:22;;40812:110;;-1:-1:-1;40962:40:0;;40812:110;40962:26;:40::i;:::-;40937:22;:65;41037:17;:7;41049:4;41037:11;:17::i;:::-;41019:35;;41071:43;41087:5;41102:4;41109;41071:15;:43::i;:::-;41129:20;41152:84;41199:22;;41152:24;41170:4;41152:9;:24::i;:84::-;41129:107;;41272:23;;41257:12;:38;41253:227;;;41321:7;;;;41316:95;;-1:-1:-1;41368:23:0;;41316:95;41431:33;41451:12;41431:19;:33::i;:::-;41523:21;;41498:22;;:46;41494:131;;;41565:44;41586:22;;41565:20;:44::i;:::-;41646:36;;;-1:-1:-1;;;;;20525:15:1;;20507:34;;41670:4:0;20572:2:1;20557:18;;20550:43;20609:18;;;20602:34;;;41646:36:0;;20457:2:1;20442:18;41646:36:0;;;;;;;40516:1178;;;40239:1455;41713:15;39888:1848;-1:-1:-1;;;;;39888:1848:0:o;4128:708::-;-1:-1:-1;;;;;4259:18:0;;4251:68;;;;-1:-1:-1;;;4251:68:0;;20849:2:1;4251:68:0;;;20831:21:1;20888:2;20868:18;;;20861:30;20927:34;20907:18;;;20900:62;-1:-1:-1;;;20978:18:1;;;20971:35;21023:19;;4251:68:0;20647:401:1;4251:68:0;-1:-1:-1;;;;;4338:16:0;;4330:64;;;;-1:-1:-1;;;4330:64:0;;21255:2:1;4330:64:0;;;21237:21:1;21294:2;21274:18;;;21267:30;21333:34;21313:18;;;21306:62;-1:-1:-1;;;21384:18:1;;;21377:33;21427:19;;4330:64:0;21053:399:1;4330:64:0;-1:-1:-1;;;;;4480:15:0;;4458:19;4480:15;;;;;;;;;;;4528:21;;;;4506:109;;;;-1:-1:-1;;;4506:109:0;;21659:2:1;4506:109:0;;;21641:21:1;21698:2;21678:18;;;21671:30;21737:34;21717:18;;;21710:62;-1:-1:-1;;;21788:18:1;;;21781:36;21834:19;;4506:109:0;21457:402:1;4506:109:0;-1:-1:-1;;;;;4651:15:0;;;:9;:15;;;;;;;;;;;4669:20;;;4651:38;;4711:13;;;;;;;;:23;;4683:6;;4651:9;4711:23;;4683:6;;4711:23;:::i;:::-;;;;;;;;4767:2;-1:-1:-1;;;;;4752:26:0;4761:4;-1:-1:-1;;;;;4752:26:0;;4771:6;4752:26;;;;762:25:1;;750:2;735:18;;616:177;4752:26:0;;;;;;;;4791:37;39334:324;43797:667;43891:7;43916:27;43946:24;43964:4;43946:9;:24::i;:::-;44005:16;;;44019:1;44005:16;;;;;;;;43916:54;;-1:-1:-1;43981:21:0;;44005:16;;;;;;;;;;-1:-1:-1;;44042:15:0;;:22;;;-1:-1:-1;;;44042:22:0;;;;43981:40;;-1:-1:-1;;;;;;44042:15:0;;;;:20;;-1:-1:-1;44042:22:0;;;;;;;;;;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44032:4;44037:1;44032:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;44032:32:0;;;-1:-1:-1;;;;;44032:32:0;;;;;44093:4;44075;44080:1;44075:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;44075:23:0;;;:7;;;;;;;;;:23;44111:15;;:140;;-1:-1:-1;;;44111:140:0;;:15;;;:66;;44199:10;;44111:140;;:15;;44224:4;;44230:3;;44235:15;;44111:140;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44264:22;44289:73;44332:19;44289:24;44307:4;44289:9;:24::i;:73::-;44380:44;;;18780:25:1;;;18836:2;18821:18;;18814:34;;;44264:98:0;;-1:-1:-1;44380:44:0;;18753:18:1;44380:44:0;;;;;;;44442:14;43797:667;-1:-1:-1;;;;;43797:667:0:o;45457:521::-;45627:22;;-1:-1:-1;;;;;45599:25:0;;45559:4;45599:25;;;:20;:25;;;;;;45559:4;;45666:15;;45599:50;;45627:22;45599:50;:::i;:::-;:82;45581:365;;-1:-1:-1;;;;;45708:25:0;;;;;;:20;:25;;;;;45736:15;45708:43;;45840:23;;45821:52;;45869:3;;45821:43;;:14;45729:3;45821:9;:14::i;:52::-;45788:12;:85;45766:169;;-1:-1:-1;45915:4:0;45908:11;;45766:169;-1:-1:-1;45965:5:0;45457:521;;;;:::o;41744:938::-;41814:26;41843:33;41872:3;41843:24;41860:6;;41843:12;:16;;:24;;;;:::i;:33::-;41814:62;-1:-1:-1;41889:21:0;41913:25;41814:62;41936:1;41913:22;:25::i;:::-;41889:49;-1:-1:-1;41949:21:0;41973:31;:12;41889:49;41973:16;:31::i;:::-;41949:55;;42017:16;42036:31;42053:13;42036:16;:31::i;:::-;42017:50;;42080:19;42102:29;42127:3;42102:20;42115:6;;42102:8;:12;;:20;;;;:::i;:29::-;42080:51;;42142:21;42166:29;42191:3;42166:20;42179:6;;42166:8;:12;;:20;;;;:::i;:29::-;42142:53;;42206:27;42236:35;42267:3;42236:26;42249:12;;42236:8;:12;;:26;;;;:::i;:35::-;42206:65;-1:-1:-1;42282:27:0;42312:111;42206:65;42312:72;42370:13;42312:72;:8;42339:11;42312:26;:39::i;:111::-;42282:141;-1:-1:-1;42450:38:0;:13;42282:141;42450:17;:38::i;:::-;42434:54;;42501:52;42518:13;42533:19;42501:16;:52::i;:::-;42586:1;42570:13;:17;:36;;;;;42605:1;42591:11;:15;42570:36;42566:109;;;42623:40;42636:13;42651:11;42623:12;:40::i;:::-;41803:879;;;;;;;;41744:938;:::o;44899:550::-;44970:17;44990:30;45007:12;44990:16;:30::i;:::-;45058:22;;44970:50;;-1:-1:-1;45058:40:0;;45085:12;45058:26;:40::i;:::-;45033:22;:65;45148:16;;45109:22;;45134:31;;:9;;:13;:31::i;:::-;45205:15;;45197:80;;45109:56;;-1:-1:-1;45179:12:0;;-1:-1:-1;;;;;45205:15:0;;;;45109:56;;45179:12;45197:80;45179:12;45197:80;45109:56;45205:15;45197:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45178:99;;;45294:7;45290:152;;;45323:24;;762:25:1;;;45323:24:0;;750:2:1;735:18;45323:24:0;;;;;;;45290:152;;;45399:16;;:31;;45420:9;45399:20;:31::i;:::-;45380:16;:50;44959:490;;;44899:550;:::o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;798:131::-;-1:-1:-1;;;;;873:31:1;;863:42;;853:70;;919:1;916;909:12;853:70;798:131;:::o;934:315::-;1002:6;1010;1063:2;1051:9;1042:7;1038:23;1034:32;1031:52;;;1079:1;1076;1069:12;1031:52;1118:9;1105:23;1137:31;1162:5;1137:31;:::i;:::-;1187:5;1239:2;1224:18;;;;1211:32;;-1:-1:-1;;;934:315:1:o;1446:180::-;1505:6;1558:2;1546:9;1537:7;1533:23;1529:32;1526:52;;;1574:1;1571;1564:12;1526:52;-1:-1:-1;1597:23:1;;1446:180;-1:-1:-1;1446:180:1:o;1631:248::-;1699:6;1707;1760:2;1748:9;1739:7;1735:23;1731:32;1728:52;;;1776:1;1773;1766:12;1728:52;-1:-1:-1;;1799:23:1;;;1869:2;1854:18;;;1841:32;;-1:-1:-1;1631:248:1:o;1884:456::-;1961:6;1969;1977;2030:2;2018:9;2009:7;2005:23;2001:32;1998:52;;;2046:1;2043;2036:12;1998:52;2085:9;2072:23;2104:31;2129:5;2104:31;:::i;:::-;2154:5;-1:-1:-1;2211:2:1;2196:18;;2183:32;2224:33;2183:32;2224:33;:::i;:::-;1884:456;;2276:7;;-1:-1:-1;;;2330:2:1;2315:18;;;;2302:32;;1884:456::o;2781:247::-;2840:6;2893:2;2881:9;2872:7;2868:23;2864:32;2861:52;;;2909:1;2906;2899:12;2861:52;2948:9;2935:23;2967:31;2992:5;2967:31;:::i;3033:454::-;3128:6;3136;3144;3152;3160;3213:3;3201:9;3192:7;3188:23;3184:33;3181:53;;;3230:1;3227;3220:12;3181:53;-1:-1:-1;;3253:23:1;;;3323:2;3308:18;;3295:32;;-1:-1:-1;3374:2:1;3359:18;;3346:32;;3425:2;3410:18;;3397:32;;-1:-1:-1;3476:3:1;3461:19;3448:33;;-1:-1:-1;3033:454:1;-1:-1:-1;3033:454:1:o;3492:388::-;3560:6;3568;3621:2;3609:9;3600:7;3596:23;3592:32;3589:52;;;3637:1;3634;3627:12;3589:52;3676:9;3663:23;3695:31;3720:5;3695:31;:::i;:::-;3745:5;-1:-1:-1;3802:2:1;3787:18;;3774:32;3815:33;3774:32;3815:33;:::i;:::-;3867:7;3857:17;;;3492:388;;;;;:::o;3885:118::-;3971:5;3964:13;3957:21;3950:5;3947:32;3937:60;;3993:1;3990;3983:12;4008:382;4073:6;4081;4134:2;4122:9;4113:7;4109:23;4105:32;4102:52;;;4150:1;4147;4140:12;4102:52;4189:9;4176:23;4208:31;4233:5;4208:31;:::i;:::-;4258:5;-1:-1:-1;4315:2:1;4300:18;;4287:32;4328:30;4287:32;4328:30;:::i;4603:156::-;4669:20;;4729:4;4718:16;;4708:27;;4698:55;;4749:1;4746;4739:12;4698:55;4603:156;;;:::o;4764:182::-;4821:6;4874:2;4862:9;4853:7;4849:23;4845:32;4842:52;;;4890:1;4887;4880:12;4842:52;4913:27;4930:9;4913:27;:::i;5275:387::-;5359:6;5367;5375;5383;5436:3;5424:9;5415:7;5411:23;5407:33;5404:53;;;5453:1;5450;5443:12;5404:53;5476:27;5493:9;5476:27;:::i;:::-;5466:37;5550:2;5535:18;;5522:32;;-1:-1:-1;5601:2:1;5586:18;;5573:32;;5652:2;5637:18;5624:32;;-1:-1:-1;5275:387:1;-1:-1:-1;;;5275:387:1:o;5667:615::-;5753:6;5761;5814:2;5802:9;5793:7;5789:23;5785:32;5782:52;;;5830:1;5827;5820:12;5782:52;5870:9;5857:23;5899:18;5940:2;5932:6;5929:14;5926:34;;;5956:1;5953;5946:12;5926:34;5994:6;5983:9;5979:22;5969:32;;6039:7;6032:4;6028:2;6024:13;6020:27;6010:55;;6061:1;6058;6051:12;6010:55;6101:2;6088:16;6127:2;6119:6;6116:14;6113:34;;;6143:1;6140;6133:12;6113:34;6196:7;6191:2;6181:6;6178:1;6174:14;6170:2;6166:23;6162:32;6159:45;6156:65;;;6217:1;6214;6207:12;6156:65;6248:2;6240:11;;;;;6270:6;;-1:-1:-1;5667:615:1;;-1:-1:-1;;;;5667:615:1:o;6287:241::-;6343:6;6396:2;6384:9;6375:7;6371:23;6367:32;6364:52;;;6412:1;6409;6402:12;6364:52;6451:9;6438:23;6470:28;6492:5;6470:28;:::i;6533:383::-;6610:6;6618;6626;6679:2;6667:9;6658:7;6654:23;6650:32;6647:52;;;6695:1;6692;6685:12;6647:52;6734:9;6721:23;6753:31;6778:5;6753:31;:::i;:::-;6803:5;6855:2;6840:18;;6827:32;;-1:-1:-1;6906:2:1;6891:18;;;6878:32;;6533:383;-1:-1:-1;;;6533:383:1:o;6921:849::-;7148:2;7200:21;;;7270:13;;7173:18;;;7292:22;;;7119:4;;7148:2;7333;;7351:18;;;;7392:15;;;7119:4;7435:309;7449:6;7446:1;7443:13;7435:309;;;7508:13;;7546:9;;7534:22;;7596:11;;;7590:18;7576:12;;;7569:40;7649:11;;7643:18;7629:12;;;7622:40;7691:4;7682:14;;;;7719:15;;;;7471:1;7464:9;7435:309;;;-1:-1:-1;7761:3:1;;6921:849;-1:-1:-1;;;;;;;6921:849:1:o;7775:380::-;7854:1;7850:12;;;;7897;;;7918:61;;7972:4;7964:6;7960:17;7950:27;;7918:61;8025:2;8017:6;8014:14;7994:18;7991:38;7988:161;;8071:10;8066:3;8062:20;8059:1;8052:31;8106:4;8103:1;8096:15;8134:4;8131:1;8124:15;7988:161;;7775:380;;;:::o;8160:356::-;8362:2;8344:21;;;8381:18;;;8374:30;8440:34;8435:2;8420:18;;8413:62;8507:2;8492:18;;8160:356::o;8521:184::-;8591:6;8644:2;8632:9;8623:7;8619:23;8615:32;8612:52;;;8660:1;8657;8650:12;8612:52;-1:-1:-1;8683:16:1;;8521:184;-1:-1:-1;8521:184:1:o;8710:127::-;8771:10;8766:3;8762:20;8759:1;8752:31;8802:4;8799:1;8792:15;8826:4;8823:1;8816:15;8842:128;8882:3;8913:1;8909:6;8906:1;8903:13;8900:39;;;8919:18;;:::i;:::-;-1:-1:-1;8955:9:1;;8842:128::o;9660:127::-;9721:10;9716:3;9712:20;9709:1;9702:31;9752:4;9749:1;9742:15;9776:4;9773:1;9766:15;9792:135;9831:3;9852:17;;;9849:43;;9872:18;;:::i;:::-;-1:-1:-1;9919:1:1;9908:13;;9792:135::o;9932:175::-;9969:3;10013:4;10006:5;10002:16;10042:4;10033:7;10030:17;10027:43;;10050:18;;:::i;:::-;10099:1;10086:15;;9932:175;-1:-1:-1;;9932:175:1:o;10828:251::-;10898:6;10951:2;10939:9;10930:7;10926:23;10922:32;10919:52;;;10967:1;10964;10957:12;10919:52;10999:9;10993:16;11018:31;11043:5;11018:31;:::i;11393:245::-;11460:6;11513:2;11501:9;11492:7;11488:23;11484:32;11481:52;;;11529:1;11526;11519:12;11481:52;11561:9;11555:16;11580:28;11602:5;11580:28;:::i;11998:168::-;12038:7;12104:1;12100;12096:6;12092:14;12089:1;12086:21;12081:1;12074:9;12067:17;12063:45;12060:71;;;12111:18;;:::i;:::-;-1:-1:-1;12151:9:1;;11998:168::o;12171:125::-;12211:4;12239:1;12236;12233:8;12230:34;;;12244:18;;:::i;:::-;-1:-1:-1;12281:9:1;;12171:125::o;12651:127::-;12712:10;12707:3;12703:20;12700:1;12693:31;12743:4;12740:1;12733:15;12767:4;12764:1;12757:15;12783:112;12815:1;12841;12831:35;;12846:18;;:::i;:::-;-1:-1:-1;12880:9:1;;12783:112::o;12900:127::-;12961:10;12956:3;12952:20;12949:1;12942:31;12992:4;12989:1;12982:15;13016:4;13013:1;13006:15;13032:245;13111:6;13119;13172:2;13160:9;13151:7;13147:23;13143:32;13140:52;;;13188:1;13185;13178:12;13140:52;-1:-1:-1;;13211:16:1;;13267:2;13252:18;;;13246:25;13211:16;;13246:25;;-1:-1:-1;13032:245:1:o;17553:461::-;17606:3;17644:5;17638:12;17671:6;17666:3;17659:19;17697:4;17726:2;17721:3;17717:12;17710:19;;17763:2;17756:5;17752:14;17784:1;17794:195;17808:6;17805:1;17802:13;17794:195;;;17873:13;;-1:-1:-1;;;;;17869:39:1;17857:52;;17929:12;;;;17964:15;;;;17905:1;17823:9;17794:195;;;-1:-1:-1;18005:3:1;;17553:461;-1:-1:-1;;;;;17553:461:1:o;18019:582::-;18318:6;18307:9;18300:25;18361:6;18356:2;18345:9;18341:18;18334:34;18404:3;18399:2;18388:9;18384:18;18377:31;18281:4;18425:57;18477:3;18466:9;18462:19;18454:6;18425:57;:::i;:::-;-1:-1:-1;;;;;18518:32:1;;;;18513:2;18498:18;;18491:60;-1:-1:-1;18582:3:1;18567:19;18560:35;18417:65;18019:582;-1:-1:-1;;;18019:582:1:o;19471:306::-;19559:6;19567;19575;19628:2;19616:9;19607:7;19603:23;19599:32;19596:52;;;19644:1;19641;19634:12;19596:52;19673:9;19667:16;19657:26;;19723:2;19712:9;19708:18;19702:25;19692:35;;19767:2;19756:9;19752:18;19746:25;19736:35;;19471:306;;;;;:::o;19782:120::-;19822:1;19848;19838:35;;19853:18;;:::i;:::-;-1:-1:-1;19887:9:1;;19782:120::o;21864:510::-;22135:6;22124:9;22117:25;22178:3;22173:2;22162:9;22158:18;22151:31;22098:4;22199:57;22251:3;22240:9;22236:19;22228:6;22199:57;:::i;:::-;-1:-1:-1;;;;;22292:32:1;;;;22287:2;22272:18;;22265:60;-1:-1:-1;22356:2:1;22341:18;22334:34;22191:65;21864:510;-1:-1:-1;;21864:510:1:o
Swarm Source
ipfs://a1a3e832f086de6cb61f3b31813c5ae482d8dd06bf6b057ed57fae724de6effc
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.
Add Token to MetaMask (Web3)