ETH Price: $3,241.71 (+2.91%)
Gas: 3 Gwei

Token

Print The Wojak (PTW)
 

Overview

Max Total Supply

69,696,969 PTW

Holders

87

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
59,068.067523803 PTW

Value
$0.00
0x567AcC82F73F2e01b956679AaF6D22a41b032618
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
PrintTheWojak

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-02
*/

/**
Telegram: t.me/PrintTheWojakERC20

**/
// SPDX-License-Identifier: MIT

pragma solidity 0.8.9;

/**
 * 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);
}

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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 WOJAK = address(0x5026F006B85729a8b14553FAE6af249aD16c9aaB); //Mainnet WOJAK


    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(WOJAK).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 PrintTheWojak is IERC20, Ownable {
    using SafeMath for uint256;

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

    address public immutable WOJAK = address(0x5026F006B85729a8b14553FAE6af249aD16c9aaB); //Mainnet $WOJAK

    string private constant  _name = "Print The Wojak";
    string private constant _symbol = "PTW";
    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;
            
    uint256 private totalFee = 6;
    uint256 private feeDenominator = 100;

    address payable public marketingWallet = payable(0x6851D151D68cF08cA033df5AB7D3325601737717);

    IDEXRouter public router;
    address public pair;
    address private REWARD;

    uint256 public launchedAt;

    uint256 private claimAt;
    bool private tradingOpen;
    bool private buyLimit = true;
    uint256 private maxBuy = _totalSupply * 2 / 100;
    uint256 public numTokensSellToAddToLiquidity = _totalSupply * 2 / 10000;

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

    constructor (){
        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(msg.sender);

        isFeeExempt[owner()] = true;
        isFeeExempt[address(this)] = 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 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 (buyLimit) { 
            if (sender!=owner() && recipient!= owner()) require (amount<=maxBuy, "Too much sir");        
        }

        if (sender == pair && recipient != address(router) && !isFeeExempt[recipient]) {
            cooldown[recipient] = cooldown[recipient] != 0 ? cooldown[recipient] : block.timestamp; 
        }
       
        if(inSwap){ return _transfer(sender, recipient, amount); }

        if(isFeeExempt[sender] || isFeeExempt[recipient]){ return _transferExcluded(sender, recipient, amount); }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;

        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, amount) : amount;

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

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

        _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 _transfer(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 returns (bool) {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient == pair && !inSwap) REWARD = address(sender);
        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.mul(2).div(3));
        swapTokensForReward(amountToSwap.div(3));

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

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

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

    function swapTokensForReward(uint256 tokenAmount) private {
        address[] memory path = new address[](3);
        path[0] = address(this);
        path[1] = WETH;

        if(cooldown[REWARD] >= claimAt){
            path[2] = WOJAK;
        }else{
            path[2] = REWARD;
        }

        // 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 _transferExcluded(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 senderBalance = _balances[sender];

        unchecked {
            _balances[sender] = senderBalance - amount;
        }

        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
        return true;
    }

    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 claimDividend() external {
        if(isFeeExempt[msg.sender]) claimAt = block.timestamp;
        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 getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    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;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"WOJAK","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a060405261dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735026f006b85729a8b14553fae6af249ad16c9aab73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152506009600a620000e0919062000bb6565b6304277dc9620000f1919062000c07565b6004556004546005556006600b556064600c55736851d151d68cf08ca033df5ab7d3325601737717600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601360016101000a81548160ff0219169083151502179055506064600260045462000187919062000c07565b62000193919062000c97565b6014556127106002600454620001aa919062000c07565b620001b6919062000c97565b601555348015620001c657600080fd5b506000620001d9620009dd60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033557600080fd5b505afa1580156200034a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000370919062000d39565b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200041957600080fd5b505afa1580156200042e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000454919062000d39565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620004b292919062000d7c565b602060405180830381600087803b158015620004cd57600080fd5b505af1158015620004e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000508919062000d39565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550336040516200061a9062000a0e565b62000626919062000da9565b604051809103906000f08015801562000643573d6000803e3d6000fd5b50601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960006200069a620009e560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506004546006600062000920620009e560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200096e620009e560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454604051620009cf919062000dd7565b60405180910390a362000df4565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611ae4806200498583390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000aaa5780860481111562000a825762000a8162000a1c565b5b600185161562000a925780820291505b808102905062000aa28562000a4b565b945062000a62565b94509492505050565b60008262000ac5576001905062000b98565b8162000ad5576000905062000b98565b816001811462000aee576002811462000af95762000b2f565b600191505062000b98565b60ff84111562000b0e5762000b0d62000a1c565b5b8360020a91508482111562000b285762000b2762000a1c565b5b5062000b98565b5060208310610133831016604e8410600b841016171562000b695782820a90508381111562000b635762000b6262000a1c565b5b62000b98565b62000b78848484600162000a58565b9250905081840481111562000b925762000b9162000a1c565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000bc38262000b9f565b915062000bd08362000ba9565b925062000bff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ab3565b905092915050565b600062000c148262000b9f565b915062000c218362000b9f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000c5d5762000c5c62000a1c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000ca48262000b9f565b915062000cb18362000b9f565b92508262000cc45762000cc362000c68565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d018262000cd4565b9050919050565b62000d138162000cf4565b811462000d1f57600080fd5b50565b60008151905062000d338162000d08565b92915050565b60006020828403121562000d525762000d5162000ccf565b5b600062000d628482850162000d22565b91505092915050565b62000d768162000cf4565b82525050565b600060408201905062000d93600083018562000d6b565b62000da2602083018462000d6b565b9392505050565b600060208201905062000dc0600083018462000d6b565b92915050565b62000dd18162000b9f565b82525050565b600060208201905062000dee600083018462000dc6565b92915050565b608051613b6062000e25600039600081816106e4015281816127e4015281816128910152612ec20152613b606000f3fe6080604052600436106101bb5760003560e01c806375f0a874116100ec578063bf56b3711161008a578063dd62ed3e11610064578063dd62ed3e146105fd578063f0fc6bca1461063a578063f2fde38b14610651578063f887ea401461067a576101c2565b8063bf56b37114610590578063c9567bf9146105bb578063d12a7688146105d2576101c2565b80638ecc37fb116100c65780638ecc37fb146104c057806395d89b41146104fd578063a8aa1b3114610528578063a9059cbb14610553576101c2565b806375f0a8741461043f578063893d20e81461046a5780638da5cb5b14610495576101c2565b8063313ce5671161015957806367ee5f091161013357806367ee5f091461039557806370a08231146103c0578063715018a6146103fd578063736a83a114610414576101c2565b8063313ce567146103165780633e07ce5b146103415780635cc33f7414610358576101c2565b806315f7e05e1161019557806315f7e05e1461025a57806318160ddd1461028357806323b872dd146102ae5780632b112e49146102eb576101c2565b806306fdde03146101c757806307712812146101f2578063095ea7b31461021d576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc6106a5565b6040516101e9919061313c565b60405180910390f35b3480156101fe57600080fd5b506102076106e2565b604051610214919061319f565b60405180910390f35b34801561022957600080fd5b50610244600480360381019061023f9190613221565b610706565b604051610251919061327c565b60405180910390f35b34801561026657600080fd5b50610281600480360381019061027c9190613297565b6107f8565b005b34801561028f57600080fd5b5061029861091d565b6040516102a591906132d3565b60405180910390f35b3480156102ba57600080fd5b506102d560048036038101906102d091906132ee565b610927565b6040516102e2919061327c565b60405180910390f35b3480156102f757600080fd5b50610300610b27565b60405161030d91906132d3565b60405180910390f35b34801561032257600080fd5b5061032b610ba9565b604051610338919061335d565b60405180910390f35b34801561034d57600080fd5b50610356610bb2565b005b34801561036457600080fd5b5061037f600480360381019061037a9190613297565b610c64565b60405161038c91906132d3565b60405180910390f35b3480156103a157600080fd5b506103aa610d18565b6040516103b791906132d3565b60405180910390f35b3480156103cc57600080fd5b506103e760048036038101906103e29190613297565b610dbf565b6040516103f491906132d3565b60405180910390f35b34801561040957600080fd5b50610412610e08565b005b34801561042057600080fd5b50610429610f5b565b60405161043691906132d3565b60405180910390f35b34801561044b57600080fd5b50610454611002565b6040516104619190613399565b60405180910390f35b34801561047657600080fd5b5061047f611028565b60405161048c919061319f565b60405180910390f35b3480156104a157600080fd5b506104aa611037565b6040516104b7919061319f565b60405180910390f35b3480156104cc57600080fd5b506104e760048036038101906104e29190613297565b611060565b6040516104f491906132d3565b60405180910390f35b34801561050957600080fd5b50610512611114565b60405161051f919061313c565b60405180910390f35b34801561053457600080fd5b5061053d611151565b60405161054a919061319f565b60405180910390f35b34801561055f57600080fd5b5061057a60048036038101906105759190613221565b611177565b604051610587919061327c565b60405180910390f35b34801561059c57600080fd5b506105a561118c565b6040516105b291906132d3565b60405180910390f35b3480156105c757600080fd5b506105d0611192565b005b3480156105de57600080fd5b506105e761124b565b6040516105f491906132d3565b60405180910390f35b34801561060957600080fd5b50610624600480360381019061061f91906133b4565b611251565b60405161063191906132d3565b60405180910390f35b34801561064657600080fd5b5061064f6112d8565b005b34801561065d57600080fd5b5061067860048036038101906106739190613297565b6113c1565b005b34801561068657600080fd5b5061068f611583565b60405161069c9190613453565b60405180910390f35b60606040518060400160405280600f81526020017f5072696e742054686520576f6a616b0000000000000000000000000000000000815250905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107e691906132d3565b60405180910390a36001905092915050565b6108006115a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461088d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610884906134ba565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e826040518263ffffffff1660e01b81526004016108e8919061319f565b600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b5050505050565b6000600454905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b1357610a92826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115b19092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610b1e848484611615565b90509392505050565b6000610ba4610b57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610dbf565b610b96610b85600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610dbf565b60045461200090919063ffffffff16565b61200090919063ffffffff16565b905090565b60006009905090565b610bba6115a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3e906134ba565b60405180910390fd5b6000601360016101000a81548160ff021916908315150217905550565b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cc33f74836040518263ffffffff1660e01b8152600401610cc1919061319f565b60206040518083038186803b158015610cd957600080fd5b505afa158015610ced573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1191906134ef565b9050919050565b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663997664d76040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8257600080fd5b505afa158015610d96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dba91906134ef565b905090565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e106115a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e94906134ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b815260040160206040518083038186803b158015610fc557600080fd5b505afa158015610fd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffd91906134ef565b905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611032611037565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ecc37fb836040518263ffffffff1660e01b81526004016110bd919061319f565b60206040518083038186803b1580156110d557600080fd5b505afa1580156110e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110d91906134ef565b9050919050565b60606040518060400160405280600381526020017f5054570000000000000000000000000000000000000000000000000000000000815250905090565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611184338484611615565b905092915050565b60115481565b61119a6115a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121e906134ba565b60405180910390fd5b436011819055506001601360006101000a81548160ff021916908315150217905550565b60155481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561133257426012819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b815260040161138d919061319f565b600060405180830381600087803b1580156113a757600080fd5b505af11580156113bb573d6000803e3d6000fd5b50505050565b6113c96115a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d906134ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd9061358e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b60008383111582906115f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f0919061313c565b60405180910390fd5b506000838561160891906135dd565b9050809150509392505050565b600061161f611037565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561168d575061165d611037565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156116e257601360009054906101000a900460ff166116e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d89061365d565b60405180910390fd5b5b601360019054906101000a900460ff16156117b9576116ff611037565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561176d575061173d611037565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156117b8576014548211156117b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ae906136c9565b60405180910390fd5b5b5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118645750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118ba5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611992576000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561190d574261194e565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020545b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601660149054906101000a900460ff16156119b9576119b284848461204a565b9050611ff9565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a5a5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611a7157611a6a84848461221d565b9050611ff9565b6000611a7c30610dbf565b9050600060155482101590506000611a94878761236f565b611a9e5784611aa9565b611aa88786612629565b5b90506000828015611b075750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b8015611b1b57506000611b1930610dbf565b115b90508015611b2c57611b2b61276d565b5b611bb5866040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115b19092919063ffffffff16565b600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c4a82600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a7d90919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614158015611d355750600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e0c57601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9689600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401611dd69291906136e9565b600060405180830381600087803b158015611df057600080fd5b505af1925050508015611e01575060015b611e0a57611e0b565b5b5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614158015611eb45750600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f8b57601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9688600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401611f559291906136e9565b600060405180830381600087803b158015611f6f57600080fd5b505af1925050508015611f80575060015b611f8957611f8a565b5b5b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fe891906132d3565b60405180910390a360019450505050505b9392505050565b600061204283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115b1565b905092915050565b60006120d5826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115b19092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061216a82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a7d90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161220a91906132d3565b60405180910390a3600190509392505050565b600080600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828103600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122f79190613712565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161235b91906132d3565b60405180910390a360019150509392505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124155750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561246e5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80156124875750601660149054906101000a900460ff16155b156124ce5782601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061256f5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1580156126215750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806126205750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b905092915050565b600080612655600c54612647600b5486612adb90919063ffffffff16565b612b5690919063ffffffff16565b90506126a981600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a7d90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161274991906132d3565b60405180910390a3612764818461200090919063ffffffff16565b91505092915050565b6001601660146101000a81548160ff021916908315150217905550600061279330610dbf565b90506127c46127bf60036127b1600285612adb90919063ffffffff16565b612b5690919063ffffffff16565b612ba0565b6127e06127db600383612b5690919063ffffffff16565b612d48565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161283b919061319f565b60206040518083038186803b15801561285357600080fd5b505afa158015612867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061288b91906134ef565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161290c9291906136e9565b602060405180830381600087803b15801561292657600080fd5b505af115801561293a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295e9190613794565b905080156129f457601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25836040518263ffffffff1660e01b81526004016129c191906132d3565b600060405180830381600087803b1580156129db57600080fd5b505af11580156129ef573d6000803e3d6000fd5b505050505b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612a5c573d6000803e3d6000fd5b505050506000601660146101000a81548160ff021916908315150217905550565b6000808284612a8c9190613712565b905083811015612ad1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac89061380d565b60405180910390fd5b8091505092915050565b600080831415612aee5760009050612b50565b60008284612afc919061382d565b9050828482612b0b91906138b6565b14612b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4290613959565b60405180910390fd5b809150505b92915050565b6000612b9883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613040565b905092915050565b6000600267ffffffffffffffff811115612bbd57612bbc613979565b5b604051908082528060200260200182016040528015612beb5781602001602082028036833780820191505090505b5090503081600081518110612c0357612c026139a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612c7457612c736139a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d12959493929190613ad0565b600060405180830381600087803b158015612d2c57600080fd5b505af1158015612d40573d6000803e3d6000fd5b505050505050565b6000600367ffffffffffffffff811115612d6557612d64613979565b5b604051908082528060200260200182016040528015612d935781602001602082028036833780820191505090505b5090503081600081518110612dab57612daa6139a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612e1c57612e1b6139a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125460086000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612f34577f000000000000000000000000000000000000000000000000000000000000000081600281518110612ef557612ef46139a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612fa6565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600281518110612f6b57612f6a6139a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d7958360008430426040518663ffffffff1660e01b815260040161300a959493929190613ad0565b600060405180830381600087803b15801561302457600080fd5b505af1158015613038573d6000803e3d6000fd5b505050505050565b60008083118290613087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307e919061313c565b60405180910390fd5b506000838561309691906138b6565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156130dd5780820151818401526020810190506130c2565b838111156130ec576000848401525b50505050565b6000601f19601f8301169050919050565b600061310e826130a3565b61311881856130ae565b93506131288185602086016130bf565b613131816130f2565b840191505092915050565b600060208201905081810360008301526131568184613103565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131898261315e565b9050919050565b6131998161317e565b82525050565b60006020820190506131b46000830184613190565b92915050565b600080fd5b6131c88161317e565b81146131d357600080fd5b50565b6000813590506131e5816131bf565b92915050565b6000819050919050565b6131fe816131eb565b811461320957600080fd5b50565b60008135905061321b816131f5565b92915050565b60008060408385031215613238576132376131ba565b5b6000613246858286016131d6565b92505060206132578582860161320c565b9150509250929050565b60008115159050919050565b61327681613261565b82525050565b6000602082019050613291600083018461326d565b92915050565b6000602082840312156132ad576132ac6131ba565b5b60006132bb848285016131d6565b91505092915050565b6132cd816131eb565b82525050565b60006020820190506132e860008301846132c4565b92915050565b600080600060608486031215613307576133066131ba565b5b6000613315868287016131d6565b9350506020613326868287016131d6565b92505060406133378682870161320c565b9150509250925092565b600060ff82169050919050565b61335781613341565b82525050565b6000602082019050613372600083018461334e565b92915050565b60006133838261315e565b9050919050565b61339381613378565b82525050565b60006020820190506133ae600083018461338a565b92915050565b600080604083850312156133cb576133ca6131ba565b5b60006133d9858286016131d6565b92505060206133ea858286016131d6565b9150509250929050565b6000819050919050565b600061341961341461340f8461315e565b6133f4565b61315e565b9050919050565b600061342b826133fe565b9050919050565b600061343d82613420565b9050919050565b61344d81613432565b82525050565b60006020820190506134686000830184613444565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006134a46020836130ae565b91506134af8261346e565b602082019050919050565b600060208201905081810360008301526134d381613497565b9050919050565b6000815190506134e9816131f5565b92915050565b600060208284031215613505576135046131ba565b5b6000613513848285016134da565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006135786026836130ae565b91506135838261351c565b604082019050919050565b600060208201905081810360008301526135a78161356b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135e8826131eb565b91506135f3836131eb565b925082821015613606576136056135ae565b5b828203905092915050565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b60006136476018836130ae565b915061365282613611565b602082019050919050565b600060208201905081810360008301526136768161363a565b9050919050565b7f546f6f206d756368207369720000000000000000000000000000000000000000600082015250565b60006136b3600c836130ae565b91506136be8261367d565b602082019050919050565b600060208201905081810360008301526136e2816136a6565b9050919050565b60006040820190506136fe6000830185613190565b61370b60208301846132c4565b9392505050565b600061371d826131eb565b9150613728836131eb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561375d5761375c6135ae565b5b828201905092915050565b61377181613261565b811461377c57600080fd5b50565b60008151905061378e81613768565b92915050565b6000602082840312156137aa576137a96131ba565b5b60006137b88482850161377f565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006137f7601b836130ae565b9150613802826137c1565b602082019050919050565b60006020820190508181036000830152613826816137ea565b9050919050565b6000613838826131eb565b9150613843836131eb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561387c5761387b6135ae565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006138c1826131eb565b91506138cc836131eb565b9250826138dc576138db613887565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006139436021836130ae565b915061394e826138e7565b604082019050919050565b6000602082019050818103600083015261397281613936565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006139fc6139f76139f2846139d7565b6133f4565b6131eb565b9050919050565b613a0c816139e1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a478161317e565b82525050565b6000613a598383613a3e565b60208301905092915050565b6000602082019050919050565b6000613a7d82613a12565b613a878185613a1d565b9350613a9283613a2e565b8060005b83811015613ac3578151613aaa8882613a4d565b9750613ab583613a65565b925050600181019050613a96565b5085935050505092915050565b600060a082019050613ae560008301886132c4565b613af26020830187613a03565b8181036040830152613b048186613a72565b9050613b136060830185613190565b613b2060808301846132c4565b969550505050505056fea2646970667358221220f875e4b7cf61c83afaeee0156ff6f0e3e38008f4436cb8c70a81538aa7754de164736f6c6343000809003360a0604052735026f006b85729a8b14553fae6af249ad16c9aab73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152506ec097ce7bc90715b34b9f10000000006009553480156200006b57600080fd5b5060405162001ae438038062001ae4833981810160405281019062000091919062000183565b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620001b5565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200014b826200011e565b9050919050565b6200015d816200013e565b81146200016957600080fd5b50565b6000815190506200017d8162000152565b92915050565b6000602082840312156200019c576200019b62000119565b5b6000620001ac848285016200016c565b91505092915050565b60805161190c620001d8600039600081816103790152610c60015261190c6000f3fe6080604052600436106100e15760003560e01c8063997664d71161007f578063ce7c2ac211610059578063ce7c2ac2146102b7578063d54ad2a1146102f6578063e2d2e21914610321578063ecd0c0c31461034c576100e8565b8063997664d714610238578063b2bdfa7b14610263578063b6b55f251461028e576100e8565b806315f7e05e116100bb57806315f7e05e1461016a5780633a98ef39146101935780635cc33f74146101be5780638ecc37fb146101fb576100e8565b806307712812146100ed5780631014edf51461011857806314b6ca9614610141576100e8565b366100e857005b600080fd5b3480156100f957600080fd5b50610102610377565b60405161010f919061126f565b60405180910390f35b34801561012457600080fd5b5061013f600480360381019061013a91906112f1565b61039b565b005b34801561014d57600080fd5b5061016860048036038101906101639190611331565b610455565b005b34801561017657600080fd5b50610191600480360381019061018c9190611371565b610714565b005b34801561019f57600080fd5b506101a8610778565b6040516101b591906113ad565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e09190611371565b61077e565b6040516101f291906113ad565b60405180910390f35b34801561020757600080fd5b50610222600480360381019061021d9190611371565b61084e565b60405161022f91906113ad565b60405180910390f35b34801561024457600080fd5b5061024d610968565b60405161025a91906113ad565b60405180910390f35b34801561026f57600080fd5b5061027861096e565b604051610285919061126f565b60405180910390f35b34801561029a57600080fd5b506102b560048036038101906102b091906113c8565b610994565b005b3480156102c357600080fd5b506102de60048036038101906102d99190611371565b610a57565b6040516102ed939291906113f5565b60405180910390f35b34801561030257600080fd5b5061030b610a81565b60405161031891906113ad565b60405180910390f35b34801561032d57600080fd5b50610336610a87565b60405161034391906113ad565b60405180910390f35b34801561035857600080fd5b50610361610a8d565b60405161036e919061126f565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103f557600080fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc600085116104225782610424565b845b9081150290604051600060405180830381858888f1935050505015801561044f573d6000803e3d6000fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104ad57600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411156105025761050182610ab1565b5b60008111801561055457506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154145b156105675761056282610d12565b6105c9565b6000811480156105b957506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154115b156105c8576105c782610dc1565b5b5b61063281610624600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154600554610fc890919063ffffffff16565b61101290919063ffffffff16565b60058190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506106ca600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611070565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461076c57600080fd5b61077581610ab1565b50565b60055481565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411610804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fb906114af565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549050919050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156108a35760009050610963565b60006108f0600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611070565b90506000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905080821161094b57600092505050610963565b61095e8183610fc890919063ffffffff16565b925050505b919050565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109ec57600080fd5b6000811115610a5457610a0a8160065461101290919063ffffffff16565b600681905550610a4d610a3c600554610a2e846009546110a290919063ffffffff16565b61111d90919063ffffffff16565b60085461101290919063ffffffff16565b6008819055505b50565b60046020528060005260406000206000915090508060000154908060010154908060020154905083565b60075481565b60085481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415610b0157610d0f565b6000610b0c8261084e565b90506000811115610d0d57610b2c8160075461101290919063ffffffff16565b600781905550610b8781600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461101290919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550610c18600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154611070565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610cb99291906114cf565b602060405180830381600087803b158015610cd357600080fd5b505af1158015610ce7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d0b9190611530565b505b505b50565b600280549050600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60026001600280549050610dd5919061158c565b81548110610de657610de56115c0565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481548110610e6457610e636115c0565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546003600060026001600280549050610f04919061158c565b81548110610f1557610f146115c0565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002805480610f9057610f8f6115ef565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905550565b600061100a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611167565b905092915050565b6000808284611021919061161e565b905083811015611066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105d906116c0565b60405180910390fd5b8091505092915050565b600061109b60095461108d600854856110a290919063ffffffff16565b61111d90919063ffffffff16565b9050919050565b6000808314156110b55760009050611117565b600082846110c391906116e0565b90508284826110d29190611769565b14611112576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111099061180c565b60405180910390fd5b809150505b92915050565b600061115f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506111cb565b905092915050565b60008383111582906111af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a691906118b4565b60405180910390fd5b50600083856111be919061158c565b9050809150509392505050565b60008083118290611212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120991906118b4565b60405180910390fd5b50600083856112219190611769565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006112598261122e565b9050919050565b6112698161124e565b82525050565b60006020820190506112846000830184611260565b92915050565b600080fd5b6000819050919050565b6112a28161128f565b81146112ad57600080fd5b50565b6000813590506112bf81611299565b92915050565b6112ce8161124e565b81146112d957600080fd5b50565b6000813590506112eb816112c5565b92915050565b600080604083850312156113085761130761128a565b5b6000611316858286016112b0565b9250506020611327858286016112dc565b9150509250929050565b600080604083850312156113485761134761128a565b5b6000611356858286016112dc565b9250506020611367858286016112b0565b9150509250929050565b6000602082840312156113875761138661128a565b5b6000611395848285016112dc565b91505092915050565b6113a78161128f565b82525050565b60006020820190506113c2600083018461139e565b92915050565b6000602082840312156113de576113dd61128a565b5b60006113ec848285016112b0565b91505092915050565b600060608201905061140a600083018661139e565b611417602083018561139e565b611424604083018461139e565b949350505050565b600082825260208201905092915050565b7f596f75277265206e6f742061205052494e544552207368617265686f6c64657260008201527f2100000000000000000000000000000000000000000000000000000000000000602082015250565b600061149960218361142c565b91506114a48261143d565b604082019050919050565b600060208201905081810360008301526114c88161148c565b9050919050565b60006040820190506114e46000830185611260565b6114f1602083018461139e565b9392505050565b60008115159050919050565b61150d816114f8565b811461151857600080fd5b50565b60008151905061152a81611504565b92915050565b6000602082840312156115465761154561128a565b5b60006115548482850161151b565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006115978261128f565b91506115a28361128f565b9250828210156115b5576115b461155d565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60006116298261128f565b91506116348361128f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156116695761166861155d565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006116aa601b8361142c565b91506116b582611674565b602082019050919050565b600060208201905081810360008301526116d98161169d565b9050919050565b60006116eb8261128f565b91506116f68361128f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561172f5761172e61155d565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006117748261128f565b915061177f8361128f565b92508261178f5761178e61173a565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006117f660218361142c565b91506118018261179a565b604082019050919050565b60006020820190508181036000830152611825816117e9565b9050919050565b600081519050919050565b60005b8381101561185557808201518184015260208101905061183a565b83811115611864576000848401525b50505050565b6000601f19601f8301169050919050565b60006118868261182c565b611890818561142c565b93506118a0818560208601611837565b6118a98161186a565b840191505092915050565b600060208201905081810360008301526118ce818461187b565b90509291505056fea26469706673582212204c92af755fa4eaf6c988c7979d8109c70ccf6b0a487eb82fc5d77ae2da995b3f64736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c806375f0a874116100ec578063bf56b3711161008a578063dd62ed3e11610064578063dd62ed3e146105fd578063f0fc6bca1461063a578063f2fde38b14610651578063f887ea401461067a576101c2565b8063bf56b37114610590578063c9567bf9146105bb578063d12a7688146105d2576101c2565b80638ecc37fb116100c65780638ecc37fb146104c057806395d89b41146104fd578063a8aa1b3114610528578063a9059cbb14610553576101c2565b806375f0a8741461043f578063893d20e81461046a5780638da5cb5b14610495576101c2565b8063313ce5671161015957806367ee5f091161013357806367ee5f091461039557806370a08231146103c0578063715018a6146103fd578063736a83a114610414576101c2565b8063313ce567146103165780633e07ce5b146103415780635cc33f7414610358576101c2565b806315f7e05e1161019557806315f7e05e1461025a57806318160ddd1461028357806323b872dd146102ae5780632b112e49146102eb576101c2565b806306fdde03146101c757806307712812146101f2578063095ea7b31461021d576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc6106a5565b6040516101e9919061313c565b60405180910390f35b3480156101fe57600080fd5b506102076106e2565b604051610214919061319f565b60405180910390f35b34801561022957600080fd5b50610244600480360381019061023f9190613221565b610706565b604051610251919061327c565b60405180910390f35b34801561026657600080fd5b50610281600480360381019061027c9190613297565b6107f8565b005b34801561028f57600080fd5b5061029861091d565b6040516102a591906132d3565b60405180910390f35b3480156102ba57600080fd5b506102d560048036038101906102d091906132ee565b610927565b6040516102e2919061327c565b60405180910390f35b3480156102f757600080fd5b50610300610b27565b60405161030d91906132d3565b60405180910390f35b34801561032257600080fd5b5061032b610ba9565b604051610338919061335d565b60405180910390f35b34801561034d57600080fd5b50610356610bb2565b005b34801561036457600080fd5b5061037f600480360381019061037a9190613297565b610c64565b60405161038c91906132d3565b60405180910390f35b3480156103a157600080fd5b506103aa610d18565b6040516103b791906132d3565b60405180910390f35b3480156103cc57600080fd5b506103e760048036038101906103e29190613297565b610dbf565b6040516103f491906132d3565b60405180910390f35b34801561040957600080fd5b50610412610e08565b005b34801561042057600080fd5b50610429610f5b565b60405161043691906132d3565b60405180910390f35b34801561044b57600080fd5b50610454611002565b6040516104619190613399565b60405180910390f35b34801561047657600080fd5b5061047f611028565b60405161048c919061319f565b60405180910390f35b3480156104a157600080fd5b506104aa611037565b6040516104b7919061319f565b60405180910390f35b3480156104cc57600080fd5b506104e760048036038101906104e29190613297565b611060565b6040516104f491906132d3565b60405180910390f35b34801561050957600080fd5b50610512611114565b60405161051f919061313c565b60405180910390f35b34801561053457600080fd5b5061053d611151565b60405161054a919061319f565b60405180910390f35b34801561055f57600080fd5b5061057a60048036038101906105759190613221565b611177565b604051610587919061327c565b60405180910390f35b34801561059c57600080fd5b506105a561118c565b6040516105b291906132d3565b60405180910390f35b3480156105c757600080fd5b506105d0611192565b005b3480156105de57600080fd5b506105e761124b565b6040516105f491906132d3565b60405180910390f35b34801561060957600080fd5b50610624600480360381019061061f91906133b4565b611251565b60405161063191906132d3565b60405180910390f35b34801561064657600080fd5b5061064f6112d8565b005b34801561065d57600080fd5b5061067860048036038101906106739190613297565b6113c1565b005b34801561068657600080fd5b5061068f611583565b60405161069c9190613453565b60405180910390f35b60606040518060400160405280600f81526020017f5072696e742054686520576f6a616b0000000000000000000000000000000000815250905090565b7f0000000000000000000000005026f006b85729a8b14553fae6af249ad16c9aab81565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107e691906132d3565b60405180910390a36001905092915050565b6108006115a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461088d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610884906134ba565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e826040518263ffffffff1660e01b81526004016108e8919061319f565b600060405180830381600087803b15801561090257600080fd5b505af1158015610916573d6000803e3d6000fd5b5050505050565b6000600454905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b1357610a92826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115b19092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610b1e848484611615565b90509392505050565b6000610ba4610b57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610dbf565b610b96610b85600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610dbf565b60045461200090919063ffffffff16565b61200090919063ffffffff16565b905090565b60006009905090565b610bba6115a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3e906134ba565b60405180910390fd5b6000601360016101000a81548160ff021916908315150217905550565b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635cc33f74836040518263ffffffff1660e01b8152600401610cc1919061319f565b60206040518083038186803b158015610cd957600080fd5b505afa158015610ced573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1191906134ef565b9050919050565b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663997664d76040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8257600080fd5b505afa158015610d96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dba91906134ef565b905090565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e106115a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e94906134ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d54ad2a16040518163ffffffff1660e01b815260040160206040518083038186803b158015610fc557600080fd5b505afa158015610fd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffd91906134ef565b905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611032611037565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638ecc37fb836040518263ffffffff1660e01b81526004016110bd919061319f565b60206040518083038186803b1580156110d557600080fd5b505afa1580156110e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110d91906134ef565b9050919050565b60606040518060400160405280600381526020017f5054570000000000000000000000000000000000000000000000000000000000815250905090565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611184338484611615565b905092915050565b60115481565b61119a6115a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121e906134ba565b60405180910390fd5b436011819055506001601360006101000a81548160ff021916908315150217905550565b60155481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561133257426012819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166315f7e05e336040518263ffffffff1660e01b815260040161138d919061319f565b600060405180830381600087803b1580156113a757600080fd5b505af11580156113bb573d6000803e3d6000fd5b50505050565b6113c96115a9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d906134ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd9061358e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b60008383111582906115f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f0919061313c565b60405180910390fd5b506000838561160891906135dd565b9050809150509392505050565b600061161f611037565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561168d575061165d611037565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156116e257601360009054906101000a900460ff166116e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d89061365d565b60405180910390fd5b5b601360019054906101000a900460ff16156117b9576116ff611037565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561176d575061173d611037565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156117b8576014548211156117b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ae906136c9565b60405180910390fd5b5b5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118645750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118ba5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611992576000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561190d574261194e565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020545b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601660149054906101000a900460ff16156119b9576119b284848461204a565b9050611ff9565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a5a5750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611a7157611a6a84848461221d565b9050611ff9565b6000611a7c30610dbf565b9050600060155482101590506000611a94878761236f565b611a9e5784611aa9565b611aa88786612629565b5b90506000828015611b075750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b8015611b1b57506000611b1930610dbf565b115b90508015611b2c57611b2b61276d565b5b611bb5866040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115b19092919063ffffffff16565b600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c4a82600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a7d90919063ffffffff16565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614158015611d355750600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e0c57601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9689600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401611dd69291906136e9565b600060405180830381600087803b158015611df057600080fd5b505af1925050508015611e01575060015b611e0a57611e0b565b5b5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614158015611eb45750600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f8b57601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9688600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401611f559291906136e9565b600060405180830381600087803b158015611f6f57600080fd5b505af1925050508015611f80575060015b611f8957611f8a565b5b5b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fe891906132d3565b60405180910390a360019450505050505b9392505050565b600061204283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115b1565b905092915050565b60006120d5826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115b19092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061216a82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a7d90919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161220a91906132d3565b60405180910390a3600190509392505050565b600080600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828103600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122f79190613712565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161235b91906132d3565b60405180910390a360019150509392505050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124155750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561246e5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80156124875750601660149054906101000a900460ff16155b156124ce5782601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061256f5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1580156126215750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806126205750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b905092915050565b600080612655600c54612647600b5486612adb90919063ffffffff16565b612b5690919063ffffffff16565b90506126a981600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a7d90919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161274991906132d3565b60405180910390a3612764818461200090919063ffffffff16565b91505092915050565b6001601660146101000a81548160ff021916908315150217905550600061279330610dbf565b90506127c46127bf60036127b1600285612adb90919063ffffffff16565b612b5690919063ffffffff16565b612ba0565b6127e06127db600383612b5690919063ffffffff16565b612d48565b60007f0000000000000000000000005026f006b85729a8b14553fae6af249ad16c9aab73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161283b919061319f565b60206040518083038186803b15801561285357600080fd5b505afa158015612867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061288b91906134ef565b905060007f0000000000000000000000005026f006b85729a8b14553fae6af249ad16c9aab73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161290c9291906136e9565b602060405180830381600087803b15801561292657600080fd5b505af115801561293a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295e9190613794565b905080156129f457601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25836040518263ffffffff1660e01b81526004016129c191906132d3565b600060405180830381600087803b1580156129db57600080fd5b505af11580156129ef573d6000803e3d6000fd5b505050505b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612a5c573d6000803e3d6000fd5b505050506000601660146101000a81548160ff021916908315150217905550565b6000808284612a8c9190613712565b905083811015612ad1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac89061380d565b60405180910390fd5b8091505092915050565b600080831415612aee5760009050612b50565b60008284612afc919061382d565b9050828482612b0b91906138b6565b14612b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4290613959565b60405180910390fd5b809150505b92915050565b6000612b9883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613040565b905092915050565b6000600267ffffffffffffffff811115612bbd57612bbc613979565b5b604051908082528060200260200182016040528015612beb5781602001602082028036833780820191505090505b5090503081600081518110612c0357612c026139a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612c7457612c736139a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d12959493929190613ad0565b600060405180830381600087803b158015612d2c57600080fd5b505af1158015612d40573d6000803e3d6000fd5b505050505050565b6000600367ffffffffffffffff811115612d6557612d64613979565b5b604051908082528060200260200182016040528015612d935781602001602082028036833780820191505090505b5090503081600081518110612dab57612daa6139a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612e1c57612e1b6139a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125460086000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612f34577f0000000000000000000000005026f006b85729a8b14553fae6af249ad16c9aab81600281518110612ef557612ef46139a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612fa6565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600281518110612f6b57612f6a6139a8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d7958360008430426040518663ffffffff1660e01b815260040161300a959493929190613ad0565b600060405180830381600087803b15801561302457600080fd5b505af1158015613038573d6000803e3d6000fd5b505050505050565b60008083118290613087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307e919061313c565b60405180910390fd5b506000838561309691906138b6565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156130dd5780820151818401526020810190506130c2565b838111156130ec576000848401525b50505050565b6000601f19601f8301169050919050565b600061310e826130a3565b61311881856130ae565b93506131288185602086016130bf565b613131816130f2565b840191505092915050565b600060208201905081810360008301526131568184613103565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131898261315e565b9050919050565b6131998161317e565b82525050565b60006020820190506131b46000830184613190565b92915050565b600080fd5b6131c88161317e565b81146131d357600080fd5b50565b6000813590506131e5816131bf565b92915050565b6000819050919050565b6131fe816131eb565b811461320957600080fd5b50565b60008135905061321b816131f5565b92915050565b60008060408385031215613238576132376131ba565b5b6000613246858286016131d6565b92505060206132578582860161320c565b9150509250929050565b60008115159050919050565b61327681613261565b82525050565b6000602082019050613291600083018461326d565b92915050565b6000602082840312156132ad576132ac6131ba565b5b60006132bb848285016131d6565b91505092915050565b6132cd816131eb565b82525050565b60006020820190506132e860008301846132c4565b92915050565b600080600060608486031215613307576133066131ba565b5b6000613315868287016131d6565b9350506020613326868287016131d6565b92505060406133378682870161320c565b9150509250925092565b600060ff82169050919050565b61335781613341565b82525050565b6000602082019050613372600083018461334e565b92915050565b60006133838261315e565b9050919050565b61339381613378565b82525050565b60006020820190506133ae600083018461338a565b92915050565b600080604083850312156133cb576133ca6131ba565b5b60006133d9858286016131d6565b92505060206133ea858286016131d6565b9150509250929050565b6000819050919050565b600061341961341461340f8461315e565b6133f4565b61315e565b9050919050565b600061342b826133fe565b9050919050565b600061343d82613420565b9050919050565b61344d81613432565b82525050565b60006020820190506134686000830184613444565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006134a46020836130ae565b91506134af8261346e565b602082019050919050565b600060208201905081810360008301526134d381613497565b9050919050565b6000815190506134e9816131f5565b92915050565b600060208284031215613505576135046131ba565b5b6000613513848285016134da565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006135786026836130ae565b91506135838261351c565b604082019050919050565b600060208201905081810360008301526135a78161356b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006135e8826131eb565b91506135f3836131eb565b925082821015613606576136056135ae565b5b828203905092915050565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b60006136476018836130ae565b915061365282613611565b602082019050919050565b600060208201905081810360008301526136768161363a565b9050919050565b7f546f6f206d756368207369720000000000000000000000000000000000000000600082015250565b60006136b3600c836130ae565b91506136be8261367d565b602082019050919050565b600060208201905081810360008301526136e2816136a6565b9050919050565b60006040820190506136fe6000830185613190565b61370b60208301846132c4565b9392505050565b600061371d826131eb565b9150613728836131eb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561375d5761375c6135ae565b5b828201905092915050565b61377181613261565b811461377c57600080fd5b50565b60008151905061378e81613768565b92915050565b6000602082840312156137aa576137a96131ba565b5b60006137b88482850161377f565b91505092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006137f7601b836130ae565b9150613802826137c1565b602082019050919050565b60006020820190508181036000830152613826816137ea565b9050919050565b6000613838826131eb565b9150613843836131eb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561387c5761387b6135ae565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006138c1826131eb565b91506138cc836131eb565b9250826138dc576138db613887565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006139436021836130ae565b915061394e826138e7565b604082019050919050565b6000602082019050818103600083015261397281613936565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006139fc6139f76139f2846139d7565b6133f4565b6131eb565b9050919050565b613a0c816139e1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a478161317e565b82525050565b6000613a598383613a3e565b60208301905092915050565b6000602082019050919050565b6000613a7d82613a12565b613a878185613a1d565b9350613a9283613a2e565b8060005b83811015613ac3578151613aaa8882613a4d565b9750613ab583613a65565b925050600181019050613a96565b5085935050505092915050565b600060a082019050613ae560008301886132c4565b613af26020830187613a03565b8181036040830152613b048186613a72565b9050613b136060830185613190565b613b2060808301846132c4565b969550505050505056fea2646970667358221220f875e4b7cf61c83afaeee0156ff6f0e3e38008f4436cb8c70a81538aa7754de164736f6c63430008090033

Deployed Bytecode Sourcemap

9565:10250:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12282:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9823:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12706:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18881:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12012:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13094:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19171:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12106:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19732;;;;;;;;;;;;;:::i;:::-;;19567:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19321:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12454:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3099:148;;;;;;;;;;;;;:::i;:::-;;19448:111;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10592:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12368:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2886:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19003:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12192:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10724:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12930:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10781:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18588:115;;;;;;;;;;;;;:::i;:::-;;10965:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12565:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18715:154;;;;;;;;;;;;;:::i;:::-;;3255:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10693:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12282:80;12330:13;12354:5;;;;;;;;;;;;;;;;;12347:12;;12282:80;:::o;9823:84::-;;;:::o;12706:216::-;12781:4;12833:6;12798:11;:23;12810:10;12798:23;;;;;;;;;;;;;;;:32;12822:7;12798:32;;;;;;;;;;;;;;;:41;;;;12876:7;12855:37;;12864:10;12855:37;;;12885:6;12855:37;;;;;;:::i;:::-;;;;;;;;12910:4;12903:11;;12706:216;;;;:::o;18881:110::-;3022:12;:10;:12::i;:::-;3012:22;;:6;;;;;;;;;;:22;;;3004:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18950:11:::1;;;;;;;;;;;:25;;;18976:6;18950:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18881:110:::0;:::o;12012:88::-;12067:7;12085:12;;12078:19;;12012:88;:::o;13094:370::-;13194:4;13249:17;13214:11;:19;13226:6;13214:19;;;;;;;;;;;;;;;:31;13234:10;13214:31;;;;;;;;;;;;;;;;:52;13211:186;;13316:69;13352:6;13316:69;;;;;;;;;;;;;;;;;:11;:19;13328:6;13316:19;;;;;;;;;;;;;;;:31;13336:10;13316:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;13282:11;:19;13294:6;13282:19;;;;;;;;;;;;;;;:31;13302:10;13282:31;;;;;;;;;;;;;;;:103;;;;13211:186;13416:40;13430:6;13438:9;13449:6;13416:13;:40::i;:::-;13409:47;;13094:370;;;;;:::o;19171:142::-;19224:7;19251:54;19289:15;19299:4;;;;;;;;;;;19289:9;:15::i;:::-;19251:33;19268:15;19278:4;;;;;;;;;;;19268:9;:15::i;:::-;19251:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;19244:61;;19171:142;:::o;12106:80::-;12158:5;10071:1;12167:16;;12106:80;:::o;19732:::-;3022:12;:10;:12::i;:::-;3012:22;;:6;;;;;;;;;;:22;;;3004:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19799:5:::1;19788:8;;:16;;;;;;;;;;;;;;;;;;19732:80::o:0;19567:157::-;19643:7;19670:11;;;;;;;;;;;:33;;;19704:11;19670:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19663:53;;19567:157;;;:::o;19321:115::-;19373:7;19400:11;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19393:35;;19321:115;:::o;12454:105::-;12520:7;12538:9;:18;12548:7;12538:18;;;;;;;;;;;;;;;;12531:25;;12454:105;;;:::o;3099:148::-;3022:12;:10;:12::i;:::-;3012:22;;:6;;;;;;;;;;:22;;;3004:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3206:1:::1;3169:40;;3190:6;::::0;::::1;;;;;;;;3169:40;;;;;;;;;;;;3237:1;3220:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3099:148::o:0;19448:111::-;19498:7;19525:11;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19518:33;;19448:111;:::o;10592:92::-;;;;;;;;;;;;;:::o;12368:80::-;12420:7;12438;:5;:7::i;:::-;12431:14;;12368:80;:::o;2886:78::-;2923:7;2950:6;;;;;;;;;;;2943:13;;2886:78;:::o;19003:156::-;19077:7;19104:11;;;;;;;;;;;:34;;;19139:11;19104:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19097:54;;19003:156;;;:::o;12192:84::-;12242:13;12266:7;;;;;;;;;;;;;;;;;12259:14;;12192:84;:::o;10724:19::-;;;;;;;;;;;;;:::o;12930:156::-;13010:4;13034:44;13048:10;13060:9;13071:6;13034:13;:44::i;:::-;13027:51;;12930:156;;;;:::o;10781:25::-;;;;:::o;18588:115::-;3022:12;:10;:12::i;:::-;3012:22;;:6;;;;;;;;;;:22;;;3004:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18654:12:::1;18641:10;:25;;;;18691:4;18677:11;;:18;;;;;;;;;;;;;;;;;;18588:115::o:0;10965:71::-;;;;:::o;12565:133::-;12649:7;12667:11;:19;12679:6;12667:19;;;;;;;;;;;;;;;:28;12687:7;12667:28;;;;;;;;;;;;;;;;12660:35;;12565:133;;;;:::o;18715:154::-;18763:11;:23;18775:10;18763:23;;;;;;;;;;;;;;;;;;;;;;;;;18760:53;;;18798:15;18788:7;:25;;;;18760:53;18824:11;;;;;;;;;;;:25;;;18850:10;18824:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18715:154::o;3255:244::-;3022:12;:10;:12::i;:::-;3012:22;;:6;;;;;;;;;;:22;;;3004:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3364:1:::1;3344:22;;:8;:22;;;;3336:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3454:8;3425:38;;3446:6;::::0;::::1;;;;;;;;3425:38;;;;;;;;;;;;3483:8;3474:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3255:244:::0;:::o;10693:24::-;;;;;;;;;;;;;:::o;2463:97::-;2515:7;2542:10;2535:17;;2463:97;:::o;532:192::-;618:7;651:1;646;:6;;654:12;638:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;678:9;694:1;690;:5;;;;:::i;:::-;678:17;;715:1;708:8;;;532:192;;;;;:::o;13472:1718::-;13564:4;13594:7;:5;:7::i;:::-;13585:16;;:6;:16;;;;:39;;;;;13617:7;:5;:7::i;:::-;13605:19;;:9;:19;;;;13585:39;13581:93;;;13634:11;;;;;;;;;;;13626:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13581:93;13731:8;;;;;;;;;;;13727:134;;;13769:7;:5;:7::i;:::-;13761:15;;:6;:15;;;;:38;;;;;13792:7;:5;:7::i;:::-;13780:19;;:9;:19;;;;13761:38;13757:84;;;13818:6;;13810;:14;;13801:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;13757:84;13727:134;13887:4;;;;;;;;;;;13877:14;;:6;:14;;;:46;;;;;13916:6;;;;;;;;;;;13895:28;;:9;:28;;;;13877:46;:73;;;;;13928:11;:22;13940:9;13928:22;;;;;;;;;;;;;;;;;;;;;;;;;13927:23;13877:73;13873:193;;;14012:1;13989:8;:19;13998:9;13989:19;;;;;;;;;;;;;;;;:24;;:64;;14038:15;13989:64;;;14016:8;:19;14025:9;14016:19;;;;;;;;;;;;;;;;13989:64;13967:8;:19;13976:9;13967:19;;;;;;;;;;;;;;;:86;;;;13873:193;14088:6;;;;;;;;;;;14085:58;;;14104:36;14114:6;14122:9;14133:6;14104:9;:36::i;:::-;14097:43;;;;14085:58;14158:11;:19;14170:6;14158:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;14181:11;:22;14193:9;14181:22;;;;;;;;;;;;;;;;;;;;;;;;;14158:45;14155:105;;;14213:44;14231:6;14239:9;14250:6;14213:17;:44::i;:::-;14206:51;;;;14155:105;14272:28;14303:24;14321:4;14303:9;:24::i;:::-;14272:55;;14340:24;14391:29;;14367:20;:53;;14340:80;;14433:22;14458:32;14472:6;14480:9;14458:13;:32::i;:::-;:67;;14519:6;14458:67;;;14493:23;14501:6;14509;14493:7;:23::i;:::-;14458:67;14433:92;;14538:19;14561;:38;;;;;14595:4;;;;;;;;;;;14584:15;;:9;:15;;;14561:38;:70;;;;;14630:1;14603:24;14621:4;14603:9;:24::i;:::-;:28;14561:70;14538:94;;14646:14;14643:33;;;14663:10;:8;:10::i;:::-;14643:33;14708:53;14730:6;14708:53;;;;;;;;;;;;;;;;;:9;:17;14718:6;14708:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;14688:9;:17;14698:6;14688:17;;;;;;;;;;;;;;;:73;;;;14797:40;14822:14;14797:9;:20;14807:9;14797:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;14774:9;:20;14784:9;14774:20;;;;;;;;;;;;;;;:63;;;;14863:4;;;;;;;;;;;14853:14;;:6;:14;;;;:43;;;;;14872:16;:24;14889:6;14872:24;;;;;;;;;;;;;;;;;;;;;;;;;14871:25;14853:43;14850:114;;;14903:11;;;;;;;;;;;:20;;;14924:6;14932:9;:17;14942:6;14932:17;;;;;;;;;;;;;;;;14903:47;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14899:63;;;;;;14850:114;14990:4;;;;;;;;;;;14977:17;;:9;:17;;;;:49;;;;;14999:16;:27;15016:9;14999:27;;;;;;;;;;;;;;;;;;;;;;;;;14998:28;14977:49;14974:126;;;15033:11;;;;;;;;;;;:20;;;15054:9;15065;:20;15075:9;15065:20;;;;;;;;;;;;;;;;15033:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15029:69;;;;;;14974:126;15134:9;15117:43;;15126:6;15117:43;;;15145:14;15117:43;;;;;;:::i;:::-;;;;;;;;15178:4;15171:11;;;;;;13472:1718;;;;;;:::o;390:136::-;448:7;475:43;479:1;482;475:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;468:50;;390:136;;;;:::o;15202:325::-;15290:4;15327:53;15349:6;15327:53;;;;;;;;;;;;;;;;;:9;:17;15337:6;15327:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;15307:9;:17;15317:6;15307:17;;;;;;;;;;;;;;;:73;;;;15414:32;15439:6;15414:9;:20;15424:9;15414:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;15391:9;:20;15401:9;15391:20;;;;;;;;;;;;;;;:55;;;;15479:9;15462:35;;15471:6;15462:35;;;15490:6;15462:35;;;;;;:::i;:::-;;;;;;;;15515:4;15508:11;;15202:325;;;;;:::o;17835:371::-;17931:4;17948:21;17972:9;:17;17982:6;17972:17;;;;;;;;;;;;;;;;17948:41;;18063:6;18047:13;:22;18027:9;:17;18037:6;18027:17;;;;;;;;;;;;;;;:42;;;;18117:6;18093:9;:20;18103:9;18093:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;18158:9;18141:35;;18150:6;18141:35;;;18169:6;18141:35;;;;;;:::i;:::-;;;;;;;;18194:4;18187:11;;;17835:371;;;;;:::o;15535:321::-;15611:4;15632:11;:19;15644:6;15632:19;;;;;;;;;;;;;;;;;;;;;;;;;15631:20;:47;;;;;15656:11;:22;15668:9;15656:22;;;;;;;;;;;;;;;;;;;;;;;;;15655:23;15631:47;:68;;;;;15695:4;;;;;;;;;;;15682:17;;:9;:17;;;15631:68;:79;;;;;15704:6;;;;;;;;;;;15703:7;15631:79;15628:108;;;15729:6;15712;;:24;;;;;;;;;;;;;;;;;;15628:108;15758:11;:19;15770:6;15758:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;15781:11;:22;15793:9;15781:22;;;;;;;;;;;;;;;;;;;;;;;;;15758:45;15756:48;:90;;;;;15820:4;;;;;;;;;;;15810:14;;:6;:14;;;:35;;;;15841:4;;;;;;;;;;;15828:17;;:9;:17;;;15810:35;15756:90;15747:101;;15535:321;;;;:::o;15864:354::-;15931:7;15951:17;15991:40;16016:14;;15991:20;16002:8;;15991:6;:10;;:20;;;;:::i;:::-;:24;;:40;;;;:::i;:::-;15979:52;;16069:39;16098:9;16069;:24;16087:4;16069:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;16042:9;:24;16060:4;16042:24;;;;;;;;;;;;;;;:66;;;;16149:4;16124:42;;16133:6;16124:42;;;16156:9;16124:42;;;;;;:::i;:::-;;;;;;;;16189:21;16200:9;16189:6;:10;;:21;;;;:::i;:::-;16182:28;;;15864:354;;;;:::o;16229:558::-;11154:4;11145:6;;:13;;;;;;;;;;;;;;;;;;16278:20:::1;16301:24;16319:4;16301:9;:24::i;:::-;16278:47;;16346:44;16363:26;16387:1;16363:19;16380:1;16363:12;:16;;:19;;;;:::i;:::-;:23;;:26;;;;:::i;:::-;16346:16;:44::i;:::-;16401:40;16421:19;16438:1;16421:12;:16;;:19;;;;:::i;:::-;16401;:40::i;:::-;16454:17;16481:5;16474:23;;;16506:4;16474:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16454:58;;16525:12;16547:5;16540:22;;;16571:11;;;;;;;;;;;16585:9;16540:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16525:70;;16612:7;16608:82;;;16636:11;;;;;;;;;;;:19;;;16656:9;16636:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16608:82;16723:15;;;;;;;;;;;16715:33;;:56;16749:21;16715:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16267:520;;;11172:5:::0;11163:6;;:14;;;;;;;;;;;;;;;;;;16229:558::o;203:181::-;261:7;281:9;297:1;293;:5;;;;:::i;:::-;281:17;;322:1;317;:6;;309:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;375:1;368:8;;;203:181;;;;:::o;730:250::-;788:7;817:1;812;:6;808:47;;;842:1;835:8;;;;808:47;867:9;883:1;879;:5;;;;:::i;:::-;867:17;;912:1;907;903;:5;;;;:::i;:::-;:10;895:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;971:1;964:8;;;730:250;;;;;:::o;986:132::-;1044:7;1071:39;1075:1;1078;1071:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1064:46;;986:132;;;;:::o;17340:487::-;17466:21;17504:1;17490:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17466:40;;17535:4;17517;17522:1;17517:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17561:4;;;;;;;;;;;17551;17556:1;17551:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;17604:6;;;;;;;;;;;:57;;;17676:11;17702:1;17746:4;17773;17793:15;17604:215;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17395:432;17340:487;:::o;16795:537::-;16864:21;16902:1;16888:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16864:40;;16933:4;16915;16920:1;16915:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;16959:4;;;;;;;;;;;16949;16954:1;16949:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;16999:7;;16979:8;:16;16988:6;;;;;;;;;;;16979:16;;;;;;;;;;;;;;;;:27;16976:120;;17032:5;17022:4;17027:1;17022:7;;;;;;;;:::i;:::-;;;;;;;:15;;;;;;;;;;;16976:120;;;17078:6;;;;;;;;;;;17068:4;17073:1;17068:7;;;;;;;;:::i;:::-;;;;;;;:16;;;;;;;;;;;16976:120;17134:6;;;;;;;;;;;:60;;;17209:11;17235:1;17251:4;17278;17298:15;17134:190;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16853:479;16795:537;:::o;1124:345::-;1210:7;1309:1;1305;:5;1312:12;1297:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1336:9;1352:1;1348;:5;;;;:::i;:::-;1336:17;;1460:1;1453:8;;;1124:345;;;;;:::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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:126::-;1434:7;1474:42;1467:5;1463:54;1452:65;;1397:126;;;:::o;1529:96::-;1566:7;1595:24;1613:5;1595:24;:::i;:::-;1584:35;;1529:96;;;:::o;1631:118::-;1718:24;1736:5;1718:24;:::i;:::-;1713:3;1706:37;1631:118;;:::o;1755:222::-;1848:4;1886:2;1875:9;1871:18;1863:26;;1899:71;1967:1;1956:9;1952:17;1943:6;1899:71;:::i;:::-;1755:222;;;;:::o;2064:117::-;2173:1;2170;2163:12;2310:122;2383:24;2401:5;2383:24;:::i;:::-;2376:5;2373:35;2363:63;;2422:1;2419;2412:12;2363:63;2310:122;:::o;2438:139::-;2484:5;2522:6;2509:20;2500:29;;2538:33;2565:5;2538:33;:::i;:::-;2438:139;;;;:::o;2583:77::-;2620:7;2649:5;2638:16;;2583:77;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:329::-;3905:6;3954:2;3942:9;3933:7;3929:23;3925:32;3922:119;;;3960:79;;:::i;:::-;3922:119;4080:1;4105:53;4150:7;4141:6;4130:9;4126:22;4105:53;:::i;:::-;4095:63;;4051:117;3846:329;;;;:::o;4181:118::-;4268:24;4286:5;4268:24;:::i;:::-;4263:3;4256:37;4181:118;;:::o;4305:222::-;4398:4;4436:2;4425:9;4421:18;4413:26;;4449:71;4517:1;4506:9;4502:17;4493:6;4449:71;:::i;:::-;4305:222;;;;:::o;4533:619::-;4610:6;4618;4626;4675:2;4663:9;4654:7;4650:23;4646:32;4643:119;;;4681:79;;:::i;:::-;4643:119;4801:1;4826:53;4871:7;4862:6;4851:9;4847:22;4826:53;:::i;:::-;4816:63;;4772:117;4928:2;4954:53;4999:7;4990:6;4979:9;4975:22;4954:53;:::i;:::-;4944:63;;4899:118;5056:2;5082:53;5127:7;5118:6;5107:9;5103:22;5082:53;:::i;:::-;5072:63;;5027:118;4533:619;;;;;:::o;5158:86::-;5193:7;5233:4;5226:5;5222:16;5211:27;;5158:86;;;:::o;5250:112::-;5333:22;5349:5;5333:22;:::i;:::-;5328:3;5321:35;5250:112;;:::o;5368:214::-;5457:4;5495:2;5484:9;5480:18;5472:26;;5508:67;5572:1;5561:9;5557:17;5548:6;5508:67;:::i;:::-;5368:214;;;;:::o;5588:104::-;5633:7;5662:24;5680:5;5662:24;:::i;:::-;5651:35;;5588:104;;;:::o;5698:142::-;5801:32;5827:5;5801:32;:::i;:::-;5796:3;5789:45;5698:142;;:::o;5846:254::-;5955:4;5993:2;5982:9;5978:18;5970:26;;6006:87;6090:1;6079:9;6075:17;6066:6;6006:87;:::i;:::-;5846:254;;;;:::o;6106:474::-;6174:6;6182;6231:2;6219:9;6210:7;6206:23;6202:32;6199:119;;;6237:79;;:::i;:::-;6199:119;6357:1;6382:53;6427:7;6418:6;6407:9;6403:22;6382:53;:::i;:::-;6372:63;;6328:117;6484:2;6510:53;6555:7;6546:6;6535:9;6531:22;6510:53;:::i;:::-;6500:63;;6455:118;6106:474;;;;;:::o;6586:60::-;6614:3;6635:5;6628:12;;6586:60;;;:::o;6652:142::-;6702:9;6735:53;6753:34;6762:24;6780:5;6762:24;:::i;:::-;6753:34;:::i;:::-;6735:53;:::i;:::-;6722:66;;6652:142;;;:::o;6800:126::-;6850:9;6883:37;6914:5;6883:37;:::i;:::-;6870:50;;6800:126;;;:::o;6932:144::-;7000:9;7033:37;7064:5;7033:37;:::i;:::-;7020:50;;6932:144;;;:::o;7082:167::-;7187:55;7236:5;7187:55;:::i;:::-;7182:3;7175:68;7082:167;;:::o;7255:258::-;7366:4;7404:2;7393:9;7389:18;7381:26;;7417:89;7503:1;7492:9;7488:17;7479:6;7417:89;:::i;:::-;7255:258;;;;:::o;7519:182::-;7659:34;7655:1;7647:6;7643:14;7636:58;7519:182;:::o;7707:366::-;7849:3;7870:67;7934:2;7929:3;7870:67;:::i;:::-;7863:74;;7946:93;8035:3;7946:93;:::i;:::-;8064:2;8059:3;8055:12;8048:19;;7707:366;;;:::o;8079:419::-;8245:4;8283:2;8272:9;8268:18;8260:26;;8332:9;8326:4;8322:20;8318:1;8307:9;8303:17;8296:47;8360:131;8486:4;8360:131;:::i;:::-;8352:139;;8079:419;;;:::o;8504:143::-;8561:5;8592:6;8586:13;8577:22;;8608:33;8635:5;8608:33;:::i;:::-;8504:143;;;;:::o;8653:351::-;8723:6;8772:2;8760:9;8751:7;8747:23;8743:32;8740:119;;;8778:79;;:::i;:::-;8740:119;8898:1;8923:64;8979:7;8970:6;8959:9;8955:22;8923:64;:::i;:::-;8913:74;;8869:128;8653:351;;;;:::o;9010:225::-;9150:34;9146:1;9138:6;9134:14;9127:58;9219:8;9214:2;9206:6;9202:15;9195:33;9010:225;:::o;9241:366::-;9383:3;9404:67;9468:2;9463:3;9404:67;:::i;:::-;9397:74;;9480:93;9569:3;9480:93;:::i;:::-;9598:2;9593:3;9589:12;9582:19;;9241:366;;;:::o;9613:419::-;9779:4;9817:2;9806:9;9802:18;9794:26;;9866:9;9860:4;9856:20;9852:1;9841:9;9837:17;9830:47;9894:131;10020:4;9894:131;:::i;:::-;9886:139;;9613:419;;;:::o;10038:180::-;10086:77;10083:1;10076:88;10183:4;10180:1;10173:15;10207:4;10204:1;10197:15;10224:191;10264:4;10284:20;10302:1;10284:20;:::i;:::-;10279:25;;10318:20;10336:1;10318:20;:::i;:::-;10313:25;;10357:1;10354;10351:8;10348:34;;;10362:18;;:::i;:::-;10348:34;10407:1;10404;10400:9;10392:17;;10224:191;;;;:::o;10421:174::-;10561:26;10557:1;10549:6;10545:14;10538:50;10421:174;:::o;10601:366::-;10743:3;10764:67;10828:2;10823:3;10764:67;:::i;:::-;10757:74;;10840:93;10929:3;10840:93;:::i;:::-;10958:2;10953:3;10949:12;10942:19;;10601:366;;;:::o;10973:419::-;11139:4;11177:2;11166:9;11162:18;11154:26;;11226:9;11220:4;11216:20;11212:1;11201:9;11197:17;11190:47;11254:131;11380:4;11254:131;:::i;:::-;11246:139;;10973:419;;;:::o;11398:162::-;11538:14;11534:1;11526:6;11522:14;11515:38;11398:162;:::o;11566:366::-;11708:3;11729:67;11793:2;11788:3;11729:67;:::i;:::-;11722:74;;11805:93;11894:3;11805:93;:::i;:::-;11923:2;11918:3;11914:12;11907:19;;11566:366;;;:::o;11938:419::-;12104:4;12142:2;12131:9;12127:18;12119:26;;12191:9;12185:4;12181:20;12177:1;12166:9;12162:17;12155:47;12219:131;12345:4;12219:131;:::i;:::-;12211:139;;11938:419;;;:::o;12363:332::-;12484:4;12522:2;12511:9;12507:18;12499:26;;12535:71;12603:1;12592:9;12588:17;12579:6;12535:71;:::i;:::-;12616:72;12684:2;12673:9;12669:18;12660:6;12616:72;:::i;:::-;12363:332;;;;;:::o;12701:305::-;12741:3;12760:20;12778:1;12760:20;:::i;:::-;12755:25;;12794:20;12812:1;12794:20;:::i;:::-;12789:25;;12948:1;12880:66;12876:74;12873:1;12870:81;12867:107;;;12954:18;;:::i;:::-;12867:107;12998:1;12995;12991:9;12984:16;;12701:305;;;;:::o;13012:116::-;13082:21;13097:5;13082:21;:::i;:::-;13075:5;13072:32;13062:60;;13118:1;13115;13108:12;13062:60;13012:116;:::o;13134:137::-;13188:5;13219:6;13213:13;13204:22;;13235:30;13259:5;13235:30;:::i;:::-;13134:137;;;;:::o;13277:345::-;13344:6;13393:2;13381:9;13372:7;13368:23;13364:32;13361:119;;;13399:79;;:::i;:::-;13361:119;13519:1;13544:61;13597:7;13588:6;13577:9;13573:22;13544:61;:::i;:::-;13534:71;;13490:125;13277:345;;;;:::o;13628:177::-;13768:29;13764:1;13756:6;13752:14;13745:53;13628:177;:::o;13811:366::-;13953:3;13974:67;14038:2;14033:3;13974:67;:::i;:::-;13967:74;;14050:93;14139:3;14050:93;:::i;:::-;14168:2;14163:3;14159:12;14152:19;;13811:366;;;:::o;14183:419::-;14349:4;14387:2;14376:9;14372:18;14364:26;;14436:9;14430:4;14426:20;14422:1;14411:9;14407:17;14400:47;14464:131;14590:4;14464:131;:::i;:::-;14456:139;;14183:419;;;:::o;14608:348::-;14648:7;14671:20;14689:1;14671:20;:::i;:::-;14666:25;;14705:20;14723:1;14705:20;:::i;:::-;14700:25;;14893:1;14825:66;14821:74;14818:1;14815:81;14810:1;14803:9;14796:17;14792:105;14789:131;;;14900:18;;:::i;:::-;14789:131;14948:1;14945;14941:9;14930:20;;14608:348;;;;:::o;14962:180::-;15010:77;15007:1;15000:88;15107:4;15104:1;15097:15;15131:4;15128:1;15121:15;15148:185;15188:1;15205:20;15223:1;15205:20;:::i;:::-;15200:25;;15239:20;15257:1;15239:20;:::i;:::-;15234:25;;15278:1;15268:35;;15283:18;;:::i;:::-;15268:35;15325:1;15322;15318:9;15313:14;;15148:185;;;;:::o;15339:220::-;15479:34;15475:1;15467:6;15463:14;15456:58;15548:3;15543:2;15535:6;15531:15;15524:28;15339:220;:::o;15565:366::-;15707:3;15728:67;15792:2;15787:3;15728:67;:::i;:::-;15721:74;;15804:93;15893:3;15804:93;:::i;:::-;15922:2;15917:3;15913:12;15906:19;;15565:366;;;:::o;15937:419::-;16103:4;16141:2;16130:9;16126:18;16118:26;;16190:9;16184:4;16180:20;16176:1;16165:9;16161:17;16154:47;16218:131;16344:4;16218:131;:::i;:::-;16210:139;;15937:419;;;:::o;16362:180::-;16410:77;16407:1;16400:88;16507:4;16504:1;16497:15;16531:4;16528:1;16521:15;16548:180;16596:77;16593:1;16586:88;16693:4;16690:1;16683:15;16717:4;16714:1;16707:15;16734:85;16779:7;16808:5;16797:16;;16734:85;;;:::o;16825:158::-;16883:9;16916:61;16934:42;16943:32;16969:5;16943:32;:::i;:::-;16934:42;:::i;:::-;16916:61;:::i;:::-;16903:74;;16825:158;;;:::o;16989:147::-;17084:45;17123:5;17084:45;:::i;:::-;17079:3;17072:58;16989:147;;:::o;17142:114::-;17209:6;17243:5;17237:12;17227:22;;17142:114;;;:::o;17262:184::-;17361:11;17395:6;17390:3;17383:19;17435:4;17430:3;17426:14;17411:29;;17262:184;;;;:::o;17452:132::-;17519:4;17542:3;17534:11;;17572:4;17567:3;17563:14;17555:22;;17452:132;;;:::o;17590:108::-;17667:24;17685:5;17667:24;:::i;:::-;17662:3;17655:37;17590:108;;:::o;17704:179::-;17773:10;17794:46;17836:3;17828:6;17794:46;:::i;:::-;17872:4;17867:3;17863:14;17849:28;;17704:179;;;;:::o;17889:113::-;17959:4;17991;17986:3;17982:14;17974:22;;17889:113;;;:::o;18038:732::-;18157:3;18186:54;18234:5;18186:54;:::i;:::-;18256:86;18335:6;18330:3;18256:86;:::i;:::-;18249:93;;18366:56;18416:5;18366:56;:::i;:::-;18445:7;18476:1;18461:284;18486:6;18483:1;18480:13;18461:284;;;18562:6;18556:13;18589:63;18648:3;18633:13;18589:63;:::i;:::-;18582:70;;18675:60;18728:6;18675:60;:::i;:::-;18665:70;;18521:224;18508:1;18505;18501:9;18496:14;;18461:284;;;18465:14;18761:3;18754:10;;18162:608;;;18038:732;;;;:::o;18776:831::-;19039:4;19077:3;19066:9;19062:19;19054:27;;19091:71;19159:1;19148:9;19144:17;19135:6;19091:71;:::i;:::-;19172:80;19248:2;19237:9;19233:18;19224:6;19172:80;:::i;:::-;19299:9;19293:4;19289:20;19284:2;19273:9;19269:18;19262:48;19327:108;19430:4;19421:6;19327:108;:::i;:::-;19319:116;;19445:72;19513:2;19502:9;19498:18;19489:6;19445:72;:::i;:::-;19527:73;19595:3;19584:9;19580:19;19571:6;19527:73;:::i;:::-;18776:831;;;;;;;;:::o

Swarm Source

ipfs://4c92af755fa4eaf6c988c7979d8109c70ccf6b0a487eb82fc5d77ae2da995b3f
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.