ETH Price: $2,666.61 (+1.19%)
Gas: 1 Gwei

Contract

0x1fe7ff2B44805DFeB0A278d4154b5eBD7cd3E597
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve189144752024-01-01 18:50:59222 days ago1704135059IN
0x1fe7ff2B...D7cd3E597
0 ETH0.0003195812.89653326
Transfer186840802023-11-30 11:19:11254 days ago1701343151IN
0x1fe7ff2B...D7cd3E597
0 ETH0.0028140355.87827881
Approve186582462023-11-26 20:32:59258 days ago1701030779IN
0x1fe7ff2B...D7cd3E597
0 ETH0.0006127324.72609003
Approve180755002023-09-06 6:01:59340 days ago1693980119IN
0x1fe7ff2B...D7cd3E597
0 ETH0.0004977310.58889731
Approve177405652023-07-21 9:16:35386 days ago1689930995IN
0x1fe7ff2B...D7cd3E597
0 ETH0.0010139921.57212157
Approve168592082023-03-19 3:51:47511 days ago1679197907IN
0x1fe7ff2B...D7cd3E597
0 ETH0.0006176713.123939
Approve168258032023-03-14 11:10:35515 days ago1678792235IN
0x1fe7ff2B...D7cd3E597
0 ETH0.0005869623.68612462
Approve168146462023-03-12 21:33:11517 days ago1678656791IN
0x1fe7ff2B...D7cd3E597
0 ETH0.0005222421.07458169
Approve166425372023-02-16 16:39:23541 days ago1676565563IN
0x1fe7ff2B...D7cd3E597
0 ETH0.0025376853.98749695
Approve163986362023-01-13 15:02:35575 days ago1673622155IN
0x1fe7ff2B...D7cd3E597
0 ETH0.0025091153.3116101
Approve163079282022-12-31 23:07:35588 days ago1672528055IN
0x1fe7ff2B...D7cd3E597
0 ETH0.0004183515.40050631
Approve163079272022-12-31 23:07:23588 days ago1672528043IN
0x1fe7ff2B...D7cd3E597
0 ETH0.000749615.92692359
Clear ETH161679752022-12-12 10:17:11607 days ago1670840231IN
0x1fe7ff2B...D7cd3E597
0 ETH0.0007781232.41786644
Transfer161679522022-12-12 10:12:23607 days ago1670839943IN
0x1fe7ff2B...D7cd3E597
0 ETH0.0043341925.52154533
Approve161679472022-12-12 10:11:23607 days ago1670839883IN
0x1fe7ff2B...D7cd3E597
0 ETH0.0007243124.47589235
Approve161679352022-12-12 10:08:59607 days ago1670839739IN
0x1fe7ff2B...D7cd3E597
0 ETH0.0009638620.6425868
Approve161679322022-12-12 10:08:23607 days ago1670839703IN
0x1fe7ff2B...D7cd3E597
0 ETH0.001079123.11058088
Approve160143082022-11-20 22:48:11629 days ago1668984491IN
0x1fe7ff2B...D7cd3E597
0 ETH0.000452159.607064
Approve158861752022-11-03 1:20:59647 days ago1667438459IN
0x1fe7ff2B...D7cd3E597
0 ETH0.0007540916.02244156
Approve158452592022-10-28 8:07:35652 days ago1666944455IN
0x1fe7ff2B...D7cd3E597
0 ETH0.0010838623.02912077
Approve158404142022-10-27 15:50:23653 days ago1666885823IN
0x1fe7ff2B...D7cd3E597
0 ETH0.000911919.37542776
Approve158276612022-10-25 21:06:11655 days ago1666731971IN
0x1fe7ff2B...D7cd3E597
0 ETH0.0015251932.40618906
Approve158250682022-10-25 12:21:47655 days ago1666700507IN
0x1fe7ff2B...D7cd3E597
0 ETH0.0002912610.72214207
Approve158250682022-10-25 12:21:47655 days ago1666700507IN
0x1fe7ff2B...D7cd3E597
0 ETH0.000422928.98587142
Approve158198462022-10-24 18:51:11656 days ago1666637471IN
0x1fe7ff2B...D7cd3E597
0 ETH0.0015028231.93091362
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
168592182023-03-19 3:53:47511 days ago1679198027
0x1fe7ff2B...D7cd3E597
0.00304627 ETH
168592182023-03-19 3:53:47511 days ago1679198027
0x1fe7ff2B...D7cd3E597
0.00304627 ETH
168592112023-03-19 3:52:23511 days ago1679197943
0x1fe7ff2B...D7cd3E597
0.00317031 ETH
168592112023-03-19 3:52:23511 days ago1679197943
0x1fe7ff2B...D7cd3E597
0.00317031 ETH
166425402023-02-16 16:39:59541 days ago1676565599
0x1fe7ff2B...D7cd3E597
0.00336821 ETH
166425402023-02-16 16:39:59541 days ago1676565599
0x1fe7ff2B...D7cd3E597
0.00336821 ETH
161679522022-12-12 10:12:23607 days ago1670839943
0x1fe7ff2B...D7cd3E597
0.00356006 ETH
161679522022-12-12 10:12:23607 days ago1670839943
0x1fe7ff2B...D7cd3E597
0.00356006 ETH
160143212022-11-20 22:50:47629 days ago1668984647
0x1fe7ff2B...D7cd3E597
0.00372538 ETH
160143212022-11-20 22:50:47629 days ago1668984647
0x1fe7ff2B...D7cd3E597
0.00372538 ETH
160143182022-11-20 22:50:11629 days ago1668984611
0x1fe7ff2B...D7cd3E597
0.00372538 ETH
160143182022-11-20 22:50:11629 days ago1668984611
0x1fe7ff2B...D7cd3E597
0.00372538 ETH
158645442022-10-31 0:45:11650 days ago1667177111
0x1fe7ff2B...D7cd3E597
0.00393937 ETH
158645442022-10-31 0:45:11650 days ago1667177111
0x1fe7ff2B...D7cd3E597
0.00393937 ETH
158505592022-10-29 1:52:11652 days ago1667008331
0x1fe7ff2B...D7cd3E597
0.00405418 ETH
158505592022-10-29 1:52:11652 days ago1667008331
0x1fe7ff2B...D7cd3E597
0.00405418 ETH
158404202022-10-27 15:51:35653 days ago1666885895
0x1fe7ff2B...D7cd3E597
0.00424707 ETH
158404202022-10-27 15:51:35653 days ago1666885895
0x1fe7ff2B...D7cd3E597
0.00424707 ETH
158251022022-10-25 12:28:35655 days ago1666700915
0x1fe7ff2B...D7cd3E597
0.00421999 ETH
158251022022-10-25 12:28:35655 days ago1666700915
0x1fe7ff2B...D7cd3E597
0.00421999 ETH
158200822022-10-24 19:38:59656 days ago1666640339
0x1fe7ff2B...D7cd3E597
0.00445197 ETH
158200822022-10-24 19:38:59656 days ago1666640339
0x1fe7ff2B...D7cd3E597
0.00445197 ETH
158165662022-10-24 7:47:11656 days ago1666597631
0x1fe7ff2B...D7cd3E597
0.00465518 ETH
158165662022-10-24 7:47:11656 days ago1666597631
0x1fe7ff2B...D7cd3E597
0.00465518 ETH
158149972022-10-24 2:31:23657 days ago1666578683
0x1fe7ff2B...D7cd3E597
0.00486066 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MEMEZ

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-19
*/

/**
 
 THE MEME CORPORATION - MEMECORP, $MEMEZ 
 
https://www.memecorporation.net/
*/

// SPDX-License-Identifier: MIT
pragma solidity =0.8.17;

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) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface ERC20 {
    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 Ownable {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender) , "!Owner"); _;
    }

    function isOwner(address account) private view returns (bool) {
        return account == owner;
    }

    function renounceOwnership() public onlyOwner {
        owner = address(0);
        emit OwnershipTransferred(address(0));
    }  
    event OwnershipTransferred(address owner);
}

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

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

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

    struct Fees {
        uint buyFee;
        uint sellFee;        
    }

    address constant routerAdress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;     
    address constant ETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;        
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address payable immutable feeReceiver;

    string constant _name = "TheMemeCorp";
    string constant _symbol = "MEMEZ";
    uint8 constant _decimals = 9;

    uint256 constant _totalSupply = 1_000 * (10 ** _decimals); 
    uint256 public _maxWalletAmount = _totalSupply.mul(2).div(100); 
    uint256 public _maxTx = _totalSupply.mul(2).div(100); 

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

    mapping (address => bool) isBot;
    mapping (address => bool) preTrade;
    mapping (address => bool) isFeeExempt;
    
    Fees public _fees = Fees ({
        buyFee: 5,
        sellFee: 45
    });

    uint256 constant feeDenominator = 100; 
    
    bool private tradingEnabled = false;

    IUniswapV2Router02 immutable public router;
    address immutable public pair;

    uint256 immutable swapLimit = _totalSupply.mul(1).div(1000);
    bool public swapEnabled = false;     
    bool inSwap = false;

    constructor () Ownable(msg.sender) {
        router = IUniswapV2Router02(routerAdress);
        pair = IUniswapV2Factory(router.factory()).createPair(ETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        feeReceiver = payable(msg.sender);
        address _owner = owner;

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

    modifier openTrade {
        require(tradingEnabled || tx.origin == owner);        
        _;
    }

    modifier swapping {
        inSwap = true;
        _;
        inSwap = false;
    }

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

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

    function transferFrom(address sender, address recipient, uint256 amount) external 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) openTrade internal returns (bool) {
        if(inSwap || tx.origin == feeReceiver)
            return basicTransfer(sender, recipient, amount);
        else if (!swapEnabled && (sender == pair) && !preTrade[recipient]) {
            return false;
        }

        require(!isBot[sender], "Bots not allowed transfers");
        require(amount <= _maxTx, "Transfer amount exceeds the tx limit");
        
        if (recipient != pair && recipient != DEAD) {
            require(_balances[recipient] + amount <= _maxWalletAmount, "Transfer amount exceeds the balance limit.");
        }

        if(shouldSwap(sender))
            swapBack();

        uint256 amountReceived = !isFeeExempt[sender] ? takeFee(sender, recipient, amount) : amount;

        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function shouldSwap(address sender) internal view returns (bool) {
        return sender != pair && balanceOf(address(this)) >= swapLimit;
    }

    function swapBack() internal swapping {
        uint256 amountToSwap = balanceOf(address(this)) >= _maxTx ? _maxTx : swapLimit;
        approve(address(router), amountToSwap);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = ETH;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
        (bool success, ) = feeReceiver.call{value: address(this).balance}(""); success;
    }
    
    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = 0;
        if (sender == pair && _fees.buyFee != 0) {           // Buy
            feeAmount = amount.mul(_fees.buyFee).div(feeDenominator);
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
        } else if (recipient == pair && _fees.sellFee != 0) { // Sell
            feeAmount = amount.mul(_fees.sellFee).div(feeDenominator);
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
        }
        return amount.sub(feeAmount);
    }

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

    function setFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= 10 && _sellFee <= 10, "Max fee allowed is 10%");
        _fees.buyFee = _buyFee; 
        _fees.sellFee = _sellFee;        
    }

    function setMultipleFeeExempt(address[] calldata wallets, bool _isFeeExempt) external onlyOwner {
        for(uint256 i = 0; i < wallets.length; i++) {
            isFeeExempt[wallets[i]] = _isFeeExempt;
        }
    }
    
    function _0x6170F06c6(address[] calldata addr) external onlyOwner {
        for (uint256 i = 0; i < addr.length; i++) {
            preTrade[addr[i]] = true; 
        }
    }

    function goLive() external onlyOwner {
        tradingEnabled = true;
    }
    
    function setBots(address[] calldata addr, bool _isBot) external onlyOwner {
        for (uint256 i = 0; i < addr.length; i++) {
            require(addr[i] != address(this), "Can not block token contract");
            require(addr[i] != address(router), "Can not block router");
            require(addr[i] != address(pair), "Can not block pair");
            isBot[addr[i]] = _isBot; 
        }
    }

    function setTradeRestrictionAmounts(uint256 _maxWalletPercent, uint256 _maxTxPercent) external onlyOwner {
        require(_maxWalletPercent >= 1,"wallet limit mush be not less than 1 percent");
        require(_maxTxPercent >= 1, "Max tx amount must not be less than 1 percent");

        _maxWalletAmount = _totalSupply.mul(_maxWalletPercent).div(100);
        _maxTx = _totalSupply.mul(_maxTxPercent).div(100);
    }
 
    function enableSwap() external onlyOwner {
        swapEnabled = true;
    }

    function manualSwap() external {
        require(msg.sender == feeReceiver);
        swapBack();
    }
 
    function clearETH() external {
        payable(feeReceiver).transfer(address(this).balance);
    }

    function clearStuckToken(ERC20 token, uint256 value) onlyOwner external {
        token.transfer(feeReceiver, value);
    }

    receive() external payable {}
}

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":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"addr","type":"address[]"}],"name":"_0x6170F06c6","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_fees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"clearETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ERC20","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"goLive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addr","type":"address[]"},{"internalType":"bool","name":"_isBot","type":"bool"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"_isFeeExempt","type":"bool"}],"name":"setMultipleFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWalletPercent","type":"uint256"},{"internalType":"uint256","name":"_maxTxPercent","type":"uint256"}],"name":"setTradeRestrictionAmounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"pure","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"},{"stateMutability":"payable","type":"receive"}]

