ETH Price: $3,461.32 (+0.29%)

Contract

0xFE7c42DE16375D21382AF5Aa5e20BC48BbcE5167
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve180014502023-08-26 21:12:47482 days ago1693084367IN
0xFE7c42DE...8BbcE5167
0 ETH0.0005124810.95329288
Approve179990602023-08-26 13:12:47482 days ago1693055567IN
0xFE7c42DE...8BbcE5167
0 ETH0.0008398717.85
Approve179981362023-08-26 10:06:35482 days ago1693044395IN
0xFE7c42DE...8BbcE5167
0 ETH0.0007697616.34743302
Approve179958592023-08-26 2:24:59482 days ago1693016699IN
0xFE7c42DE...8BbcE5167
0 ETH0.0008123417.25170094
Approve179947392023-08-25 22:38:59483 days ago1693003139IN
0xFE7c42DE...8BbcE5167
0 ETH0.000660214.12859035
Claim Dividend179947362023-08-25 22:38:23483 days ago1693003103IN
0xFE7c42DE...8BbcE5167
0 ETH0.0005304613.50631017
Claim Dividend179946702023-08-25 22:25:11483 days ago1693002311IN
0xFE7c42DE...8BbcE5167
0 ETH0.0005584914.22011227
Approve179946632023-08-25 22:23:47483 days ago1693002227IN
0xFE7c42DE...8BbcE5167
0 ETH0.0007256815.53401733
Approve179946572023-08-25 22:22:35483 days ago1693002155IN
0xFE7c42DE...8BbcE5167
0 ETH0.0006282813.44562957
Approve179946502023-08-25 22:21:11483 days ago1693002071IN
0xFE7c42DE...8BbcE5167
0 ETH0.0006676514.19699269
Claim Dividend179946302023-08-25 22:17:11483 days ago1693001831IN
0xFE7c42DE...8BbcE5167
0 ETH0.0012565215.16169912
Approve179946052023-08-25 22:12:11483 days ago1693001531IN
0xFE7c42DE...8BbcE5167
0 ETH0.0006452913.8095328
Claim Dividend179945332023-08-25 21:57:47483 days ago1693000667IN
0xFE7c42DE...8BbcE5167
0 ETH0.0012355514.90869545
Approve179945122023-08-25 21:53:35483 days ago1693000415IN
0xFE7c42DE...8BbcE5167
0 ETH0.0009375219.91004508
Approve179944852023-08-25 21:48:11483 days ago1693000091IN
0xFE7c42DE...8BbcE5167
0 ETH0.0008769818.62433155
Approve179943852023-08-25 21:28:11483 days ago1692998891IN
0xFE7c42DE...8BbcE5167
0 ETH0.0009074819.27207819
Claim Dividend179943782023-08-25 21:26:47483 days ago1692998807IN
0xFE7c42DE...8BbcE5167
0 ETH0.0020005117.08744617
Claim Dividend179943622023-08-25 21:23:35483 days ago1692998615IN
0xFE7c42DE...8BbcE5167
0 ETH0.0022011316.4049349
Approve179943342023-08-25 21:17:59483 days ago1692998279IN
0xFE7c42DE...8BbcE5167
0 ETH0.0010677522.67568295
Approve179943262023-08-25 21:16:23483 days ago1692998183IN
0xFE7c42DE...8BbcE5167
0 ETH0.0011916825.3075548
Approve179943042023-08-25 21:11:59483 days ago1692997919IN
0xFE7c42DE...8BbcE5167
0 ETH0.0012493326.53194017
Set Fee179943032023-08-25 21:11:47483 days ago1692997907IN
0xFE7c42DE...8BbcE5167
0 ETH0.0006732323.21829114
Approve179943012023-08-25 21:11:23483 days ago1692997883IN
0xFE7c42DE...8BbcE5167
0 ETH0.0011660224.76265904
Approve179942902023-08-25 21:09:11483 days ago1692997751IN
0xFE7c42DE...8BbcE5167
0 ETH0.0010284821.84176912
Approve179942882023-08-25 21:08:47483 days ago1692997727IN
0xFE7c42DE...8BbcE5167
0 ETH0.0010100121.4495165
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
180597462023-09-04 1:09:59474 days ago1693789799
0xFE7c42DE...8BbcE5167
0.0036253 ETH
180597462023-09-04 1:09:59474 days ago1693789799
0xFE7c42DE...8BbcE5167
0.0036253 ETH
179958602023-08-26 2:25:11482 days ago1693016711
0xFE7c42DE...8BbcE5167
0.00426509 ETH
179958602023-08-26 2:25:11482 days ago1693016711
0xFE7c42DE...8BbcE5167
0.00426509 ETH
179947672023-08-25 22:44:35483 days ago1693003475
0xFE7c42DE...8BbcE5167
0.00678203 ETH
179947672023-08-25 22:44:35483 days ago1693003475
0xFE7c42DE...8BbcE5167
0.00678203 ETH
179947652023-08-25 22:44:11483 days ago1693003451
0xFE7c42DE...8BbcE5167
0.00678203 ETH
179947652023-08-25 22:44:11483 days ago1693003451
0xFE7c42DE...8BbcE5167
0.00678203 ETH
179947652023-08-25 22:44:11483 days ago1693003451
0xFE7c42DE...8BbcE5167
0.00678203 ETH
179947652023-08-25 22:44:11483 days ago1693003451
0xFE7c42DE...8BbcE5167
0.00678203 ETH
179947652023-08-25 22:44:11483 days ago1693003451
0xFE7c42DE...8BbcE5167
0.00678203 ETH
179947652023-08-25 22:44:11483 days ago1693003451
0xFE7c42DE...8BbcE5167
0.00678203 ETH
179946732023-08-25 22:25:47483 days ago1693002347
0xFE7c42DE...8BbcE5167
0.00597802 ETH
179946732023-08-25 22:25:47483 days ago1693002347
0xFE7c42DE...8BbcE5167
0.00597802 ETH
179946712023-08-25 22:25:23483 days ago1693002323
0xFE7c42DE...8BbcE5167
0.00597802 ETH
179946702023-08-25 22:25:11483 days ago1693002311
0xFE7c42DE...8BbcE5167
0.00597802 ETH
179946242023-08-25 22:15:59483 days ago1693001759
0xFE7c42DE...8BbcE5167
0.00697252 ETH
179946242023-08-25 22:15:59483 days ago1693001759
0xFE7c42DE...8BbcE5167
0.00697252 ETH
179946142023-08-25 22:13:59483 days ago1693001639
0xFE7c42DE...8BbcE5167
0.00914517 ETH
179946142023-08-25 22:13:59483 days ago1693001639
0xFE7c42DE...8BbcE5167
0.00914517 ETH
179946122023-08-25 22:13:35483 days ago1693001615
0xFE7c42DE...8BbcE5167
0.01176604 ETH
179946122023-08-25 22:13:35483 days ago1693001615
0xFE7c42DE...8BbcE5167
0.01176604 ETH
179946122023-08-25 22:13:35483 days ago1693001615
0xFE7c42DE...8BbcE5167
0.02132828 ETH
179946122023-08-25 22:13:35483 days ago1693001615
0xFE7c42DE...8BbcE5167
0.02132828 ETH
179945162023-08-25 21:54:23483 days ago1693000463
0xFE7c42DE...8BbcE5167
0.02885808 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ShiaPrinter

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-25
*/

/*

https://shiaprinter.live

https://twitter.com/ShiaPrinter

https://t.me/shiaprinter

*/

pragma solidity ^0.8.14;

/**
 * Standard SafeMath, stripped down to just add/sub/mul/div
 */
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        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;
    }
}

/**
 * ERC20 standard interface.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
 * Allows for contract ownership along with multi-address authorization
 */
