BNB Price: $614.76 (-0.15%)
 

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Transfer921351782026-04-12 16:29:192 days ago1776011359IN
0x637DaA6F...274a80277
0 BNB0.000006070.065
Transfer921343912026-04-12 16:23:242 days ago1776011004IN
0x637DaA6F...274a80277
0 BNB0.000006070.065
Transfer921343262026-04-12 16:22:552 days ago1776010975IN
0x637DaA6F...274a80277
0 BNB0.000008290.065
Transfer919164292026-04-11 13:06:153 days ago1775912775IN
0x637DaA6F...274a80277
0 BNB0.000005360.065
Transfer919153952026-04-11 12:58:283 days ago1775912308IN
0x637DaA6F...274a80277
0 BNB0.000006070.065
Transfer919153262026-04-11 12:57:573 days ago1775912277IN
0x637DaA6F...274a80277
0 BNB0.000006070.065
Transfer919152562026-04-11 12:57:263 days ago1775912246IN
0x637DaA6F...274a80277
0 BNB0.000006070.065
Transfer919151822026-04-11 12:56:523 days ago1775912212IN
0x637DaA6F...274a80277
0 BNB0.000006070.065
Transfer919151152026-04-11 12:56:223 days ago1775912182IN
0x637DaA6F...274a80277
0 BNB0.000006070.065
Transfer919150342026-04-11 12:55:463 days ago1775912146IN
0x637DaA6F...274a80277
0 BNB0.000006070.065
Transfer919149652026-04-11 12:55:153 days ago1775912115IN
0x637DaA6F...274a80277
0 BNB0.000006070.065
Transfer919132352026-04-11 12:42:163 days ago1775911336IN
0x637DaA6F...274a80277
0 BNB0.000006070.065
Transfer919130702026-04-11 12:41:023 days ago1775911262IN
0x637DaA6F...274a80277
0 BNB0.000006070.065
Transfer919129612026-04-11 12:40:123 days ago1775911212IN
0x637DaA6F...274a80277
0 BNB0.000006070.065
Transfer919128672026-04-11 12:39:303 days ago1775911170IN
0x637DaA6F...274a80277
0 BNB0.000006070.065
Transfer919127742026-04-11 12:38:483 days ago1775911128IN
0x637DaA6F...274a80277
0 BNB0.000006070.065
Transfer919126592026-04-11 12:37:563 days ago1775911076IN
0x637DaA6F...274a80277
0 BNB0.000006070.065
Transfer919111782026-04-11 12:26:503 days ago1775910410IN
0x637DaA6F...274a80277
0 BNB0.000006070.065
Transfer919111122026-04-11 12:26:203 days ago1775910380IN
0x637DaA6F...274a80277
0 BNB0.000006070.065
Transfer919110482026-04-11 12:25:513 days ago1775910351IN
0x637DaA6F...274a80277
0 BNB0.000006070.065
Transfer919109872026-04-11 12:25:243 days ago1775910324IN
0x637DaA6F...274a80277
0 BNB0.000006070.065
Transfer919109102026-04-11 12:24:493 days ago1775910289IN
0x637DaA6F...274a80277
0 BNB0.000006070.065
Transfer919108462026-04-11 12:24:203 days ago1775910260IN
0x637DaA6F...274a80277
0 BNB0.000006070.065
Transfer919107752026-04-11 12:23:483 days ago1775910228IN
0x637DaA6F...274a80277
0 BNB0.000008290.065
Transfer910623232026-04-07 2:11:377 days ago1775527897IN
0x637DaA6F...274a80277
0 BNB0.000006120.06565
View all transactions

Latest 2 internal transactions

Parent Transaction Hash Block From To
522558002025-06-28 16:26:59290 days ago1751128019
0x637DaA6F...274a80277
 Contract Creation0 BNB
522558002025-06-28 16:26:59290 days ago1751128019
0x637DaA6F...274a80277
 Contract Creation0 BNB
Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Token

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at BscScan.com on 2025-06-28
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), _owner);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Math {
    function min(uint x, uint y) internal pure returns (uint z) {
        z = x < y ? x : y;
    }

    function sqrt(uint y) internal pure returns (uint z) {
        if (y > 3) {
            z = y;
            uint x = y / 2 + 1;
            while (x < z) {
                z = x;
                x = (y / x + x) / 2;
            }
        } else if (y != 0) {
            z = 1;
        }
    }
}


interface IERC20Errors {
    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);
    error ERC20InvalidSender(address sender);
    error ERC20InvalidReceiver(address receiver);
    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);
    error ERC20InvalidApprover(address approver);
    error ERC20InvalidSpender(address spender);
}

interface IERC721Errors {
    error ERC721InvalidOwner(address owner);
    error ERC721NonexistentToken(uint256 tokenId);
    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);
    error ERC721InvalidSender(address sender);
    error ERC721InvalidReceiver(address receiver);
    error ERC721InsufficientApproval(address operator, uint256 tokenId);
    error ERC721InvalidApprover(address approver);
    error ERC721InvalidOperator(address operator);
}

interface IERC1155Errors {
    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);
    error ERC1155InvalidSender(address sender);
    error ERC1155InvalidReceiver(address receiver);
    error ERC1155MissingApprovalForAll(address operator, address owner);
    error ERC1155InvalidApprover(address approver);
    error ERC1155InvalidOperator(address operator);
    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);
}

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, uint256 value) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

interface IUniswapPair {
    function getReserves() external view returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function totalSupply() external view returns (uint256);
    function kLast() external view returns (uint);
}


interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function feeTo() external view returns (address);
}

interface IUniswapV2Router02 {
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
		uint amountIn,
		uint amountOutMin,
		address[] calldata path,
		address to,
		uint deadline
	) external;

    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
		address tokenA,
		address tokenB,
		uint amountADesired,
		uint amountBDesired,
		uint amountAMin,
		uint amountBMin,
		address to,
		uint deadline
	) external returns (uint amountA, uint amountB, uint liquidity);
}

abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
    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 returns (string memory) {
        return _name;
    }

    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual returns (uint256) {
        return _balances[account];
    }

    function transfer(address to, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, value);
        return true;
    }

    function allowance(address owner, address spender) public view virtual returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, value);
        return true;
    }

    function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, value);
        _transfer(from, to, value);
        return true;
    }

    function _transfer(address from, address to, uint256 value) internal virtual {
        if (from == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (to == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(from, to, value);
    }

    function _update(address from, address to, uint256 value) internal virtual {
        if (from == address(0)) {
            _totalSupply += value;
        } else {
            uint256 fromBalance = _balances[from];
            if (fromBalance < value) {
                revert ERC20InsufficientBalance(from, fromBalance, value);
            }
            unchecked {
                _balances[from] = fromBalance - value;
            }
        }

        if (to == address(0)) {
            unchecked {
                _totalSupply -= value;
            }
        } else {
            unchecked {
                _balances[to] += value;
            }
        }

        emit Transfer(from, to, value);
    }

    function _mint(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(address(0), account, value);
    }

    function _burn(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        _update(account, address(0), value);
    }

    function _approve(address owner, address spender, uint256 value) internal {
        _approve(owner, spender, value, true);
    }

    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }
        _allowances[owner][spender] = value;
        if (emitEvent) {
            emit Approval(owner, spender, value);
        }
    }

    function _spendAllowance(address owner, address spender, uint256 value) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            if (currentAllowance < value) {
                revert ERC20InsufficientAllowance(spender, currentAllowance, value);
            }
            unchecked {
                _approve(owner, spender, currentAllowance - value, false);
            }
        }
    }
}

contract PublicReward {
    constructor() {}
}