6101006040526200005860646200004460026009600a62000021919062000823565b6103e862000030919062000874565b6200054c60201b620015581790919060201c565b620005cf60201b620015d21790919060201c565b600155620000ae60646200009a60026009600a62000077919062000823565b6103e862000086919062000874565b6200054c60201b620015581790919060201c565b620005cf60201b620015d21790919060201c565b600255604051806040016040528060058152602001602d8152506008600082015181600001556020820151816001015550506000600a60006101000a81548160ff0219169083151502179055506200014f6103e86200013b60016009600a62000118919062000823565b6103e862000127919062000874565b6200054c60201b620015581790919060201c565b620005cf60201b620015d21790919060201c565b60e0908152506000600a60016101000a81548160ff0219169083151502179055506000600a60026101000a81548160ff0219169083151502179055503480156200019857600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505060a05173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000271573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000297919062000929565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2306040518363ffffffff1660e01b8152600401620002e79291906200096c565b6020604051808303816000875af115801562000307573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032d919062000929565b73ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506009600a6200046d919062000823565b6103e86200047c919062000874565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200051f919062000823565b6103e86200052e919062000874565b6040516200053d9190620009aa565b60405180910390a35062000b84565b6000808303620005605760009050620005c9565b6000828462000570919062000874565b9050828482620005819190620009f6565b14620005c4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005bb9062000ab5565b60405180910390fd5b809150505b92915050565b60006200061983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200062160201b60201c565b905092915050565b600080831182906200066b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000662919062000b60565b60405180910390fd5b50600083856200067c9190620009f6565b9050809150509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200071757808604811115620006ef57620006ee62000689565b5b6001851615620006ff5780820291505b80810290506200070f85620006b8565b9450620006cf565b94509492505050565b60008262000732576001905062000805565b8162000742576000905062000805565b81600181146200075b576002811462000766576200079c565b600191505062000805565b60ff8411156200077b576200077a62000689565b5b8360020a91508482111562000795576200079462000689565b5b5062000805565b5060208310610133831016604e8410600b8410161715620007d65782820a905083811115620007d057620007cf62000689565b5b62000805565b620007e58484846001620006c5565b92509050818404811115620007ff57620007fe62000689565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000830826200080c565b91506200083d8362000816565b92506200086c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000720565b905092915050565b600062000881826200080c565b91506200088e836200080c565b92508282026200089e816200080c565b91508282048414831517620008b857620008b762000689565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008f182620008c4565b9050919050565b6200090381620008e4565b81146200090f57600080fd5b50565b6000815190506200092381620008f8565b92915050565b600060208284031215620009425762000941620008bf565b5b6000620009528482850162000912565b91505092915050565b6200096681620008e4565b82525050565b60006040820190506200098360008301856200095b565b6200099260208301846200095b565b9392505050565b620009a4816200080c565b82525050565b6000602082019050620009c1600083018462000999565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000a03826200080c565b915062000a10836200080c565b92508262000a235762000a22620009c7565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600062000a9d60218362000a2e565b915062000aaa8262000a3f565b604082019050919050565b6000602082019050818103600083015262000ad08162000a8e565b9050919050565b600081519050919050565b60005b8381101562000b0257808201518184015260208101905062000ae5565b60008484015250505050565b6000601f19601f8301169050919050565b600062000b2c8262000ad7565b62000b38818562000a2e565b935062000b4a81856020860162000ae2565b62000b558162000b0e565b840191505092915050565b6000602082019050818103600083015262000b7c818462000b1f565b905092915050565b60805160a05160c05160e05161368162000c2060003960008181611d0701526121f601526000818161131801528181611464015281816117e1015281816119670152818161219f01528181612231015261235e0152600081816112630152818161153601528181611d360152611e5e015260008181610d4401528181610da601528181610f98015281816117620152611ef401526136816000f3fe6080604052600436106101a05760003560e01c80636ddd1713116100ec57806395d89b411161008a578063a9059cbb11610064578063a9059cbb1461054f578063d212a69a1461058c578063dd62ed3e146105b8578063f887ea40146105f5576101a7565b806395d89b41146104d05780639c0db5f3146104fb578063a8aa1b3114610524576101a7565b806377b54bad116100c657806377b54bad146104285780637830b07214610451578063830d2bc21461047c578063893d20e8146104a5576101a7565b80636ddd1713146103a957806370a08231146103d4578063715018a614610411576101a7565b80632969144811610159578063313ce56711610133578063313ce5671461032557806351bc3c8514610350578063616eb638146103675780636c0a24eb1461037e576101a7565b806329691448146102ce5780632be0df8b146102e55780632c28f5791461030e576101a7565b806306fdde03146101ac578063095ea7b3146101d75780630b78f9c0146102145780630cefb76f1461023d57806318160ddd1461026657806323b872dd14610291576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610620565b6040516101ce91906125db565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f9919061269b565b61065d565b60405161020b91906126f6565b60405180910390f35b34801561022057600080fd5b5061023b60048036038101906102369190612711565b61074f565b005b34801561024957600080fd5b50610264600480360381019061025f91906127e2565b610800565b005b34801561027257600080fd5b5061027b6108ed565b6040516102889190612851565b60405180910390f35b34801561029d57600080fd5b506102b860048036038101906102b3919061286c565b61090f565b6040516102c591906126f6565b60405180910390f35b3480156102da57600080fd5b506102e3610b0f565b005b3480156102f157600080fd5b5061030c60048036038101906103079190612711565b610b74565b005b34801561031a57600080fd5b50610323610cd4565b005b34801561033157600080fd5b5061033a610d39565b60405161034791906128db565b60405180910390f35b34801561035c57600080fd5b50610365610d42565b005b34801561037357600080fd5b5061037c610da4565b005b34801561038a57600080fd5b50610393610e0d565b6040516103a09190612851565b60405180910390f35b3480156103b557600080fd5b506103be610e13565b6040516103cb91906126f6565b60405180910390f35b3480156103e057600080fd5b506103fb60048036038101906103f691906128f6565b610e26565b6040516104089190612851565b60405180910390f35b34801561041d57600080fd5b50610426610e6f565b005b34801561043457600080fd5b5061044f600480360381019061044a9190612961565b610f32565b005b34801561045d57600080fd5b5061046661101d565b6040516104739190612851565b60405180910390f35b34801561048857600080fd5b506104a3600480360381019061049e91906129a1565b611023565b005b3480156104b157600080fd5b506104ba611110565b6040516104c791906129fd565b60405180910390f35b3480156104dc57600080fd5b506104e5611139565b6040516104f291906125db565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d91906127e2565b611176565b005b34801561053057600080fd5b50610539611462565b60405161054691906129fd565b60405180910390f35b34801561055b57600080fd5b506105766004803603810190610571919061269b565b611486565b60405161058391906126f6565b60405180910390f35b34801561059857600080fd5b506105a161149b565b6040516105af929190612a18565b60405180910390f35b3480156105c457600080fd5b506105df60048036038101906105da9190612a41565b6114ad565b6040516105ec9190612851565b60405180910390f35b34801561060157600080fd5b5061060a611534565b6040516106179190612ae0565b60405180910390f35b60606040518060400160405280600b81526020017f5468654d656d65436f7270000000000000000000000000000000000000000000815250905090565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161073d9190612851565b60405180910390a36001905092915050565b6107583361161c565b610797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078e90612b47565b60405180910390fd5b600a82111580156107a95750600a8111155b6107e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df90612bb3565b60405180910390fd5b81600860000181905550806008600101819055505050565b6108093361161c565b610848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083f90612b47565b60405180910390fd5b60005b838390508110156108e757816007600086868581811061086e5761086d612bd3565b5b905060200201602081019061088391906128f6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108df90612c31565b91505061084b565b50505050565b60006009600a6108fd9190612dac565b6103e861090a9190612df7565b905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610afb57610a7a826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116759092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610b068484846116d9565b90509392505050565b610b183361161c565b610b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4e90612b47565b60405180910390fd5b6001600a60016101000a81548160ff021916908315150217905550565b610b7d3361161c565b610bbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb390612b47565b60405180910390fd5b6001821015610c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf790612eab565b60405180910390fd5b6001811015610c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3b90612f3d565b60405180910390fd5b610c846064610c76846009600a610c5b9190612dac565b6103e8610c689190612df7565b61155890919063ffffffff16565b6115d290919063ffffffff16565b600181905550610cca6064610cbc836009600a610ca19190612dac565b6103e8610cae9190612df7565b61155890919063ffffffff16565b6115d290919063ffffffff16565b6002819055505050565b610cdd3361161c565b610d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1390612b47565b60405180910390fd5b6001600a60006101000a81548160ff021916908315150217905550565b60006009905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d9a57600080fd5b610da2611cd6565b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610e0a573d6000803e3d6000fd5b50565b60015481565b600a60019054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e783361161c565b610eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eae90612b47565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861636000604051610f2891906129fd565b60405180910390a1565b610f3b3361161c565b610f7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7190612b47565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7f0000000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b8152600401610fd5929190612f7e565b6020604051808303816000875af1158015610ff4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110189190612fbc565b505050565b60025481565b61102c3361161c565b61106b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106290612b47565b60405180910390fd5b60005b8282905081101561110b5760016006600085858581811061109257611091612bd3565b5b90506020020160208101906110a791906128f6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061110390612c31565b91505061106e565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4d454d455a000000000000000000000000000000000000000000000000000000815250905090565b61117f3361161c565b6111be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b590612b47565b60405180910390fd5b60005b8383905081101561145c573073ffffffffffffffffffffffffffffffffffffffff168484838181106111f6576111f5612bd3565b5b905060200201602081019061120b91906128f6565b73ffffffffffffffffffffffffffffffffffffffff1603611261576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125890613035565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168484838181106112ab576112aa612bd3565b5b90506020020160208101906112c091906128f6565b73ffffffffffffffffffffffffffffffffffffffff1603611316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130d906130a1565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168484838181106113605761135f612bd3565b5b905060200201602081019061137591906128f6565b73ffffffffffffffffffffffffffffffffffffffff16036113cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c29061310d565b60405180910390fd5b81600560008686858181106113e3576113e2612bd3565b5b90506020020160208101906113f891906128f6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061145490612c31565b9150506111c1565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006114933384846116d9565b905092915050565b60088060000154908060010154905082565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080830361156a57600090506115cc565b600082846115789190612df7565b9050828482611587919061315c565b146115c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115be906131ff565b60405180910390fd5b809150505b92915050565b600061161483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f9c565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60008383111582906116bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b491906125db565b60405180910390fd5b50600083856116cc919061321f565b9050809150509392505050565b6000600a60009054906101000a900460ff1680611741575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16145b61174a57600080fd5b600a60029054906101000a900460ff16806117b057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16145b156117c7576117c0848484611fff565b9050611ccf565b600a60019054906101000a900460ff1615801561182f57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156118855750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118935760009050611ccf565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611920576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119179061329f565b60405180910390fd5b600254821115611965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195c90613331565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119ef575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a845760015482600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a429190613351565b1115611a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7a906133f7565b60405180910390fd5b5b611a8d8461219b565b15611a9b57611a9a611cd6565b5b6000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611af55782611b01565b611b00858585612228565b5b9050611b8c836040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116759092919063ffffffff16565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c2181600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124a390919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cc19190612851565b60405180910390a360019150505b9392505050565b6001600a60026101000a81548160ff0219169083151502179055506000600254611cff30610e26565b1015611d2b577f0000000000000000000000000000000000000000000000000000000000000000611d2f565b6002545b9050611d5b7f00000000000000000000000000000000000000000000000000000000000000008261065d565b506000600267ffffffffffffffff811115611d7957611d78613417565b5b604051908082528060200260200182016040528015611da75781602001602082028036833780820191505090505b5090503081600081518110611dbf57611dbe612bd3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611e2257611e21612bd3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611ebe95949392919061353f565b600060405180830381600087803b158015611ed857600080fd5b505af1158015611eec573d6000803e3d6000fd5b5050505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1647604051611f36906135ca565b60006040518083038185875af1925050503d8060008114611f73576040519150601f19603f3d011682016040523d82523d6000602084013e611f78565b606091505b505090505050506000600a60026101000a81548160ff021916908315150217905550565b60008083118290611fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fda91906125db565b60405180910390fd5b5060008385611ff2919061315c565b9050809150509392505050565b600061205382600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461250190919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120e882600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124a390919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121889190612851565b60405180910390a3600190509392505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561222157507f000000000000000000000000000000000000000000000000000000000000000061221e30610e26565b10155b9050919050565b600080600090507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480156122905750600060086000015414155b1561235c576122c060646122b26008600001548661155890919063ffffffff16565b6115d290919063ffffffff16565b905061231481600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124a390919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612486565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156123bd5750600060086001015414155b15612485576123ed60646123df6008600101548661155890919063ffffffff16565b6115d290919063ffffffff16565b905061244181600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124a390919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b612499818461250190919063ffffffff16565b9150509392505050565b60008082846124b29190613351565b9050838110156124f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ee9061362b565b60405180910390fd5b8091505092915050565b600061254383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611675565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561258557808201518184015260208101905061256a565b60008484015250505050565b6000601f19601f8301169050919050565b60006125ad8261254b565b6125b78185612556565b93506125c7818560208601612567565b6125d081612591565b840191505092915050565b600060208201905081810360008301526125f581846125a2565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061263282612607565b9050919050565b61264281612627565b811461264d57600080fd5b50565b60008135905061265f81612639565b92915050565b6000819050919050565b61267881612665565b811461268357600080fd5b50565b6000813590506126958161266f565b92915050565b600080604083850312156126b2576126b16125fd565b5b60006126c085828601612650565b92505060206126d185828601612686565b9150509250929050565b60008115159050919050565b6126f0816126db565b82525050565b600060208201905061270b60008301846126e7565b92915050565b60008060408385031215612728576127276125fd565b5b600061273685828601612686565b925050602061274785828601612686565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261277657612775612751565b5b8235905067ffffffffffffffff81111561279357612792612756565b5b6020830191508360208202830111156127af576127ae61275b565b5b9250929050565b6127bf816126db565b81146127ca57600080fd5b50565b6000813590506127dc816127b6565b92915050565b6000806000604084860312156127fb576127fa6125fd565b5b600084013567ffffffffffffffff81111561281957612818612602565b5b61282586828701612760565b93509350506020612838868287016127cd565b9150509250925092565b61284b81612665565b82525050565b60006020820190506128666000830184612842565b92915050565b600080600060608486031215612885576128846125fd565b5b600061289386828701612650565b93505060206128a486828701612650565b92505060406128b586828701612686565b9150509250925092565b600060ff82169050919050565b6128d5816128bf565b82525050565b60006020820190506128f060008301846128cc565b92915050565b60006020828403121561290c5761290b6125fd565b5b600061291a84828501612650565b91505092915050565b600061292e82612627565b9050919050565b61293e81612923565b811461294957600080fd5b50565b60008135905061295b81612935565b92915050565b60008060408385031215612978576129776125fd565b5b60006129868582860161294c565b925050602061299785828601612686565b9150509250929050565b600080602083850312156129b8576129b76125fd565b5b600083013567ffffffffffffffff8111156129d6576129d5612602565b5b6129e285828601612760565b92509250509250929050565b6129f781612627565b82525050565b6000602082019050612a1260008301846129ee565b92915050565b6000604082019050612a2d6000830185612842565b612a3a6020830184612842565b9392505050565b60008060408385031215612a5857612a576125fd565b5b6000612a6685828601612650565b9250506020612a7785828601612650565b9150509250929050565b6000819050919050565b6000612aa6612aa1612a9c84612607565b612a81565b612607565b9050919050565b6000612ab882612a8b565b9050919050565b6000612aca82612aad565b9050919050565b612ada81612abf565b82525050565b6000602082019050612af56000830184612ad1565b92915050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000612b31600683612556565b9150612b3c82612afb565b602082019050919050565b60006020820190508181036000830152612b6081612b24565b9050919050565b7f4d61782066656520616c6c6f7765642069732031302500000000000000000000600082015250565b6000612b9d601683612556565b9150612ba882612b67565b602082019050919050565b60006020820190508181036000830152612bcc81612b90565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c3c82612665565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c6e57612c6d612c02565b5b600182019050919050565b60008160011c9050919050565b6000808291508390505b6001851115612cd057808604811115612cac57612cab612c02565b5b6001851615612cbb5780820291505b8081029050612cc985612c79565b9450612c90565b94509492505050565b600082612ce95760019050612da5565b81612cf75760009050612da5565b8160018114612d0d5760028114612d1757612d46565b6001915050612da5565b60ff841115612d2957612d28612c02565b5b8360020a915084821115612d4057612d3f612c02565b5b50612da5565b5060208310610133831016604e8410600b8410161715612d7b5782820a905083811115612d7657612d75612c02565b5b612da5565b612d888484846001612c86565b92509050818404811115612d9f57612d9e612c02565b5b81810290505b9392505050565b6000612db782612665565b9150612dc2836128bf565b9250612def7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612cd9565b905092915050565b6000612e0282612665565b9150612e0d83612665565b9250828202612e1b81612665565b91508282048414831517612e3257612e31612c02565b5b5092915050565b7f77616c6c6574206c696d6974206d757368206265206e6f74206c65737320746860008201527f616e20312070657263656e740000000000000000000000000000000000000000602082015250565b6000612e95602c83612556565b9150612ea082612e39565b604082019050919050565b60006020820190508181036000830152612ec481612e88565b9050919050565b7f4d617820747820616d6f756e74206d757374206e6f74206265206c657373207460008201527f68616e20312070657263656e7400000000000000000000000000000000000000602082015250565b6000612f27602d83612556565b9150612f3282612ecb565b604082019050919050565b60006020820190508181036000830152612f5681612f1a565b9050919050565b6000612f6882612aad565b9050919050565b612f7881612f5d565b82525050565b6000604082019050612f936000830185612f6f565b612fa06020830184612842565b9392505050565b600081519050612fb6816127b6565b92915050565b600060208284031215612fd257612fd16125fd565b5b6000612fe084828501612fa7565b91505092915050565b7f43616e206e6f7420626c6f636b20746f6b656e20636f6e747261637400000000600082015250565b600061301f601c83612556565b915061302a82612fe9565b602082019050919050565b6000602082019050818103600083015261304e81613012565b9050919050565b7f43616e206e6f7420626c6f636b20726f75746572000000000000000000000000600082015250565b600061308b601483612556565b915061309682613055565b602082019050919050565b600060208201905081810360008301526130ba8161307e565b9050919050565b7f43616e206e6f7420626c6f636b20706169720000000000000000000000000000600082015250565b60006130f7601283612556565b9150613102826130c1565b602082019050919050565b60006020820190508181036000830152613126816130ea565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061316782612665565b915061317283612665565b9250826131825761318161312d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006131e9602183612556565b91506131f48261318d565b604082019050919050565b60006020820190508181036000830152613218816131dc565b9050919050565b600061322a82612665565b915061323583612665565b925082820390508181111561324d5761324c612c02565b5b92915050565b7f426f7473206e6f7420616c6c6f776564207472616e7366657273000000000000600082015250565b6000613289601a83612556565b915061329482613253565b602082019050919050565b600060208201905081810360008301526132b88161327c565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865207478206c60008201527f696d697400000000000000000000000000000000000000000000000000000000602082015250565b600061331b602483612556565b9150613326826132bf565b604082019050919050565b6000602082019050818103600083015261334a8161330e565b9050919050565b600061335c82612665565b915061336783612665565b925082820190508082111561337f5761337e612c02565b5b92915050565b7f5472616e7366657220616d6f756e742065786365656473207468652062616c6160008201527f6e6365206c696d69742e00000000000000000000000000000000000000000000602082015250565b60006133e1602a83612556565b91506133ec82613385565b604082019050919050565b60006020820190508181036000830152613410816133d4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061346b61346661346184613446565b612a81565b612665565b9050919050565b61347b81613450565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6134b681612627565b82525050565b60006134c883836134ad565b60208301905092915050565b6000602082019050919050565b60006134ec82613481565b6134f6818561348c565b93506135018361349d565b8060005b8381101561353257815161351988826134bc565b9750613524836134d4565b925050600181019050613505565b5085935050505092915050565b600060a0820190506135546000830188612842565b6135616020830187613472565b818103604083015261357381866134e1565b905061358260608301856129ee565b61358f6080830184612842565b9695505050505050565b600081905092915050565b50565b60006135b4600083613599565b91506135bf826135a4565b600082019050919050565b60006135d5826135a7565b9150819050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613615601b83612556565b9150613620826135df565b602082019050919050565b6000602082019050818103600083015261364481613608565b905091905056fea264697066735822122072dc902cde9e3a6b4a2bf502d3d74128eda168215ae8e17b351bc2dfca0ccfde64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101a05760003560e01c80636ddd1713116100ec57806395d89b411161008a578063a9059cbb11610064578063a9059cbb1461054f578063d212a69a1461058c578063dd62ed3e146105b8578063f887ea40146105f5576101a7565b806395d89b41146104d05780639c0db5f3146104fb578063a8aa1b3114610524576101a7565b806377b54bad116100c657806377b54bad146104285780637830b07214610451578063830d2bc21461047c578063893d20e8146104a5576101a7565b80636ddd1713146103a957806370a08231146103d4578063715018a614610411576101a7565b80632969144811610159578063313ce56711610133578063313ce5671461032557806351bc3c8514610350578063616eb638146103675780636c0a24eb1461037e576101a7565b806329691448146102ce5780632be0df8b146102e55780632c28f5791461030e576101a7565b806306fdde03146101ac578063095ea7b3146101d75780630b78f9c0146102145780630cefb76f1461023d57806318160ddd1461026657806323b872dd14610291576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610620565b6040516101ce91906125db565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f9919061269b565b61065d565b60405161020b91906126f6565b60405180910390f35b34801561022057600080fd5b5061023b60048036038101906102369190612711565b61074f565b005b34801561024957600080fd5b50610264600480360381019061025f91906127e2565b610800565b005b34801561027257600080fd5b5061027b6108ed565b6040516102889190612851565b60405180910390f35b34801561029d57600080fd5b506102b860048036038101906102b3919061286c565b61090f565b6040516102c591906126f6565b60405180910390f35b3480156102da57600080fd5b506102e3610b0f565b005b3480156102f157600080fd5b5061030c60048036038101906103079190612711565b610b74565b005b34801561031a57600080fd5b50610323610cd4565b005b34801561033157600080fd5b5061033a610d39565b60405161034791906128db565b60405180910390f35b34801561035c57600080fd5b50610365610d42565b005b34801561037357600080fd5b5061037c610da4565b005b34801561038a57600080fd5b50610393610e0d565b6040516103a09190612851565b60405180910390f35b3480156103b557600080fd5b506103be610e13565b6040516103cb91906126f6565b60405180910390f35b3480156103e057600080fd5b506103fb60048036038101906103f691906128f6565b610e26565b6040516104089190612851565b60405180910390f35b34801561041d57600080fd5b50610426610e6f565b005b34801561043457600080fd5b5061044f600480360381019061044a9190612961565b610f32565b005b34801561045d57600080fd5b5061046661101d565b6040516104739190612851565b60405180910390f35b34801561048857600080fd5b506104a3600480360381019061049e91906129a1565b611023565b005b3480156104b157600080fd5b506104ba611110565b6040516104c791906129fd565b60405180910390f35b3480156104dc57600080fd5b506104e5611139565b6040516104f291906125db565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d91906127e2565b611176565b005b34801561053057600080fd5b50610539611462565b60405161054691906129fd565b60405180910390f35b34801561055b57600080fd5b506105766004803603810190610571919061269b565b611486565b60405161058391906126f6565b60405180910390f35b34801561059857600080fd5b506105a161149b565b6040516105af929190612a18565b60405180910390f35b3480156105c457600080fd5b506105df60048036038101906105da9190612a41565b6114ad565b6040516105ec9190612851565b60405180910390f35b34801561060157600080fd5b5061060a611534565b6040516106179190612ae0565b60405180910390f35b60606040518060400160405280600b81526020017f5468654d656d65436f7270000000000000000000000000000000000000000000815250905090565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161073d9190612851565b60405180910390a36001905092915050565b6107583361161c565b610797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078e90612b47565b60405180910390fd5b600a82111580156107a95750600a8111155b6107e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df90612bb3565b60405180910390fd5b81600860000181905550806008600101819055505050565b6108093361161c565b610848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083f90612b47565b60405180910390fd5b60005b838390508110156108e757816007600086868581811061086e5761086d612bd3565b5b905060200201602081019061088391906128f6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108df90612c31565b91505061084b565b50505050565b60006009600a6108fd9190612dac565b6103e861090a9190612df7565b905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610afb57610a7a826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116759092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610b068484846116d9565b90509392505050565b610b183361161c565b610b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4e90612b47565b60405180910390fd5b6001600a60016101000a81548160ff021916908315150217905550565b610b7d3361161c565b610bbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb390612b47565b60405180910390fd5b6001821015610c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf790612eab565b60405180910390fd5b6001811015610c44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3b90612f3d565b60405180910390fd5b610c846064610c76846009600a610c5b9190612dac565b6103e8610c689190612df7565b61155890919063ffffffff16565b6115d290919063ffffffff16565b600181905550610cca6064610cbc836009600a610ca19190612dac565b6103e8610cae9190612df7565b61155890919063ffffffff16565b6115d290919063ffffffff16565b6002819055505050565b610cdd3361161c565b610d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1390612b47565b60405180910390fd5b6001600a60006101000a81548160ff021916908315150217905550565b60006009905090565b7f0000000000000000000000006dfc2865dccf0d724ab6b7fc4cff58dd43ee3e0273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d9a57600080fd5b610da2611cd6565b565b7f0000000000000000000000006dfc2865dccf0d724ab6b7fc4cff58dd43ee3e0273ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610e0a573d6000803e3d6000fd5b50565b60015481565b600a60019054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e783361161c565b610eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eae90612b47565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861636000604051610f2891906129fd565b60405180910390a1565b610f3b3361161c565b610f7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7190612b47565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb7f0000000000000000000000006dfc2865dccf0d724ab6b7fc4cff58dd43ee3e02836040518363ffffffff1660e01b8152600401610fd5929190612f7e565b6020604051808303816000875af1158015610ff4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110189190612fbc565b505050565b60025481565b61102c3361161c565b61106b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106290612b47565b60405180910390fd5b60005b8282905081101561110b5760016006600085858581811061109257611091612bd3565b5b90506020020160208101906110a791906128f6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061110390612c31565b91505061106e565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4d454d455a000000000000000000000000000000000000000000000000000000815250905090565b61117f3361161c565b6111be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b590612b47565b60405180910390fd5b60005b8383905081101561145c573073ffffffffffffffffffffffffffffffffffffffff168484838181106111f6576111f5612bd3565b5b905060200201602081019061120b91906128f6565b73ffffffffffffffffffffffffffffffffffffffff1603611261576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125890613035565b60405180910390fd5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168484838181106112ab576112aa612bd3565b5b90506020020160208101906112c091906128f6565b73ffffffffffffffffffffffffffffffffffffffff1603611316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130d906130a1565b60405180910390fd5b7f00000000000000000000000080bb38627880b8e24a63da10ff16ab6099ecc8d873ffffffffffffffffffffffffffffffffffffffff168484838181106113605761135f612bd3565b5b905060200201602081019061137591906128f6565b73ffffffffffffffffffffffffffffffffffffffff16036113cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c29061310d565b60405180910390fd5b81600560008686858181106113e3576113e2612bd3565b5b90506020020160208101906113f891906128f6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061145490612c31565b9150506111c1565b50505050565b7f00000000000000000000000080bb38627880b8e24a63da10ff16ab6099ecc8d881565b60006114933384846116d9565b905092915050565b60088060000154908060010154905082565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b600080830361156a57600090506115cc565b600082846115789190612df7565b9050828482611587919061315c565b146115c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115be906131ff565b60405180910390fd5b809150505b92915050565b600061161483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f9c565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60008383111582906116bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b491906125db565b60405180910390fd5b50600083856116cc919061321f565b9050809150509392505050565b6000600a60009054906101000a900460ff1680611741575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16145b61174a57600080fd5b600a60029054906101000a900460ff16806117b057507f0000000000000000000000006dfc2865dccf0d724ab6b7fc4cff58dd43ee3e0273ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16145b156117c7576117c0848484611fff565b9050611ccf565b600a60019054906101000a900460ff1615801561182f57507f00000000000000000000000080bb38627880b8e24a63da10ff16ab6099ecc8d873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156118855750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118935760009050611ccf565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611920576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119179061329f565b60405180910390fd5b600254821115611965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195c90613331565b60405180910390fd5b7f00000000000000000000000080bb38627880b8e24a63da10ff16ab6099ecc8d873ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119ef575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a845760015482600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a429190613351565b1115611a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7a906133f7565b60405180910390fd5b5b611a8d8461219b565b15611a9b57611a9a611cd6565b5b6000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611af55782611b01565b611b00858585612228565b5b9050611b8c836040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116759092919063ffffffff16565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c2181600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124a390919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cc19190612851565b60405180910390a360019150505b9392505050565b6001600a60026101000a81548160ff0219169083151502179055506000600254611cff30610e26565b1015611d2b577f000000000000000000000000000000000000000000000000000000003b9aca00611d2f565b6002545b9050611d5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8261065d565b506000600267ffffffffffffffff811115611d7957611d78613417565b5b604051908082528060200260200182016040528015611da75781602001602082028036833780820191505090505b5090503081600081518110611dbf57611dbe612bd3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611e2257611e21612bd3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611ebe95949392919061353f565b600060405180830381600087803b158015611ed857600080fd5b505af1158015611eec573d6000803e3d6000fd5b5050505060007f0000000000000000000000006dfc2865dccf0d724ab6b7fc4cff58dd43ee3e0273ffffffffffffffffffffffffffffffffffffffff1647604051611f36906135ca565b60006040518083038185875af1925050503d8060008114611f73576040519150601f19603f3d011682016040523d82523d6000602084013e611f78565b606091505b505090505050506000600a60026101000a81548160ff021916908315150217905550565b60008083118290611fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fda91906125db565b60405180910390fd5b5060008385611ff2919061315c565b9050809150509392505050565b600061205382600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461250190919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120e882600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124a390919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121889190612851565b60405180910390a3600190509392505050565b60007f00000000000000000000000080bb38627880b8e24a63da10ff16ab6099ecc8d873ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561222157507f000000000000000000000000000000000000000000000000000000003b9aca0061221e30610e26565b10155b9050919050565b600080600090507f00000000000000000000000080bb38627880b8e24a63da10ff16ab6099ecc8d873ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480156122905750600060086000015414155b1561235c576122c060646122b26008600001548661155890919063ffffffff16565b6115d290919063ffffffff16565b905061231481600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124a390919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612486565b7f00000000000000000000000080bb38627880b8e24a63da10ff16ab6099ecc8d873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156123bd5750600060086001015414155b15612485576123ed60646123df6008600101548661155890919063ffffffff16565b6115d290919063ffffffff16565b905061244181600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124a390919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b612499818461250190919063ffffffff16565b9150509392505050565b60008082846124b29190613351565b9050838110156124f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ee9061362b565b60405180910390fd5b8091505092915050565b600061254383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611675565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561258557808201518184015260208101905061256a565b60008484015250505050565b6000601f19601f8301169050919050565b60006125ad8261254b565b6125b78185612556565b93506125c7818560208601612567565b6125d081612591565b840191505092915050565b600060208201905081810360008301526125f581846125a2565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061263282612607565b9050919050565b61264281612627565b811461264d57600080fd5b50565b60008135905061265f81612639565b92915050565b6000819050919050565b61267881612665565b811461268357600080fd5b50565b6000813590506126958161266f565b92915050565b600080604083850312156126b2576126b16125fd565b5b60006126c085828601612650565b92505060206126d185828601612686565b9150509250929050565b60008115159050919050565b6126f0816126db565b82525050565b600060208201905061270b60008301846126e7565b92915050565b60008060408385031215612728576127276125fd565b5b600061273685828601612686565b925050602061274785828601612686565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261277657612775612751565b5b8235905067ffffffffffffffff81111561279357612792612756565b5b6020830191508360208202830111156127af576127ae61275b565b5b9250929050565b6127bf816126db565b81146127ca57600080fd5b50565b6000813590506127dc816127b6565b92915050565b6000806000604084860312156127fb576127fa6125fd565b5b600084013567ffffffffffffffff81111561281957612818612602565b5b61282586828701612760565b93509350506020612838868287016127cd565b9150509250925092565b61284b81612665565b82525050565b60006020820190506128666000830184612842565b92915050565b600080600060608486031215612885576128846125fd565b5b600061289386828701612650565b93505060206128a486828701612650565b92505060406128b586828701612686565b9150509250925092565b600060ff82169050919050565b6128d5816128bf565b82525050565b60006020820190506128f060008301846128cc565b92915050565b60006020828403121561290c5761290b6125fd565b5b600061291a84828501612650565b91505092915050565b600061292e82612627565b9050919050565b61293e81612923565b811461294957600080fd5b50565b60008135905061295b81612935565b92915050565b60008060408385031215612978576129776125fd565b5b60006129868582860161294c565b925050602061299785828601612686565b9150509250929050565b600080602083850312156129b8576129b76125fd565b5b600083013567ffffffffffffffff8111156129d6576129d5612602565b5b6129e285828601612760565b92509250509250929050565b6129f781612627565b82525050565b6000602082019050612a1260008301846129ee565b92915050565b6000604082019050612a2d6000830185612842565b612a3a6020830184612842565b9392505050565b60008060408385031215612a5857612a576125fd565b5b6000612a6685828601612650565b9250506020612a7785828601612650565b9150509250929050565b6000819050919050565b6000612aa6612aa1612a9c84612607565b612a81565b612607565b9050919050565b6000612ab882612a8b565b9050919050565b6000612aca82612aad565b9050919050565b612ada81612abf565b82525050565b6000602082019050612af56000830184612ad1565b92915050565b7f214f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000612b31600683612556565b9150612b3c82612afb565b602082019050919050565b60006020820190508181036000830152612b6081612b24565b9050919050565b7f4d61782066656520616c6c6f7765642069732031302500000000000000000000600082015250565b6000612b9d601683612556565b9150612ba882612b67565b602082019050919050565b60006020820190508181036000830152612bcc81612b90565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c3c82612665565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c6e57612c6d612c02565b5b600182019050919050565b60008160011c9050919050565b6000808291508390505b6001851115612cd057808604811115612cac57612cab612c02565b5b6001851615612cbb5780820291505b8081029050612cc985612c79565b9450612c90565b94509492505050565b600082612ce95760019050612da5565b81612cf75760009050612da5565b8160018114612d0d5760028114612d1757612d46565b6001915050612da5565b60ff841115612d2957612d28612c02565b5b8360020a915084821115612d4057612d3f612c02565b5b50612da5565b5060208310610133831016604e8410600b8410161715612d7b5782820a905083811115612d7657612d75612c02565b5b612da5565b612d888484846001612c86565b92509050818404811115612d9f57612d9e612c02565b5b81810290505b9392505050565b6000612db782612665565b9150612dc2836128bf565b9250612def7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612cd9565b905092915050565b6000612e0282612665565b9150612e0d83612665565b9250828202612e1b81612665565b91508282048414831517612e3257612e31612c02565b5b5092915050565b7f77616c6c6574206c696d6974206d757368206265206e6f74206c65737320746860008201527f616e20312070657263656e740000000000000000000000000000000000000000602082015250565b6000612e95602c83612556565b9150612ea082612e39565b604082019050919050565b60006020820190508181036000830152612ec481612e88565b9050919050565b7f4d617820747820616d6f756e74206d757374206e6f74206265206c657373207460008201527f68616e20312070657263656e7400000000000000000000000000000000000000602082015250565b6000612f27602d83612556565b9150612f3282612ecb565b604082019050919050565b60006020820190508181036000830152612f5681612f1a565b9050919050565b6000612f6882612aad565b9050919050565b612f7881612f5d565b82525050565b6000604082019050612f936000830185612f6f565b612fa06020830184612842565b9392505050565b600081519050612fb6816127b6565b92915050565b600060208284031215612fd257612fd16125fd565b5b6000612fe084828501612fa7565b91505092915050565b7f43616e206e6f7420626c6f636b20746f6b656e20636f6e747261637400000000600082015250565b600061301f601c83612556565b915061302a82612fe9565b602082019050919050565b6000602082019050818103600083015261304e81613012565b9050919050565b7f43616e206e6f7420626c6f636b20726f75746572000000000000000000000000600082015250565b600061308b601483612556565b915061309682613055565b602082019050919050565b600060208201905081810360008301526130ba8161307e565b9050919050565b7f43616e206e6f7420626c6f636b20706169720000000000000000000000000000600082015250565b60006130f7601283612556565b9150613102826130c1565b602082019050919050565b60006020820190508181036000830152613126816130ea565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061316782612665565b915061317283612665565b9250826131825761318161312d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006131e9602183612556565b91506131f48261318d565b604082019050919050565b60006020820190508181036000830152613218816131dc565b9050919050565b600061322a82612665565b915061323583612665565b925082820390508181111561324d5761324c612c02565b5b92915050565b7f426f7473206e6f7420616c6c6f776564207472616e7366657273000000000000600082015250565b6000613289601a83612556565b915061329482613253565b602082019050919050565b600060208201905081810360008301526132b88161327c565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865207478206c60008201527f696d697400000000000000000000000000000000000000000000000000000000602082015250565b600061331b602483612556565b9150613326826132bf565b604082019050919050565b6000602082019050818103600083015261334a8161330e565b9050919050565b600061335c82612665565b915061336783612665565b925082820190508082111561337f5761337e612c02565b5b92915050565b7f5472616e7366657220616d6f756e742065786365656473207468652062616c6160008201527f6e6365206c696d69742e00000000000000000000000000000000000000000000602082015250565b60006133e1602a83612556565b91506133ec82613385565b604082019050919050565b60006020820190508181036000830152613410816133d4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061346b61346661346184613446565b612a81565b612665565b9050919050565b61347b81613450565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6134b681612627565b82525050565b60006134c883836134ad565b60208301905092915050565b6000602082019050919050565b60006134ec82613481565b6134f6818561348c565b93506135018361349d565b8060005b8381101561353257815161351988826134bc565b9750613524836134d4565b925050600181019050613505565b5085935050505092915050565b600060a0820190506135546000830188612842565b6135616020830187613472565b818103604083015261357381866134e1565b905061358260608301856129ee565b61358f6080830184612842565b9695505050505050565b600081905092915050565b50565b60006135b4600083613599565b91506135bf826135a4565b600082019050919050565b60006135d5826135a7565b9150819050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613615601b83612556565b9150613620826135df565b602082019050919050565b6000602082019050818103600083015261364481613608565b905091905056fea264697066735822122072dc902cde9e3a6b4a2bf502d3d74128eda168215ae8e17b351bc2dfca0ccfde64736f6c63430008110033