abstract contract Auth {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

    /**
     * Function modifier to require caller to be contract deployer
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!Owner"); _;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Transfer ownership to new address. Caller must be deployer. Leaves old deployer authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IDividendDistributor {
    function setShare(address shareholder, uint256 amount) external;
    function deposit(uint256 amount) external;
    function claimDividend(address shareholder) external;
    function getDividendsClaimedOf (address shareholder) external returns (uint256);
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address public _token;
    address public _owner;

    address public immutable SHIA = address(0x43D7E65B8fF49698D9550a7F315c87E67344FB59); //UNI


    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalClaimed;
    }

    address[] private shareholders;
    mapping (address => uint256) private shareholderIndexes;

    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalClaimed;
    uint256 public dividendsPerShare;
    uint256 private dividendsPerShareAccuracyFactor = 10 ** 36;

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }
    
    modifier onlyOwner() {
        require(msg.sender == _owner); _;
    }

    constructor (address owner) {
        _token = msg.sender;
        _owner = owner;
    }

    receive() external payable { }

    function setShare(address shareholder, uint256 amount) external override onlyToken {
        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit(uint256 amount) external override onlyToken {
        
        if (amount > 0) {        
            totalDividends = totalDividends.add(amount);
            dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
        }
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getClaimableDividendOf(shareholder);
        if(amount > 0){
            totalClaimed = totalClaimed.add(amount);
            shares[shareholder].totalClaimed = shares[shareholder].totalClaimed.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
            IERC20(SHIA).transfer(shareholder, amount);
        }
    }

    function claimDividend(address shareholder) external override onlyToken {
        distributeDividend(shareholder);
    }

    function getClaimableDividendOf(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
    
    function manualSend(uint256 amount, address holder) external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        payable(holder).transfer(amount > 0 ? amount : contractETHBalance);
    }


    function getDividendsClaimedOf (address shareholder) external view returns (uint256) {
        require (shares[shareholder].amount > 0, "You're not a PRINTER shareholder!");
        return shares[shareholder].totalClaimed;
    }

    }

contract ShiaPrinter is IERC20, Auth {
    using SafeMath for uint256;

    address private WETH;
    address private DEAD = 0x000000000000000000000000000000000000dEaD;
    address private ZERO = 0x0000000000000000000000000000000000000000;

    address public immutable SHIA = address(0x43D7E65B8fF49698D9550a7F315c87E67344FB59); //UNI

    string private constant  _name = "ShiaPrinter";
    string private constant _symbol = "SP";
    uint8 private constant _decimals = 9;

    uint256 private _totalSupply = 69696969 * (10 ** _decimals);
    uint256 private _maxTxAmountBuy = _totalSupply;
    

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => uint256) private cooldown;

    mapping (address => bool) private isFeeExempt;
    mapping (address => bool) private isDividendExempt;
    mapping (address => bool) private isBot;
            
    uint256 private totalFee = 15;
    uint256 private feeDenominator = 100;

    address payable public marketingWallet = payable(0x48A9A02a36148febdB76A199dA8bcDF540C843e5);

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;
    bool private tradingOpen;
    bool private buyLimit = true;
    uint256 private maxBuy = 1393939 * (10 ** _decimals);
    uint256 public numTokensSellToAddToLiquidity = 278787 * 10**9;

    DividendDistributor private distributor;    
    
    bool public blacklistEnabled = false;
    bool private inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor (
        address _owner        
    ) Auth(_owner) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            
        WETH = router.WETH();
        
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        distributor = new DividendDistributor(_owner);

        isFeeExempt[_owner] = true;
        isFeeExempt[marketingWallet] = true;             
              
        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;        

        _balances[_owner] = _totalSupply;
    
        emit Transfer(address(0), _owner, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if (sender!= owner && recipient!= owner) require(tradingOpen, "Trading not yet enabled."); //transfers disabled before openTrading
        if (blacklistEnabled) {
            require (!isBot[sender] && !isBot[recipient], "Bot!");
        }
        if (buyLimit) { 
            if (sender!=owner && recipient!= owner) require (amount<=maxBuy, "Too much sir");        
        }

        if (sender == pair && recipient != address(router) && !isFeeExempt[recipient]) {
            require (cooldown[recipient] < block.timestamp);
            cooldown[recipient] = block.timestamp + 60 seconds; 
        }
       
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }      

        uint256 contractTokenBalance = balanceOf(address(this));

        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
    
        bool shouldSwapBack = (overMinTokenBalance && recipient==pair && balanceOf(address(this)) > 0);
        if(shouldSwapBack){ swapBack(); }

        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, amount) : amount;
        
        _balances[recipient] = _balances[recipient].add(amountReceived);

        if(sender != pair && !isDividendExempt[sender]){ try distributor.setShare(sender, _balances[sender]) {} catch {} }
        if(recipient != pair && !isDividendExempt[recipient]){ try distributor.setShare(recipient, _balances[recipient]) {} catch {} }

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

 
    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return ( !(isFeeExempt[sender] || isFeeExempt[recipient]) &&  (sender == pair || recipient == pair) );
   }

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount;
        feeAmount = amount.mul(totalFee).div(feeDenominator);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);   

        return amount.sub(feeAmount);
    }

   
    function swapBack() internal swapping {

        uint256 amountToSwap = balanceOf(address(this));        

        swapTokensForEth(amountToSwap.div(2));
        swapTokensForSHIA(amountToSwap.div(2));

        uint256 dividends = IERC20(SHIA).balanceOf(address(this));

        bool success = IERC20(SHIA).transfer(address(distributor), dividends);

        if (success) {
            distributor.deposit(dividends);            
        }
             
        payable(marketingWallet).transfer(address(this).balance);        
    }

    

    function swapTokensForSHIA(uint256 tokenAmount) private {

        address[] memory path = new address[](3);
        path[0] = address(this);
        path[1] = WETH;
        path[2] = SHIA;

        // make the swap
        router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function swapTokensForEth(uint256 tokenAmount) private {

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        
        // add the liquidity
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner,
            block.timestamp
        );
    }

    
    function openTrading() external onlyOwner {
        launchedAt = block.number;
        tradingOpen = true;
    }    
  
    
    function setBot(address _address, bool toggle) external onlyOwner {
        isBot[_address] = toggle;
        _setIsDividendExempt(_address, toggle);
    }
    
    
    function _setIsDividendExempt(address holder, bool exempt) internal {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            distributor.setShare(holder, 0);
        }else{
            distributor.setShare(holder, _balances[holder]);
        }
    }

    function setIsDividendExempt(address holder, bool exempt) external onlyOwner {
        _setIsDividendExempt(holder, exempt);
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setFee (uint256 _fee) external onlyOwner {
        require (_fee <= 14, "Fee can't exceed 14%");
        totalFee = _fee;
    }
  
    function manualSend() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        payable(marketingWallet).transfer(contractETHBalance);
    }

    function claimDividend() external {
        distributor.claimDividend(msg.sender);
    }
    
    function claimDividend(address holder) external onlyOwner {
        distributor.claimDividend(holder);
    }
    
    function getClaimableDividendOf(address shareholder) public view returns (uint256) {
        return distributor.getClaimableDividendOf(shareholder);
    }
    
    function manualBurn(uint256 amount) external onlyOwner returns (bool) {
        return _basicTransfer(address(this), DEAD, amount);
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function setMarketingWallet(address _marketingWallet) external onlyOwner {
        marketingWallet = payable(_marketingWallet);
    } 

    function getTotalDividends() external view returns (uint256) {
        return distributor.totalDividends();
    }    

    function getTotalClaimed() external view returns (uint256) {
        return distributor.totalClaimed();
    }

     function getDividendsClaimedOf (address shareholder) external view returns (uint256) {
        return distributor.getDividendsClaimedOf(shareholder);
    }

    function removeBuyLimit() external onlyOwner {
        buyLimit = false;
    }

    function checkBot(address account) public view returns (bool) {
        return isBot[account];
    }

    function setBlacklistEnabled() external onlyOwner {
        require (blacklistEnabled == false, "can only be called once");
        blacklistEnabled = true;
    }

    function setSwapThresholdAmount (uint256 amount) external onlyOwner {
        require (amount <= _totalSupply.div(100), "can't exceed 1%");
        numTokensSellToAddToLiquidity = amount * 10 ** 9;
    } 
   
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","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":"SHIA","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","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":"blacklistEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"checkBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getClaimableDividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getDividendsClaimedOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualBurn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeBuyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"toggle","type":"bool"}],"name":"setBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapThresholdAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a060405261dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507343d7e65b8ff49698d9550a7f315c87e67344fb5973ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152506009600a620000e0919062000a8b565b6304277dc9620000f1919062000adc565b600455600454600555600f600c556064600d557348a9a02a36148febdb76a199da8bcdf540c843e5600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260016101000a81548160ff0219169083151502179055506009600a62000184919062000a8b565b6215451362000194919062000adc565b60135565fd8e281a5e006014556000601560146101000a81548160ff021916908315150217905550348015620001c957600080fd5b506040516200686d3803806200686d8339818101604052810190620001ef919062000b91565b80806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031a919062000b91565b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ee919062000b91565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200044c92919062000bd4565b6020604051808303816000875af11580156200046c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000492919062000b91565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080604051620005a490620008e3565b620005b0919062000c01565b604051809103906000f080158015620005cd573d6000803e3d6000fd5b50601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600454600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454604051620008d4919062000c2f565b60405180910390a35062000c4c565b611a8b8062004de283390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200097f57808604811115620009575762000956620008f1565b5b6001851615620009675780820291505b8081029050620009778562000920565b945062000937565b94509492505050565b6000826200099a576001905062000a6d565b81620009aa576000905062000a6d565b8160018114620009c35760028114620009ce5762000a04565b600191505062000a6d565b60ff841115620009e357620009e2620008f1565b5b8360020a915084821115620009fd57620009fc620008f1565b5b5062000a6d565b5060208310610133831016604e8410600b841016171562000a3e5782820a90508381111562000a385762000a37620008f1565b5b62000a6d565b62000a4d84848460016200092d565b9250905081840481111562000a675762000a66620008f1565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000a988262000a74565b915062000aa58362000a7e565b925062000ad47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000988565b905092915050565b600062000ae98262000a74565b915062000af68362000a74565b925082820262000b068162000a74565b9150828204841483151762000b205762000b1f620008f1565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b598262000b2c565b9050919050565b62000b6b8162000b4c565b811462000b7757600080fd5b50565b60008151905062000b8b8162000b60565b92915050565b60006020828403121562000baa5762000ba962000b27565b5b600062000bba8482850162000b7a565b91505092915050565b62000bce8162000b4c565b82525050565b600060408201905062000beb600083018562000bc3565b62000bfa602083018462000bc3565b9392505050565b600060208201905062000c18600083018462000bc3565b92915050565b62000c298162000a74565b82525050565b600060208201905062000c46600083018462000c1e565b92915050565b60805161416562000c7d60003960008181610a5001528181612ad601528181612b74015261330c01526141656000f3fe6080604052600436106102345760003560e01c806370a082311161012e578063bf56b371116100ab578063f0fc6bca1161006f578063f0fc6bca14610874578063f2fde38b1461088b578063f4293890146108b4578063f708a64f146108cb578063f887ea40146108f45761023b565b8063bf56b3711461079f578063bffb691d146107ca578063c9567bf9146107f5578063d12a76881461080c578063dd62ed3e146108375761023b565b80638ecc37fb116100f25780638ecc37fb1461069257806395d89b41146106cf578063a8aa1b31146106fa578063a9059cbb14610725578063b1a4e0dc146107625761023b565b806370a08231146105bd578063736a83a1146105fa57806375f0a87414610625578063764ca51214610650578063893d20e8146106675761023b565b80632f54bf6e116101bc5780635cc33f74116101805780635cc33f74146104da5780635d098b3814610517578063658d4b7f1461054057806367ee5f091461056957806369fe0e2d146105945761023b565b80632f54bf6e146103f5578063313ce56714610432578063342aa8b51461045d5780633e07ce5b14610486578063571ac8b01461049d5761023b565b806318160ddd1161020357806318160ddd146102fc57806323b635851461032757806323b872dd1461036457806329e04b4a146103a15780632b112e49146103ca5761023b565b806306fdde0314610240578063095ea7b31461026b57806312fb4187146102a857806315f7e05e146102d35761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b5061025561091f565b604051610262919061351d565b60405180910390f35b34801561027757600080fd5b50610292600480360381019061028d91906135d8565b61095c565b60405161029f9190613633565b60405180910390f35b3480156102b457600080fd5b506102bd610a4e565b6040516102ca919061365d565b60405180910390f35b3480156102df57600080fd5b506102fa60048036038101906102f59190613678565b610a72565b005b34801561030857600080fd5b50610311610b4a565b60405161031e91906136b4565b60405180910390f35b34801561033357600080fd5b5061034e600480360381019061034991906136cf565b610b54565b60405161035b9190613633565b60405180910390f35b34801561037057600080fd5b5061038b600480360381019061038691906136fc565b610bd2565b6040516103989190613633565b60405180910390f35b3480156103ad57600080fd5b506103c860048036038101906103c391906136cf565b610dd2565b005b3480156103d657600080fd5b506103df610e8b565b6040516103ec91906136b4565b60405180910390f35b34801561040157600080fd5b5061041c60048036038101906104179190613678565b610f0d565b6040516104299190613633565b60405180910390f35b34801561043e57600080fd5b50610447610f66565b604051610454919061376b565b60405180910390f35b34801561046957600080fd5b50610484600480360381019061047f91906137b2565b610f6f565b005b34801561049257600080fd5b5061049b61101c565b005b3480156104a957600080fd5b506104c460048036038101906104bf9190613678565b611081565b6040516104d19190613633565b60405180910390f35b3480156104e657600080fd5b5061050160048036038101906104fc9190613678565b6110b4565b60405161050e91906136b4565b60405180910390f35b34801561052357600080fd5b5061053e60048036038101906105399190613678565b611159565b005b34801561054c57600080fd5b50610567600480360381019061056291906137b2565b6111e5565b005b34801561057557600080fd5b5061057e611288565b60405161058b91906136b4565b60405180910390f35b3480156105a057600080fd5b506105bb60048036038101906105b691906136cf565b611320565b005b3480156105c957600080fd5b506105e460048036038101906105df9190613678565b6113b6565b6040516105f191906136b4565b60405180910390f35b34801561060657600080fd5b5061060f6113ff565b60405161061c91906136b4565b60405180910390f35b34801561063157600080fd5b5061063a611497565b6040516106479190613813565b60405180910390f35b34801561065c57600080fd5b506106656114bd565b005b34801561067357600080fd5b5061067c611578565b604051610689919061365d565b60405180910390f35b34801561069e57600080fd5b506106b960048036038101906106b49190613678565b6115a1565b6040516106c691906136b4565b60405180910390f35b3480156106db57600080fd5b506106e4611646565b6040516106f1919061351d565b60405180910390f35b34801561070657600080fd5b5061070f611683565b60405161071c919061365d565b60405180910390f35b34801561073157600080fd5b5061074c600480360381019061074791906135d8565b6116a9565b6040516107599190613633565b60405180910390f35b34801561076e57600080fd5b5061078960048036038101906107849190613678565b6116be565b6040516107969190613633565b60405180910390f35b3480156107ab57600080fd5b506107b4611714565b6040516107c191906136b4565b60405180910390f35b3480156107d657600080fd5b506107df61171a565b6040516107ec9190613633565b60405180910390f35b34801561080157600080fd5b5061080a61172d565b005b34801561081857600080fd5b50610821611799565b60405161082e91906136b4565b60405180910390f35b34801561084357600080fd5b5061085e6004803603810190610859919061382e565b61179f565b60405161086b91906136b4565b60405180910390f35b34801561088057600080fd5b50610889611826565b005b34801561089757600080fd5b506108b260048036038101906108ad919061389a565b6118b5565b005b3480156108c057600080fd5b506108c9611977565b005b3480156108d757600080fd5b506108f260048036038101906108ed91906137b2565b611a30565b005b34801561090057600080fd5b50610909611a86565b6040516109169190613926565b60405180910390f35b60606040518060400160405280600b81526020017f536869615072696e746572000000000000000000000000000000000000000000815250905090565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a3c91906136b4565b60405180910390a36001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610a7b33610f0d565b610aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab19061398d565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e826040518263ffffffff1660e01b8152600401610b15919061365d565b600060405180830381600087803b158015610b2f57600080fd5b505af1158015610b43573d6000803e3d6000fd5b5050505050565b6000600454905090565b6000610b5f33610f0d565b610b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b959061398d565b60405180910390fd5b610bcb30600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611aac565b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610dbe57610d3d826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7f9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610dc9848484611ce3565b90509392505050565b610ddb33610f0d565b610e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e119061398d565b60405180910390fd5b610e30606460045461272990919063ffffffff16565b811115610e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e69906139f9565b60405180910390fd5b633b9aca0081610e829190613a48565b60148190555050565b6000610f08610ebb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166113b6565b610efa610ee9600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166113b6565b60045461277390919063ffffffff16565b61277390919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b610f7833610f0d565b610fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fae9061398d565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061101882826127bd565b5050565b61102533610f0d565b611064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105b9061398d565b60405180910390fd5b6000601260016101000a81548160ff021916908315150217905550565b60006110ad827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61095c565b9050919050565b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cc33f74836040518263ffffffff1660e01b8152600401611111919061365d565b602060405180830381865afa15801561112e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111529190613a9f565b9050919050565b61116233610f0d565b6111a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111989061398d565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6111ee33610f0d565b61122d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112249061398d565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663997664d76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131b9190613a9f565b905090565b61132933610f0d565b611368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135f9061398d565b60405180910390fd5b600e8111156113ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a390613b18565b60405180910390fd5b80600c8190555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561146e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114929190613a9f565b905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114c633610f0d565b611505576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fc9061398d565b60405180910390fd5b60001515601560149054906101000a900460ff1615151461155b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155290613b84565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ecc37fb836040518263ffffffff1660e01b81526004016115fe919061365d565b602060405180830381865afa15801561161b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163f9190613a9f565b9050919050565b60606040518060400160405280600281526020017f5350000000000000000000000000000000000000000000000000000000000000815250905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006116b6338484611ce3565b905092915050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60115481565b601560149054906101000a900460ff1681565b61173633610f0d565b611775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176c9061398d565b60405180910390fd5b436011819055506001601260006101000a81548160ff021916908315150217905550565b60145481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b8152600401611881919061365d565b600060405180830381600087803b15801561189b57600080fd5b505af11580156118af573d6000803e3d6000fd5b50505050565b6118be33610f0d565b6118fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f49061398d565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161196c9190613bc5565b60405180910390a150565b61198033610f0d565b6119bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b69061398d565b60405180910390fd5b6000479050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611a2c573d6000803e3d6000fd5b5050565b611a3933610f0d565b611a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6f9061398d565b60405180910390fd5b611a8282826127bd565b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611b37826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7f9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611bcc82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1590919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c6c91906136b4565b60405180910390a3600190509392505050565b6000838311158290611cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbe919061351d565b60405180910390fd5b5060008385611cd69190613be0565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d8e575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611de357601260009054906101000a900460ff16611de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd990613c60565b60405180910390fd5b5b601560149054906101000a900460ff1615611edc57600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e9c5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed290613ccc565b60405180910390fd5b5b601260019054906101000a900460ff1615611fe55760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f99575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fe457601354821115611fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fda90613d38565b60405180910390fd5b5b5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120905750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120e65750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121875742600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061213657600080fd5b603c426121439190613d58565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60158054906101000a900460ff16156121ac576121a5848484611aac565b9050612722565b60006121b7306113b6565b905060006014548210159050600081801561221f5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b801561223357506000612231306113b6565b115b9050801561224457612243612a73565b5b6122cd856040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7f9092919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061231c8888612d50565b6123265785612331565b6123308887612ead565b5b905061238581600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1590919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16141580156124705750600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561253e57601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9689600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612511929190613d8c565b600060405180830381600087803b15801561252b57600080fd5b505af192505050801561253c575060015b505b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580156125e65750600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126b457601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9688600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612687929190613d8c565b600060405180830381600087803b1580156126a157600080fd5b505af19250505080156126b2575060015b505b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161271191906136b4565b60405180910390a360019450505050505b9392505050565b600061276b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ff1565b905092915050565b60006127b583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c7f565b905092915050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156128475750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61285057600080fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561294257601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b815260040161290b929190613df0565b600060405180830381600087803b15801561292557600080fd5b505af1158015612939573d6000803e3d6000fd5b50505050612a11565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016129de929190613d8c565b600060405180830381600087803b1580156129f857600080fd5b505af1158015612a0c573d6000803e3d6000fd5b505050505b5050565b6000808284612a249190613d58565b905083811015612a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6090613e65565b60405180910390fd5b8091505092915050565b60016015806101000a81548160ff0219169083151502179055506000612a98306113b6565b9050612ab6612ab160028361272990919063ffffffff16565b613054565b612ad2612acd60028361272990919063ffffffff16565b6131fc565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612b2d919061365d565b602060405180830381865afa158015612b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6e9190613a9f565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401612bef929190613d8c565b6020604051808303816000875af1158015612c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c329190613e9a565b90508015612cc857601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25836040518263ffffffff1660e01b8152600401612c9591906136b4565b600060405180830381600087803b158015612caf57600080fd5b505af1158015612cc3573d6000803e3d6000fd5b505050505b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612d30573d6000803e3d6000fd5b5050505060006015806101000a81548160ff021916908315150217905550565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612df35750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b158015612ea55750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612ea45750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b905092915050565b600080612ed9600d54612ecb600c548661341390919063ffffffff16565b61272990919063ffffffff16565b9050612f2d81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1590919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612fcd91906136b4565b60405180910390a3612fe8818461277390919063ffffffff16565b91505092915050565b60008083118290613038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302f919061351d565b60405180910390fd5b50600083856130479190613ef6565b9050809150509392505050565b6000600267ffffffffffffffff81111561307157613070613f27565b5b60405190808252806020026020018201604052801561309f5781602001602082028036833780820191505090505b50905030816000815181106130b7576130b6613f56565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061312857613127613f56565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016131c6959493929190614043565b600060405180830381600087803b1580156131e057600080fd5b505af11580156131f4573d6000803e3d6000fd5b505050505050565b6000600367ffffffffffffffff81111561321957613218613f27565b5b6040519080825280602002602001820160405280156132475781602001602082028036833780820191505090505b509050308160008151811061325f5761325e613f56565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106132d0576132cf613f56565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160028151811061333f5761333e613f56565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d7958360008430426040518663ffffffff1660e01b81526004016133dd959493929190614043565b600060405180830381600087803b1580156133f757600080fd5b505af115801561340b573d6000803e3d6000fd5b505050505050565b60008083036134255760009050613487565b600082846134339190613a48565b90508284826134429190613ef6565b14613482576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134799061410f565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156134c75780820151818401526020810190506134ac565b60008484015250505050565b6000601f19601f8301169050919050565b60006134ef8261348d565b6134f98185613498565b93506135098185602086016134a9565b613512816134d3565b840191505092915050565b6000602082019050818103600083015261353781846134e4565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061356f82613544565b9050919050565b61357f81613564565b811461358a57600080fd5b50565b60008135905061359c81613576565b92915050565b6000819050919050565b6135b5816135a2565b81146135c057600080fd5b50565b6000813590506135d2816135ac565b92915050565b600080604083850312156135ef576135ee61353f565b5b60006135fd8582860161358d565b925050602061360e858286016135c3565b9150509250929050565b60008115159050919050565b61362d81613618565b82525050565b60006020820190506136486000830184613624565b92915050565b61365781613564565b82525050565b6000602082019050613672600083018461364e565b92915050565b60006020828403121561368e5761368d61353f565b5b600061369c8482850161358d565b91505092915050565b6136ae816135a2565b82525050565b60006020820190506136c960008301846136a5565b92915050565b6000602082840312156136e5576136e461353f565b5b60006136f3848285016135c3565b91505092915050565b6000806000606084860312156137155761371461353f565b5b60006137238682870161358d565b93505060206137348682870161358d565b9250506040613745868287016135c3565b9150509250925092565b600060ff82169050919050565b6137658161374f565b82525050565b6000602082019050613780600083018461375c565b92915050565b61378f81613618565b811461379a57600080fd5b50565b6000813590506137ac81613786565b92915050565b600080604083850312156137c9576137c861353f565b5b60006137d78582860161358d565b92505060206137e88582860161379d565b9150509250929050565b60006137fd82613544565b9050919050565b61380d816137f2565b82525050565b60006020820190506138286000830184613804565b92915050565b600080604083850312156138455761384461353f565b5b60006138538582860161358d565b92505060206138648582860161358d565b9150509250929050565b613877816137f2565b811461388257600080fd5b50565b6000813590506138948161386e565b92915050565b6000602082840312156138b0576138af61353f565b5b60006138be84828501613885565b91505092915050565b6000819050919050565b60006138ec6138e76138e284613544565b6138c7565b613544565b9050919050565b60006138fe826138d1565b9050919050565b6000613910826138f3565b9050919050565b61392081613905565b82525050565b600060208201905061393b6000830184613917565b92915050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000613977600683613498565b915061398282613941565b602082019050919050565b600060208201905081810360008301526139a68161396a565b9050919050565b7f63616e2774206578636565642031250000000000000000000000000000000000600082015250565b60006139e3600f83613498565b91506139ee826139ad565b602082019050919050565b60006020820190508181036000830152613a12816139d6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a53826135a2565b9150613a5e836135a2565b9250828202613a6c816135a2565b91508282048414831517613a8357613a82613a19565b5b5092915050565b600081519050613a99816135ac565b92915050565b600060208284031215613ab557613ab461353f565b5b6000613ac384828501613a8a565b91505092915050565b7f4665652063616e27742065786365656420313425000000000000000000000000600082015250565b6000613b02601483613498565b9150613b0d82613acc565b602082019050919050565b60006020820190508181036000830152613b3181613af5565b9050919050565b7f63616e206f6e6c792062652063616c6c6564206f6e6365000000000000000000600082015250565b6000613b6e601783613498565b9150613b7982613b38565b602082019050919050565b60006020820190508181036000830152613b9d81613b61565b9050919050565b6000613baf826138f3565b9050919050565b613bbf81613ba4565b82525050565b6000602082019050613bda6000830184613bb6565b92915050565b6000613beb826135a2565b9150613bf6836135a2565b9250828203905081811115613c0e57613c0d613a19565b5b92915050565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b6000613c4a601883613498565b9150613c5582613c14565b602082019050919050565b60006020820190508181036000830152613c7981613c3d565b9050919050565b7f426f742100000000000000000000000000000000000000000000000000000000600082015250565b6000613cb6600483613498565b9150613cc182613c80565b602082019050919050565b60006020820190508181036000830152613ce581613ca9565b9050919050565b7f546f6f206d756368207369720000000000000000000000000000000000000000600082015250565b6000613d22600c83613498565b9150613d2d82613cec565b602082019050919050565b60006020820190508181036000830152613d5181613d15565b9050919050565b6000613d63826135a2565b9150613d6e836135a2565b9250828201905080821115613d8657613d85613a19565b5b92915050565b6000604082019050613da1600083018561364e565b613dae60208301846136a5565b9392505050565b6000819050919050565b6000613dda613dd5613dd084613db5565b6138c7565b6135a2565b9050919050565b613dea81613dbf565b82525050565b6000604082019050613e05600083018561364e565b613e126020830184613de1565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613e4f601b83613498565b9150613e5a82613e19565b602082019050919050565b60006020820190508181036000830152613e7e81613e42565b9050919050565b600081519050613e9481613786565b92915050565b600060208284031215613eb057613eaf61353f565b5b6000613ebe84828501613e85565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f01826135a2565b9150613f0c836135a2565b925082613f1c57613f1b613ec7565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613fba81613564565b82525050565b6000613fcc8383613fb1565b60208301905092915050565b6000602082019050919050565b6000613ff082613f85565b613ffa8185613f90565b935061400583613fa1565b8060005b8381101561403657815161401d8882613fc0565b975061402883613fd8565b925050600181019050614009565b5085935050505092915050565b600060a08201905061405860008301886136a5565b6140656020830187613de1565b81810360408301526140778186613fe5565b9050614086606083018561364e565b61409360808301846136a5565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006140f9602183613498565b91506141048261409d565b604082019050919050565b60006020820190508181036000830152614128816140ec565b905091905056fea264697066735822122016a76fe00eee6400fcdc829adcb04988069e8c9560ef44c9d1e5b6730b00ff4764736f6c6343000812003360a06040527343d7e65b8ff49698d9550a7f315c87e67344fb5973ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152506ec097ce7bc90715b34b9f10000000006009553480156200006b57600080fd5b5060405162001a8b38038062001a8b833981810160405281019062000091919062000183565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620001b5565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200014b826200011e565b9050919050565b6200015d816200013e565b81146200016957600080fd5b50565b6000815190506200017d8162000152565b92915050565b6000602082840312156200019c576200019b62000119565b5b6000620001ac848285016200016c565b91505092915050565b6080516118b3620001d8600039600081816104330152610c5a01526118b36000f3fe6080604052600436106100e15760003560e01c8063997664d71161007f578063ce7c2ac211610059578063ce7c2ac2146102b7578063d54ad2a1146102f6578063e2d2e21914610321578063ecd0c0c31461034c576100e8565b8063997664d714610238578063b2bdfa7b14610263578063b6b55f251461028e576100e8565b806315f7e05e116100bb57806315f7e05e1461016a5780633a98ef39146101935780635cc33f74146101be5780638ecc37fb146101fb576100e8565b80631014edf5146100ed57806312fb41871461011657806314b6ca9614610141576100e8565b366100e857005b600080fd5b3480156100f957600080fd5b50610114600480360381019061010f91906112b1565b610377565b005b34801561012257600080fd5b5061012b610431565b6040516101389190611300565b60405180910390f35b34801561014d57600080fd5b506101686004803603810190610163919061131b565b610455565b005b34801561017657600080fd5b50610191600480360381019061018c919061135b565b610714565b005b34801561019f57600080fd5b506101a8610778565b6040516101b59190611397565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e0919061135b565b61077e565b6040516101f29190611397565b60405180910390f35b34801561020757600080fd5b50610222600480360381019061021d919061135b565b61084e565b60405161022f9190611397565b60405180910390f35b34801561024457600080fd5b5061024d610967565b60405161025a9190611397565b60405180910390f35b34801561026f57600080fd5b5061027861096d565b6040516102859190611300565b60405180910390f35b34801561029a57600080fd5b506102b560048036038101906102b091906113b2565b610993565b005b3480156102c357600080fd5b506102de60048036038101906102d9919061135b565b610a56565b6040516102ed939291906113df565b60405180910390f35b34801561030257600080fd5b5061030b610a80565b6040516103189190611397565b60405180910390f35b34801561032d57600080fd5b50610336610a86565b6040516103439190611397565b60405180910390f35b34801561035857600080fd5b50610361610a8c565b60405161036e9190611300565b60405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103d157600080fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc600085116103fe5782610400565b845b9081150290604051600060405180830381858888f1935050505015801561042b573d6000803e3d6000fd5b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104ad57600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156105025761050182610ab0565b5b60008111801561055457506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156105675761056282610cfd565b6105c9565b6000811480156105b957506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156105c8576105c782610dac565b5b5b61063281610624600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600554610fb390919063ffffffff16565b610ffd90919063ffffffff16565b60058190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506106ca600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461105b565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461076c57600080fd5b61077581610ab0565b50565b60055481565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411610804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fb90611499565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549050919050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154036108a25760009050610962565b60006108ef600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461105b565b90506000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905080821161094a57600092505050610962565b61095d8183610fb390919063ffffffff16565b925050505b919050565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109eb57600080fd5b6000811115610a5357610a0981600654610ffd90919063ffffffff16565b600681905550610a4c610a3b600554610a2d8460095461108d90919063ffffffff16565b61110790919063ffffffff16565b600854610ffd90919063ffffffff16565b6008819055505b50565b60046020528060005260406000206000915090508060000154908060010154908060020154905083565b60075481565b60085481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001540315610cfa576000610b068261084e565b90506000811115610cf857610b2681600754610ffd90919063ffffffff16565b600781905550610b8181600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154610ffd90919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550610c12600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461105b565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610cb39291906114b9565b6020604051808303816000875af1158015610cd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf6919061151a565b505b505b50565b600280549050600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60026001600280549050610dc09190611576565b81548110610dd157610dd06115aa565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110610e4f57610e4e6115aa565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546003600060026001600280549050610eef9190611576565b81548110610f0057610eff6115aa565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002805480610f7b57610f7a6115d9565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b6000610ff583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611151565b905092915050565b600080828461100c9190611608565b905083811015611051576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104890611688565b60405180910390fd5b8091505092915050565b60006110866009546110786008548561108d90919063ffffffff16565b61110790919063ffffffff16565b9050919050565b600080830361109f5760009050611101565b600082846110ad91906116a8565b90508284826110bc9190611719565b146110fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f3906117bc565b60405180910390fd5b809150505b92915050565b600061114983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111b5565b905092915050565b6000838311158290611199576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611190919061185b565b60405180910390fd5b50600083856111a89190611576565b9050809150509392505050565b600080831182906111fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f3919061185b565b60405180910390fd5b506000838561120b9190611719565b9050809150509392505050565b600080fd5b6000819050919050565b6112308161121d565b811461123b57600080fd5b50565b60008135905061124d81611227565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061127e82611253565b9050919050565b61128e81611273565b811461129957600080fd5b50565b6000813590506112ab81611285565b92915050565b600080604083850312156112c8576112c7611218565b5b60006112d68582860161123e565b92505060206112e78582860161129c565b9150509250929050565b6112fa81611273565b82525050565b600060208201905061131560008301846112f1565b92915050565b6000806040838503121561133257611331611218565b5b60006113408582860161129c565b92505060206113518582860161123e565b9150509250929050565b60006020828403121561137157611370611218565b5b600061137f8482850161129c565b91505092915050565b6113918161121d565b82525050565b60006020820190506113ac6000830184611388565b92915050565b6000602082840312156113c8576113c7611218565b5b60006113d68482850161123e565b91505092915050565b60006060820190506113f46000830186611388565b6114016020830185611388565b61140e6040830184611388565b949350505050565b600082825260208201905092915050565b7f596f75277265206e6f742061205052494e544552207368617265686f6c64657260008201527f2100000000000000000000000000000000000000000000000000000000000000602082015250565b6000611483602183611416565b915061148e82611427565b604082019050919050565b600060208201905081810360008301526114b281611476565b9050919050565b60006040820190506114ce60008301856112f1565b6114db6020830184611388565b9392505050565b60008115159050919050565b6114f7816114e2565b811461150257600080fd5b50565b600081519050611514816114ee565b92915050565b6000602082840312156115305761152f611218565b5b600061153e84828501611505565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115818261121d565b915061158c8361121d565b92508282039050818111156115a4576115a3611547565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006116138261121d565b915061161e8361121d565b925082820190508082111561163657611635611547565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000611672601b83611416565b915061167d8261163c565b602082019050919050565b600060208201905081810360008301526116a181611665565b9050919050565b60006116b38261121d565b91506116be8361121d565b92508282026116cc8161121d565b915082820484148315176116e3576116e2611547565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006117248261121d565b915061172f8361121d565b92508261173f5761173e6116ea565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006117a6602183611416565b91506117b18261174a565b604082019050919050565b600060208201905081810360008301526117d581611799565b9050919050565b600081519050919050565b60005b838110156118055780820151818401526020810190506117ea565b60008484015250505050565b6000601f19601f8301169050919050565b600061182d826117dc565b6118378185611416565b93506118478185602086016117e7565b61185081611811565b840191505092915050565b600060208201905081810360008301526118758184611822565b90509291505056fea264697066735822122035cf5e465b89a2b92b72fdfc198b28f1302fda37ebf951b4def415ec2f76ce0c64736f6c6343000812003300000000000000000000000048a9a02a36148febdb76a199da8bcdf540c843e5

Deployed Bytecode

0x6080604052600436106102345760003560e01c806370a082311161012e578063bf56b371116100ab578063f0fc6bca1161006f578063f0fc6bca14610874578063f2fde38b1461088b578063f4293890146108b4578063f708a64f146108cb578063f887ea40146108f45761023b565b8063bf56b3711461079f578063bffb691d146107ca578063c9567bf9146107f5578063d12a76881461080c578063dd62ed3e146108375761023b565b80638ecc37fb116100f25780638ecc37fb1461069257806395d89b41146106cf578063a8aa1b31146106fa578063a9059cbb14610725578063b1a4e0dc146107625761023b565b806370a08231146105bd578063736a83a1146105fa57806375f0a87414610625578063764ca51214610650578063893d20e8146106675761023b565b80632f54bf6e116101bc5780635cc33f74116101805780635cc33f74146104da5780635d098b3814610517578063658d4b7f1461054057806367ee5f091461056957806369fe0e2d146105945761023b565b80632f54bf6e146103f5578063313ce56714610432578063342aa8b51461045d5780633e07ce5b14610486578063571ac8b01461049d5761023b565b806318160ddd1161020357806318160ddd146102fc57806323b635851461032757806323b872dd1461036457806329e04b4a146103a15780632b112e49146103ca5761023b565b806306fdde0314610240578063095ea7b31461026b57806312fb4187146102a857806315f7e05e146102d35761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b5061025561091f565b604051610262919061351d565b60405180910390f35b34801561027757600080fd5b50610292600480360381019061028d91906135d8565b61095c565b60405161029f9190613633565b60405180910390f35b3480156102b457600080fd5b506102bd610a4e565b6040516102ca919061365d565b60405180910390f35b3480156102df57600080fd5b506102fa60048036038101906102f59190613678565b610a72565b005b34801561030857600080fd5b50610311610b4a565b60405161031e91906136b4565b60405180910390f35b34801561033357600080fd5b5061034e600480360381019061034991906136cf565b610b54565b60405161035b9190613633565b60405180910390f35b34801561037057600080fd5b5061038b600480360381019061038691906136fc565b610bd2565b6040516103989190613633565b60405180910390f35b3480156103ad57600080fd5b506103c860048036038101906103c391906136cf565b610dd2565b005b3480156103d657600080fd5b506103df610e8b565b6040516103ec91906136b4565b60405180910390f35b34801561040157600080fd5b5061041c60048036038101906104179190613678565b610f0d565b6040516104299190613633565b60405180910390f35b34801561043e57600080fd5b50610447610f66565b604051610454919061376b565b60405180910390f35b34801561046957600080fd5b50610484600480360381019061047f91906137b2565b610f6f565b005b34801561049257600080fd5b5061049b61101c565b005b3480156104a957600080fd5b506104c460048036038101906104bf9190613678565b611081565b6040516104d19190613633565b60405180910390f35b3480156104e657600080fd5b5061050160048036038101906104fc9190613678565b6110b4565b60405161050e91906136b4565b60405180910390f35b34801561052357600080fd5b5061053e60048036038101906105399190613678565b611159565b005b34801561054c57600080fd5b50610567600480360381019061056291906137b2565b6111e5565b005b34801561057557600080fd5b5061057e611288565b60405161058b91906136b4565b60405180910390f35b3480156105a057600080fd5b506105bb60048036038101906105b691906136cf565b611320565b005b3480156105c957600080fd5b506105e460048036038101906105df9190613678565b6113b6565b6040516105f191906136b4565b60405180910390f35b34801561060657600080fd5b5061060f6113ff565b60405161061c91906136b4565b60405180910390f35b34801561063157600080fd5b5061063a611497565b6040516106479190613813565b60405180910390f35b34801561065c57600080fd5b506106656114bd565b005b34801561067357600080fd5b5061067c611578565b604051610689919061365d565b60405180910390f35b34801561069e57600080fd5b506106b960048036038101906106b49190613678565b6115a1565b6040516106c691906136b4565b60405180910390f35b3480156106db57600080fd5b506106e4611646565b6040516106f1919061351d565b60405180910390f35b34801561070657600080fd5b5061070f611683565b60405161071c919061365d565b60405180910390f35b34801561073157600080fd5b5061074c600480360381019061074791906135d8565b6116a9565b6040516107599190613633565b60405180910390f35b34801561076e57600080fd5b5061078960048036038101906107849190613678565b6116be565b6040516107969190613633565b60405180910390f35b3480156107ab57600080fd5b506107b4611714565b6040516107c191906136b4565b60405180910390f35b3480156107d657600080fd5b506107df61171a565b6040516107ec9190613633565b60405180910390f35b34801561080157600080fd5b5061080a61172d565b005b34801561081857600080fd5b50610821611799565b60405161082e91906136b4565b60405180910390f35b34801561084357600080fd5b5061085e6004803603810190610859919061382e565b61179f565b60405161086b91906136b4565b60405180910390f35b34801561088057600080fd5b50610889611826565b005b34801561089757600080fd5b506108b260048036038101906108ad919061389a565b6118b5565b005b3480156108c057600080fd5b506108c9611977565b005b3480156108d757600080fd5b506108f260048036038101906108ed91906137b2565b611a30565b005b34801561090057600080fd5b50610909611a86565b6040516109169190613926565b60405180910390f35b60606040518060400160405280600b81526020017f536869615072696e746572000000000000000000000000000000000000000000815250905090565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a3c91906136b4565b60405180910390a36001905092915050565b7f00000000000000000000000043d7e65b8ff49698d9550a7f315c87e67344fb5981565b610a7b33610f0d565b610aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab19061398d565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e826040518263ffffffff1660e01b8152600401610b15919061365d565b600060405180830381600087803b158015610b2f57600080fd5b505af1158015610b43573d6000803e3d6000fd5b5050505050565b6000600454905090565b6000610b5f33610f0d565b610b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b959061398d565b60405180910390fd5b610bcb30600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611aac565b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610dbe57610d3d826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7f9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610dc9848484611ce3565b90509392505050565b610ddb33610f0d565b610e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e119061398d565b60405180910390fd5b610e30606460045461272990919063ffffffff16565b811115610e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e69906139f9565b60405180910390fd5b633b9aca0081610e829190613a48565b60148190555050565b6000610f08610ebb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166113b6565b610efa610ee9600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166113b6565b60045461277390919063ffffffff16565b61277390919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b610f7833610f0d565b610fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fae9061398d565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061101882826127bd565b5050565b61102533610f0d565b611064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105b9061398d565b60405180910390fd5b6000601260016101000a81548160ff021916908315150217905550565b60006110ad827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61095c565b9050919050565b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cc33f74836040518263ffffffff1660e01b8152600401611111919061365d565b602060405180830381865afa15801561112e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111529190613a9f565b9050919050565b61116233610f0d565b6111a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111989061398d565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6111ee33610f0d565b61122d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112249061398d565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663997664d76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131b9190613a9f565b905090565b61132933610f0d565b611368576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135f9061398d565b60405180910390fd5b600e8111156113ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a390613b18565b60405180910390fd5b80600c8190555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561146e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114929190613a9f565b905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114c633610f0d565b611505576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fc9061398d565b60405180910390fd5b60001515601560149054906101000a900460ff1615151461155b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155290613b84565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ecc37fb836040518263ffffffff1660e01b81526004016115fe919061365d565b602060405180830381865afa15801561161b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163f9190613a9f565b9050919050565b60606040518060400160405280600281526020017f5350000000000000000000000000000000000000000000000000000000000000815250905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006116b6338484611ce3565b905092915050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60115481565b601560149054906101000a900460ff1681565b61173633610f0d565b611775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176c9061398d565b60405180910390fd5b436011819055506001601260006101000a81548160ff021916908315150217905550565b60145481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b8152600401611881919061365d565b600060405180830381600087803b15801561189b57600080fd5b505af11580156118af573d6000803e3d6000fd5b50505050565b6118be33610f0d565b6118fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f49061398d565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161196c9190613bc5565b60405180910390a150565b61198033610f0d565b6119bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b69061398d565b60405180910390fd5b6000479050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611a2c573d6000803e3d6000fd5b5050565b611a3933610f0d565b611a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6f9061398d565b60405180910390fd5b611a8282826127bd565b5050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611b37826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7f9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611bcc82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1590919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c6c91906136b4565b60405180910390a3600190509392505050565b6000838311158290611cc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbe919061351d565b60405180910390fd5b5060008385611cd69190613be0565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d8e575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611de357601260009054906101000a900460ff16611de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd990613c60565b60405180910390fd5b5b601560149054906101000a900460ff1615611edc57600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e9c5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed290613ccc565b60405180910390fd5b5b601260019054906101000a900460ff1615611fe55760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f99575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fe457601354821115611fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fda90613d38565b60405180910390fd5b5b5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120905750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120e65750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121875742600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061213657600080fd5b603c426121439190613d58565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60158054906101000a900460ff16156121ac576121a5848484611aac565b9050612722565b60006121b7306113b6565b905060006014548210159050600081801561221f5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b801561223357506000612231306113b6565b115b9050801561224457612243612a73565b5b6122cd856040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c7f9092919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061231c8888612d50565b6123265785612331565b6123308887612ead565b5b905061238581600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1590919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16141580156124705750600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561253e57601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9689600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612511929190613d8c565b600060405180830381600087803b15801561252b57600080fd5b505af192505050801561253c575060015b505b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141580156125e65750600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126b457601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9688600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612687929190613d8c565b600060405180830381600087803b1580156126a157600080fd5b505af19250505080156126b2575060015b505b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161271191906136b4565b60405180910390a360019450505050505b9392505050565b600061276b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ff1565b905092915050565b60006127b583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c7f565b905092915050565b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156128475750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61285057600080fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561294257601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b815260040161290b929190613df0565b600060405180830381600087803b15801561292557600080fd5b505af1158015612939573d6000803e3d6000fd5b50505050612a11565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016129de929190613d8c565b600060405180830381600087803b1580156129f857600080fd5b505af1158015612a0c573d6000803e3d6000fd5b505050505b5050565b6000808284612a249190613d58565b905083811015612a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6090613e65565b60405180910390fd5b8091505092915050565b60016015806101000a81548160ff0219169083151502179055506000612a98306113b6565b9050612ab6612ab160028361272990919063ffffffff16565b613054565b612ad2612acd60028361272990919063ffffffff16565b6131fc565b60007f00000000000000000000000043d7e65b8ff49698d9550a7f315c87e67344fb5973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612b2d919061365d565b602060405180830381865afa158015612b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b6e9190613a9f565b905060007f00000000000000000000000043d7e65b8ff49698d9550a7f315c87e67344fb5973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401612bef929190613d8c565b6020604051808303816000875af1158015612c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c329190613e9a565b90508015612cc857601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25836040518263ffffffff1660e01b8152600401612c9591906136b4565b600060405180830381600087803b158015612caf57600080fd5b505af1158015612cc3573d6000803e3d6000fd5b505050505b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612d30573d6000803e3d6000fd5b5050505060006015806101000a81548160ff021916908315150217905550565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612df35750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b158015612ea55750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612ea45750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b905092915050565b600080612ed9600d54612ecb600c548661341390919063ffffffff16565b61272990919063ffffffff16565b9050612f2d81600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a1590919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612fcd91906136b4565b60405180910390a3612fe8818461277390919063ffffffff16565b91505092915050565b60008083118290613038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302f919061351d565b60405180910390fd5b50600083856130479190613ef6565b9050809150509392505050565b6000600267ffffffffffffffff81111561307157613070613f27565b5b60405190808252806020026020018201604052801561309f5781602001602082028036833780820191505090505b50905030816000815181106130b7576130b6613f56565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061312857613127613f56565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016131c6959493929190614043565b600060405180830381600087803b1580156131e057600080fd5b505af11580156131f4573d6000803e3d6000fd5b505050505050565b6000600367ffffffffffffffff81111561321957613218613f27565b5b6040519080825280602002602001820160405280156132475781602001602082028036833780820191505090505b509050308160008151811061325f5761325e613f56565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106132d0576132cf613f56565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000043d7e65b8ff49698d9550a7f315c87e67344fb598160028151811061333f5761333e613f56565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d7958360008430426040518663ffffffff1660e01b81526004016133dd959493929190614043565b600060405180830381600087803b1580156133f757600080fd5b505af115801561340b573d6000803e3d6000fd5b505050505050565b60008083036134255760009050613487565b600082846134339190613a48565b90508284826134429190613ef6565b14613482576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134799061410f565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156134c75780820151818401526020810190506134ac565b60008484015250505050565b6000601f19601f8301169050919050565b60006134ef8261348d565b6134f98185613498565b93506135098185602086016134a9565b613512816134d3565b840191505092915050565b6000602082019050818103600083015261353781846134e4565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061356f82613544565b9050919050565b61357f81613564565b811461358a57600080fd5b50565b60008135905061359c81613576565b92915050565b6000819050919050565b6135b5816135a2565b81146135c057600080fd5b50565b6000813590506135d2816135ac565b92915050565b600080604083850312156135ef576135ee61353f565b5b60006135fd8582860161358d565b925050602061360e858286016135c3565b9150509250929050565b60008115159050919050565b61362d81613618565b82525050565b60006020820190506136486000830184613624565b92915050565b61365781613564565b82525050565b6000602082019050613672600083018461364e565b92915050565b60006020828403121561368e5761368d61353f565b5b600061369c8482850161358d565b91505092915050565b6136ae816135a2565b82525050565b60006020820190506136c960008301846136a5565b92915050565b6000602082840312156136e5576136e461353f565b5b60006136f3848285016135c3565b91505092915050565b6000806000606084860312156137155761371461353f565b5b60006137238682870161358d565b93505060206137348682870161358d565b9250506040613745868287016135c3565b9150509250925092565b600060ff82169050919050565b6137658161374f565b82525050565b6000602082019050613780600083018461375c565b92915050565b61378f81613618565b811461379a57600080fd5b50565b6000813590506137ac81613786565b92915050565b600080604083850312156137c9576137c861353f565b5b60006137d78582860161358d565b92505060206137e88582860161379d565b9150509250929050565b60006137fd82613544565b9050919050565b61380d816137f2565b82525050565b60006020820190506138286000830184613804565b92915050565b600080604083850312156138455761384461353f565b5b60006138538582860161358d565b92505060206138648582860161358d565b9150509250929050565b613877816137f2565b811461388257600080fd5b50565b6000813590506138948161386e565b92915050565b6000602082840312156138b0576138af61353f565b5b60006138be84828501613885565b91505092915050565b6000819050919050565b60006138ec6138e76138e284613544565b6138c7565b613544565b9050919050565b60006138fe826138d1565b9050919050565b6000613910826138f3565b9050919050565b61392081613905565b82525050565b600060208201905061393b6000830184613917565b92915050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000613977600683613498565b915061398282613941565b602082019050919050565b600060208201905081810360008301526139a68161396a565b9050919050565b7f63616e2774206578636565642031250000000000000000000000000000000000600082015250565b60006139e3600f83613498565b91506139ee826139ad565b602082019050919050565b60006020820190508181036000830152613a12816139d6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a53826135a2565b9150613a5e836135a2565b9250828202613a6c816135a2565b91508282048414831517613a8357613a82613a19565b5b5092915050565b600081519050613a99816135ac565b92915050565b600060208284031215613ab557613ab461353f565b5b6000613ac384828501613a8a565b91505092915050565b7f4665652063616e27742065786365656420313425000000000000000000000000600082015250565b6000613b02601483613498565b9150613b0d82613acc565b602082019050919050565b60006020820190508181036000830152613b3181613af5565b9050919050565b7f63616e206f6e6c792062652063616c6c6564206f6e6365000000000000000000600082015250565b6000613b6e601783613498565b9150613b7982613b38565b602082019050919050565b60006020820190508181036000830152613b9d81613b61565b9050919050565b6000613baf826138f3565b9050919050565b613bbf81613ba4565b82525050565b6000602082019050613bda6000830184613bb6565b92915050565b6000613beb826135a2565b9150613bf6836135a2565b9250828203905081811115613c0e57613c0d613a19565b5b92915050565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b6000613c4a601883613498565b9150613c5582613c14565b602082019050919050565b60006020820190508181036000830152613c7981613c3d565b9050919050565b7f426f742100000000000000000000000000000000000000000000000000000000600082015250565b6000613cb6600483613498565b9150613cc182613c80565b602082019050919050565b60006020820190508181036000830152613ce581613ca9565b9050919050565b7f546f6f206d756368207369720000000000000000000000000000000000000000600082015250565b6000613d22600c83613498565b9150613d2d82613cec565b602082019050919050565b60006020820190508181036000830152613d5181613d15565b9050919050565b6000613d63826135a2565b9150613d6e836135a2565b9250828201905080821115613d8657613d85613a19565b5b92915050565b6000604082019050613da1600083018561364e565b613dae60208301846136a5565b9392505050565b6000819050919050565b6000613dda613dd5613dd084613db5565b6138c7565b6135a2565b9050919050565b613dea81613dbf565b82525050565b6000604082019050613e05600083018561364e565b613e126020830184613de1565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613e4f601b83613498565b9150613e5a82613e19565b602082019050919050565b60006020820190508181036000830152613e7e81613e42565b9050919050565b600081519050613e9481613786565b92915050565b600060208284031215613eb057613eaf61353f565b5b6000613ebe84828501613e85565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f01826135a2565b9150613f0c836135a2565b925082613f1c57613f1b613ec7565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613fba81613564565b82525050565b6000613fcc8383613fb1565b60208301905092915050565b6000602082019050919050565b6000613ff082613f85565b613ffa8185613f90565b935061400583613fa1565b8060005b8381101561403657815161401d8882613fc0565b975061402883613fd8565b925050600181019050614009565b5085935050505092915050565b600060a08201905061405860008301886136a5565b6140656020830187613de1565b81810360408301526140778186613fe5565b9050614086606083018561364e565b61409360808301846136a5565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006140f9602183613498565b91506141048261409d565b604082019050919050565b60006020820190508181036000830152614128816140ec565b905091905056fea264697066735822122016a76fe00eee6400fcdc829adcb04988069e8c9560ef44c9d1e5b6730b00ff4764736f6c63430008120033

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

00000000000000000000000048a9a02a36148febdb76a199da8bcdf540c843e5

-----Decoded View---------------
Arg [0] : _owner (address): 0x48A9A02a36148febdB76A199dA8bcDF540C843e5

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000048a9a02a36148febdb76a199da8bcdf540c843e5


Deployed Bytecode Sourcemap

9365:11707:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12095:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12517:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9617:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19339:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11825:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19629:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13035:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20857:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19780:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2893:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11919:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18118:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20486:80;;;;;;;;;;;;;:::i;:::-;;12741:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20321:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19930:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18779:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20074:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18906:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12265:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20201:111;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10418:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20684:165;;;;;;;;;;;;;:::i;:::-;;12181:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19461:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12005:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10550:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12871:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20574:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10578:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10861:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17983:115;;;;;;;;;;;;;:::i;:::-;;10735:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12376:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19237:90;;;;;;;;;;;;;:::i;:::-;;3121:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19055:174;;;;;;;;;;;;;:::i;:::-;;18639:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10519:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12095:80;12143:13;12167:5;;;;;;;;;;;;;;;;;12160:12;;12095:80;:::o;12517:216::-;12592:4;12644:6;12609:11;:23;12621:10;12609:23;;;;;;;;;;;;;;;:32;12633:7;12609:32;;;;;;;;;;;;;;;:41;;;;12687:7;12666:37;;12675:10;12666:37;;;12696:6;12666:37;;;;;;:::i;:::-;;;;;;;;12721:4;12714:11;;12517:216;;;;:::o;9617:83::-;;;:::o;19339:110::-;2792:19;2800:10;2792:7;:19::i;:::-;2784:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19408:11:::1;;;;;;;;;;;:25;;;19434:6;19408:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19339:110:::0;:::o;11825:88::-;11880:7;11898:12;;11891:19;;11825:88;:::o;19629:139::-;19693:4;2792:19;2800:10;2792:7;:19::i;:::-;2784:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19717:43:::1;19740:4;19747;;;;;;;;;;;19753:6;19717:14;:43::i;:::-;19710:50;;19629:139:::0;;;:::o;13035:370::-;13135:4;13190:17;13155:11;:19;13167:6;13155:19;;;;;;;;;;;;;;;:31;13175:10;13155:31;;;;;;;;;;;;;;;;:52;13152:186;;13257:69;13293:6;13257:69;;;;;;;;;;;;;;;;;:11;:19;13269:6;13257:19;;;;;;;;;;;;;;;:31;13277:10;13257:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;13223:11;:19;13235:6;13223:19;;;;;;;;;;;;;;;:31;13243:10;13223:31;;;;;;;;;;;;;;;:103;;;;13152:186;13357:40;13371:6;13379:9;13390:6;13357:13;:40::i;:::-;13350:47;;13035:370;;;;;:::o;20857:206::-;2792:19;2800:10;2792:7;:19::i;:::-;2784:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20955:21:::1;20972:3;20955:12;;:16;;:21;;;;:::i;:::-;20945:6;:31;;20936:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;21048:7;21039:6;:16;;;;:::i;:::-;21007:29;:48;;;;20857:206:::0;:::o;19780:142::-;19833:7;19860:54;19898:15;19908:4;;;;;;;;;;;19898:9;:15::i;:::-;19860:33;19877:15;19887:4;;;;;;;;;;;19877:9;:15::i;:::-;19860:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;19853:61;;19780:142;:::o;2893:103::-;2948:4;2983:5;;;;;;;;;;;2972:16;;:7;:16;;;2965:23;;2893:103;;;:::o;11919:80::-;11971:5;9848:1;11980:16;;11919:80;:::o;18118:158::-;2792:19;2800:10;2792:7;:19::i;:::-;2784:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18213:6:::1;18195:5;:15;18201:8;18195:15;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;18230:38;18251:8;18261:6;18230:20;:38::i;:::-;18118:158:::0;;:::o;20486:80::-;2792:19;2800:10;2792:7;:19::i;:::-;2784:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20553:5:::1;20542:8;;:16;;;;;;;;;;;;;;;;;;20486:80::o:0;12741:122::-;12796:4;12820:35;12828:7;12837:17;12820:7;:35::i;:::-;12813:42;;12741:122;;;:::o;20321:157::-;20397:7;20424:11;;;;;;;;;;;:33;;;20458:11;20424:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20417:53;;20321:157;;;:::o;19930:135::-;2792:19;2800:10;2792:7;:19::i;:::-;2784:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20040:16:::1;20014:15;;:43;;;;;;;;;;;;;;;;;;19930:135:::0;:::o;18779:119::-;2792:19;2800:10;2792:7;:19::i;:::-;2784:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18884:6:::1;18862:11;:19;18874:6;18862:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;18779:119:::0;;:::o;20074:115::-;20126:7;20153:11;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20146:35;;20074:115;:::o;18906:139::-;2792:19;2800:10;2792:7;:19::i;:::-;2784:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18984:2:::1;18976:4;:10;;18967:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;19033:4;19022:8;:15;;;;18906:139:::0;:::o;12265:105::-;12331:7;12349:9;:18;12359:7;12349:18;;;;;;;;;;;;;;;;12342:25;;12265:105;;;:::o;20201:111::-;20251:7;20278:11;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20271:33;;20201:111;:::o;10418:92::-;;;;;;;;;;;;;:::o;20684:165::-;2792:19;2800:10;2792:7;:19::i;:::-;2784:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;20774:5:::1;20754:25;;:16;;;;;;;;;;;:25;;;20745:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;20837:4;20818:16;;:23;;;;;;;;;;;;;;;;;;20684:165::o:0;12181:78::-;12233:7;12251:5;;;;;;;;;;;12244:12;;12181:78;:::o;19461:156::-;19535:7;19562:11;;;;;;;;;;;:34;;;19597:11;19562:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19555:54;;19461:156;;;:::o;12005:84::-;12055:13;12079:7;;;;;;;;;;;;;;;;;12072:14;;12005:84;:::o;10550:19::-;;;;;;;;;;;;;:::o;12871:156::-;12951:4;12975:44;12989:10;13001:9;13012:6;12975:13;:44::i;:::-;12968:51;;12871:156;;;;:::o;20574:102::-;20630:4;20654:5;:14;20660:7;20654:14;;;;;;;;;;;;;;;;;;;;;;;;;20647:21;;20574:102;;;:::o;10578:25::-;;;;:::o;10861:36::-;;;;;;;;;;;;;:::o;17983:115::-;2792:19;2800:10;2792:7;:19::i;:::-;2784:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18049:12:::1;18036:10;:25;;;;18086:4;18072:11;;:18;;;;;;;;;;;;;;;;;;17983:115::o:0;10735:61::-;;;;:::o;12376:133::-;12460:7;12478:11;:19;12490:6;12478:19;;;;;;;;;;;;;;;:28;12498:7;12478:28;;;;;;;;;;;;;;;;12471:35;;12376:133;;;;:::o;19237:90::-;19282:11;;;;;;;;;;;:25;;;19308:10;19282:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19237:90::o;3121:136::-;2792:19;2800:10;2792:7;:19::i;:::-;2784:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3205:3:::1;3197:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3224:25;3245:3;3224:25;;;;;;:::i;:::-;;;;;;;;3121:136:::0;:::o;19055:174::-;2792:19;2800:10;2792:7;:19::i;:::-;2784:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19107:26:::1;19136:21;19107:50;;19176:15;;;;;;;;;;;19168:33;;:53;19202:18;19168:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;19096:133;19055:174::o:0;18639:132::-;2792:19;2800:10;2792:7;:19::i;:::-;2784:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18727:36:::1;18748:6;18756;18727:20;:36::i;:::-;18639:132:::0;;:::o;10519:24::-;;;;;;;;;;;;;:::o;15177:330::-;15270:4;15307:53;15329:6;15307:53;;;;;;;;;;;;;;;;;:9;:17;15317:6;15307:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;15287:9;:17;15297:6;15287:17;;;;;;;;;;;;;;;:73;;;;15394:32;15419:6;15394:9;:20;15404:9;15394:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15371:9;:20;15381:9;15371:20;;;;;;;;;;;;;;;:55;;;;15459:9;15442:35;;15451:6;15442:35;;;15470:6;15442:35;;;;;;:::i;:::-;;;;;;;;15495:4;15488:11;;15177:330;;;;;:::o;555:192::-;641:7;674:1;669;:6;;677:12;661:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;701:9;717:1;713;:5;;;;:::i;:::-;701:17;;738:1;731:8;;;555:192;;;;;:::o;13413:1752::-;13505:4;13535:5;;;;;;;;;;;13526:14;;:6;:14;;;;:35;;;;;13556:5;;;;;;;;;;13544:17;;:9;:17;;;;13526:35;13522:89;;;13571:11;;;;;;;;;;;13563:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13522:89;13666:16;;;;;;;;;;;13662:102;;;13709:5;:13;13715:6;13709:13;;;;;;;;;;;;;;;;;;;;;;;;;13708:14;:35;;;;;13727:5;:16;13733:9;13727:16;;;;;;;;;;;;;;;;;;;;;;;;;13726:17;13708:35;13699:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;13662:102;13778:8;;;;;;;;;;;13774:130;;;13816:5;;;;;;;;;;13808:13;;:6;:13;;;;:34;;;;;13837:5;;;;;;;;;;13825:17;;:9;:17;;;;13808:34;13804:80;;;13861:6;;13853;:14;;13844:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;13804:80;13774:130;13930:4;;;;;;;;;;;13920:14;;:6;:14;;;:46;;;;;13959:6;;;;;;;;;;;13938:28;;:9;:28;;;;13920:46;:73;;;;;13971:11;:22;13983:9;13971:22;;;;;;;;;;;;;;;;;;;;;;;;;13970:23;13920:73;13916:219;;;14041:15;14019:8;:19;14028:9;14019:19;;;;;;;;;;;;;;;;:37;14010:47;;;;;;14112:10;14094:15;:28;;;;:::i;:::-;14072:8;:19;14081:9;14072:19;;;;;;;;;;;;;;;:50;;;;13916:219;14157:6;;;;;;;;;;14154:63;;;14173:41;14188:6;14196:9;14207:6;14173:14;:41::i;:::-;14166:48;;;;14154:63;14235:28;14266:24;14284:4;14266:9;:24::i;:::-;14235:55;;14303:24;14354:29;;14330:20;:53;;14303:80;;14400:19;14423;:38;;;;;14457:4;;;;;;;;;;;14446:15;;:9;:15;;;14423:38;:70;;;;;14492:1;14465:24;14483:4;14465:9;:24::i;:::-;:28;14423:70;14400:94;;14508:14;14505:33;;;14525:10;:8;:10::i;:::-;14505:33;14570:53;14592:6;14570:53;;;;;;;;;;;;;;;;;:9;:17;14580:6;14570:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;14550:9;:17;14560:6;14550:17;;;;;;;;;;;;;;;:73;;;;14636:22;14661:32;14675:6;14683:9;14661:13;:32::i;:::-;:67;;14722:6;14661:67;;;14696:23;14704:6;14712;14696:7;:23::i;:::-;14661:67;14636:92;;14772:40;14797:14;14772:9;:20;14782:9;14772:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;14749:9;:20;14759:9;14749:20;;;;;;;;;;;;;;;:63;;;;14838:4;;;;;;;;;;;14828:14;;:6;:14;;;;:43;;;;;14847:16;:24;14864:6;14847:24;;;;;;;;;;;;;;;;;;;;;;;;;14846:25;14828:43;14825:114;;;14878:11;;;;;;;;;;;:20;;;14899:6;14907:9;:17;14917:6;14907:17;;;;;;;;;;;;;;;;14878:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14874:63;14825:114;14965:4;;;;;;;;;;;14952:17;;:9;:17;;;;:49;;;;;14974:16;:27;14991:9;14974:27;;;;;;;;;;;;;;;;;;;;;;;;;14973:28;14952:49;14949:126;;;15008:11;;;;;;;;;;;:20;;;15029:9;15040;:20;15050:9;15040:20;;;;;;;;;;;;;;;;15008:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15004:69;14949:126;15109:9;15092:43;;15101:6;15092:43;;;15120:14;15092:43;;;;;;:::i;:::-;;;;;;;;15153:4;15146:11;;;;;;13413:1752;;;;;;:::o;1009:132::-;1067:7;1094:39;1098:1;1101;1094:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1087:46;;1009:132;;;;:::o;413:136::-;471:7;498:43;502:1;505;498:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;491:50;;413:136;;;;:::o;18294:337::-;18399:4;18381:23;;:6;:23;;;;:41;;;;;18418:4;;;;;;;;;;;18408:14;;:6;:14;;;;18381:41;18373:50;;;;;;18461:6;18434:16;:24;18451:6;18434:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;18481:6;18478:146;;;18503:11;;;;;;;;;;;:20;;;18524:6;18532:1;18503:31;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18478:146;;;18565:11;;;;;;;;;;;:20;;;18586:6;18594:9;:17;18604:6;18594:17;;;;;;;;;;;;;;;;18565:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18478:146;18294:337;;:::o;226:181::-;284:7;304:9;320:1;316;:5;;;;:::i;:::-;304:17;;345:1;340;:6;;332:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;398:1;391:8;;;226:181;;;;:::o;16099:549::-;10961:4;10952:6;;:13;;;;;;;;;;;;;;;;;;16150:20:::1;16173:24;16191:4;16173:9;:24::i;:::-;16150:47;;16218:37;16235:19;16252:1;16235:12;:16;;:19;;;;:::i;:::-;16218:16;:37::i;:::-;16266:38;16284:19;16301:1;16284:12;:16;;:19;;;;:::i;:::-;16266:17;:38::i;:::-;16317:17;16344:4;16337:22;;;16368:4;16337:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16317:57;;16387:12;16409:4;16402:21;;;16432:11;;;;;;;;;;;16446:9;16402:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16387:69;;16473:7;16469:82;;;16497:11;;;;;;;;;;;:19;;;16517:9;16497:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16469:82;16584:15;;;;;;;;;;;16576:33;;:56;16610:21;16576:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16137:511;;;10979:5:::0;10970:6;;:14;;;;;;;;;;;;;;;;;;16099:549::o;15518:206::-;15599:4;15627:11;:19;15639:6;15627:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;15650:11;:22;15662:9;15650:22;;;;;;;;;;;;;;;;;;;;;;;;;15627:45;15625:48;:90;;;;;15689:4;;;;;;;;;;;15679:14;;:6;:14;;;:35;;;;15710:4;;;;;;;;;;;15697:17;;:9;:17;;;15679:35;15625:90;15616:101;;15518:206;;;;:::o;15732:354::-;15799:7;15819:17;15859:40;15884:14;;15859:20;15870:8;;15859:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;15847:52;;15937:39;15966:9;15937;:24;15955:4;15937:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;15910:9;:24;15928:4;15910:24;;;;;;;;;;;;;;;:66;;;;16017:4;15992:42;;16001:6;15992:42;;;16024:9;15992:42;;;;;;:::i;:::-;;;;;;;;16057:21;16068:9;16057:6;:10;;:21;;;;:::i;:::-;16050:28;;;15732:354;;;;:::o;1147:345::-;1233:7;1332:1;1328;:5;1335:12;1320:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1359:9;1375:1;1371;:5;;;;:::i;:::-;1359:17;;1483:1;1476:8;;;1147:345;;;;;:::o;17102:489::-;17230:21;17268:1;17254:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17230:40;;17299:4;17281;17286:1;17281:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17325:4;;;;;;;;;;;17315;17320:1;17315:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;17368:6;;;;;;;;;;;:57;;;17440:11;17466:1;17510:4;17537;17557:15;17368:215;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17157:434;17102:489;:::o;16664:430::-;16733:21;16771:1;16757:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16733:40;;16802:4;16784;16789:1;16784:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;16828:4;;;;;;;;;;;16818;16823:1;16818:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;16853:4;16843;16848:1;16843:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;16896:6;;;;;;;;;;;:60;;;16971:11;16997:1;17013:4;17040;17060:15;16896:190;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16720:374;16664:430;:::o;753:250::-;811:7;840:1;835;:6;831:47;;865:1;858:8;;;;831:47;890:9;906:1;902;:5;;;;:::i;:::-;890:17;;935:1;930;926;:5;;;;:::i;:::-;:10;918:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;994:1;987:8;;;753:250;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:118::-;4220:24;4238:5;4220:24;:::i;:::-;4215:3;4208:37;4133:118;;:::o;4257:222::-;4350:4;4388:2;4377:9;4373:18;4365:26;;4401:71;4469:1;4458:9;4454:17;4445:6;4401:71;:::i;:::-;4257:222;;;;:::o;4485:329::-;4544:6;4593:2;4581:9;4572:7;4568:23;4564:32;4561:119;;;4599:79;;:::i;:::-;4561:119;4719:1;4744:53;4789:7;4780:6;4769:9;4765:22;4744:53;:::i;:::-;4734:63;;4690:117;4485:329;;;;:::o;4820:619::-;4897:6;4905;4913;4962:2;4950:9;4941:7;4937:23;4933:32;4930:119;;;4968:79;;:::i;:::-;4930:119;5088:1;5113:53;5158:7;5149:6;5138:9;5134:22;5113:53;:::i;:::-;5103:63;;5059:117;5215:2;5241:53;5286:7;5277:6;5266:9;5262:22;5241:53;:::i;:::-;5231:63;;5186:118;5343:2;5369:53;5414:7;5405:6;5394:9;5390:22;5369:53;:::i;:::-;5359:63;;5314:118;4820:619;;;;;:::o;5445:86::-;5480:7;5520:4;5513:5;5509:16;5498:27;;5445:86;;;:::o;5537:112::-;5620:22;5636:5;5620:22;:::i;:::-;5615:3;5608:35;5537:112;;:::o;5655:214::-;5744:4;5782:2;5771:9;5767:18;5759:26;;5795:67;5859:1;5848:9;5844:17;5835:6;5795:67;:::i;:::-;5655:214;;;;:::o;5875:116::-;5945:21;5960:5;5945:21;:::i;:::-;5938:5;5935:32;5925:60;;5981:1;5978;5971:12;5925:60;5875:116;:::o;5997:133::-;6040:5;6078:6;6065:20;6056:29;;6094:30;6118:5;6094:30;:::i;:::-;5997:133;;;;:::o;6136:468::-;6201:6;6209;6258:2;6246:9;6237:7;6233:23;6229:32;6226:119;;;6264:79;;:::i;:::-;6226:119;6384:1;6409:53;6454:7;6445:6;6434:9;6430:22;6409:53;:::i;:::-;6399:63;;6355:117;6511:2;6537:50;6579:7;6570:6;6559:9;6555:22;6537:50;:::i;:::-;6527:60;;6482:115;6136:468;;;;;:::o;6610:104::-;6655:7;6684:24;6702:5;6684:24;:::i;:::-;6673:35;;6610:104;;;:::o;6720:142::-;6823:32;6849:5;6823:32;:::i;:::-;6818:3;6811:45;6720:142;;:::o;6868:254::-;6977:4;7015:2;7004:9;7000:18;6992:26;;7028:87;7112:1;7101:9;7097:17;7088:6;7028:87;:::i;:::-;6868:254;;;;:::o;7128:474::-;7196:6;7204;7253:2;7241:9;7232:7;7228:23;7224:32;7221:119;;;7259:79;;:::i;:::-;7221:119;7379:1;7404:53;7449:7;7440:6;7429:9;7425:22;7404:53;:::i;:::-;7394:63;;7350:117;7506:2;7532:53;7577:7;7568:6;7557:9;7553:22;7532:53;:::i;:::-;7522:63;;7477:118;7128:474;;;;;:::o;7608:138::-;7689:32;7715:5;7689:32;:::i;:::-;7682:5;7679:43;7669:71;;7736:1;7733;7726:12;7669:71;7608:138;:::o;7752:155::-;7806:5;7844:6;7831:20;7822:29;;7860:41;7895:5;7860:41;:::i;:::-;7752:155;;;;:::o;7913:345::-;7980:6;8029:2;8017:9;8008:7;8004:23;8000:32;7997:119;;;8035:79;;:::i;:::-;7997:119;8155:1;8180:61;8233:7;8224:6;8213:9;8209:22;8180:61;:::i;:::-;8170:71;;8126:125;7913:345;;;;:::o;8264:60::-;8292:3;8313:5;8306:12;;8264:60;;;:::o;8330:142::-;8380:9;8413:53;8431:34;8440:24;8458:5;8440:24;:::i;:::-;8431:34;:::i;:::-;8413:53;:::i;:::-;8400:66;;8330:142;;;:::o;8478:126::-;8528:9;8561:37;8592:5;8561:37;:::i;:::-;8548:50;;8478:126;;;:::o;8610:144::-;8678:9;8711:37;8742:5;8711:37;:::i;:::-;8698:50;;8610:144;;;:::o;8760:167::-;8865:55;8914:5;8865:55;:::i;:::-;8860:3;8853:68;8760:167;;:::o;8933:258::-;9044:4;9082:2;9071:9;9067:18;9059:26;;9095:89;9181:1;9170:9;9166:17;9157:6;9095:89;:::i;:::-;8933:258;;;;:::o;9197:156::-;9337:8;9333:1;9325:6;9321:14;9314:32;9197:156;:::o;9359:365::-;9501:3;9522:66;9586:1;9581:3;9522:66;:::i;:::-;9515:73;;9597:93;9686:3;9597:93;:::i;:::-;9715:2;9710:3;9706:12;9699:19;;9359:365;;;:::o;9730:419::-;9896:4;9934:2;9923:9;9919:18;9911:26;;9983:9;9977:4;9973:20;9969:1;9958:9;9954:17;9947:47;10011:131;10137:4;10011:131;:::i;:::-;10003:139;;9730:419;;;:::o;10155:165::-;10295:17;10291:1;10283:6;10279:14;10272:41;10155:165;:::o;10326:366::-;10468:3;10489:67;10553:2;10548:3;10489:67;:::i;:::-;10482:74;;10565:93;10654:3;10565:93;:::i;:::-;10683:2;10678:3;10674:12;10667:19;;10326:366;;;:::o;10698:419::-;10864:4;10902:2;10891:9;10887:18;10879:26;;10951:9;10945:4;10941:20;10937:1;10926:9;10922:17;10915:47;10979:131;11105:4;10979:131;:::i;:::-;10971:139;;10698:419;;;:::o;11123:180::-;11171:77;11168:1;11161:88;11268:4;11265:1;11258:15;11292:4;11289:1;11282:15;11309:410;11349:7;11372:20;11390:1;11372:20;:::i;:::-;11367:25;;11406:20;11424:1;11406:20;:::i;:::-;11401:25;;11461:1;11458;11454:9;11483:30;11501:11;11483:30;:::i;:::-;11472:41;;11662:1;11653:7;11649:15;11646:1;11643:22;11623:1;11616:9;11596:83;11573:139;;11692:18;;:::i;:::-;11573:139;11357:362;11309:410;;;;:::o;11725:143::-;11782:5;11813:6;11807:13;11798:22;;11829:33;11856:5;11829:33;:::i;:::-;11725:143;;;;:::o;11874:351::-;11944:6;11993:2;11981:9;11972:7;11968:23;11964:32;11961:119;;;11999:79;;:::i;:::-;11961:119;12119:1;12144:64;12200:7;12191:6;12180:9;12176:22;12144:64;:::i;:::-;12134:74;;12090:128;11874:351;;;;:::o;12231:170::-;12371:22;12367:1;12359:6;12355:14;12348:46;12231:170;:::o;12407:366::-;12549:3;12570:67;12634:2;12629:3;12570:67;:::i;:::-;12563:74;;12646:93;12735:3;12646:93;:::i;:::-;12764:2;12759:3;12755:12;12748:19;;12407:366;;;:::o;12779:419::-;12945:4;12983:2;12972:9;12968:18;12960:26;;13032:9;13026:4;13022:20;13018:1;13007:9;13003:17;12996:47;13060:131;13186:4;13060:131;:::i;:::-;13052:139;;12779:419;;;:::o;13204:173::-;13344:25;13340:1;13332:6;13328:14;13321:49;13204:173;:::o;13383:366::-;13525:3;13546:67;13610:2;13605:3;13546:67;:::i;:::-;13539:74;;13622:93;13711:3;13622:93;:::i;:::-;13740:2;13735:3;13731:12;13724:19;;13383:366;;;:::o;13755:419::-;13921:4;13959:2;13948:9;13944:18;13936:26;;14008:9;14002:4;13998:20;13994:1;13983:9;13979:17;13972:47;14036:131;14162:4;14036:131;:::i;:::-;14028:139;;13755:419;;;:::o;14180:134::-;14238:9;14271:37;14302:5;14271:37;:::i;:::-;14258:50;;14180:134;;;:::o;14320:147::-;14415:45;14454:5;14415:45;:::i;:::-;14410:3;14403:58;14320:147;;:::o;14473:238::-;14574:4;14612:2;14601:9;14597:18;14589:26;;14625:79;14701:1;14690:9;14686:17;14677:6;14625:79;:::i;:::-;14473:238;;;;:::o;14717:194::-;14757:4;14777:20;14795:1;14777:20;:::i;:::-;14772:25;;14811:20;14829:1;14811:20;:::i;:::-;14806:25;;14855:1;14852;14848:9;14840:17;;14879:1;14873:4;14870:11;14867:37;;;14884:18;;:::i;:::-;14867:37;14717:194;;;;:::o;14917:174::-;15057:26;15053:1;15045:6;15041:14;15034:50;14917:174;:::o;15097:366::-;15239:3;15260:67;15324:2;15319:3;15260:67;:::i;:::-;15253:74;;15336:93;15425:3;15336:93;:::i;:::-;15454:2;15449:3;15445:12;15438:19;;15097:366;;;:::o;15469:419::-;15635:4;15673:2;15662:9;15658:18;15650:26;;15722:9;15716:4;15712:20;15708:1;15697:9;15693:17;15686:47;15750:131;15876:4;15750:131;:::i;:::-;15742:139;;15469:419;;;:::o;15894:154::-;16034:6;16030:1;16022:6;16018:14;16011:30;15894:154;:::o;16054:365::-;16196:3;16217:66;16281:1;16276:3;16217:66;:::i;:::-;16210:73;;16292:93;16381:3;16292:93;:::i;:::-;16410:2;16405:3;16401:12;16394:19;;16054:365;;;:::o;16425:419::-;16591:4;16629:2;16618:9;16614:18;16606:26;;16678:9;16672:4;16668:20;16664:1;16653:9;16649:17;16642:47;16706:131;16832:4;16706:131;:::i;:::-;16698:139;;16425:419;;;:::o;16850:162::-;16990:14;16986:1;16978:6;16974:14;16967:38;16850:162;:::o;17018:366::-;17160:3;17181:67;17245:2;17240:3;17181:67;:::i;:::-;17174:74;;17257:93;17346:3;17257:93;:::i;:::-;17375:2;17370:3;17366:12;17359:19;;17018:366;;;:::o;17390:419::-;17556:4;17594:2;17583:9;17579:18;17571:26;;17643:9;17637:4;17633:20;17629:1;17618:9;17614:17;17607:47;17671:131;17797:4;17671:131;:::i;:::-;17663:139;;17390:419;;;:::o;17815:191::-;17855:3;17874:20;17892:1;17874:20;:::i;:::-;17869:25;;17908:20;17926:1;17908:20;:::i;:::-;17903:25;;17951:1;17948;17944:9;17937:16;;17972:3;17969:1;17966:10;17963:36;;;17979:18;;:::i;:::-;17963:36;17815:191;;;;:::o;18012:332::-;18133:4;18171:2;18160:9;18156:18;18148:26;;18184:71;18252:1;18241:9;18237:17;18228:6;18184:71;:::i;:::-;18265:72;18333:2;18322:9;18318:18;18309:6;18265:72;:::i;:::-;18012:332;;;;;:::o;18350:85::-;18395:7;18424:5;18413:16;;18350:85;;;:::o;18441:158::-;18499:9;18532:61;18550:42;18559:32;18585:5;18559:32;:::i;:::-;18550:42;:::i;:::-;18532:61;:::i;:::-;18519:74;;18441:158;;;:::o;18605:147::-;18700:45;18739:5;18700:45;:::i;:::-;18695:3;18688:58;18605:147;;:::o;18758:348::-;18887:4;18925:2;18914:9;18910:18;18902:26;;18938:71;19006:1;18995:9;18991:17;18982:6;18938:71;:::i;:::-;19019:80;19095:2;19084:9;19080:18;19071:6;19019:80;:::i;:::-;18758:348;;;;;:::o;19112:177::-;19252:29;19248:1;19240:6;19236:14;19229:53;19112:177;:::o;19295:366::-;19437:3;19458:67;19522:2;19517:3;19458:67;:::i;:::-;19451:74;;19534:93;19623:3;19534:93;:::i;:::-;19652:2;19647:3;19643:12;19636:19;;19295:366;;;:::o;19667:419::-;19833:4;19871:2;19860:9;19856:18;19848:26;;19920:9;19914:4;19910:20;19906:1;19895:9;19891:17;19884:47;19948:131;20074:4;19948:131;:::i;:::-;19940:139;;19667:419;;;:::o;20092:137::-;20146:5;20177:6;20171:13;20162:22;;20193:30;20217:5;20193:30;:::i;:::-;20092:137;;;;:::o;20235:345::-;20302:6;20351:2;20339:9;20330:7;20326:23;20322:32;20319:119;;;20357:79;;:::i;:::-;20319:119;20477:1;20502:61;20555:7;20546:6;20535:9;20531:22;20502:61;:::i;:::-;20492:71;;20448:125;20235:345;;;;:::o;20586:180::-;20634:77;20631:1;20624:88;20731:4;20728:1;20721:15;20755:4;20752:1;20745:15;20772:185;20812:1;20829:20;20847:1;20829:20;:::i;:::-;20824:25;;20863:20;20881:1;20863:20;:::i;:::-;20858:25;;20902:1;20892:35;;20907:18;;:::i;:::-;20892:35;20949:1;20946;20942:9;20937:14;;20772:185;;;;:::o;20963:180::-;21011:77;21008:1;21001:88;21108:4;21105:1;21098:15;21132:4;21129:1;21122:15;21149:180;21197:77;21194:1;21187:88;21294:4;21291:1;21284:15;21318:4;21315:1;21308:15;21335:114;21402:6;21436:5;21430:12;21420:22;;21335:114;;;:::o;21455:184::-;21554:11;21588:6;21583:3;21576:19;21628:4;21623:3;21619:14;21604:29;;21455:184;;;;:::o;21645:132::-;21712:4;21735:3;21727:11;;21765:4;21760:3;21756:14;21748:22;;21645:132;;;:::o;21783:108::-;21860:24;21878:5;21860:24;:::i;:::-;21855:3;21848:37;21783:108;;:::o;21897:179::-;21966:10;21987:46;22029:3;22021:6;21987:46;:::i;:::-;22065:4;22060:3;22056:14;22042:28;;21897:179;;;;:::o;22082:113::-;22152:4;22184;22179:3;22175:14;22167:22;;22082:113;;;:::o;22231:732::-;22350:3;22379:54;22427:5;22379:54;:::i;:::-;22449:86;22528:6;22523:3;22449:86;:::i;:::-;22442:93;;22559:56;22609:5;22559:56;:::i;:::-;22638:7;22669:1;22654:284;22679:6;22676:1;22673:13;22654:284;;;22755:6;22749:13;22782:63;22841:3;22826:13;22782:63;:::i;:::-;22775:70;;22868:60;22921:6;22868:60;:::i;:::-;22858:70;;22714:224;22701:1;22698;22694:9;22689:14;;22654:284;;;22658:14;22954:3;22947:10;;22355:608;;;22231:732;;;;:::o;22969:831::-;23232:4;23270:3;23259:9;23255:19;23247:27;;23284:71;23352:1;23341:9;23337:17;23328:6;23284:71;:::i;:::-;23365:80;23441:2;23430:9;23426:18;23417:6;23365:80;:::i;:::-;23492:9;23486:4;23482:20;23477:2;23466:9;23462:18;23455:48;23520:108;23623:4;23614:6;23520:108;:::i;:::-;23512:116;;23638:72;23706:2;23695:9;23691:18;23682:6;23638:72;:::i;:::-;23720:73;23788:3;23777:9;23773:19;23764:6;23720:73;:::i;:::-;22969:831;;;;;;;;:::o;23806:220::-;23946:34;23942:1;23934:6;23930:14;23923:58;24015:3;24010:2;24002:6;23998:15;23991:28;23806:220;:::o;24032:366::-;24174:3;24195:67;24259:2;24254:3;24195:67;:::i;:::-;24188:74;;24271:93;24360:3;24271:93;:::i;:::-;24389:2;24384:3;24380:12;24373:19;;24032:366;;;:::o;24404:419::-;24570:4;24608:2;24597:9;24593:18;24585:26;;24657:9;24651:4;24647:20;24643:1;24632:9;24628:17;24621:47;24685:131;24811:4;24685:131;:::i;:::-;24677:139;;24404:419;;;:::o

Swarm Source

ipfs://35cf5e465b89a2b92b72fdfc198b28f1302fda37ebf951b4def415ec2f76ce0c

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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.