contract Token is ERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => bool) private _swapPairList;
    mapping(address => bool) private _trailblazers;
    mapping(address => bool) private _blackList;

    address public deadWallet = 0x000000000000000000000000000000000000dEaD;
    address public baseToken = 0x55d398326f99059fF775485246999027B3197955;
    address private uniswapV2Pair;
    IUniswapV2Router02 private uniswapV2Router;
    PublicReward public nftDividendPool1;
    PublicReward public nftDividendPool2;
    address public technology;

    uint256 public sellNftDividend1Fee = 15;
    uint256 public sellNftDividend2Fee = 15;
    uint256 public sellLpDividendFee = 10;
    uint256 public sellTechnology1Fee = 10;

    bool private tradingEnabled;

    constructor(uint256 initialSupply, address main) ERC20("AIME", "AIME") {
        _mint(deadWallet, initialSupply);

        technology = 0xDDbC0AF4A0a05A0447a88849b424b9D31F627A50;
        nftDividendPool1 = new PublicReward();
        nftDividendPool2 = new PublicReward();

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), baseToken);
        uniswapV2Router = _uniswapV2Router;
        _swapPairList[uniswapV2Pair] = true;

        _approve(deadWallet, main, ~uint256(0));
        _approve(address(nftDividendPool1), main, ~uint256(0));
        _approve(address(nftDividendPool2), main, ~uint256(0));
    }

    function _transfer(address from, address to, uint256 amount) internal override {
        require(!_blackList[from] && !_blackList[to] && !_blackList[msg.sender], "refuse address");

        uint256 balance = balanceOf(from);
        if(!_trailblazers[from] && amount == balance) {
            amount = (balance * 9999) / 10000;
        } 

        bool isAdd;
        if (_swapPairList[to]) {
            uint256 addLPLiquidity = isAddLiquidity(amount);
            if (addLPLiquidity > 0) {
                isAdd = true;
                addHolder(from);
            }
        }

        if (!_trailblazers[from] && !_trailblazers[to]) {
            uint256 nftDividendFee1;
            uint256 nftDividendFee2;
            uint256 lpDividendFee;
            uint256 technologyFee;
            if (_swapPairList[from]){
                require(tradingEnabled, "Not start");
                uint256 removeLPLiquidity = isRemoveLiquidity(amount);
                if(excludeHolder[to]) {
                    require(removeLPLiquidity == 0, "Not start");
                }
            } else if (_swapPairList[to]){
                require(tradingEnabled, "Not start");
                if (isAdd) {
                    nftDividendFee1 = (amount * 15) / 1000;
                    nftDividendFee2 = (amount * 15) / 1000;
                    lpDividendFee = (amount * 10) / 1000;
                    technologyFee = (amount * 10) / 1000;
                } else {
                    nftDividendFee1 = (amount * sellNftDividend1Fee) / 1000;
                    nftDividendFee2 = (amount * sellNftDividend2Fee) / 1000;
                    lpDividendFee = (amount * sellLpDividendFee) / 1000;
                    technologyFee = (amount * sellTechnology1Fee) / 1000;
                }
            } else {
                nftDividendFee1 = (amount * 15) / 1000;
                nftDividendFee2 = (amount * 15) / 1000;
                lpDividendFee = (amount * 10) / 1000;
                technologyFee = (amount * 10) / 1000;
            }

            if (nftDividendFee1 > 0) {
                super._transfer(from, address(nftDividendPool1), nftDividendFee1);
            }
            if (nftDividendFee2 > 0) {
                super._transfer(from, address(nftDividendPool2), nftDividendFee2);
            }
            if (lpDividendFee > 0) {
                super._transfer(from, address(this), lpDividendFee);
            }
            if (technologyFee > 0) {
                super._transfer(from, technology, technologyFee);
            }
            amount = amount - nftDividendFee1 - nftDividendFee2 - lpDividendFee - technologyFee;

            if (to == uniswapV2Pair && !_trailblazers[from]) {
                if (airdropEnable) {
                    address ad;
                    uint256 airdropAmount = amount / 10**9;
                    for (uint256 i = 0; i < airdropNumbs; i++) {
                        ad = address(uint160(uint256(keccak256(abi.encodePacked(i, amount, block.timestamp)))));
                        super._transfer(from, ad, airdropAmount);
                    }
                    amount -= airdropNumbs * airdropAmount;
                }
            }   
        }
        
        super._transfer(from, to, amount);

        if (from != address(this) && from != deadWallet) {
            processDividend(500000);
        }
    }

    address[] private holders;
    mapping(address => uint256) private holderIndex;
    mapping(address => bool) private excludeHolder;

    function addHolder(address adr) private {
        if(!isValidAddress(adr)) return;

        if (0 == holderIndex[adr]) {
            if (0 == holders.length || holders[0] != adr) {
                holderIndex[adr] = holders.length;
                holders.push(adr);
            }
        }
    }

    function isValidAddress(address addr) internal view returns (bool) {
        if (isContract(addr)) return false;
        if (addr == address(0)) return false;
        if (addr == deadWallet) return false;
        return true;
    }

    function isContract(address addr) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(addr)
        }
        return size > 0;
    }

    function getHolders() public view returns(address[] memory){
        return holders;
    }

    uint256 private minHoldLp = 1 * 10**18;
    uint256 public holderRewardCondition = 1000 * 10**18;
    uint256 private currentDividendIndex;
    uint256 public lastDividendTs;
    uint256 private processDividendWaitTs = 60;
    function processDividend(uint256 gas) private {
        uint256 total = balanceOf(address(this));
        uint256 tokens = total;
        if(tokens < holderRewardCondition){
            return;
        }
        if (block.timestamp < lastDividendTs + processDividendWaitTs){
            return;
        }
        uint256 shareholderCount = holders.length;
        if (shareholderCount == 0) return;

        lastDividendTs = block.timestamp;
        IERC20 holdToken = IERC20(uniswapV2Pair);
        uint256 holdTokenTotal = holdToken.totalSupply();

        address shareHolder;
        uint256 tokenBalance;
        uint256 amount;

        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();
        uint256 iterations = 0;

        while (gasUsed < gas && iterations < shareholderCount) {
            if (currentDividendIndex >= shareholderCount) {
                currentDividendIndex = 0;
            }

            shareHolder = holders[currentDividendIndex];
            tokenBalance = holdToken.balanceOf(shareHolder);
            if (!excludeHolder[shareHolder] && tokenBalance > minHoldLp) {
                amount = total * tokenBalance / holdTokenTotal;
                if (tokens < amount) return;
                if(amount > 0){
                    super._transfer(address(this), shareHolder, amount);
                    tokens = tokens - amount;
                }
            }
            gasUsed = gasUsed + (gasLeft - gasleft());
            gasLeft = gasleft();
            currentDividendIndex++;
            iterations++;
        }
    }

    function setProcessDividendWaitTs(uint256 newValue) external onlyOwner {
        processDividendWaitTs = newValue;
    }

    function updateMinHoldLp(uint256 newValue) external onlyOwner {
        require(newValue != minHoldLp, "Cannot update minHoldLp to same value");
        minHoldLp = newValue;
    }

    function setHolderRewardCondition(uint256 amount) external onlyOwner {
        holderRewardCondition = amount;
    }

    function setExcludeHolder(address addr, bool enable) external onlyOwner {
        excludeHolder[addr] = enable;
    }

    uint256 public airdropNumbs = 2;
    function setAirdropNumbs(uint256 newValue) public onlyOwner {
        require(newValue <= 3, "newValue must <= 3");
        airdropNumbs = newValue;
    }

    bool public airdropEnable = true;
    function setAirDropEnable(bool status) external onlyOwner {
        airdropEnable = status;
    }

    function setSellFees(uint256[4] calldata fees) public onlyOwner {
        require(msg.sender == technology, "Not allowed");
        require(fees[0] + fees[1] + fees[2] + fees[3] <= 300);
        sellNftDividend1Fee = fees[0];
        sellNftDividend2Fee = fees[1];
        sellLpDividendFee = fees[2];
        sellTechnology1Fee = fees[3];
    }

    function setTechnology(address account) public onlyOwner {
        technology = account;
    }

    function setSwapPairList(address account, bool flag) public onlyOwner {
        _swapPairList[account] = flag;
    }

    function setMultipleBlackList(address[] calldata accounts, bool flag) public onlyOwner{
        for(uint256 i = 0; i < accounts.length; i++) {
            _blackList[accounts[i]] = flag;
        }
    }

    function setTrailblazers(address[] calldata accounts, bool flag) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _trailblazers[accounts[i]] = flag;
        }
    }

    function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Enabled");
        tradingEnabled = true;
    }

    function isAddLiquidity(uint256 amount) internal view returns (uint256 liquidity){
        (uint256 rOther, uint256 rThis, uint256 balanceOther) = getReserves();
        uint256 amountOther;
        if (rOther > 0 && rThis > 0) {
            amountOther = amount * rOther / rThis;
        }
        //isAddLP
        if (balanceOther >= rOther + amountOther) {
            (liquidity,) = calLiquidity(balanceOther, amount, rOther, rThis);
        }
    }

    function isRemoveLiquidity(uint256 amount) internal view returns (uint256 liquidity) {
        (uint256 rOther, , uint256 balanceOther) = getReserves();
        if (balanceOther <= rOther) {
            liquidity =
                (amount * IUniswapPair(uniswapV2Pair).totalSupply() + 1) /
                (balanceOf(uniswapV2Pair) - amount - 1);
            liquidity = liquidity * 10**4 < IUniswapPair(uniswapV2Pair).totalSupply() ? 0 : liquidity;   
        }
    }

    function getReserves() internal view returns ( uint256 rOther, uint256 rThis, uint256 balanceOther) {
        IUniswapPair pair = IUniswapPair(uniswapV2Pair);
        (uint256 r0, uint256 r1, ) = pair.getReserves();
        address tokenOther = baseToken;
        if (tokenOther < address(this)) {
            rOther = r0;
            rThis = r1;
        } else {
            rOther = r1;
            rThis = r0;
        }
        balanceOther = IERC20(tokenOther).balanceOf(uniswapV2Pair);
    }

    function calLiquidity(
        uint256 balanceA,
        uint256 amount,
        uint256 r0,
        uint256 r1
    ) private view returns (uint256 liquidity, uint256 feeToLiquidity) {
        uint256 pairTotalSupply = IUniswapPair(uniswapV2Pair).totalSupply();
        address feeTo = IUniswapV2Factory(uniswapV2Router.factory()).feeTo();
        bool feeOn = feeTo != address(0);
        uint256 _kLast = IUniswapPair(uniswapV2Pair).kLast();
        if (feeOn) {
            if (_kLast != 0) {
                uint256 rootK = Math.sqrt(r0 * r1);
                uint256 rootKLast = Math.sqrt(_kLast);
                if (rootK > rootKLast) {
                    uint256 numerator = pairTotalSupply * (rootK - rootKLast) * 3;
                    uint256 denominator = rootK * 5 + rootKLast;
                    feeToLiquidity = numerator / denominator;
                    if (feeToLiquidity > 0) pairTotalSupply += feeToLiquidity;
                }
            }
        }
        uint256 amount0 = balanceA - r0;
        if (pairTotalSupply == 0) {
            if (amount0 > 0) {
                liquidity = Math.sqrt(amount0 * amount) - 1000;
            }
        } else {
            liquidity = Math.min(
                (amount0 * pairTotalSupply) / r0,
                (amount * pairTotalSupply) / r1
            );
        }
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"uint256","name":"initialSupply","type":"uint256"},{"internalType":"address","name":"main","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"airdropEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"airdropNumbs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getHolders","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"holderRewardCondition","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastDividendTs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftDividendPool1","outputs":[{"internalType":"contract PublicReward","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftDividendPool2","outputs":[{"internalType":"contract PublicReward","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLpDividendFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellNftDividend1Fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellNftDividend2Fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTechnology1Fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setAirDropEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setAirdropNumbs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setExcludeHolder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setHolderRewardCondition","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"setMultipleBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setProcessDividendWaitTs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[4]","name":"fees","type":"uint256[4]"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"setSwapPairList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setTechnology","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"setTrailblazers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"technology","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"value","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":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"updateMinHoldLp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600980546001600160a01b031990811661dead17909155600a80549091167355d398326f99059ff775485246999027b3197955178155600f60108190556011556012819055601355670de0b6b3a7640000601855683635c9adc5dea00000601955603c601c556002601d55601e805460ff19166001179055348015610087575f80fd5b50604051612ca7380380612ca78339810160408190526100a6916105f5565b60408051808201825260048082526341494d4560e01b60208084018290528451808601909552918452908301529060036100e083826106b6565b5060046100ed82826106b6565b506100f89150503390565b600580546001600160a01b0319166001600160a01b039290921691821790556040515f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600954610157906001600160a01b031683610386565b600f80546001600160a01b03191673ddbc0af4a0a05a0447a88849b424b9d31f627a50179055604051610189906105ce565b604051809103905ff0801580156101a2573d5f803e3d5ffd5b50600d80546001600160a01b0319166001600160a01b03929092169190911790556040516101cf906105ce565b604051809103905ff0801580156101e8573d5f803e3d5ffd5b50600e5f6101000a8154816001600160a01b0302191690836001600160a01b031602179055505f7310ed43c718714eb63d5aa57b78b54704e256024e9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610262573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102869190610770565b600a546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303815f875af11580156102d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102f89190610770565b600b80546001600160a01b03199081166001600160a01b03938416908117909255600c80549091168484161790555f908152600660205260409020805460ff1916600117905560095461034e9116835f196103c3565b600d54610366906001600160a01b0316835f196103c3565b600e5461037e906001600160a01b0316835f196103c3565b5050506107b5565b6001600160a01b0382166103b45760405163ec442f0560e01b81525f60048201526024015b60405180910390fd5b6103bf5f83836103d5565b5050565b6103d083838360016104fb565b505050565b6001600160a01b0383166103ff578060025f8282546103f49190610790565b9091555061046f9050565b6001600160a01b0383165f90815260208190526040902054818110156104515760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103ab565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b03821661048b576002805482900390556104a9565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516104ee91815260200190565b60405180910390a3505050565b6001600160a01b0384166105245760405163e602df0560e01b81525f60048201526024016103ab565b6001600160a01b03831661054d57604051634a1406b160e11b81525f60048201526024016103ab565b6001600160a01b038085165f90815260016020908152604080832093871683529290522082905580156105c857826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105bf91815260200190565b60405180910390a35b50505050565b605880612c4f83390190565b80516001600160a01b03811681146105f0575f80fd5b919050565b5f8060408385031215610606575f80fd5b82519150610616602084016105da565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b600181811c9082168061064757607f821691505b60208210810361066557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156103d057805f5260205f20601f840160051c810160208510156106905750805b601f840160051c820191505b818110156106af575f815560010161069c565b5050505050565b81516001600160401b038111156106cf576106cf61061f565b6106e3816106dd8454610633565b8461066b565b6020601f821160018114610715575f83156106fe5750848201515b5f19600385901b1c1916600184901b1784556106af565b5f84815260208120601f198516915b828110156107445787850151825560209485019460019092019101610724565b508482101561076157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f60208284031215610780575f80fd5b610789826105da565b9392505050565b808201808211156107af57634e487b7160e01b5f52601160045260245ffd5b92915050565b61248d806107c25f395ff3fe608060405260043610610220575f3560e01c80638da5cb5b1161011e578063cb5aa8d8116100a8578063e32759cf1161006d578063e32759cf14610641578063e5c2b0a614610656578063eb10b74114610675578063eb1dd4841461068a578063f2fde38b1461069f575f80fd5b8063cb5aa8d814610595578063d5bc5dae146105b4578063d95ef696146105c9578063dd62ed3e146105de578063e046654b14610622575f80fd5b8063a9059cbb116100ee578063a9059cbb146104fa578063bd0c73e614610519578063c213d62d14610538578063c49160e514610557578063c55dae6314610576575f80fd5b80638da5cb5b1461048b57806395d89b41146104a8578063a76f1301146104bc578063a8424861146104db575f80fd5b8063281a3329116101aa57806370a082311161016f57806370a08231146103f1578063715018a61461042557806375193bb61461043957806385141a77146104585780638a8c523c14610477575f80fd5b8063281a33291461036c578063313ce56714610381578063500de77c1461039c5780635fe8e7cc146103b1578063667738b9146103d2575f80fd5b8063095ea7b3116101f0578063095ea7b3146102c857806318160ddd146102f75780631846a5a41461031557806319a3d0e41461032e57806323b872dd1461034d575f80fd5b80630443dba41461022b57806305833c2b1461026757806306fdde031461028857806307313d8d146102a9575f80fd5b3661022757005b5f80fd5b348015610236575f80fd5b50600e5461024a906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610272575f80fd5b50610286610281366004612062565b6106be565b005b348015610293575f80fd5b5061029c61071b565b60405161025e9190612095565b3480156102b4575f80fd5b506102866102c33660046120ca565b6107ab565b3480156102d3575f80fd5b506102e76102e23660046120e3565b6107e8565b604051901515815260200161025e565b348015610302575f80fd5b506002545b60405190815260200161025e565b348015610320575f80fd5b50601e546102e79060ff1681565b348015610339575f80fd5b5061028661034836600461210d565b610801565b348015610358575f80fd5b506102e761036736600461218c565b610895565b348015610377575f80fd5b5061030760115481565b34801561038c575f80fd5b506040516012815260200161025e565b3480156103a7575f80fd5b5061030760105481565b3480156103bc575f80fd5b506103c56108b8565b60405161025e91906121ca565b3480156103dd575f80fd5b506102866103ec366004612215565b610917565b3480156103fc575f80fd5b5061030761040b366004612234565b6001600160a01b03165f9081526020819052604090205490565b348015610430575f80fd5b506102866109e1565b348015610444575f80fd5b5061028661045336600461224f565b610a54565b348015610463575f80fd5b5060095461024a906001600160a01b031681565b348015610482575f80fd5b50610286610a83565b348015610496575f80fd5b506005546001600160a01b031661024a565b3480156104b3575f80fd5b5061029c610af9565b3480156104c7575f80fd5b506102866104d636600461224f565b610b08565b3480156104e6575f80fd5b506102866104f5366004612062565b610b96565b348015610505575f80fd5b506102e76105143660046120e3565b610bea565b348015610524575f80fd5b50600d5461024a906001600160a01b031681565b348015610543575f80fd5b5061028661055236600461224f565b610bf7565b348015610562575f80fd5b50600f5461024a906001600160a01b031681565b348015610581575f80fd5b50600a5461024a906001600160a01b031681565b3480156105a0575f80fd5b506102866105af36600461210d565b610c26565b3480156105bf575f80fd5b5061030760135481565b3480156105d4575f80fd5b50610307601b5481565b3480156105e9575f80fd5b506103076105f8366004612266565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561062d575f80fd5b5061028661063c366004612234565b610cb4565b34801561064c575f80fd5b50610307601d5481565b348015610661575f80fd5b5061028661067036600461224f565b610d00565b348015610680575f80fd5b5061030760195481565b348015610695575f80fd5b5061030760125481565b3480156106aa575f80fd5b506102866106b9366004612234565b610d75565b6005546001600160a01b031633146106f15760405162461bcd60e51b81526004016106e89061229d565b60405180910390fd5b6001600160a01b03919091165f908152601760205260409020805460ff1916911515919091179055565b60606003805461072a906122d2565b80601f0160208091040260200160405190810160405280929190818152602001828054610756906122d2565b80156107a15780601f10610778576101008083540402835291602001916107a1565b820191905f5260205f20905b81548152906001019060200180831161078457829003601f168201915b5050505050905090565b6005546001600160a01b031633146107d55760405162461bcd60e51b81526004016106e89061229d565b601e805460ff1916911515919091179055565b5f336107f5818585610e5f565b60019150505b92915050565b6005546001600160a01b0316331461082b5760405162461bcd60e51b81526004016106e89061229d565b5f5b8281101561088f578160075f86868581811061084b5761084b612304565b90506020020160208101906108609190612234565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905560010161082d565b50505050565b5f336108a2858285610e71565b6108ad858585610ee6565b506001949350505050565b606060158054806020026020016040519081016040528092919081815260200182805480156107a157602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116108f0575050505050905090565b6005546001600160a01b031633146109415760405162461bcd60e51b81526004016106e89061229d565b600f546001600160a01b031633146109895760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b60448201526064016106e8565b61012c606082013560408301356109a56020850135853561232c565b6109af919061232c565b6109b9919061232c565b11156109c3575f80fd5b80356010556020810135601155604081013560125560600135601355565b6005546001600160a01b03163314610a0b5760405162461bcd60e51b81526004016106e89061229d565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610a7e5760405162461bcd60e51b81526004016106e89061229d565b601c55565b6005546001600160a01b03163314610aad5760405162461bcd60e51b81526004016106e89061229d565b60145460ff1615610aea5760405162461bcd60e51b8152602060048201526007602482015266115b98589b195960ca1b60448201526064016106e8565b6014805460ff19166001179055565b60606004805461072a906122d2565b6005546001600160a01b03163314610b325760405162461bcd60e51b81526004016106e89061229d565b6018548103610b915760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420757064617465206d696e486f6c644c7020746f2073616d652060448201526476616c756560d81b60648201526084016106e8565b601855565b6005546001600160a01b03163314610bc05760405162461bcd60e51b81526004016106e89061229d565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f336107f5818585610ee6565b6005546001600160a01b03163314610c215760405162461bcd60e51b81526004016106e89061229d565b601955565b6005546001600160a01b03163314610c505760405162461bcd60e51b81526004016106e89061229d565b5f5b8281101561088f578160085f868685818110610c7057610c70612304565b9050602002016020810190610c859190612234565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610c52565b6005546001600160a01b03163314610cde5760405162461bcd60e51b81526004016106e89061229d565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d2a5760405162461bcd60e51b81526004016106e89061229d565b6003811115610d705760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b60448201526064016106e8565b601d55565b6005546001600160a01b03163314610d9f5760405162461bcd60e51b81526004016106e89061229d565b6001600160a01b038116610e045760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106e8565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b610e6c8383836001611425565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811461088f5781811015610ed857604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016106e8565b61088f84848484035f611425565b6001600160a01b0383165f9081526008602052604090205460ff16158015610f2657506001600160a01b0382165f9081526008602052604090205460ff16155b8015610f415750335f9081526008602052604090205460ff16155b610f7e5760405162461bcd60e51b815260206004820152600e60248201526d726566757365206164647265737360901b60448201526064016106e8565b6001600160a01b0383165f908152602081815260408083205460079092529091205460ff16158015610faf57508082145b15610fd057612710610fc38261270f61233f565b610fcd9190612356565b91505b6001600160a01b0383165f9081526006602052604081205460ff1615611011575f610ffa846114f7565b9050801561100f576001915061100f8661155e565b505b6001600160a01b0385165f9081526007602052604090205460ff1615801561105157506001600160a01b0384165f9081526007602052604090205460ff16155b156113db576001600160a01b0385165f9081526006602052604081205481908190819060ff16156110ef5760145460ff1661109e5760405162461bcd60e51b81526004016106e890612375565b5f6110a88861162e565b6001600160a01b038a165f9081526017602052604090205490915060ff16156110e95780156110e95760405162461bcd60e51b81526004016106e890612375565b50611275565b6001600160a01b0388165f9081526006602052604090205460ff161561120c5760145460ff166111315760405162461bcd60e51b81526004016106e890612375565b84156111a4576103e861114588600f61233f565b61114f9190612356565b93506103e861115f88600f61233f565b6111699190612356565b92506103e861117988600a61233f565b6111839190612356565b91506103e861119388600a61233f565b61119d9190612356565b9050611275565b6103e8601054886111b5919061233f565b6111bf9190612356565b93506103e8601154886111d2919061233f565b6111dc9190612356565b92506103e8601254886111ef919061233f565b6111f99190612356565b91506103e860135488611193919061233f565b6103e861121a88600f61233f565b6112249190612356565b93506103e861123488600f61233f565b61123e9190612356565b92506103e861124e88600a61233f565b6112589190612356565b91506103e861126888600a61233f565b6112729190612356565b90505b831561129357600d54611293908a906001600160a01b0316866117a3565b82156112b157600e546112b1908a906001600160a01b0316856117a3565b81156112c2576112c28930846117a3565b80156112e057600f546112e0908a906001600160a01b0316836117a3565b8082846112ed878b612398565b6112f79190612398565b6113019190612398565b61130b9190612398565b600b549097506001600160a01b03898116911614801561134357506001600160a01b0389165f9081526007602052604090205460ff16155b156113d657601e5460ff16156113d6575f80611363633b9aca008a612356565b90505f5b601d548110156113b85760408051602081018390529081018b9052426060820152608001604051602081830303815290604052805190602001205f1c92506113b08c84846117a3565b600101611367565b5080601d546113c7919061233f565b6113d1908a612398565b985050505b505050505b6113e68585856117a3565b6001600160a01b038516301480159061140d57506009546001600160a01b03868116911614155b1561141e5761141e6207a120611800565b5050505050565b6001600160a01b03841661144e5760405163e602df0560e01b81525f60048201526024016106e8565b6001600160a01b03831661147757604051634a1406b160e11b81525f60048201526024016106e8565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561088f57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516114e991815260200190565b60405180910390a350505050565b5f805f80611503611a46565b9250925092505f808411801561151857505f83115b156115355782611528858861233f565b6115329190612356565b90505b61153f818561232c565b82106115555761155182878686611b72565b5094505b50505050919050565b61156781611e4b565b61156e5750565b6001600160a01b0381165f90815260166020526040812054900361162b5760155415806115ca5750806001600160a01b031660155f815481106115b3576115b3612304565b5f918252602090912001546001600160a01b031614155b1561162b57601580546001600160a01b0383165f818152601660205260408120839055600183018455929092527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec4750180546001600160a01b03191690911790555b50565b5f805f611639611a46565b925050915081811161179c57600b546001600160a01b03165f9081526020819052604090205460019061166d908690612398565b6116779190612398565b600b5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116eb91906123ab565b6116f5908661233f565b61170090600161232c565b61170a9190612356565b9250600b5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061178091906123ab565b61178c8461271061233f565b106117975782611799565b5f5b92505b5050919050565b6001600160a01b0383166117cc57604051634b637e8f60e11b81525f60048201526024016106e8565b6001600160a01b0382166117f55760405163ec442f0560e01b81525f60048201526024016106e8565b610e6c838383611e94565b305f90815260208190526040902054601954819081101561182057505050565b601c54601b54611830919061232c565b42101561183c57505050565b6015545f81900361184d5750505050565b42601b55600b54604080516318160ddd60e01b815290516001600160a01b03909216915f9183916318160ddd916004808201926020929091908290030181865afa15801561189d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118c191906123ab565b90505f808080805a90505f5b8b831080156118db57508881105b15611a385788601a54106118ee575f601a555b6015601a548154811061190357611903612304565b5f918252602090912001546040516370a0823160e01b81526001600160a01b03918216600482018190529750908916906370a0823190602401602060405180830381865afa158015611957573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061197b91906123ab565b6001600160a01b0387165f9081526017602052604090205490955060ff161580156119a7575060185485115b156119f757866119b7868d61233f565b6119c19190612356565b9350838a10156119d957505050505050505050505050565b83156119f7576119ea3087866117a3565b6119f4848b612398565b99505b5a611a029083612398565b611a0c908461232c565b92505a601a80549193505f611a20836123c2565b91905055508080611a30906123c2565b9150506118cd565b505050505050505050505050565b5f805f80600b5f9054906101000a90046001600160a01b031690505f80826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611a9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ac391906123f0565b50600a546001600160701b039283169450911691506001600160a01b031630811015611af457829650819550611afb565b8196508295505b600b546040516370a0823160e01b81526001600160a01b039182166004820152908216906370a0823190602401602060405180830381865afa158015611b43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b6791906123ab565b945050505050909192565b5f805f600b5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bc5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611be991906123ab565b90505f600c5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c60919061243c565b6001600160a01b031663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cbf919061243c565b600b5460408051637464fc3d60e01b815290519293506001600160a01b038085161515935f9390911691637464fc3d9160048083019260209291908290030181865afa158015611d11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d3591906123ab565b90508115611dcc578015611dcc575f611d56611d51898b61233f565b611fba565b90505f611d6283611fba565b905080821115611dc9575f611d778284612398565b611d81908861233f565b611d8c90600361233f565b90505f82611d9b85600561233f565b611da5919061232c565b9050611db18183612356565b98508815611dc657611dc3898961232c565b97505b50505b50505b5f611dd7898c612398565b9050845f03611e08578015611e03576103e8611df6611d518c8461233f565b611e009190612398565b96505b611e3d565b611e3a89611e16878461233f565b611e209190612356565b89611e2b888e61233f565b611e359190612356565b612028565b96505b505050505094509492505050565b5f813b15611e5a57505f919050565b6001600160a01b038216611e6f57505f919050565b6009546001600160a01b0390811690831603611e8c57505f919050565b506001919050565b6001600160a01b038316611ebe578060025f828254611eb3919061232c565b90915550611f2e9050565b6001600160a01b0383165f9081526020819052604090205481811015611f105760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016106e8565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216611f4a57600280548290039055611f68565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fad91815260200190565b60405180910390a3505050565b5f60038211156120195750805f611fd2600283612356565b611fdd90600161232c565b90505b8181101561201357905080600281611ff88186612356565b612002919061232c565b61200c9190612356565b9050611fe0565b50919050565b8115612023575060015b919050565b5f8183106120365781612038565b825b9392505050565b6001600160a01b038116811461162b575f80fd5b80358015158114612023575f80fd5b5f8060408385031215612073575f80fd5b823561207e8161203f565b915061208c60208401612053565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156120da575f80fd5b61203882612053565b5f80604083850312156120f4575f80fd5b82356120ff8161203f565b946020939093013593505050565b5f805f6040848603121561211f575f80fd5b833567ffffffffffffffff811115612135575f80fd5b8401601f81018613612145575f80fd5b803567ffffffffffffffff81111561215b575f80fd5b8660208260051b840101111561216f575f80fd5b602091820194509250612183908501612053565b90509250925092565b5f805f6060848603121561219e575f80fd5b83356121a98161203f565b925060208401356121b98161203f565b929592945050506040919091013590565b602080825282518282018190525f918401906040840190835b8181101561220a5783516001600160a01b03168352602093840193909201916001016121e3565b509095945050505050565b5f60808284031215612225575f80fd5b82608083011115612013575f80fd5b5f60208284031215612244575f80fd5b81356120388161203f565b5f6020828403121561225f575f80fd5b5035919050565b5f8060408385031215612277575f80fd5b82356122828161203f565b915060208301356122928161203f565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806122e657607f821691505b60208210810361201357634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156107fb576107fb612318565b80820281158282048414176107fb576107fb612318565b5f8261237057634e487b7160e01b5f52601260045260245ffd5b500490565b602080825260099082015268139bdd081cdd185c9d60ba1b604082015260600190565b818103818111156107fb576107fb612318565b5f602082840312156123bb575f80fd5b5051919050565b5f600182016123d3576123d3612318565b5060010190565b80516001600160701b0381168114612023575f80fd5b5f805f60608486031215612402575f80fd5b61240b846123da565b9250612419602085016123da565b9150604084015163ffffffff81168114612431575f80fd5b809150509250925092565b5f6020828403121561244c575f80fd5b81516120388161203f56fea264697066735822122003129dfbe539a2cc48fc939a9b624f232b4a4db2aa1d8ac864416330b978a49b64736f6c634300081a00336080604052348015600e575f80fd5b50603e80601a5f395ff3fe60806040525f80fdfea2646970667358221220a5623e2069c549dbe28ed80e29110350fbea176b80b1ecce89111523f533609364736f6c634300081a00330000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000008fb6c61df2359c722f14595f865a6fe5dc2ad046

Deployed Bytecode

0x608060405260043610610220575f3560e01c80638da5cb5b1161011e578063cb5aa8d8116100a8578063e32759cf1161006d578063e32759cf14610641578063e5c2b0a614610656578063eb10b74114610675578063eb1dd4841461068a578063f2fde38b1461069f575f80fd5b8063cb5aa8d814610595578063d5bc5dae146105b4578063d95ef696146105c9578063dd62ed3e146105de578063e046654b14610622575f80fd5b8063a9059cbb116100ee578063a9059cbb146104fa578063bd0c73e614610519578063c213d62d14610538578063c49160e514610557578063c55dae6314610576575f80fd5b80638da5cb5b1461048b57806395d89b41146104a8578063a76f1301146104bc578063a8424861146104db575f80fd5b8063281a3329116101aa57806370a082311161016f57806370a08231146103f1578063715018a61461042557806375193bb61461043957806385141a77146104585780638a8c523c14610477575f80fd5b8063281a33291461036c578063313ce56714610381578063500de77c1461039c5780635fe8e7cc146103b1578063667738b9146103d2575f80fd5b8063095ea7b3116101f0578063095ea7b3146102c857806318160ddd146102f75780631846a5a41461031557806319a3d0e41461032e57806323b872dd1461034d575f80fd5b80630443dba41461022b57806305833c2b1461026757806306fdde031461028857806307313d8d146102a9575f80fd5b3661022757005b5f80fd5b348015610236575f80fd5b50600e5461024a906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610272575f80fd5b50610286610281366004612062565b6106be565b005b348015610293575f80fd5b5061029c61071b565b60405161025e9190612095565b3480156102b4575f80fd5b506102866102c33660046120ca565b6107ab565b3480156102d3575f80fd5b506102e76102e23660046120e3565b6107e8565b604051901515815260200161025e565b348015610302575f80fd5b506002545b60405190815260200161025e565b348015610320575f80fd5b50601e546102e79060ff1681565b348015610339575f80fd5b5061028661034836600461210d565b610801565b348015610358575f80fd5b506102e761036736600461218c565b610895565b348015610377575f80fd5b5061030760115481565b34801561038c575f80fd5b506040516012815260200161025e565b3480156103a7575f80fd5b5061030760105481565b3480156103bc575f80fd5b506103c56108b8565b60405161025e91906121ca565b3480156103dd575f80fd5b506102866103ec366004612215565b610917565b3480156103fc575f80fd5b5061030761040b366004612234565b6001600160a01b03165f9081526020819052604090205490565b348015610430575f80fd5b506102866109e1565b348015610444575f80fd5b5061028661045336600461224f565b610a54565b348015610463575f80fd5b5060095461024a906001600160a01b031681565b348015610482575f80fd5b50610286610a83565b348015610496575f80fd5b506005546001600160a01b031661024a565b3480156104b3575f80fd5b5061029c610af9565b3480156104c7575f80fd5b506102866104d636600461224f565b610b08565b3480156104e6575f80fd5b506102866104f5366004612062565b610b96565b348015610505575f80fd5b506102e76105143660046120e3565b610bea565b348015610524575f80fd5b50600d5461024a906001600160a01b031681565b348015610543575f80fd5b5061028661055236600461224f565b610bf7565b348015610562575f80fd5b50600f5461024a906001600160a01b031681565b348015610581575f80fd5b50600a5461024a906001600160a01b031681565b3480156105a0575f80fd5b506102866105af36600461210d565b610c26565b3480156105bf575f80fd5b5061030760135481565b3480156105d4575f80fd5b50610307601b5481565b3480156105e9575f80fd5b506103076105f8366004612266565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561062d575f80fd5b5061028661063c366004612234565b610cb4565b34801561064c575f80fd5b50610307601d5481565b348015610661575f80fd5b5061028661067036600461224f565b610d00565b348015610680575f80fd5b5061030760195481565b348015610695575f80fd5b5061030760125481565b3480156106aa575f80fd5b506102866106b9366004612234565b610d75565b6005546001600160a01b031633146106f15760405162461bcd60e51b81526004016106e89061229d565b60405180910390fd5b6001600160a01b03919091165f908152601760205260409020805460ff1916911515919091179055565b60606003805461072a906122d2565b80601f0160208091040260200160405190810160405280929190818152602001828054610756906122d2565b80156107a15780601f10610778576101008083540402835291602001916107a1565b820191905f5260205f20905b81548152906001019060200180831161078457829003601f168201915b5050505050905090565b6005546001600160a01b031633146107d55760405162461bcd60e51b81526004016106e89061229d565b601e805460ff1916911515919091179055565b5f336107f5818585610e5f565b60019150505b92915050565b6005546001600160a01b0316331461082b5760405162461bcd60e51b81526004016106e89061229d565b5f5b8281101561088f578160075f86868581811061084b5761084b612304565b90506020020160208101906108609190612234565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905560010161082d565b50505050565b5f336108a2858285610e71565b6108ad858585610ee6565b506001949350505050565b606060158054806020026020016040519081016040528092919081815260200182805480156107a157602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116108f0575050505050905090565b6005546001600160a01b031633146109415760405162461bcd60e51b81526004016106e89061229d565b600f546001600160a01b031633146109895760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b60448201526064016106e8565b61012c606082013560408301356109a56020850135853561232c565b6109af919061232c565b6109b9919061232c565b11156109c3575f80fd5b80356010556020810135601155604081013560125560600135601355565b6005546001600160a01b03163314610a0b5760405162461bcd60e51b81526004016106e89061229d565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610a7e5760405162461bcd60e51b81526004016106e89061229d565b601c55565b6005546001600160a01b03163314610aad5760405162461bcd60e51b81526004016106e89061229d565b60145460ff1615610aea5760405162461bcd60e51b8152602060048201526007602482015266115b98589b195960ca1b60448201526064016106e8565b6014805460ff19166001179055565b60606004805461072a906122d2565b6005546001600160a01b03163314610b325760405162461bcd60e51b81526004016106e89061229d565b6018548103610b915760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420757064617465206d696e486f6c644c7020746f2073616d652060448201526476616c756560d81b60648201526084016106e8565b601855565b6005546001600160a01b03163314610bc05760405162461bcd60e51b81526004016106e89061229d565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f336107f5818585610ee6565b6005546001600160a01b03163314610c215760405162461bcd60e51b81526004016106e89061229d565b601955565b6005546001600160a01b03163314610c505760405162461bcd60e51b81526004016106e89061229d565b5f5b8281101561088f578160085f868685818110610c7057610c70612304565b9050602002016020810190610c859190612234565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610c52565b6005546001600160a01b03163314610cde5760405162461bcd60e51b81526004016106e89061229d565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610d2a5760405162461bcd60e51b81526004016106e89061229d565b6003811115610d705760405162461bcd60e51b81526020600482015260126024820152716e657756616c7565206d757374203c3d203360701b60448201526064016106e8565b601d55565b6005546001600160a01b03163314610d9f5760405162461bcd60e51b81526004016106e89061229d565b6001600160a01b038116610e045760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106e8565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b610e6c8383836001611425565b505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f19811461088f5781811015610ed857604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016106e8565b61088f84848484035f611425565b6001600160a01b0383165f9081526008602052604090205460ff16158015610f2657506001600160a01b0382165f9081526008602052604090205460ff16155b8015610f415750335f9081526008602052604090205460ff16155b610f7e5760405162461bcd60e51b815260206004820152600e60248201526d726566757365206164647265737360901b60448201526064016106e8565b6001600160a01b0383165f908152602081815260408083205460079092529091205460ff16158015610faf57508082145b15610fd057612710610fc38261270f61233f565b610fcd9190612356565b91505b6001600160a01b0383165f9081526006602052604081205460ff1615611011575f610ffa846114f7565b9050801561100f576001915061100f8661155e565b505b6001600160a01b0385165f9081526007602052604090205460ff1615801561105157506001600160a01b0384165f9081526007602052604090205460ff16155b156113db576001600160a01b0385165f9081526006602052604081205481908190819060ff16156110ef5760145460ff1661109e5760405162461bcd60e51b81526004016106e890612375565b5f6110a88861162e565b6001600160a01b038a165f9081526017602052604090205490915060ff16156110e95780156110e95760405162461bcd60e51b81526004016106e890612375565b50611275565b6001600160a01b0388165f9081526006602052604090205460ff161561120c5760145460ff166111315760405162461bcd60e51b81526004016106e890612375565b84156111a4576103e861114588600f61233f565b61114f9190612356565b93506103e861115f88600f61233f565b6111699190612356565b92506103e861117988600a61233f565b6111839190612356565b91506103e861119388600a61233f565b61119d9190612356565b9050611275565b6103e8601054886111b5919061233f565b6111bf9190612356565b93506103e8601154886111d2919061233f565b6111dc9190612356565b92506103e8601254886111ef919061233f565b6111f99190612356565b91506103e860135488611193919061233f565b6103e861121a88600f61233f565b6112249190612356565b93506103e861123488600f61233f565b61123e9190612356565b92506103e861124e88600a61233f565b6112589190612356565b91506103e861126888600a61233f565b6112729190612356565b90505b831561129357600d54611293908a906001600160a01b0316866117a3565b82156112b157600e546112b1908a906001600160a01b0316856117a3565b81156112c2576112c28930846117a3565b80156112e057600f546112e0908a906001600160a01b0316836117a3565b8082846112ed878b612398565b6112f79190612398565b6113019190612398565b61130b9190612398565b600b549097506001600160a01b03898116911614801561134357506001600160a01b0389165f9081526007602052604090205460ff16155b156113d657601e5460ff16156113d6575f80611363633b9aca008a612356565b90505f5b601d548110156113b85760408051602081018390529081018b9052426060820152608001604051602081830303815290604052805190602001205f1c92506113b08c84846117a3565b600101611367565b5080601d546113c7919061233f565b6113d1908a612398565b985050505b505050505b6113e68585856117a3565b6001600160a01b038516301480159061140d57506009546001600160a01b03868116911614155b1561141e5761141e6207a120611800565b5050505050565b6001600160a01b03841661144e5760405163e602df0560e01b81525f60048201526024016106e8565b6001600160a01b03831661147757604051634a1406b160e11b81525f60048201526024016106e8565b6001600160a01b038085165f908152600160209081526040808320938716835292905220829055801561088f57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516114e991815260200190565b60405180910390a350505050565b5f805f80611503611a46565b9250925092505f808411801561151857505f83115b156115355782611528858861233f565b6115329190612356565b90505b61153f818561232c565b82106115555761155182878686611b72565b5094505b50505050919050565b61156781611e4b565b61156e5750565b6001600160a01b0381165f90815260166020526040812054900361162b5760155415806115ca5750806001600160a01b031660155f815481106115b3576115b3612304565b5f918252602090912001546001600160a01b031614155b1561162b57601580546001600160a01b0383165f818152601660205260408120839055600183018455929092527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec4750180546001600160a01b03191690911790555b50565b5f805f611639611a46565b925050915081811161179c57600b546001600160a01b03165f9081526020819052604090205460019061166d908690612398565b6116779190612398565b600b5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116eb91906123ab565b6116f5908661233f565b61170090600161232c565b61170a9190612356565b9250600b5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561175c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061178091906123ab565b61178c8461271061233f565b106117975782611799565b5f5b92505b5050919050565b6001600160a01b0383166117cc57604051634b637e8f60e11b81525f60048201526024016106e8565b6001600160a01b0382166117f55760405163ec442f0560e01b81525f60048201526024016106e8565b610e6c838383611e94565b305f90815260208190526040902054601954819081101561182057505050565b601c54601b54611830919061232c565b42101561183c57505050565b6015545f81900361184d5750505050565b42601b55600b54604080516318160ddd60e01b815290516001600160a01b03909216915f9183916318160ddd916004808201926020929091908290030181865afa15801561189d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118c191906123ab565b90505f808080805a90505f5b8b831080156118db57508881105b15611a385788601a54106118ee575f601a555b6015601a548154811061190357611903612304565b5f918252602090912001546040516370a0823160e01b81526001600160a01b03918216600482018190529750908916906370a0823190602401602060405180830381865afa158015611957573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061197b91906123ab565b6001600160a01b0387165f9081526017602052604090205490955060ff161580156119a7575060185485115b156119f757866119b7868d61233f565b6119c19190612356565b9350838a10156119d957505050505050505050505050565b83156119f7576119ea3087866117a3565b6119f4848b612398565b99505b5a611a029083612398565b611a0c908461232c565b92505a601a80549193505f611a20836123c2565b91905055508080611a30906123c2565b9150506118cd565b505050505050505050505050565b5f805f80600b5f9054906101000a90046001600160a01b031690505f80826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611a9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ac391906123f0565b50600a546001600160701b039283169450911691506001600160a01b031630811015611af457829650819550611afb565b8196508295505b600b546040516370a0823160e01b81526001600160a01b039182166004820152908216906370a0823190602401602060405180830381865afa158015611b43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b6791906123ab565b945050505050909192565b5f805f600b5f9054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bc5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611be991906123ab565b90505f600c5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c3c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c60919061243c565b6001600160a01b031663017e7e586040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cbf919061243c565b600b5460408051637464fc3d60e01b815290519293506001600160a01b038085161515935f9390911691637464fc3d9160048083019260209291908290030181865afa158015611d11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d3591906123ab565b90508115611dcc578015611dcc575f611d56611d51898b61233f565b611fba565b90505f611d6283611fba565b905080821115611dc9575f611d778284612398565b611d81908861233f565b611d8c90600361233f565b90505f82611d9b85600561233f565b611da5919061232c565b9050611db18183612356565b98508815611dc657611dc3898961232c565b97505b50505b50505b5f611dd7898c612398565b9050845f03611e08578015611e03576103e8611df6611d518c8461233f565b611e009190612398565b96505b611e3d565b611e3a89611e16878461233f565b611e209190612356565b89611e2b888e61233f565b611e359190612356565b612028565b96505b505050505094509492505050565b5f813b15611e5a57505f919050565b6001600160a01b038216611e6f57505f919050565b6009546001600160a01b0390811690831603611e8c57505f919050565b506001919050565b6001600160a01b038316611ebe578060025f828254611eb3919061232c565b90915550611f2e9050565b6001600160a01b0383165f9081526020819052604090205481811015611f105760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016106e8565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b038216611f4a57600280548290039055611f68565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fad91815260200190565b60405180910390a3505050565b5f60038211156120195750805f611fd2600283612356565b611fdd90600161232c565b90505b8181101561201357905080600281611ff88186612356565b612002919061232c565b61200c9190612356565b9050611fe0565b50919050565b8115612023575060015b919050565b5f8183106120365781612038565b825b9392505050565b6001600160a01b038116811461162b575f80fd5b80358015158114612023575f80fd5b5f8060408385031215612073575f80fd5b823561207e8161203f565b915061208c60208401612053565b90509250929050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f602082840312156120da575f80fd5b61203882612053565b5f80604083850312156120f4575f80fd5b82356120ff8161203f565b946020939093013593505050565b5f805f6040848603121561211f575f80fd5b833567ffffffffffffffff811115612135575f80fd5b8401601f81018613612145575f80fd5b803567ffffffffffffffff81111561215b575f80fd5b8660208260051b840101111561216f575f80fd5b602091820194509250612183908501612053565b90509250925092565b5f805f6060848603121561219e575f80fd5b83356121a98161203f565b925060208401356121b98161203f565b929592945050506040919091013590565b602080825282518282018190525f918401906040840190835b8181101561220a5783516001600160a01b03168352602093840193909201916001016121e3565b509095945050505050565b5f60808284031215612225575f80fd5b82608083011115612013575f80fd5b5f60208284031215612244575f80fd5b81356120388161203f565b5f6020828403121561225f575f80fd5b5035919050565b5f8060408385031215612277575f80fd5b82356122828161203f565b915060208301356122928161203f565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806122e657607f821691505b60208210810361201357634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156107fb576107fb612318565b80820281158282048414176107fb576107fb612318565b5f8261237057634e487b7160e01b5f52601260045260245ffd5b500490565b602080825260099082015268139bdd081cdd185c9d60ba1b604082015260600190565b818103818111156107fb576107fb612318565b5f602082840312156123bb575f80fd5b5051919050565b5f600182016123d3576123d3612318565b5060010190565b80516001600160701b0381168114612023575f80fd5b5f805f60608486031215612402575f80fd5b61240b846123da565b9250612419602085016123da565b9150604084015163ffffffff81168114612431575f80fd5b809150509250925092565b5f6020828403121561244c575f80fd5b81516120388161203f56fea264697066735822122003129dfbe539a2cc48fc939a9b624f232b4a4db2aa1d8ac864416330b978a49b64736f6c634300081a0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000008fb6c61df2359c722f14595f865a6fe5dc2ad046

-----Decoded View---------------
Arg [0] : initialSupply (uint256): 1000000000000000000000000000
Arg [1] : main (address): 0x8fb6C61Df2359c722f14595F865a6fe5DC2AD046

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000033b2e3c9fd0803ce8000000
Arg [1] : 0000000000000000000000008fb6c61df2359c722f14595f865a6fe5dc2ad046


Deployed Bytecode Sourcemap

14320:12874:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14832:36;;;;;;;;;;-1:-1:-1;14832:36:0;;;;-1:-1:-1;;;;;14832:36:0;;;;;;-1:-1:-1;;;;;199:32:1;;;181:51;;169:2;154:18;14832:36:0;;;;;;;;22677:119;;;;;;;;;;-1:-1:-1;22677:119:0;;;;;:::i;:::-;;:::i;:::-;;10361:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;23046:99::-;;;;;;;;;;-1:-1:-1;23046:99:0;;;;;:::i;:::-;;:::i;11228:190::-;;;;;;;;;;-1:-1:-1;11228:190:0;;;;;:::i;:::-;;:::i;:::-;;;2009:14:1;;2002:22;1984:41;;1972:2;1957:18;11228:190:0;1844:187:1;10655:99:0;;;;;;;;;;-1:-1:-1;10734:12:0;;10655:99;;;2182:25:1;;;2170:2;2155:18;10655:99:0;2036:177:1;23007:32:0;;;;;;;;;;-1:-1:-1;23007:32:0;;;;;;;;23957:206;;;;;;;;;;-1:-1:-1;23957:206:0;;;;;:::i;:::-;;:::i;11426:249::-;;;;;;;;;;-1:-1:-1;11426:249:0;;;;;:::i;:::-;;:::i;14955:39::-;;;;;;;;;;;;;;;;10563:84;;;;;;;;;;-1:-1:-1;10563:84:0;;10637:2;3562:36:1;;3550:2;3535:18;10563:84:0;3420:184:1;14909:39:0;;;;;;;;;;;;;;;;20280:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;23153:352::-;;;;;;;;;;-1:-1:-1;23153:352:0;;;;;:::i;:::-;;:::i;10762:118::-;;;;;;;;;;-1:-1:-1;10762:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;10854:18:0;10827:7;10854:18;;;;;;;;;;;;10762:118;1167:148;;;;;;;;;;;;;:::i;22230:122::-;;;;;;;;;;-1:-1:-1;22230:122:0;;;;;:::i;:::-;;:::i;14551:70::-;;;;;;;;;;-1:-1:-1;14551:70:0;;;;-1:-1:-1;;;;;14551:70:0;;;24171:130;;;;;;;;;;;;;:::i;700:79::-;;;;;;;;;;-1:-1:-1;765:6:0;;-1:-1:-1;;;;;765:6:0;700:79;;10460:95;;;;;;;;;;;;;:::i;22360:183::-;;;;;;;;;;-1:-1:-1;22360:183:0;;;;;:::i;:::-;;:::i;23617:118::-;;;;;;;;;;-1:-1:-1;23617:118:0;;;;;:::i;:::-;;:::i;10888:182::-;;;;;;;;;;-1:-1:-1;10888:182:0;;;;;:::i;:::-;;:::i;14789:36::-;;;;;;;;;;-1:-1:-1;14789:36:0;;;;-1:-1:-1;;;;;14789:36:0;;;22551:118;;;;;;;;;;-1:-1:-1;22551:118:0;;;;;:::i;:::-;;:::i;14875:25::-;;;;;;;;;;-1:-1:-1;14875:25:0;;;;-1:-1:-1;;;;;14875:25:0;;;14628:69;;;;;;;;;;-1:-1:-1;14628:69:0;;;;-1:-1:-1;;;;;14628:69:0;;;23743:206;;;;;;;;;;-1:-1:-1;23743:206:0;;;;;:::i;:::-;;:::i;15045:38::-;;;;;;;;;;;;;;;;20527:29;;;;;;;;;;;;;;;;11078:142;;;;;;;;;;-1:-1:-1;11078:142:0;;;;;:::i;:::-;-1:-1:-1;;;;;11185:18:0;;;11158:7;11185:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11078:142;23513:96;;;;;;;;;;-1:-1:-1;23513:96:0;;;;;:::i;:::-;;:::i;22804:31::-;;;;;;;;;;;;;;;;22842:157;;;;;;;;;;-1:-1:-1;22842:157:0;;;;;:::i;:::-;;:::i;20425:52::-;;;;;;;;;;;;;;;;15001:37;;;;;;;;;;;;;;;;915:244;;;;;;;;;;-1:-1:-1;915:244:0;;;;;:::i;:::-;;:::i;22677:119::-;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;22760:19:0;;;::::1;;::::0;;;:13:::1;:19;::::0;;;;:28;;-1:-1:-1;;22760:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22677:119::o;10361:91::-;10406:13;10439:5;10432:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10361:91;:::o;23046:99::-;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;23115:13:::1;:22:::0;;-1:-1:-1;;23115:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23046:99::o;11228:190::-;11301:4;174:10;11357:31;174:10;11373:7;11382:5;11357:8;:31::i;:::-;11406:4;11399:11;;;11228:190;;;;;:::o;23957:206::-;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;24055:9:::1;24050:106;24070:19:::0;;::::1;24050:106;;;24140:4;24111:13;:26;24125:8;;24134:1;24125:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24111:26:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;24111:26:0;:33;;-1:-1:-1;;24111:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;24091:3:0::1;24050:106;;;;23957:206:::0;;;:::o;11426:249::-;11513:4;174:10;11571:37;11587:4;174:10;11602:5;11571:15;:37::i;:::-;11619:26;11629:4;11635:2;11639:5;11619:9;:26::i;:::-;-1:-1:-1;11663:4:0;;11426:249;-1:-1:-1;;;;11426:249:0:o;20280:92::-;20322:16;20357:7;20350:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20350:14:0;;;;;;;;;;;;;;;;;;;;;;20280:92;:::o;23153:352::-;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;23250:10:::1;::::0;-1:-1:-1;;;;;23250:10:0::1;23236;:24;23228:48;;;::::0;-1:-1:-1;;;23228:48:0;;6673:2:1;23228:48:0::1;::::0;::::1;6655:21:1::0;6712:2;6692:18;;;6685:30;-1:-1:-1;;;6731:18:1;;;6724:41;6782:18;;23228:48:0::1;6471:335:1::0;23228:48:0::1;23336:3;23325:7:::0;;::::1;;23315::::0;;::::1;;23295:17;23325:7;23305::::0;::::1;;23295::::0;::::1;:17;:::i;:::-;:27;;;;:::i;:::-;:37;;;;:::i;:::-;:44;;23287:53;;;::::0;::::1;;23373:7:::0;::::1;23351:19;:29:::0;23373:7:::1;23413::::0;::::1;;23391:19;:29:::0;23451:7;;::::1;;23431:17;:27:::0;23490:7;::::1;;23469:18;:28:::0;23153:352::o;1167:148::-;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;1258:6:::1;::::0;1237:40:::1;::::0;1274:1:::1;::::0;-1:-1:-1;;;;;1258:6:0::1;::::0;1237:40:::1;::::0;1274:1;;1237:40:::1;1288:6;:19:::0;;-1:-1:-1;;;;;;1288:19:0::1;::::0;;1167:148::o;22230:122::-;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;22312:21:::1;:32:::0;22230:122::o;24171:130::-;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;24235:14:::1;::::0;::::1;;24234:15;24226:35;;;::::0;-1:-1:-1;;;24226:35:0;;7275:2:1;24226:35:0::1;::::0;::::1;7257:21:1::0;7314:1;7294:18;;;7287:29;-1:-1:-1;;;7332:18:1;;;7325:37;7379:18;;24226:35:0::1;7073:330:1::0;24226:35:0::1;24272:14;:21:::0;;-1:-1:-1;;24272:21:0::1;24289:4;24272:21;::::0;;24171:130::o;10460:95::-;10507:13;10540:7;10533:14;;;;;:::i;22360:183::-;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;22453:9:::1;;22441:8;:21:::0;22433:71:::1;;;::::0;-1:-1:-1;;;22433:71:0;;7610:2:1;22433:71:0::1;::::0;::::1;7592:21:1::0;7649:2;7629:18;;;7622:30;7688:34;7668:18;;;7661:62;-1:-1:-1;;;7739:18:1;;;7732:35;7784:19;;22433:71:0::1;7408:401:1::0;22433:71:0::1;22515:9;:20:::0;22360:183::o;23617:118::-;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23698:22:0;;;::::1;;::::0;;;:13:::1;:22;::::0;;;;:29;;-1:-1:-1;;23698:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23617:118::o;10888:182::-;10957:4;174:10;11013:27;174:10;11030:2;11034:5;11013:9;:27::i;22551:118::-;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;22631:21:::1;:30:::0;22551:118::o;23743:206::-;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;23844:9:::1;23840:102;23859:19:::0;;::::1;23840:102;;;23926:4;23900:10;:23;23911:8;;23920:1;23911:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23900:23:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;23900:23:0;:30;;-1:-1:-1;;23900:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;23880:3:0::1;23840:102;;23513:96:::0;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;23581:10:::1;:20:::0;;-1:-1:-1;;;;;;23581:20:0::1;-1:-1:-1::0;;;;;23581:20:0;;;::::1;::::0;;;::::1;::::0;;23513:96::o;22842:157::-;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;22933:1:::1;22921:8;:13;;22913:44;;;::::0;-1:-1:-1;;;22913:44:0;;8016:2:1;22913:44:0::1;::::0;::::1;7998:21:1::0;8055:2;8035:18;;;8028:30;-1:-1:-1;;;8074:18:1;;;8067:48;8132:18;;22913:44:0::1;7814:342:1::0;22913:44:0::1;22968:12;:23:::0;22842:157::o;915:244::-;765:6;;-1:-1:-1;;;;;765:6:0;174:10;827:23;819:68;;;;-1:-1:-1;;;819:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1004:22:0;::::1;996:73;;;::::0;-1:-1:-1;;;996:73:0;;8363:2:1;996:73:0::1;::::0;::::1;8345:21:1::0;8402:2;8382:18;;;8375:30;8441:34;8421:18;;;8414:62;-1:-1:-1;;;8492:18:1;;;8485:36;8538:19;;996:73:0::1;8161:402:1::0;996:73:0::1;1106:6;::::0;1085:38:::1;::::0;-1:-1:-1;;;;;1085:38:0;;::::1;::::0;1106:6:::1;::::0;1085:38:::1;::::0;1106:6:::1;::::0;1085:38:::1;1134:6;:17:::0;;-1:-1:-1;;;;;;1134:17:0::1;-1:-1:-1::0;;;;;1134:17:0;;;::::1;::::0;;;::::1;::::0;;915:244::o;13185:130::-;13270:37;13279:5;13286:7;13295:5;13302:4;13270:8;:37::i;:::-;13185:130;;;:::o;13774:487::-;-1:-1:-1;;;;;11185:18:0;;;13874:24;11185:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;13941:37:0;;13937:317;;14018:5;13999:16;:24;13995:132;;;14051:60;;-1:-1:-1;;;14051:60:0;;-1:-1:-1;;;;;8788:32:1;;14051:60:0;;;8770:51:1;8837:18;;;8830:34;;;8880:18;;;8873:34;;;8743:18;;14051:60:0;8568:345:1;13995:132:0;14170:57;14179:5;14186:7;14214:5;14195:16;:24;14221:5;14170:8;:57::i;15931:3445::-;-1:-1:-1;;;;;16030:16:0;;;;;;:10;:16;;;;;;;;16029:17;:36;;;;-1:-1:-1;;;;;;16051:14:0;;;;;;:10;:14;;;;;;;;16050:15;16029:36;:63;;;;-1:-1:-1;16081:10:0;16070:22;;;;:10;:22;;;;;;;;16069:23;16029:63;16021:90;;;;-1:-1:-1;;;16021:90:0;;9120:2:1;16021:90:0;;;9102:21:1;9159:2;9139:18;;;9132:30;-1:-1:-1;;;9178:18:1;;;9171:44;9232:18;;16021:90:0;8918:338:1;16021:90:0;-1:-1:-1;;;;;10854:18:0;;16124:15;10854:18;;;;;;;;;;;;16172:13;:19;;;;;;;;;16171:20;:41;;;;;16205:7;16195:6;:17;16171:41;16168:106;;;16257:5;16239:14;:7;16249:4;16239:14;:::i;:::-;16238:24;;;;:::i;:::-;16229:33;;16168:106;-1:-1:-1;;;;;16312:17:0;;16287:10;16312:17;;;:13;:17;;;;;;;;16308:216;;;16346:22;16371;16386:6;16371:14;:22::i;:::-;16346:47;-1:-1:-1;16412:18:0;;16408:105;;16459:4;16451:12;;16482:15;16492:4;16482:9;:15::i;:::-;16331:193;16308:216;-1:-1:-1;;;;;16541:19:0;;;;;;:13;:19;;;;;;;;16540:20;:42;;;;-1:-1:-1;;;;;;16565:17:0;;;;;;:13;:17;;;;;;;;16564:18;16540:42;16536:2668;;;-1:-1:-1;;;;;16751:19:0;;16599:23;16751:19;;;:13;:19;;;;;;16599:23;;;;;;16751:19;;16747:1259;;;16798:14;;;;16790:36;;;;-1:-1:-1;;;16790:36:0;;;;;;;:::i;:::-;16845:25;16873;16891:6;16873:17;:25::i;:::-;-1:-1:-1;;;;;16920:17:0;;;;;;:13;:17;;;;;;16845:53;;-1:-1:-1;16920:17:0;;16917:109;;;16970:22;;16962:44;;;;-1:-1:-1;;;16962:44:0;;;;;;;:::i;:::-;16771:270;16747:1259;;;-1:-1:-1;;;;;17051:17:0;;;;;;:13;:17;;;;;;;;17047:959;;;17096:14;;;;17088:36;;;;-1:-1:-1;;;17088:36:0;;;;;;;:::i;:::-;17147:5;17143:602;;;17211:4;17196:11;:6;17205:2;17196:11;:::i;:::-;17195:20;;;;:::i;:::-;17177:38;-1:-1:-1;17272:4:0;17257:11;:6;17266:2;17257:11;:::i;:::-;17256:20;;;;:::i;:::-;17238:38;-1:-1:-1;17331:4:0;17316:11;:6;17325:2;17316:11;:::i;:::-;17315:20;;;;:::i;:::-;17299:36;-1:-1:-1;17390:4:0;17375:11;:6;17384:2;17375:11;:::i;:::-;17374:20;;;;:::i;:::-;17358:36;;17047:959;;17143:602;17494:4;17471:19;;17462:6;:28;;;;:::i;:::-;17461:37;;;;:::i;:::-;17443:55;;17572:4;17549:19;;17540:6;:28;;;;:::i;:::-;17539:37;;;;:::i;:::-;17521:55;;17646:4;17625:17;;17616:6;:26;;;;:::i;:::-;17615:35;;;;:::i;:::-;17599:51;;17721:4;17699:18;;17690:6;:27;;;;:::i;17047:959::-;17819:4;17804:11;:6;17813:2;17804:11;:::i;:::-;17803:20;;;;:::i;:::-;17785:38;-1:-1:-1;17876:4:0;17861:11;:6;17870:2;17861:11;:::i;:::-;17860:20;;;;:::i;:::-;17842:38;-1:-1:-1;17931:4:0;17916:11;:6;17925:2;17916:11;:::i;:::-;17915:20;;;;:::i;:::-;17899:36;-1:-1:-1;17986:4:0;17971:11;:6;17980:2;17971:11;:::i;:::-;17970:20;;;;:::i;:::-;17954:36;;17047:959;18026:19;;18022:125;;18096:16;;18066:65;;18082:4;;-1:-1:-1;;;;;18096:16:0;18115:15;18066;:65::i;:::-;18165:19;;18161:125;;18235:16;;18205:65;;18221:4;;-1:-1:-1;;;;;18235:16:0;18254:15;18205;:65::i;:::-;18304:17;;18300:109;;18342:51;18358:4;18372;18379:13;18342:15;:51::i;:::-;18427:17;;18423:106;;18487:10;;18465:48;;18481:4;;-1:-1:-1;;;;;18487:10:0;18499:13;18465:15;:48::i;:::-;18613:13;18597;18579:15;18552:24;18561:15;18552:6;:24;:::i;:::-;:42;;;;:::i;:::-;:58;;;;:::i;:::-;:74;;;;:::i;:::-;18653:13;;18543:83;;-1:-1:-1;;;;;;18647:19:0;;;18653:13;;18647:19;:43;;;;-1:-1:-1;;;;;;18671:19:0;;;;;;:13;:19;;;;;;;;18670:20;18647:43;18643:547;;;18715:13;;;;18711:464;;;18753:10;;18810:14;18819:5;18810:6;:14;:::i;:::-;18786:38;;18852:9;18847:248;18871:12;;18867:1;:16;18847:248;;;18956:44;;;;;;10311:19:1;;;10346:12;;;10339:28;;;18984:15:0;10383:12:1;;;10376:28;10420:12;;18956:44:0;;;;;;;;;;;;18946:55;;;;;;18938:64;;18917:87;;19031:40;19047:4;19053:2;19057:13;19031:15;:40::i;:::-;18885:3;;18847:248;;;;19142:13;19127:12;;:28;;;;:::i;:::-;19117:38;;;;:::i;:::-;;;18730:445;;18711:464;16584:2620;;;;16536:2668;19224:33;19240:4;19246:2;19250:6;19224:15;:33::i;:::-;-1:-1:-1;;;;;19274:21:0;;19290:4;19274:21;;;;:43;;-1:-1:-1;19307:10:0;;-1:-1:-1;;;;;19299:18:0;;;19307:10;;19299:18;;19274:43;19270:99;;;19334:23;19350:6;19334:15;:23::i;:::-;16010:3366;;15931:3445;;;:::o;13323:443::-;-1:-1:-1;;;;;13436:19:0;;13432:91;;13479:32;;-1:-1:-1;;;13479:32:0;;13508:1;13479:32;;;181:51:1;154:18;;13479:32:0;14:224:1;13432:91:0;-1:-1:-1;;;;;13537:21:0;;13533:92;;13582:31;;-1:-1:-1;;;13582:31:0;;13610:1;13582:31;;;181:51:1;154:18;;13582:31:0;14:224:1;13533:92:0;-1:-1:-1;;;;;13635:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;13681:78;;;;13732:7;-1:-1:-1;;;;;13716:31:0;13725:5;-1:-1:-1;;;;;13716:31:0;;13741:5;13716:31;;;;2182:25:1;;2170:2;2155:18;;2036:177;13716:31:0;;;;;;;;13323:443;;;;:::o;24309:464::-;24372:17;24402:14;24418:13;24433:20;24457:13;:11;:13::i;:::-;24401:69;;;;;;24481:19;24524:1;24515:6;:10;:23;;;;;24537:1;24529:5;:9;24515:23;24511:93;;;24587:5;24569:15;24578:6;24569;:15;:::i;:::-;:23;;;;:::i;:::-;24555:37;;24511:93;24653:20;24662:11;24653:6;:20;:::i;:::-;24637:12;:36;24633:133;;24705:49;24718:12;24732:6;24740;24748:5;24705:12;:49::i;:::-;-1:-1:-1;24690:64:0;-1:-1:-1;24633:133:0;24390:383;;;;24309:464;;;:::o;19525:305::-;19580:19;19595:3;19580:14;:19::i;:::-;19576:32;;19525:305;:::o;19576:32::-;-1:-1:-1;;;;;19629:16:0;;;;;;:11;:16;;;;;;19624:21;;19620:203;;19671:7;:14;19666:19;;:40;;;19703:3;-1:-1:-1;;;;;19689:17:0;:7;19697:1;19689:10;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;19689:10:0;:17;;19666:40;19662:150;;;19746:7;:14;;-1:-1:-1;;;;;19727:16:0;;;;;;:11;:16;;;;;:33;;;19779:17;;;;;;;;;;;;;-1:-1:-1;;;;;;19779:17:0;;;;;;19662:150;19525:305;:::o;24781:476::-;24847:17;24878:14;24896:20;24920:13;:11;:13::i;:::-;24877:56;;;;;24964:6;24948:12;:22;24944:306;;25103:13;;-1:-1:-1;;;;;25103:13:0;10827:7;10854:18;;;;;;;;;;;25129:1;;25093:33;;25120:6;;25093:33;:::i;:::-;:37;;;;:::i;:::-;25039:13;;;;;;;;;-1:-1:-1;;;;;25039:13:0;-1:-1:-1;;;;;25026:39:0;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25017:50;;:6;:50;:::i;:::-;:54;;25070:1;25017:54;:::i;:::-;25016:115;;;;:::i;:::-;24987:144;;25191:13;;;;;;;;;-1:-1:-1;;;;;25191:13:0;-1:-1:-1;;;;;25178:39:0;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25158:17;:9;25170:5;25158:17;:::i;:::-;:61;:77;;25226:9;25158:77;;;25222:1;25158:77;25146:89;;24944:306;24866:391;;24781:476;;;:::o;11683:316::-;-1:-1:-1;;;;;11775:18:0;;11771:88;;11817:30;;-1:-1:-1;;;11817:30:0;;11844:1;11817:30;;;181:51:1;154:18;;11817:30:0;14:224:1;11771:88:0;-1:-1:-1;;;;;11873:16:0;;11869:88;;11913:32;;-1:-1:-1;;;11913:32:0;;11942:1;11913:32;;;181:51:1;154:18;;11913:32:0;14:224:1;11869:88:0;11967:24;11975:4;11981:2;11985:5;11967:7;:24::i;20612:1610::-;20703:4;20669:13;10854:18;;;;;;;;;;;20765:21;;10854:18;;20756:30;;20753:67;;;20802:7;;20612:1610;:::o;20753:67::-;20869:21;;20852:14;;:38;;;;:::i;:::-;20834:15;:56;20830:94;;;20906:7;;20612:1610;:::o;20830:94::-;20961:7;:14;20934:24;20990:21;;;20986:34;;21013:7;;;20612:1610;:::o;20986:34::-;21049:15;21032:14;:32;21101:13;;21151:23;;;-1:-1:-1;;;21151:23:0;;;;-1:-1:-1;;;;;21101:13:0;;;;21075:16;;21101:13;;21151:21;;:23;;;;;;;;;;;;;;;21101:13;21151:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21126:48;-1:-1:-1;21187:19:0;;;;;21323:9;21305:27;;21343:18;21378:837;21395:3;21385:7;:13;:46;;;;;21415:16;21402:10;:29;21385:46;21378:837;;;21476:16;21452:20;;:40;21448:105;;21536:1;21513:20;:24;21448:105;21583:7;21591:20;;21583:29;;;;;;;;:::i;:::-;;;;;;;;;;;21642:32;;-1:-1:-1;;;21642:32:0;;-1:-1:-1;;;;;21583:29:0;;;21642:32;;;181:51:1;;;21583:29:0;-1:-1:-1;21642:19:0;;;;;;154:18:1;;21642:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21694:26:0;;;;;;:13;:26;;;;;;21627:47;;-1:-1:-1;21694:26:0;;21693:27;:55;;;;;21739:9;;21724:12;:24;21693:55;21689:361;;;21801:14;21778:20;21786:12;21778:5;:20;:::i;:::-;:37;;;;:::i;:::-;21769:46;;21847:6;21838;:15;21834:28;;;21855:7;;;;;;;;;;;20612:1610;:::o;21834:28::-;21883:10;;21880:155;;21917:51;21941:4;21948:11;21961:6;21917:15;:51::i;:::-;22000:15;22009:6;22000;:15;:::i;:::-;21991:24;;21880:155;22095:9;22085:19;;:7;:19;:::i;:::-;22074:31;;:7;:31;:::i;:::-;22064:41;;22130:9;22154:20;:22;;22120:19;;-1:-1:-1;22154:20:0;:22;;;:::i;:::-;;;;;;22191:12;;;;;:::i;:::-;;;;21378:837;;;20658:1564;;;;;;;;;;;20612:1610;:::o;25265:508::-;25312:14;25328:13;25343:20;25376:17;25409:13;;;;;;;;;-1:-1:-1;;;;;25409:13:0;25376:47;;25435:10;25447;25463:4;-1:-1:-1;;;;;25463:16:0;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;25513:9:0;;-1:-1:-1;;;;;25434:47:0;;;;-1:-1:-1;25434:47:0;;;-1:-1:-1;;;;;;25513:9:0;25558:4;25537:26;;25533:164;;;25589:2;25580:11;;25614:2;25606:10;;25533:164;;;25658:2;25649:11;;25683:2;25675:10;;25533:164;25751:13;;25722:43;;-1:-1:-1;;;25722:43:0;;-1:-1:-1;;;;;25751:13:0;;;25722:43;;;181:51:1;25722:28:0;;;;;;154:18:1;;25722:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25707:58;;25365:408;;;;25265:508;;;:::o;25781:1373::-;25926:17;25945:22;25980:23;26019:13;;;;;;;;;-1:-1:-1;;;;;26019:13:0;-1:-1:-1;;;;;26006:39:0;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25980:67;;26058:13;26092:15;;;;;;;;;-1:-1:-1;;;;;26092:15:0;-1:-1:-1;;;;;26092:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26074:50:0;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26210:13;;26197:35;;;-1:-1:-1;;;26197:35:0;;;;26058:68;;-1:-1:-1;;;;;;26150:19:0;;;;;;26137:10;;26210:13;;;;26197:33;;:35;;;;;;;;;;;;;;26210:13;26197:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26180:52;;26247:5;26243:533;;;26273:11;;26269:496;;26305:13;26321:18;26331:7;26336:2;26331;:7;:::i;:::-;26321:9;:18::i;:::-;26305:34;;26358:17;26378;26388:6;26378:9;:17::i;:::-;26358:37;;26426:9;26418:5;:17;26414:336;;;26460:17;26499;26507:9;26499:5;:17;:::i;:::-;26480:37;;:15;:37;:::i;:::-;:41;;26520:1;26480:41;:::i;:::-;26460:61;-1:-1:-1;26544:19:0;26578:9;26566;:5;26574:1;26566:9;:::i;:::-;:21;;;;:::i;:::-;26544:43;-1:-1:-1;26627:23:0;26544:43;26627:9;:23;:::i;:::-;26610:40;-1:-1:-1;26677:18:0;;26673:57;;26697:33;26716:14;26697:33;;:::i;:::-;;;26673:57;26437:313;;26414:336;26286:479;;26269:496;26786:15;26804:13;26815:2;26804:8;:13;:::i;:::-;26786:31;;26832:15;26851:1;26832:20;26828:319;;26873:11;;26869:98;;26947:4;26917:27;26927:16;26937:6;26927:7;:16;:::i;26917:27::-;:34;;;;:::i;:::-;26905:46;;26869:98;26828:319;;;27011:124;27068:2;27039:25;27049:15;27039:7;:25;:::i;:::-;27038:32;;;;:::i;:::-;27118:2;27090:24;27099:15;27090:6;:24;:::i;:::-;27089:31;;;;:::i;:::-;27011:8;:124::i;:::-;26999:136;;26828:319;25969:1185;;;;;25781:1373;;;;;;;:::o;19838:236::-;19899:4;20211:17;;20256:8;19916:34;;-1:-1:-1;19945:5:0;;19838:236;-1:-1:-1;19838:236:0:o;19916:34::-;-1:-1:-1;;;;;19965:18:0;;19961:36;;-1:-1:-1;19992:5:0;;19838:236;-1:-1:-1;19838:236:0:o;19961:36::-;20020:10;;-1:-1:-1;;;;;20020:10:0;;;20012:18;;;;20008:36;;-1:-1:-1;20039:5:0;;19838:236;-1:-1:-1;19838:236:0:o;20008:36::-;-1:-1:-1;20062:4:0;;19838:236;-1:-1:-1;19838:236:0:o;12007:730::-;-1:-1:-1;;;;;12097:18:0;;12093:369;;12148:5;12132:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;12093:369:0;;-1:-1:-1;12093:369:0;;-1:-1:-1;;;;;12208:15:0;;12186:19;12208:15;;;;;;;;;;;12242:19;;;12238:117;;;12289:50;;-1:-1:-1;;;12289:50:0;;-1:-1:-1;;;;;8788:32:1;;12289:50:0;;;8770:51:1;8837:18;;;8830:34;;;8880:18;;;8873:34;;;8743:18;;12289:50:0;8568:345:1;12238:117:0;-1:-1:-1;;;;;12398:15:0;;:9;:15;;;;;;;;;;12416:19;;;;12398:37;;12093:369;-1:-1:-1;;;;;12478:16:0;;12474:213;;12540:12;:21;;;;;;;12474:213;;;-1:-1:-1;;;;;12638:13:0;;:9;:13;;;;;;;;;;:22;;;;;;12474:213;12719:2;-1:-1:-1;;;;;12704:25:0;12713:4;-1:-1:-1;;;;;12704:25:0;;12723:5;12704:25;;;;2182::1;;2170:2;2155:18;;2036:177;12704:25:0;;;;;;;;12007:730;;;:::o;6271:303::-;6316:6;6343:1;6339;:5;6335:232;;;-1:-1:-1;6365:1:0;6381:6;6390:5;6394:1;6365;6390:5;:::i;:::-;:9;;6398:1;6390:9;:::i;:::-;6381:18;;6414:92;6425:1;6421;:5;6414:92;;;6451:1;-1:-1:-1;6451:1:0;6489;6451;6476:5;6451:1;6476;:5;:::i;:::-;:9;;;;:::i;:::-;6475:15;;;;:::i;:::-;6471:19;;6414:92;;;6346:171;6271:303;;;:::o;6335:232::-;6527:6;;6523:44;;-1:-1:-1;6554:1:0;6523:44;6271:303;;;:::o;6167:96::-;6219:6;6246:1;6242;:5;:13;;6254:1;6242:13;;;6250:1;6242:13;6238:17;6167:96;-1:-1:-1;;;6167:96:0:o;243:131:1:-;-1:-1:-1;;;;;318:31:1;;308:42;;298:70;;364:1;361;354:12;379:160;444:20;;500:13;;493:21;483:32;;473:60;;529:1;526;519:12;544:315;609:6;617;670:2;658:9;649:7;645:23;641:32;638:52;;;686:1;683;676:12;638:52;725:9;712:23;744:31;769:5;744:31;:::i;:::-;794:5;-1:-1:-1;818:35:1;849:2;834:18;;818:35;:::i;:::-;808:45;;544:315;;;;;:::o;864:418::-;1013:2;1002:9;995:21;976:4;1045:6;1039:13;1088:6;1083:2;1072:9;1068:18;1061:34;1147:6;1142:2;1134:6;1130:15;1125:2;1114:9;1110:18;1104:50;1203:1;1198:2;1189:6;1178:9;1174:22;1170:31;1163:42;1273:2;1266;1262:7;1257:2;1249:6;1245:15;1241:29;1230:9;1226:45;1222:54;1214:62;;;864:418;;;;:::o;1287:180::-;1343:6;1396:2;1384:9;1375:7;1371:23;1367:32;1364:52;;;1412:1;1409;1402:12;1364:52;1435:26;1451:9;1435:26;:::i;1472:367::-;1540:6;1548;1601:2;1589:9;1580:7;1576:23;1572:32;1569:52;;;1617:1;1614;1607:12;1569:52;1656:9;1643:23;1675:31;1700:5;1675:31;:::i;:::-;1725:5;1803:2;1788:18;;;;1775:32;;-1:-1:-1;;;1472:367:1:o;2218:684::-;2310:6;2318;2326;2379:2;2367:9;2358:7;2354:23;2350:32;2347:52;;;2395:1;2392;2385:12;2347:52;2435:9;2422:23;2468:18;2460:6;2457:30;2454:50;;;2500:1;2497;2490:12;2454:50;2523:22;;2576:4;2568:13;;2564:27;-1:-1:-1;2554:55:1;;2605:1;2602;2595:12;2554:55;2645:2;2632:16;2671:18;2663:6;2660:30;2657:50;;;2703:1;2700;2693:12;2657:50;2758:7;2751:4;2741:6;2738:1;2734:14;2730:2;2726:23;2722:34;2719:47;2716:67;;;2779:1;2776;2769:12;2716:67;2810:4;2802:13;;;;-1:-1:-1;2834:6:1;-1:-1:-1;2859:37:1;;2875:20;;2859:37;:::i;:::-;2849:47;;2218:684;;;;;:::o;2907:508::-;2984:6;2992;3000;3053:2;3041:9;3032:7;3028:23;3024:32;3021:52;;;3069:1;3066;3059:12;3021:52;3108:9;3095:23;3127:31;3152:5;3127:31;:::i;:::-;3177:5;-1:-1:-1;3234:2:1;3219:18;;3206:32;3247:33;3206:32;3247:33;:::i;:::-;2907:508;;3299:7;;-1:-1:-1;;;3379:2:1;3364:18;;;;3351:32;;2907:508::o;3609:637::-;3799:2;3811:21;;;3881:13;;3784:18;;;3903:22;;;3751:4;;3982:15;;;3956:2;3941:18;;;3751:4;4025:195;4039:6;4036:1;4033:13;4025:195;;;4104:13;;-1:-1:-1;;;;;4100:39:1;4088:52;;4169:2;4195:15;;;;4160:12;;;;4136:1;4054:9;4025:195;;;-1:-1:-1;4237:3:1;;3609:637;-1:-1:-1;;;;;3609:637:1:o;4251:253::-;4335:6;4388:3;4376:9;4367:7;4363:23;4359:33;4356:53;;;4405:1;4402;4395:12;4356:53;4445:7;4439:3;4428:9;4424:19;4421:32;4418:52;;;4466:1;4463;4456:12;4509:247;4568:6;4621:2;4609:9;4600:7;4596:23;4592:32;4589:52;;;4637:1;4634;4627:12;4589:52;4676:9;4663:23;4695:31;4720:5;4695:31;:::i;4761:226::-;4820:6;4873:2;4861:9;4852:7;4848:23;4844:32;4841:52;;;4889:1;4886;4879:12;4841:52;-1:-1:-1;4934:23:1;;4761:226;-1:-1:-1;4761:226:1:o;5200:388::-;5268:6;5276;5329:2;5317:9;5308:7;5304:23;5300:32;5297:52;;;5345:1;5342;5335:12;5297:52;5384:9;5371:23;5403:31;5428:5;5403:31;:::i;:::-;5453:5;-1:-1:-1;5510:2:1;5495:18;;5482:32;5523:33;5482:32;5523:33;:::i;:::-;5575:7;5565:17;;;5200:388;;;;;:::o;5593:356::-;5795:2;5777:21;;;5814:18;;;5807:30;5873:34;5868:2;5853:18;;5846:62;5940:2;5925:18;;5593:356::o;5954:380::-;6033:1;6029:12;;;;6076;;;6097:61;;6151:4;6143:6;6139:17;6129:27;;6097:61;6204:2;6196:6;6193:14;6173:18;6170:38;6167:161;;6250:10;6245:3;6241:20;6238:1;6231:31;6285:4;6282:1;6275:15;6313:4;6310:1;6303:15;6339:127;6400:10;6395:3;6391:20;6388:1;6381:31;6431:4;6428:1;6421:15;6455:4;6452:1;6445:15;6811:127;6872:10;6867:3;6863:20;6860:1;6853:31;6903:4;6900:1;6893:15;6927:4;6924:1;6917:15;6943:125;7008:9;;;7029:10;;;7026:36;;;7042:18;;:::i;9261:168::-;9334:9;;;9365;;9382:15;;;9376:22;;9362:37;9352:71;;9403:18;;:::i;9434:217::-;9474:1;9500;9490:132;;9544:10;9539:3;9535:20;9532:1;9525:31;9579:4;9576:1;9569:15;9607:4;9604:1;9597:15;9490:132;-1:-1:-1;9636:9:1;;9434:217::o;9656:332::-;9858:2;9840:21;;;9897:1;9877:18;;;9870:29;-1:-1:-1;;;9930:2:1;9915:18;;9908:39;9979:2;9964:18;;9656:332::o;9993:128::-;10060:9;;;10081:11;;;10078:37;;;10095:18;;:::i;10443:184::-;10513:6;10566:2;10554:9;10545:7;10541:23;10537:32;10534:52;;;10582:1;10579;10572:12;10534:52;-1:-1:-1;10605:16:1;;10443:184;-1:-1:-1;10443:184:1:o;10632:135::-;10671:3;10692:17;;;10689:43;;10712:18;;:::i;:::-;-1:-1:-1;10759:1:1;10748:13;;10632:135::o;10772:188::-;10851:13;;-1:-1:-1;;;;;10893:42:1;;10883:53;;10873:81;;10950:1;10947;10940:12;10965:450;11052:6;11060;11068;11121:2;11109:9;11100:7;11096:23;11092:32;11089:52;;;11137:1;11134;11127:12;11089:52;11160:40;11190:9;11160:40;:::i;:::-;11150:50;;11219:49;11264:2;11253:9;11249:18;11219:49;:::i;:::-;11209:59;;11311:2;11300:9;11296:18;11290:25;11355:10;11348:5;11344:22;11337:5;11334:33;11324:61;;11381:1;11378;11371:12;11324:61;11404:5;11394:15;;;10965:450;;;;;:::o;11420:251::-;11490:6;11543:2;11531:9;11522:7;11518:23;11514:32;11511:52;;;11559:1;11556;11549:12;11511:52;11591:9;11585:16;11610:31;11635:5;11610:31;:::i

Swarm Source

ipfs://a5623e2069c549dbe28ed80e29110350fbea176b80b1ecce89111523f5336093

Block Transaction Gas Used Reward
view all blocks produced
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
View All Validatorset

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.