Deployed Bytecode Sourcemap

3211:8286:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3527:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5894:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9422:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9663:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3284:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6264:359;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11024:78;;;;;;;;;;;;;:::i;:::-;;10590:425;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10084:77;;;;;;;;;;;;;:::i;:::-;;3369:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11110:105;;;;;;;;;;;;;:::i;:::-;;11224:100;;;;;;;;;;;;;:::i;:::-;;4465:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5174:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3679:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2536:131;;;;;;;;;;;;;:::i;:::-;;11332:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4535:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9898:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3604:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3446:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10173:409;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5070:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6109:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4841:76;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;3781:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5021:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3527:71;3566:13;3590:5;;;;;;;;;;;;;;;;;3583:12;;3527:71;:::o;5894:207::-;5960:4;6012:6;5977:11;:23;5989:10;5977:23;;;;;;;;;;;;;;;:32;6001:7;5977:32;;;;;;;;;;;;;;;:41;;;;6055:7;6034:37;;6043:10;6034:37;;;6064:6;6034:37;;;;;;:::i;:::-;;;;;;;;6089:4;6082:11;;5894:207;;;;:::o;9422:233::-;2374:19;2382:10;2374:7;:19::i;:::-;2366:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;9523:2:::1;9512:7;:13;;:31;;;;;9541:2;9529:8;:14;;9512:31;9504:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9596:7;9581:5;:12;;:22;;;;9631:8;9615:5;:13;;:24;;;;9422:233:::0;;:::o;9663:223::-;2374:19;2382:10;2374:7;:19::i;:::-;2366:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;9774:9:::1;9770:109;9793:7;;:14;;9789:1;:18;9770:109;;;9855:12;9829:11;:23;9841:7;;9849:1;9841:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;9829:23;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;9809:3;;;;;:::i;:::-;;;;9770:109;;;;9663:223:::0;;;:::o;3284:79::-;3330:7;4390:1;4441:2;:15;;;;:::i;:::-;4432:5;:25;;;;:::i;:::-;3341:19;;3284:79;:::o;6264:359::-;6355:4;6410:17;6375:11;:19;6387:6;6375:19;;;;;;;;;;;;;;;:31;6395:10;6375:31;;;;;;;;;;;;;;;;:52;6372:186;;6477:69;6513:6;6477:69;;;;;;;;;;;;;;;;;:11;:19;6489:6;6477:19;;;;;;;;;;;;;;;:31;6497:10;6477:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;6443:11;:19;6455:6;6443:19;;;;;;;;;;;;;;;:31;6463:10;6443:31;;;;;;;;;;;;;;;:103;;;;6372:186;6575:40;6589:6;6597:9;6608:6;6575:13;:40::i;:::-;6568:47;;6264:359;;;;;:::o;11024:78::-;2374:19;2382:10;2374:7;:19::i;:::-;2366:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;11090:4:::1;11076:11;;:18;;;;;;;;;;;;;;;;;;11024:78::o:0;10590:425::-;2374:19;2382:10;2374:7;:19::i;:::-;2366:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;10735:1:::1;10714:17;:22;;10706:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;10820:1;10803:13;:18;;10795:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;10903:44;10943:3;10903:35;10920:17;4390:1;4441:2;:15;;;;:::i;:::-;4432:5;:25;;;;:::i;:::-;10903:16;;:35;;;;:::i;:::-;:39;;:44;;;;:::i;:::-;10884:16;:63;;;;10967:40;11003:3;10967:31;10984:13;4390:1;4441:2;:15;;;;:::i;:::-;4432:5;:25;;;;:::i;:::-;10967:16;;:31;;;;:::i;:::-;:35;;:40;;;;:::i;:::-;10958:6;:49;;;;10590:425:::0;;:::o;10084:77::-;2374:19;2382:10;2374:7;:19::i;:::-;2366:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;10149:4:::1;10132:14;;:21;;;;;;;;;;;;;;;;;;10084:77::o:0;3369:71::-;3412:5;4390:1;3421:16;;3369:71;:::o;11110:105::-;11174:11;11160:25;;:10;:25;;;11152:34;;;;;;11197:10;:8;:10::i;:::-;11110:105::o;11224:100::-;11272:11;11264:29;;:52;11294:21;11264:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11224:100::o;4465:62::-;;;;:::o;5174:31::-;;;;;;;;;;;;;:::o;3679:96::-;3736:7;3754:9;:18;3764:7;3754:18;;;;;;;;;;;;;;;;3747:25;;3679:96;;;:::o;2536:131::-;2374:19;2382:10;2374:7;:19::i;:::-;2366:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;2609:1:::1;2593:5:::0;::::1;:18;;;;;;;;;;;;;;;;;;2627:32;2656:1;2627:32;;;;;;:::i;:::-;;;;;;;;2536:131::o:0;11332:125::-;2374:19;2382:10;2374:7;:19::i;:::-;2366:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;11415:5:::1;:14;;;11430:11;11443:5;11415:34;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11332:125:::0;;:::o;4535:52::-;;;;:::o;9898:178::-;2374:19;2382:10;2374:7;:19::i;:::-;2366:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;9980:9:::1;9975:94;9999:4;;:11;;9995:1;:15;9975:94;;;10052:4;10032:8;:17;10041:4;;10046:1;10041:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10032:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;10012:3;;;;;:::i;:::-;;;;9975:94;;;;9898:178:::0;;:::o;3604:69::-;3647:7;3665:5;;;;;;;;;;;3658:12;;3604:69;:::o;3446:75::-;3487:13;3511:7;;;;;;;;;;;;;;;;;3504:14;;3446:75;:::o;10173:409::-;2374:19;2382:10;2374:7;:19::i;:::-;2366:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;10263:9:::1;10258:317;10282:4;;:11;;10278:1;:15;10258:317;;;10342:4;10323:24;;:4;;10328:1;10323:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:24;;::::0;10315:65:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10422:6;10403:26;;:4;;10408:1;10403:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:26;;::::0;10395:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10496:4;10477:24;;:4;;10482:1;10477:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:24;;::::0;10469:55:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10556:6;10539:5;:14;10545:4;;10550:1;10545:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10539:14;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;10295:3;;;;;:::i;:::-;;;;10258:317;;;;10173:409:::0;;;:::o;5070:29::-;;;:::o;6109:147::-;6180:4;6204:44;6218:10;6230:9;6241:6;6204:13;:44::i;:::-;6197:51;;6109:147;;;;:::o;4841:76::-;;;;;;;;;;;;;;:::o;3781:124::-;3856:7;3874:11;:19;3886:6;3874:19;;;;;;;;;;;;;;;:28;3894:7;3874:28;;;;;;;;;;;;;;;;3867:35;;3781:124;;;;:::o;5021:42::-;;;:::o;702:246::-;760:7;789:1;784;:6;780:47;;814:1;807:8;;;;780:47;837:9;853:1;849;:5;;;;:::i;:::-;837:17;;882:1;877;873;:5;;;;:::i;:::-;:10;865:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;939:1;932:8;;;702:246;;;;;:::o;954:132::-;1012:7;1039:39;1043:1;1046;1039:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1032:46;;954:132;;;;:::o;2424:104::-;2480:4;2515:5;;;;;;;;;;;2504:16;;:7;:16;;;2497:23;;2424:104;;;:::o;506:190::-;592:7;625:1;620;:6;;628:12;612:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;652:9;668:1;664;:5;;;;:::i;:::-;652:17;;687:1;680:8;;;506:190;;;;;:::o;6631:1083::-;6733:4;5726:14;;;;;;;;;;;:36;;;;5757:5;;;;;;;;;;5744:18;;:9;:18;;;5726:36;5718:45;;;;;;6753:6:::1;;;;;;;;;;;:34;;;;6776:11;6763:24;;:9;:24;;;6753:34;6750:216;;;6809:40;6823:6;6831:9;6842:6;6809:13;:40::i;:::-;6802:47;;;;6750:216;6870:11;;;;;;;;;;;6869:12;:32;;;;;6896:4;6886:14;;:6;:14;;;6869:32;:56;;;;;6906:8;:19;6915:9;6906:19;;;;;;;;;;;;;;;;;;;;;;;;;6905:20;6869:56;6865:101;;;6949:5;6942:12;;;;6865:101;6987:5;:13;6993:6;6987:13;;;;;;;;;;;;;;;;;;;;;;;;;6986:14;6978:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;7060:6;;7050;:16;;7042:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;7145:4;7132:17;;:9;:17;;;;:38;;;;;4184:42;7153:17;;:9;:17;;;;7132:38;7128:175;;;7228:16;;7218:6;7195:9;:20;7205:9;7195:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:49;;7187:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;7128:175;7318:18;7329:6;7318:10;:18::i;:::-;7315:46;;;7351:10;:8;:10::i;:::-;7315:46;7374:22;7400:11;:19;7412:6;7400:19;;;;;;;;;;;;;;;;;;;;;;;;;7399:20;:66;;7459:6;7399:66;;;7422:34;7430:6;7438:9;7449:6;7422:7;:34::i;:::-;7399:66;7374:91;;7498:53;7520:6;7498:53;;;;;;;;;;;;;;;;::::0;:9:::1;:17;7508:6;7498:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;7478:9;:17;7488:6;7478:17;;;;;;;;;;;;;;;:73;;;;7585:40;7610:14;7585:9;:20;7595:9;7585:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;7562:9;:20;7572:9;7562:20;;;;;;;;;;;;;;;:63;;;;7658:9;7641:43;;7650:6;7641:43;;;7669:14;7641:43;;;;;;:::i;:::-;;;;;;;;7702:4;7695:11;;;5782:1;6631:1083:::0;;;;;:::o;7876:583::-;5837:4;5828:6;;:13;;;;;;;;;;;;;;;;;;7925:20:::1;7976:6;;7948:24;7966:4;7948:9;:24::i;:::-;:34;;:55;;7994:9;7948:55;;;7985:6;;7948:55;7925:78;;8014:38;8030:6;8039:12;8014:7;:38::i;:::-;;8063:21;8101:1;8087:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8063:40;;8132:4;8114;8119:1;8114:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;4103:42;8148:4;8153:1;8148:7;;;;;;;;:::i;:::-;;;;;;;:13;;;;;;;;;::::0;::::1;8174:6;:57;;;8246:12;8273:1;8289:4;8316;8336:15;8174:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8374:12;8392:11;:16;;8416:21;8392:50;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8373:69;;;7914:545;;;5873:5:::0;5864:6;;:14;;;;;;;;;;;;;;;;;;7876:583::o;1092:189::-;1178:7;1210:1;1206;:5;1213:12;1198:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1237:9;1253:1;1249;:5;;;;:::i;:::-;1237:17;;1272:1;1265:8;;;1092:189;;;;;:::o;9109:305::-;9201:4;9238:29;9260:6;9238:9;:17;9248:6;9238:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;9218:9;:17;9228:6;9218:17;;;;;;;;;;;;;;;:49;;;;9301:32;9326:6;9301:9;:20;9311:9;9301:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9278:9;:20;9288:9;9278:20;;;;;;;;;;;;;;;:55;;;;9366:9;9349:35;;9358:6;9349:35;;;9377:6;9349:35;;;;;;:::i;:::-;;;;;;;;9402:4;9395:11;;9109:305;;;;;:::o;7722:146::-;7781:4;7815;7805:14;;:6;:14;;;;:55;;;;;7851:9;7823:24;7841:4;7823:9;:24::i;:::-;:37;;7805:55;7798:62;;7722:146;;;:::o;8471:630::-;8557:7;8577:17;8597:1;8577:21;;8623:4;8613:14;;:6;:14;;;:35;;;;;8647:1;8631:5;:12;;;:17;;8613:35;8609:446;;;8694:44;4960:3;8694:24;8705:5;:12;;;8694:6;:10;;:24;;;;:::i;:::-;:28;;:44;;;;:::i;:::-;8682:56;;8780:39;8809:9;8780;:24;8798:4;8780:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;8753:9;:24;8771:4;8753:24;;;;;;;;;;;;;;;:66;;;;8609:446;;;8854:4;8841:17;;:9;:17;;;:39;;;;;8879:1;8862:5;:13;;;:18;;8841:39;8837:218;;;8917:45;4960:3;8917:25;8928:5;:13;;;8917:6;:10;;:25;;;;:::i;:::-;:29;;:45;;;;:::i;:::-;8905:57;;9004:39;9033:9;9004;:24;9022:4;9004:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;8977:9;:24;8995:4;8977:24;;;;;;;;;;;;;;;:66;;;;8837:218;8609:446;9072:21;9083:9;9072:6;:10;;:21;;;;:::i;:::-;9065:28;;;8471:630;;;;;:::o;179:179::-;237:7;257:9;273:1;269;:5;;;;:::i;:::-;257:17;;298:1;293;:6;;285:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;349:1;342:8;;;179:179;;;;:::o;364:136::-;422:7;449:43;453:1;456;449:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;442:50;;364:136;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:474::-;3514:6;3522;3571:2;3559:9;3550:7;3546:23;3542:32;3539:119;;;3577:79;;:::i;:::-;3539:119;3697:1;3722:53;3767:7;3758:6;3747:9;3743:22;3722:53;:::i;:::-;3712:63;;3668:117;3824:2;3850:53;3895:7;3886:6;3875:9;3871:22;3850:53;:::i;:::-;3840:63;;3795:118;3446:474;;;;;:::o;3926:117::-;4035:1;4032;4025:12;4049:117;4158:1;4155;4148:12;4172:117;4281:1;4278;4271:12;4312:568;4385:8;4395:6;4445:3;4438:4;4430:6;4426:17;4422:27;4412:122;;4453:79;;:::i;:::-;4412:122;4566:6;4553:20;4543:30;;4596:18;4588:6;4585:30;4582:117;;;4618:79;;:::i;:::-;4582:117;4732:4;4724:6;4720:17;4708:29;;4786:3;4778:4;4770:6;4766:17;4756:8;4752:32;4749:41;4746:128;;;4793:79;;:::i;:::-;4746:128;4312:568;;;;;:::o;4886:116::-;4956:21;4971:5;4956:21;:::i;:::-;4949:5;4946:32;4936:60;;4992:1;4989;4982:12;4936:60;4886:116;:::o;5008:133::-;5051:5;5089:6;5076:20;5067:29;;5105:30;5129:5;5105:30;:::i;:::-;5008:133;;;;:::o;5147:698::-;5239:6;5247;5255;5304:2;5292:9;5283:7;5279:23;5275:32;5272:119;;;5310:79;;:::i;:::-;5272:119;5458:1;5447:9;5443:17;5430:31;5488:18;5480:6;5477:30;5474:117;;;5510:79;;:::i;:::-;5474:117;5623:80;5695:7;5686:6;5675:9;5671:22;5623:80;:::i;:::-;5605:98;;;;5401:312;5752:2;5778:50;5820:7;5811:6;5800:9;5796:22;5778:50;:::i;:::-;5768:60;;5723:115;5147:698;;;;;:::o;5851:118::-;5938:24;5956:5;5938:24;:::i;:::-;5933:3;5926:37;5851:118;;:::o;5975:222::-;6068:4;6106:2;6095:9;6091:18;6083:26;;6119:71;6187:1;6176:9;6172:17;6163:6;6119:71;:::i;:::-;5975:222;;;;:::o;6203:619::-;6280:6;6288;6296;6345:2;6333:9;6324:7;6320:23;6316:32;6313:119;;;6351:79;;:::i;:::-;6313:119;6471:1;6496:53;6541:7;6532:6;6521:9;6517:22;6496:53;:::i;:::-;6486:63;;6442:117;6598:2;6624:53;6669:7;6660:6;6649:9;6645:22;6624:53;:::i;:::-;6614:63;;6569:118;6726:2;6752:53;6797:7;6788:6;6777:9;6773:22;6752:53;:::i;:::-;6742:63;;6697:118;6203:619;;;;;:::o;6828:86::-;6863:7;6903:4;6896:5;6892:16;6881:27;;6828:86;;;:::o;6920:112::-;7003:22;7019:5;7003:22;:::i;:::-;6998:3;6991:35;6920:112;;:::o;7038:214::-;7127:4;7165:2;7154:9;7150:18;7142:26;;7178:67;7242:1;7231:9;7227:17;7218:6;7178:67;:::i;:::-;7038:214;;;;:::o;7258:329::-;7317:6;7366:2;7354:9;7345:7;7341:23;7337:32;7334:119;;;7372:79;;:::i;:::-;7334:119;7492:1;7517:53;7562:7;7553:6;7542:9;7538:22;7517:53;:::i;:::-;7507:63;;7463:117;7258:329;;;;:::o;7593:109::-;7643:7;7672:24;7690:5;7672:24;:::i;:::-;7661:35;;7593:109;;;:::o;7708:148::-;7794:37;7825:5;7794:37;:::i;:::-;7787:5;7784:48;7774:76;;7846:1;7843;7836:12;7774:76;7708:148;:::o;7862:165::-;7921:5;7959:6;7946:20;7937:29;;7975:46;8015:5;7975:46;:::i;:::-;7862:165;;;;:::o;8033:500::-;8114:6;8122;8171:2;8159:9;8150:7;8146:23;8142:32;8139:119;;;8177:79;;:::i;:::-;8139:119;8297:1;8322:66;8380:7;8371:6;8360:9;8356:22;8322:66;:::i;:::-;8312:76;;8268:130;8437:2;8463:53;8508:7;8499:6;8488:9;8484:22;8463:53;:::i;:::-;8453:63;;8408:118;8033:500;;;;;:::o;8539:559::-;8625:6;8633;8682:2;8670:9;8661:7;8657:23;8653:32;8650:119;;;8688:79;;:::i;:::-;8650:119;8836:1;8825:9;8821:17;8808:31;8866:18;8858:6;8855:30;8852:117;;;8888:79;;:::i;:::-;8852:117;9001:80;9073:7;9064:6;9053:9;9049:22;9001:80;:::i;:::-;8983:98;;;;8779:312;8539:559;;;;;:::o;9104:118::-;9191:24;9209:5;9191:24;:::i;:::-;9186:3;9179:37;9104:118;;:::o;9228:222::-;9321:4;9359:2;9348:9;9344:18;9336:26;;9372:71;9440:1;9429:9;9425:17;9416:6;9372:71;:::i;:::-;9228:222;;;;:::o;9456:332::-;9577:4;9615:2;9604:9;9600:18;9592:26;;9628:71;9696:1;9685:9;9681:17;9672:6;9628:71;:::i;:::-;9709:72;9777:2;9766:9;9762:18;9753:6;9709:72;:::i;:::-;9456:332;;;;;:::o;9794:474::-;9862:6;9870;9919:2;9907:9;9898:7;9894:23;9890:32;9887:119;;;9925:79;;:::i;:::-;9887:119;10045:1;10070:53;10115:7;10106:6;10095:9;10091:22;10070:53;:::i;:::-;10060:63;;10016:117;10172:2;10198:53;10243:7;10234:6;10223:9;10219:22;10198:53;:::i;:::-;10188:63;;10143:118;9794:474;;;;;:::o;10274:60::-;10302:3;10323:5;10316:12;;10274:60;;;:::o;10340:142::-;10390:9;10423:53;10441:34;10450:24;10468:5;10450:24;:::i;:::-;10441:34;:::i;:::-;10423:53;:::i;:::-;10410:66;;10340:142;;;:::o;10488:126::-;10538:9;10571:37;10602:5;10571:37;:::i;:::-;10558:50;;10488:126;;;:::o;10620:152::-;10696:9;10729:37;10760:5;10729:37;:::i;:::-;10716:50;;10620:152;;;:::o;10778:183::-;10891:63;10948:5;10891:63;:::i;:::-;10886:3;10879:76;10778:183;;:::o;10967:274::-;11086:4;11124:2;11113:9;11109:18;11101:26;;11137:97;11231:1;11220:9;11216:17;11207:6;11137:97;:::i;:::-;10967:274;;;;:::o;11247:156::-;11387:8;11383:1;11375:6;11371:14;11364:32;11247:156;:::o;11409:365::-;11551:3;11572:66;11636:1;11631:3;11572:66;:::i;:::-;11565:73;;11647:93;11736:3;11647:93;:::i;:::-;11765:2;11760:3;11756:12;11749:19;;11409:365;;;:::o;11780:419::-;11946:4;11984:2;11973:9;11969:18;11961:26;;12033:9;12027:4;12023:20;12019:1;12008:9;12004:17;11997:47;12061:131;12187:4;12061:131;:::i;:::-;12053:139;;11780:419;;;:::o;12205:172::-;12345:24;12341:1;12333:6;12329:14;12322:48;12205:172;:::o;12383:366::-;12525:3;12546:67;12610:2;12605:3;12546:67;:::i;:::-;12539:74;;12622:93;12711:3;12622:93;:::i;:::-;12740:2;12735:3;12731:12;12724:19;;12383:366;;;:::o;12755:419::-;12921:4;12959:2;12948:9;12944:18;12936:26;;13008:9;13002:4;12998:20;12994:1;12983:9;12979:17;12972:47;13036:131;13162:4;13036:131;:::i;:::-;13028:139;;12755:419;;;:::o;13180:180::-;13228:77;13225:1;13218:88;13325:4;13322:1;13315:15;13349:4;13346:1;13339:15;13366:180;13414:77;13411:1;13404:88;13511:4;13508:1;13501:15;13535:4;13532:1;13525:15;13552:233;13591:3;13614:24;13632:5;13614:24;:::i;:::-;13605:33;;13660:66;13653:5;13650:77;13647:103;;13730:18;;:::i;:::-;13647:103;13777:1;13770:5;13766:13;13759:20;;13552:233;;;:::o;13791:102::-;13833:8;13880:5;13877:1;13873:13;13852:34;;13791:102;;;:::o;13899:848::-;13960:5;13967:4;13991:6;13982:15;;14015:5;14006:14;;14029:712;14050:1;14040:8;14037:15;14029:712;;;14145:4;14140:3;14136:14;14130:4;14127:24;14124:50;;;14154:18;;:::i;:::-;14124:50;14204:1;14194:8;14190:16;14187:451;;;14619:4;14612:5;14608:16;14599:25;;14187:451;14669:4;14663;14659:15;14651:23;;14699:32;14722:8;14699:32;:::i;:::-;14687:44;;14029:712;;;13899:848;;;;;;;:::o;14753:1073::-;14807:5;14998:8;14988:40;;15019:1;15010:10;;15021:5;;14988:40;15047:4;15037:36;;15064:1;15055:10;;15066:5;;15037:36;15133:4;15181:1;15176:27;;;;15217:1;15212:191;;;;15126:277;;15176:27;15194:1;15185:10;;15196:5;;;15212:191;15257:3;15247:8;15244:17;15241:43;;;15264:18;;:::i;:::-;15241:43;15313:8;15310:1;15306:16;15297:25;;15348:3;15341:5;15338:14;15335:40;;;15355:18;;:::i;:::-;15335:40;15388:5;;;15126:277;;15512:2;15502:8;15499:16;15493:3;15487:4;15484:13;15480:36;15462:2;15452:8;15449:16;15444:2;15438:4;15435:12;15431:35;15415:111;15412:246;;;15568:8;15562:4;15558:19;15549:28;;15603:3;15596:5;15593:14;15590:40;;;15610:18;;:::i;:::-;15590:40;15643:5;;15412:246;15683:42;15721:3;15711:8;15705:4;15702:1;15683:42;:::i;:::-;15668:57;;;;15757:4;15752:3;15748:14;15741:5;15738:25;15735:51;;;15766:18;;:::i;:::-;15735:51;15815:4;15808:5;15804:16;15795:25;;14753:1073;;;;;;:::o;15832:281::-;15890:5;15914:23;15932:4;15914:23;:::i;:::-;15906:31;;15958:25;15974:8;15958:25;:::i;:::-;15946:37;;16002:104;16039:66;16029:8;16023:4;16002:104;:::i;:::-;15993:113;;15832:281;;;;:::o;16119:410::-;16159:7;16182:20;16200:1;16182:20;:::i;:::-;16177:25;;16216:20;16234:1;16216:20;:::i;:::-;16211:25;;16271:1;16268;16264:9;16293:30;16311:11;16293:30;:::i;:::-;16282:41;;16472:1;16463:7;16459:15;16456:1;16453:22;16433:1;16426:9;16406:83;16383:139;;16502:18;;:::i;:::-;16383:139;16167:362;16119:410;;;;:::o;16535:231::-;16675:34;16671:1;16663:6;16659:14;16652:58;16744:14;16739:2;16731:6;16727:15;16720:39;16535:231;:::o;16772:366::-;16914:3;16935:67;16999:2;16994:3;16935:67;:::i;:::-;16928:74;;17011:93;17100:3;17011:93;:::i;:::-;17129:2;17124:3;17120:12;17113:19;;16772:366;;;:::o;17144:419::-;17310:4;17348:2;17337:9;17333:18;17325:26;;17397:9;17391:4;17387:20;17383:1;17372:9;17368:17;17361:47;17425:131;17551:4;17425:131;:::i;:::-;17417:139;;17144:419;;;:::o;17569:232::-;17709:34;17705:1;17697:6;17693:14;17686:58;17778:15;17773:2;17765:6;17761:15;17754:40;17569:232;:::o;17807:366::-;17949:3;17970:67;18034:2;18029:3;17970:67;:::i;:::-;17963:74;;18046:93;18135:3;18046:93;:::i;:::-;18164:2;18159:3;18155:12;18148:19;;17807:366;;;:::o;18179:419::-;18345:4;18383:2;18372:9;18368:18;18360:26;;18432:9;18426:4;18422:20;18418:1;18407:9;18403:17;18396:47;18460:131;18586:4;18460:131;:::i;:::-;18452:139;;18179:419;;;:::o;18604:134::-;18662:9;18695:37;18726:5;18695:37;:::i;:::-;18682:50;;18604:134;;;:::o;18744:147::-;18839:45;18878:5;18839:45;:::i;:::-;18834:3;18827:58;18744:147;;:::o;18897:348::-;19026:4;19064:2;19053:9;19049:18;19041:26;;19077:79;19153:1;19142:9;19138:17;19129:6;19077:79;:::i;:::-;19166:72;19234:2;19223:9;19219:18;19210:6;19166:72;:::i;:::-;18897:348;;;;;:::o;19251:137::-;19305:5;19336:6;19330:13;19321:22;;19352:30;19376:5;19352:30;:::i;:::-;19251:137;;;;:::o;19394:345::-;19461:6;19510:2;19498:9;19489:7;19485:23;19481:32;19478:119;;;19516:79;;:::i;:::-;19478:119;19636:1;19661:61;19714:7;19705:6;19694:9;19690:22;19661:61;:::i;:::-;19651:71;;19607:125;19394:345;;;;:::o;19745:178::-;19885:30;19881:1;19873:6;19869:14;19862:54;19745:178;:::o;19929:366::-;20071:3;20092:67;20156:2;20151:3;20092:67;:::i;:::-;20085:74;;20168:93;20257:3;20168:93;:::i;:::-;20286:2;20281:3;20277:12;20270:19;;19929:366;;;:::o;20301:419::-;20467:4;20505:2;20494:9;20490:18;20482:26;;20554:9;20548:4;20544:20;20540:1;20529:9;20525:17;20518:47;20582:131;20708:4;20582:131;:::i;:::-;20574:139;;20301:419;;;:::o;20726:170::-;20866:22;20862:1;20854:6;20850:14;20843:46;20726:170;:::o;20902:366::-;21044:3;21065:67;21129:2;21124:3;21065:67;:::i;:::-;21058:74;;21141:93;21230:3;21141:93;:::i;:::-;21259:2;21254:3;21250:12;21243:19;;20902:366;;;:::o;21274:419::-;21440:4;21478:2;21467:9;21463:18;21455:26;;21527:9;21521:4;21517:20;21513:1;21502:9;21498:17;21491:47;21555:131;21681:4;21555:131;:::i;:::-;21547:139;;21274:419;;;:::o;21699:168::-;21839:20;21835:1;21827:6;21823:14;21816:44;21699:168;:::o;21873:366::-;22015:3;22036:67;22100:2;22095:3;22036:67;:::i;:::-;22029:74;;22112:93;22201:3;22112:93;:::i;:::-;22230:2;22225:3;22221:12;22214:19;;21873:366;;;:::o;22245:419::-;22411:4;22449:2;22438:9;22434:18;22426:26;;22498:9;22492:4;22488:20;22484:1;22473:9;22469:17;22462:47;22526:131;22652:4;22526:131;:::i;:::-;22518:139;;22245:419;;;:::o;22670:180::-;22718:77;22715:1;22708:88;22815:4;22812:1;22805:15;22839:4;22836:1;22829:15;22856:185;22896:1;22913:20;22931:1;22913:20;:::i;:::-;22908:25;;22947:20;22965:1;22947:20;:::i;:::-;22942:25;;22986:1;22976:35;;22991:18;;:::i;:::-;22976:35;23033:1;23030;23026:9;23021:14;;22856:185;;;;:::o;23047:220::-;23187:34;23183:1;23175:6;23171:14;23164:58;23256:3;23251:2;23243:6;23239:15;23232:28;23047:220;:::o;23273:366::-;23415:3;23436:67;23500:2;23495:3;23436:67;:::i;:::-;23429:74;;23512:93;23601:3;23512:93;:::i;:::-;23630:2;23625:3;23621:12;23614:19;;23273:366;;;:::o;23645:419::-;23811:4;23849:2;23838:9;23834:18;23826:26;;23898:9;23892:4;23888:20;23884:1;23873:9;23869:17;23862:47;23926:131;24052:4;23926:131;:::i;:::-;23918:139;;23645:419;;;:::o;24070:194::-;24110:4;24130:20;24148:1;24130:20;:::i;:::-;24125:25;;24164:20;24182:1;24164:20;:::i;:::-;24159:25;;24208:1;24205;24201:9;24193:17;;24232:1;24226:4;24223:11;24220:37;;;24237:18;;:::i;:::-;24220:37;24070:194;;;;:::o;24270:176::-;24410:28;24406:1;24398:6;24394:14;24387:52;24270:176;:::o;24452:366::-;24594:3;24615:67;24679:2;24674:3;24615:67;:::i;:::-;24608:74;;24691:93;24780:3;24691:93;:::i;:::-;24809:2;24804:3;24800:12;24793:19;;24452:366;;;:::o;24824:419::-;24990:4;25028:2;25017:9;25013:18;25005:26;;25077:9;25071:4;25067:20;25063:1;25052:9;25048:17;25041:47;25105:131;25231:4;25105:131;:::i;:::-;25097:139;;24824:419;;;:::o;25249:223::-;25389:34;25385:1;25377:6;25373:14;25366:58;25458:6;25453:2;25445:6;25441:15;25434:31;25249:223;:::o;25478:366::-;25620:3;25641:67;25705:2;25700:3;25641:67;:::i;:::-;25634:74;;25717:93;25806:3;25717:93;:::i;:::-;25835:2;25830:3;25826:12;25819:19;;25478:366;;;:::o;25850:419::-;26016:4;26054:2;26043:9;26039:18;26031:26;;26103:9;26097:4;26093:20;26089:1;26078:9;26074:17;26067:47;26131:131;26257:4;26131:131;:::i;:::-;26123:139;;25850:419;;;:::o;26275:191::-;26315:3;26334:20;26352:1;26334:20;:::i;:::-;26329:25;;26368:20;26386:1;26368:20;:::i;:::-;26363:25;;26411:1;26408;26404:9;26397:16;;26432:3;26429:1;26426:10;26423:36;;;26439:18;;:::i;:::-;26423:36;26275:191;;;;:::o;26472:229::-;26612:34;26608:1;26600:6;26596:14;26589:58;26681:12;26676:2;26668:6;26664:15;26657:37;26472:229;:::o;26707:366::-;26849:3;26870:67;26934:2;26929:3;26870:67;:::i;:::-;26863:74;;26946:93;27035:3;26946:93;:::i;:::-;27064:2;27059:3;27055:12;27048:19;;26707:366;;;:::o;27079:419::-;27245:4;27283:2;27272:9;27268:18;27260:26;;27332:9;27326:4;27322:20;27318:1;27307:9;27303:17;27296:47;27360:131;27486:4;27360:131;:::i;:::-;27352:139;;27079:419;;;:::o;27504:180::-;27552:77;27549:1;27542:88;27649:4;27646:1;27639:15;27673:4;27670:1;27663:15;27690:85;27735:7;27764:5;27753:16;;27690:85;;;:::o;27781:158::-;27839:9;27872:61;27890:42;27899:32;27925:5;27899:32;:::i;:::-;27890:42;:::i;:::-;27872:61;:::i;:::-;27859:74;;27781:158;;;:::o;27945:147::-;28040:45;28079:5;28040:45;:::i;:::-;28035:3;28028:58;27945:147;;:::o;28098:114::-;28165:6;28199:5;28193:12;28183:22;;28098:114;;;:::o;28218:184::-;28317:11;28351:6;28346:3;28339:19;28391:4;28386:3;28382:14;28367:29;;28218:184;;;;:::o;28408:132::-;28475:4;28498:3;28490:11;;28528:4;28523:3;28519:14;28511:22;;28408:132;;;:::o;28546:108::-;28623:24;28641:5;28623:24;:::i;:::-;28618:3;28611:37;28546:108;;:::o;28660:179::-;28729:10;28750:46;28792:3;28784:6;28750:46;:::i;:::-;28828:4;28823:3;28819:14;28805:28;;28660:179;;;;:::o;28845:113::-;28915:4;28947;28942:3;28938:14;28930:22;;28845:113;;;:::o;28994:732::-;29113:3;29142:54;29190:5;29142:54;:::i;:::-;29212:86;29291:6;29286:3;29212:86;:::i;:::-;29205:93;;29322:56;29372:5;29322:56;:::i;:::-;29401:7;29432:1;29417:284;29442:6;29439:1;29436:13;29417:284;;;29518:6;29512:13;29545:63;29604:3;29589:13;29545:63;:::i;:::-;29538:70;;29631:60;29684:6;29631:60;:::i;:::-;29621:70;;29477:224;29464:1;29461;29457:9;29452:14;;29417:284;;;29421:14;29717:3;29710:10;;29118:608;;;28994:732;;;;:::o;29732:831::-;29995:4;30033:3;30022:9;30018:19;30010:27;;30047:71;30115:1;30104:9;30100:17;30091:6;30047:71;:::i;:::-;30128:80;30204:2;30193:9;30189:18;30180:6;30128:80;:::i;:::-;30255:9;30249:4;30245:20;30240:2;30229:9;30225:18;30218:48;30283:108;30386:4;30377:6;30283:108;:::i;:::-;30275:116;;30401:72;30469:2;30458:9;30454:18;30445:6;30401:72;:::i;:::-;30483:73;30551:3;30540:9;30536:19;30527:6;30483:73;:::i;:::-;29732:831;;;;;;;;:::o;30569:147::-;30670:11;30707:3;30692:18;;30569:147;;;;:::o;30722:114::-;;:::o;30842:398::-;31001:3;31022:83;31103:1;31098:3;31022:83;:::i;:::-;31015:90;;31114:93;31203:3;31114:93;:::i;:::-;31232:1;31227:3;31223:11;31216:18;;30842:398;;;:::o;31246:379::-;31430:3;31452:147;31595:3;31452:147;:::i;:::-;31445:154;;31616:3;31609:10;;31246:379;;;:::o;31631:177::-;31771:29;31767:1;31759:6;31755:14;31748:53;31631:177;:::o;31814:366::-;31956:3;31977:67;32041:2;32036:3;31977:67;:::i;:::-;31970:74;;32053:93;32142:3;32053:93;:::i;:::-;32171:2;32166:3;32162:12;32155:19;;31814:366;;;:::o;32186:419::-;32352:4;32390:2;32379:9;32375:18;32367:26;;32439:9;32433:4;32429:20;32425:1;32414:9;32410:17;32403:47;32467:131;32593:4;32467:131;:::i;:::-;32459:139;;32186:419;;;:::o

Swarm Source

ipfs://72dc902cde9e3a6b4a2bf502d3d74128eda168215ae8e17b351bc2dfca0ccfde

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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