ETH Price: $2,338.46 (-0.80%)

Contract

0xb667BeadF9E69Ef96F8202bdB7485A551Be2c028
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Owner_set Sell T...182080922023-09-24 20:38:47353 days ago1695587927IN
0xb667Bead...51Be2c028
0 ETH0.000206616.71712396
Owner_set Buy Ta...182080912023-09-24 20:38:35353 days ago1695587915IN
0xb667Bead...51Be2c028
0 ETH0.000207266.73797584
Approve182080722023-09-24 20:34:47353 days ago1695587687IN
0xb667Bead...51Be2c028
0 ETH0.000449719.51681053
0x60806040182080422023-09-24 20:28:47353 days ago1695587327IN
 Create: RISKREWARD
0 ETH0.041897457

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RISKREWARD

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 2023-09-24
*/

/**
 *Submitted for verification at Etherscan.io on 2023-09-24
*/

// SPDX-License-Identifier: MIT

/*

TG: https://t.me/HR_HR_ERC20
TWITTER: Useless we are in bear everybody don't care
 
*/

pragma solidity ^0.8.17;

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);
    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);
}

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

interface IRouter {
    function factory() external pure returns (address);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

contract RISKREWARD is Context, IERC20, Ownable {

    using Address for address payable;

    IRouter public router;
    address public pair;
    
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) public _isExcludedFromFee;
    mapping (address => bool) public _isExcludedFromMaxBalance;
    
    
    
    


    uint8 private constant _decimals = 9; 
    uint256 private _tTotal = 100_000_000 * (10**_decimals);
    uint256 public swapThreshold = 1_000_000 * (10**_decimals); 
    uint256 public maxTxAmount = 3_000_000 * (10**_decimals);
    uint256 public maxWallet =  3_000_000 * (10**_decimals);

    string private constant _name = "HIGH REWARD"; 
    string private constant _symbol = "HIGH RISK";

    struct Tax{
        uint8 marketingTax;
        uint8 lpTax;
    }

    struct TokensFromTax{
        uint marketingTokens;
        uint lpTokens;
    }
    TokensFromTax public totalTokensFromTax;

    Tax public buyTax = Tax(5,10);
    Tax public sellTax = Tax(15,10);
    
    address public marketingWallet = 0x2a2E3F54279fF903cC9697dd44a60F23b4b5636f;
    
    bool private swapping;
    uint private _swapCooldown = 5; 
    uint private _lastSwap;
    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }

    constructor () {
        _tOwned[_msgSender()] = _tTotal;
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        _approve(owner(), address(router), ~uint256(0));
        
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[marketingWallet] = true;

        _isExcludedFromMaxBalance[owner()] = true;
        _isExcludedFromMaxBalance[address(this)] = true;
        _isExcludedFromMaxBalance[pair] = true;
        _isExcludedFromMaxBalance[marketingWallet] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

// ================= ERC20 =============== //
    function name() public pure returns (string memory) {
        return _name;
    }

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

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    receive() external payable {}
// ========================================== //

//============== Owner Functions ===========//
   
    function owner_setBuyTaxes(uint8 marketingTax, uint8 lpTax) external onlyOwner{
        uint tTax =  marketingTax + lpTax;
        require(tTax <= 30, "Can't set tax too high");
        buyTax = Tax(marketingTax,lpTax);
        emit TaxesChanged();
    }

    function owner_setSellTaxes(uint8 marketingTax, uint8 lpTax) external onlyOwner{
        uint tTax = marketingTax + lpTax;
        require(tTax <= 80, "Can't set tax too high");
        sellTax = Tax(marketingTax,lpTax);
        emit TaxesChanged();
    }
    
    function owner_setTransferMaxes(uint maxTX_EXACT, uint maxWallet_EXACT) public onlyOwner{
        uint pointFiveSupply = (_tTotal * 5 / 1000) / (10**_decimals);
        require(maxTX_EXACT >= pointFiveSupply && maxWallet_EXACT >= pointFiveSupply, "Invalid Settings");
        maxTxAmount = maxTX_EXACT * (10**_decimals);
        maxWallet = maxWallet_EXACT * (10**_decimals);
    }

    function owner_rescueETH(uint256 weiAmount) public onlyOwner{
        require(address(this).balance >= weiAmount, "Insufficient ETH balance");
        payable(msg.sender).transfer(weiAmount);
    }

    function owner_rescueTokens() public{
        // Make sure ca doesn't withdraw the pending taxes to be swapped.
        // Sends excess tokens / accidentally sent tokens back to marketing wallet.
        uint pendingTaxTokens = totalTokensFromTax.lpTokens + totalTokensFromTax.marketingTokens;
        require(balanceOf(address(this)) >  pendingTaxTokens);
        uint excessTokens = balanceOf(address(this)) - pendingTaxTokens;
        _transfer(address(this), marketingWallet, excessTokens);
    }
    


// ========================================//
    
    function _getTaxValues(uint amount, address from, bool isSell) private returns(uint256){
        Tax memory tmpTaxes = buyTax;
        if (isSell){
            tmpTaxes = sellTax;
        }

        uint tokensForMarketing = amount * tmpTaxes.marketingTax / 100;
        uint tokensForLP = amount * tmpTaxes.lpTax / 100;

        if(tokensForMarketing > 0)
            totalTokensFromTax.marketingTokens += tokensForMarketing;

        if(tokensForLP > 0)
            totalTokensFromTax.lpTokens += tokensForLP;

        uint totalTaxedTokens = tokensForMarketing + tokensForLP;

        _tOwned[address(this)] += totalTaxedTokens;
        if(totalTaxedTokens > 0)
            emit Transfer (from, address(this), totalTaxedTokens);
            
        return (amount - totalTaxedTokens);
    }

    function _transfer(address from,address to,uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(amount <= maxTxAmount || _isExcludedFromMaxBalance[from], "Transfer amount exceeds the _maxTxAmount.");
      

        if(!_isExcludedFromMaxBalance[to])
            require(balanceOf(to) + amount <= maxWallet, "Transfer amount exceeds the maxWallet.");
        
        if (balanceOf(address(this)) >= swapThreshold && block.timestamp >= (_lastSwap + _swapCooldown) && !swapping && from != pair && from != owner() && to != owner())
            swapAndLiquify();
          
        _tOwned[from] -= amount;
        uint256 transferAmount = amount;
        
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            transferAmount = _getTaxValues(amount, from, to == pair);

        }

        _tOwned[to] += transferAmount;
        emit Transfer(from, to, transferAmount);
    }

    function swapAndLiquify() private lockTheSwap{
        
        if(totalTokensFromTax.marketingTokens > 0){
            uint256 ethSwapped = swapTokensForETH(totalTokensFromTax.marketingTokens);
            if(ethSwapped > 0){
                payable(marketingWallet).transfer(ethSwapped);
                totalTokensFromTax.marketingTokens = 0;
            }
        }   

        if(totalTokensFromTax.lpTokens > 0){
            uint half = totalTokensFromTax.lpTokens / 2;
            uint otherHalf = totalTokensFromTax.lpTokens - half;
            uint balAutoLP = swapTokensForETH(half);
            if (balAutoLP > 0)
                addLiquidity(otherHalf, balAutoLP);
            totalTokensFromTax.lpTokens = 0;
        }

        emit SwapAndLiquify();

        _lastSwap = block.timestamp;
    }

    function swapTokensForETH(uint256 tokenAmount) private returns (uint256) {
        uint256 initialBalance = address(this).balance;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
        return (address(this).balance - initialBalance);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(router), tokenAmount);

        (,uint256 ethFromLiquidity,) = router.addLiquidityETH {value: ethAmount} (
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
        
        if (ethAmount - ethFromLiquidity > 0)
            payable(marketingWallet).sendValue (ethAmount - ethFromLiquidity);
    }

    event SwapAndLiquify();
    event TaxesChanged();

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[],"name":"TaxesChanged","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":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromMaxBalance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"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":"buyTax","outputs":[{"internalType":"uint8","name":"marketingTax","type":"uint8"},{"internalType":"uint8","name":"lpTax","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"owner_rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner_rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"marketingTax","type":"uint8"},{"internalType":"uint8","name":"lpTax","type":"uint8"}],"name":"owner_setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"marketingTax","type":"uint8"},{"internalType":"uint8","name":"lpTax","type":"uint8"}],"name":"owner_setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTX_EXACT","type":"uint256"},{"internalType":"uint256","name":"maxWallet_EXACT","type":"uint256"}],"name":"owner_setTransferMaxes","outputs":[],"stateMutability":"nonpayable","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 IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint8","name":"marketingTax","type":"uint8"},{"internalType":"uint8","name":"lpTax","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensFromTax","outputs":[{"internalType":"uint256","name":"marketingTokens","type":"uint256"},{"internalType":"uint256","name":"lpTokens","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a62000014919062000c4b565b6305f5e10062000025919062000c9c565b6007556009600a62000038919062000c4b565b620f424062000048919062000c9c565b6008556009600a6200005b919062000c4b565b622dc6c06200006b919062000c9c565b6009556009600a6200007e919062000c4b565b622dc6c06200008e919062000c9c565b600a556040518060400160405280600560ff168152602001600a60ff16815250600d60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555050506040518060400160405280600f60ff168152602001600a60ff16815250600e60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff1602179055505050732a2e3f54279ff903cc9697dd44a60f23b4b5636f600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506005601055348015620001be57600080fd5b50620001df620001d3620007eb60201b60201c565b620007f360201b60201c565b60075460036000620001f6620007eb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200029b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c1919062000d51565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000329573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034f919062000d51565b6040518363ffffffff1660e01b81526004016200036e92919062000d94565b6020604051808303816000875af11580156200038e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b4919062000d51565b905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200047e6200044c620008b760201b60201c565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600019620008e060201b60201c565b60016005600062000494620008b760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000620005cd620008b760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200077a620007eb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600754604051620007db919062000dd2565b60405180910390a3505062000f30565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000952576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009499062000e76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009c4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009bb9062000f0e565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000aa4919062000dd2565b60405180910390a3505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000b3f5780860481111562000b175762000b1662000ab1565b5b600185161562000b275780820291505b808102905062000b378562000ae0565b945062000af7565b94509492505050565b60008262000b5a576001905062000c2d565b8162000b6a576000905062000c2d565b816001811462000b83576002811462000b8e5762000bc4565b600191505062000c2d565b60ff84111562000ba35762000ba262000ab1565b5b8360020a91508482111562000bbd5762000bbc62000ab1565b5b5062000c2d565b5060208310610133831016604e8410600b841016171562000bfe5782820a90508381111562000bf85762000bf762000ab1565b5b62000c2d565b62000c0d848484600162000aed565b9250905081840481111562000c275762000c2662000ab1565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000c588262000c34565b915062000c658362000c3e565b925062000c947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b48565b905092915050565b600062000ca98262000c34565b915062000cb68362000c34565b925082820262000cc68162000c34565b9150828204841483151762000ce05762000cdf62000ab1565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d198262000cec565b9050919050565b62000d2b8162000d0c565b811462000d3757600080fd5b50565b60008151905062000d4b8162000d20565b92915050565b60006020828403121562000d6a5762000d6962000ce7565b5b600062000d7a8482850162000d3a565b91505092915050565b62000d8e8162000d0c565b82525050565b600060408201905062000dab600083018562000d83565b62000dba602083018462000d83565b9392505050565b62000dcc8162000c34565b82525050565b600060208201905062000de9600083018462000dc1565b92915050565b600082825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600062000e5e60248362000def565b915062000e6b8262000e00565b604082019050919050565b6000602082019050818103600083015262000e918162000e4f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600062000ef660228362000def565b915062000f038262000e98565b604082019050919050565b6000602082019050818103600083015262000f298162000ee7565b9050919050565b6135f48062000f406000396000f3fe6080604052600436106101d15760003560e01c806375f0a874116100f7578063a9059cbb11610095578063f2fde38b11610064578063f2fde38b146106af578063f887ea40146106d8578063f8b45b0514610703578063f9d0ee941461072e576101d8565b8063a9059cbb146105e0578063cb0e6f7b1461061d578063cc1776d314610646578063dd62ed3e14610672576101d8565b80638da5cb5b116100d15780638da5cb5b1461052257806395d89b411461054d578063a457c2d714610578578063a8aa1b31146105b5576101d8565b806375f0a8741461048f578063768dc710146104ba5780638c0b5e22146104f7576101d8565b8063313ce5671161016f5780635966c81e1161013e5780635966c81e146103fb5780635e278da61461042457806370a082311461043b578063715018a614610478576101d8565b8063313ce5671461033e57806339509351146103695780634ba422bc146103a65780634f7041a5146103cf576101d8565b806318160ddd116101ab57806318160ddd146102705780631b0f93811461029b57806323b872dd146102c457806328c61f4114610301576101d8565b80630445b667146101dd57806306fdde0314610208578063095ea7b314610233576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f261075a565b6040516101ff91906123fa565b60405180910390f35b34801561021457600080fd5b5061021d610760565b60405161022a91906124a5565b60405180910390f35b34801561023f57600080fd5b5061025a60048036038101906102559190612556565b61079d565b60405161026791906125b1565b60405180910390f35b34801561027c57600080fd5b506102856107bb565b60405161029291906123fa565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd9190612605565b6107c5565b005b3480156102d057600080fd5b506102eb60048036038101906102e69190612645565b61092b565b6040516102f891906125b1565b60405180910390f35b34801561030d57600080fd5b5061032860048036038101906103239190612698565b6109e3565b60405161033591906125b1565b60405180910390f35b34801561034a57600080fd5b50610353610a03565b60405161036091906126d4565b60405180910390f35b34801561037557600080fd5b50610390600480360381019061038b9190612556565b610a0c565b60405161039d91906125b1565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c891906126ef565b610ab8565b005b3480156103db57600080fd5b506103e4610bfe565b6040516103f292919061272f565b60405180910390f35b34801561040757600080fd5b50610422600480360381019061041d9190612758565b610c2a565b005b34801561043057600080fd5b50610439610d33565b005b34801561044757600080fd5b50610462600480360381019061045d9190612698565b610daa565b60405161046f91906123fa565b60405180910390f35b34801561048457600080fd5b5061048d610df3565b005b34801561049b57600080fd5b506104a4610e7b565b6040516104b19190612794565b60405180910390f35b3480156104c657600080fd5b506104e160048036038101906104dc9190612698565b610ea1565b6040516104ee91906125b1565b60405180910390f35b34801561050357600080fd5b5061050c610ec1565b60405161051991906123fa565b60405180910390f35b34801561052e57600080fd5b50610537610ec7565b6040516105449190612794565b60405180910390f35b34801561055957600080fd5b50610562610ef0565b60405161056f91906124a5565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a9190612556565b610f2d565b6040516105ac91906125b1565b60405180910390f35b3480156105c157600080fd5b506105ca610fd9565b6040516105d79190612794565b60405180910390f35b3480156105ec57600080fd5b5061060760048036038101906106029190612556565b610fff565b60405161061491906125b1565b60405180910390f35b34801561062957600080fd5b50610644600480360381019061063f9190612605565b61101d565b005b34801561065257600080fd5b5061065b611183565b60405161066992919061272f565b60405180910390f35b34801561067e57600080fd5b50610699600480360381019061069491906127af565b6111af565b6040516106a691906123fa565b60405180910390f35b3480156106bb57600080fd5b506106d660048036038101906106d19190612698565b611236565b005b3480156106e457600080fd5b506106ed61132d565b6040516106fa919061284e565b60405180910390f35b34801561070f57600080fd5b50610718611353565b60405161072591906123fa565b60405180910390f35b34801561073a57600080fd5b50610743611359565b604051610751929190612869565b60405180910390f35b60085481565b60606040518060400160405280600b81526020017f4849474820524557415244000000000000000000000000000000000000000000815250905090565b60006107b16107aa61136b565b8484611373565b6001905092915050565b6000600754905090565b6107cd61136b565b73ffffffffffffffffffffffffffffffffffffffff166107eb610ec7565b73ffffffffffffffffffffffffffffffffffffffff1614610841576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610838906128de565b60405180910390fd5b6000818361084f919061292d565b60ff169050601e811115610898576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088f906129ae565b60405180910390fd5b60405180604001604052808460ff1681526020018360ff16815250600d60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff1602179055509050507ff305e997be174eb1fbb444c89b9f4089de693e9b3b40486accc62ae99885e48060405160405180910390a1505050565b600061093884848461153c565b6109d88461094461136b565b84600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061098e61136b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109d391906129ce565b611373565b600190509392505050565b60066020528060005260406000206000915054906101000a900460ff1681565b60006009905090565b6000610aae610a1961136b565b848460046000610a2761136b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610aa99190612a02565b611373565b6001905092915050565b610ac061136b565b73ffffffffffffffffffffffffffffffffffffffff16610ade610ec7565b73ffffffffffffffffffffffffffffffffffffffff1614610b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2b906128de565b60405180910390fd5b60006009600a610b449190612b69565b6103e86005600754610b569190612bb4565b610b609190612c25565b610b6a9190612c25565b9050808310158015610b7c5750808210155b610bbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb290612ca2565b60405180910390fd5b6009600a610bc99190612b69565b83610bd49190612bb4565b6009819055506009600a610be89190612b69565b82610bf39190612bb4565b600a81905550505050565b600d8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16905082565b610c3261136b565b73ffffffffffffffffffffffffffffffffffffffff16610c50610ec7565b73ffffffffffffffffffffffffffffffffffffffff1614610ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9d906128de565b60405180910390fd5b80471015610ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce090612d0e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610d2f573d6000803e3d6000fd5b5050565b6000600b60000154600b60010154610d4b9190612a02565b905080610d5730610daa565b11610d6157600080fd5b600081610d6d30610daa565b610d7791906129ce565b9050610da630600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361153c565b5050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dfb61136b565b73ffffffffffffffffffffffffffffffffffffffff16610e19610ec7565b73ffffffffffffffffffffffffffffffffffffffff1614610e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e66906128de565b60405180910390fd5b610e796000611aeb565b565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915054906101000a900460ff1681565b60095481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600981526020017f48494748205249534b0000000000000000000000000000000000000000000000815250905090565b6000610fcf610f3a61136b565b848460046000610f4861136b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fca91906129ce565b611373565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061101361100c61136b565b848461153c565b6001905092915050565b61102561136b565b73ffffffffffffffffffffffffffffffffffffffff16611043610ec7565b73ffffffffffffffffffffffffffffffffffffffff1614611099576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611090906128de565b60405180910390fd5b600081836110a7919061292d565b60ff16905060508111156110f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e7906129ae565b60405180910390fd5b60405180604001604052808460ff1681526020018360ff16815250600e60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff1602179055509050507ff305e997be174eb1fbb444c89b9f4089de693e9b3b40486accc62ae99885e48060405160405180910390a1505050565b600e8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16905082565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61123e61136b565b73ffffffffffffffffffffffffffffffffffffffff1661125c610ec7565b73ffffffffffffffffffffffffffffffffffffffff16146112b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a9906128de565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131890612da0565b60405180910390fd5b61132a81611aeb565b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b600b8060000154908060010154905082565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d990612e32565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144890612ec4565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161152f91906123fa565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a290612f56565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361161a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161190612fe8565b60405180910390fd5b6000811161165d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116549061307a565b60405180910390fd5b600954811115806116b75750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6116f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ed9061310c565b60405180910390fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166117a057600a548161175484610daa565b61175e9190612a02565b111561179f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117969061319e565b60405180910390fd5b5b6008546117ac30610daa565b101580156117c957506010546011546117c59190612a02565b4210155b80156117e25750600f60149054906101000a900460ff16155b801561183c5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561187b575061184b610ec7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118ba575061188a610ec7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118c8576118c7611baf565b5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461191791906129ce565b925050819055506000819050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119c75750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a2a57611a278285600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614611d23565b90505b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a799190612a02565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611add91906123fa565b60405180910390a350505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600f60146101000a81548160ff0219169083151502179055506000600b600001541115611c6a576000611be8600b60000154611f3f565b90506000811115611c6857600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c5b573d6000803e3d6000fd5b506000600b600001819055505b505b6000600b600101541115611cd35760006002600b60010154611c8c9190612c25565b9050600081600b60010154611ca191906129ce565b90506000611cae83611f3f565b90506000811115611cc457611cc38282612199565b5b6000600b600101819055505050505b7fd9f20192eafa060dc85f5f8b3b0a5b9c106b02d5d1503335b857e50c2bb7003060405160405180910390a1426011819055506000600f60146101000a81548160ff021916908315150217905550565b600080600d6040518060400160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff168152505090508215611dbf57600e6040518060400160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff168152505090505b60006064826000015160ff1687611dd69190612bb4565b611de09190612c25565b905060006064836020015160ff1688611df99190612bb4565b611e039190612c25565b90506000821115611e2b5781600b6000016000828254611e239190612a02565b925050819055505b6000811115611e515780600b6001016000828254611e499190612a02565b925050819055505b60008183611e5f9190612a02565b905080600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611eb09190612a02565b925050819055506000811115611f26573073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f1d91906123fa565b60405180910390a35b8088611f3291906129ce565b9450505050509392505050565b6000804790506000600267ffffffffffffffff811115611f6257611f616131be565b5b604051908082528060200260200182016040528015611f905781602001602082028036833780820191505090505b5090503081600081518110611fa857611fa76131ed565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561204f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120739190613231565b81600181518110612087576120866131ed565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120ee30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686611373565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b8152600401612152959493929190613357565b600060405180830381600087803b15801561216c57600080fd5b505af1158015612180573d6000803e3d6000fd5b50505050814761219091906129ce565b92505050919050565b6121c630600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611373565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719833086600080612214610ec7565b426040518863ffffffff1660e01b8152600401612236969594939291906133b1565b60606040518083038185885af1158015612254573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122799190613427565b509150506000818361228b91906129ce565b11156122e8576122e781836122a091906129ce565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166122ed90919063ffffffff16565b5b505050565b80471015612330576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612327906134c6565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161235690613517565b60006040518083038185875af1925050503d8060008114612393576040519150601f19603f3d011682016040523d82523d6000602084013e612398565b606091505b50509050806123dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d39061359e565b60405180910390fd5b505050565b6000819050919050565b6123f4816123e1565b82525050565b600060208201905061240f60008301846123eb565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561244f578082015181840152602081019050612434565b60008484015250505050565b6000601f19601f8301169050919050565b600061247782612415565b6124818185612420565b9350612491818560208601612431565b61249a8161245b565b840191505092915050565b600060208201905081810360008301526124bf818461246c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124f7826124cc565b9050919050565b612507816124ec565b811461251257600080fd5b50565b600081359050612524816124fe565b92915050565b612533816123e1565b811461253e57600080fd5b50565b6000813590506125508161252a565b92915050565b6000806040838503121561256d5761256c6124c7565b5b600061257b85828601612515565b925050602061258c85828601612541565b9150509250929050565b60008115159050919050565b6125ab81612596565b82525050565b60006020820190506125c660008301846125a2565b92915050565b600060ff82169050919050565b6125e2816125cc565b81146125ed57600080fd5b50565b6000813590506125ff816125d9565b92915050565b6000806040838503121561261c5761261b6124c7565b5b600061262a858286016125f0565b925050602061263b858286016125f0565b9150509250929050565b60008060006060848603121561265e5761265d6124c7565b5b600061266c86828701612515565b935050602061267d86828701612515565b925050604061268e86828701612541565b9150509250925092565b6000602082840312156126ae576126ad6124c7565b5b60006126bc84828501612515565b91505092915050565b6126ce816125cc565b82525050565b60006020820190506126e960008301846126c5565b92915050565b60008060408385031215612706576127056124c7565b5b600061271485828601612541565b925050602061272585828601612541565b9150509250929050565b600060408201905061274460008301856126c5565b61275160208301846126c5565b9392505050565b60006020828403121561276e5761276d6124c7565b5b600061277c84828501612541565b91505092915050565b61278e816124ec565b82525050565b60006020820190506127a96000830184612785565b92915050565b600080604083850312156127c6576127c56124c7565b5b60006127d485828601612515565b92505060206127e585828601612515565b9150509250929050565b6000819050919050565b600061281461280f61280a846124cc565b6127ef565b6124cc565b9050919050565b6000612826826127f9565b9050919050565b60006128388261281b565b9050919050565b6128488161282d565b82525050565b6000602082019050612863600083018461283f565b92915050565b600060408201905061287e60008301856123eb565b61288b60208301846123eb565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006128c8602083612420565b91506128d382612892565b602082019050919050565b600060208201905081810360008301526128f7816128bb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612938826125cc565b9150612943836125cc565b9250828201905060ff81111561295c5761295b6128fe565b5b92915050565b7f43616e2774207365742074617820746f6f206869676800000000000000000000600082015250565b6000612998601683612420565b91506129a382612962565b602082019050919050565b600060208201905081810360008301526129c78161298b565b9050919050565b60006129d9826123e1565b91506129e4836123e1565b92508282039050818111156129fc576129fb6128fe565b5b92915050565b6000612a0d826123e1565b9150612a18836123e1565b9250828201905080821115612a3057612a2f6128fe565b5b92915050565b60008160011c9050919050565b6000808291508390505b6001851115612a8d57808604811115612a6957612a686128fe565b5b6001851615612a785780820291505b8081029050612a8685612a36565b9450612a4d565b94509492505050565b600082612aa65760019050612b62565b81612ab45760009050612b62565b8160018114612aca5760028114612ad457612b03565b6001915050612b62565b60ff841115612ae657612ae56128fe565b5b8360020a915084821115612afd57612afc6128fe565b5b50612b62565b5060208310610133831016604e8410600b8410161715612b385782820a905083811115612b3357612b326128fe565b5b612b62565b612b458484846001612a43565b92509050818404811115612b5c57612b5b6128fe565b5b81810290505b9392505050565b6000612b74826123e1565b9150612b7f836125cc565b9250612bac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612a96565b905092915050565b6000612bbf826123e1565b9150612bca836123e1565b9250828202612bd8816123e1565b91508282048414831517612bef57612bee6128fe565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c30826123e1565b9150612c3b836123e1565b925082612c4b57612c4a612bf6565b5b828204905092915050565b7f496e76616c69642053657474696e677300000000000000000000000000000000600082015250565b6000612c8c601083612420565b9150612c9782612c56565b602082019050919050565b60006020820190508181036000830152612cbb81612c7f565b9050919050565b7f496e73756666696369656e74204554482062616c616e63650000000000000000600082015250565b6000612cf8601883612420565b9150612d0382612cc2565b602082019050919050565b60006020820190508181036000830152612d2781612ceb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612d8a602683612420565b9150612d9582612d2e565b604082019050919050565b60006020820190508181036000830152612db981612d7d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612e1c602483612420565b9150612e2782612dc0565b604082019050919050565b60006020820190508181036000830152612e4b81612e0f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612eae602283612420565b9150612eb982612e52565b604082019050919050565b60006020820190508181036000830152612edd81612ea1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612f40602583612420565b9150612f4b82612ee4565b604082019050919050565b60006020820190508181036000830152612f6f81612f33565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612fd2602383612420565b9150612fdd82612f76565b604082019050919050565b6000602082019050818103600083015261300181612fc5565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613064602983612420565b915061306f82613008565b604082019050919050565b6000602082019050818103600083015261309381613057565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865205f6d617860008201527f5478416d6f756e742e0000000000000000000000000000000000000000000000602082015250565b60006130f6602983612420565b91506131018261309a565b604082019050919050565b60006020820190508181036000830152613125816130e9565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785760008201527f616c6c65742e0000000000000000000000000000000000000000000000000000602082015250565b6000613188602683612420565b91506131938261312c565b604082019050919050565b600060208201905081810360008301526131b78161317b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061322b816124fe565b92915050565b600060208284031215613247576132466124c7565b5b60006132558482850161321c565b91505092915050565b6000819050919050565b600061328361327e6132798461325e565b6127ef565b6123e1565b9050919050565b61329381613268565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132ce816124ec565b82525050565b60006132e083836132c5565b60208301905092915050565b6000602082019050919050565b600061330482613299565b61330e81856132a4565b9350613319836132b5565b8060005b8381101561334a57815161333188826132d4565b975061333c836132ec565b92505060018101905061331d565b5085935050505092915050565b600060a08201905061336c60008301886123eb565b613379602083018761328a565b818103604083015261338b81866132f9565b905061339a6060830185612785565b6133a760808301846123eb565b9695505050505050565b600060c0820190506133c66000830189612785565b6133d360208301886123eb565b6133e0604083018761328a565b6133ed606083018661328a565b6133fa6080830185612785565b61340760a08301846123eb565b979650505050505050565b6000815190506134218161252a565b92915050565b6000806000606084860312156134405761343f6124c7565b5b600061344e86828701613412565b935050602061345f86828701613412565b925050604061347086828701613412565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006134b0601d83612420565b91506134bb8261347a565b602082019050919050565b600060208201905081810360008301526134df816134a3565b9050919050565b600081905092915050565b50565b60006135016000836134e6565b915061350c826134f1565b600082019050919050565b6000613522826134f4565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000613588603a83612420565b91506135938261352c565b604082019050919050565b600060208201905081810360008301526135b78161357b565b905091905056fea2646970667358221220e4578dc3a262bc230e8972b327798206db1417bc1c76f4766a4de9b995f3f29c64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c806375f0a874116100f7578063a9059cbb11610095578063f2fde38b11610064578063f2fde38b146106af578063f887ea40146106d8578063f8b45b0514610703578063f9d0ee941461072e576101d8565b8063a9059cbb146105e0578063cb0e6f7b1461061d578063cc1776d314610646578063dd62ed3e14610672576101d8565b80638da5cb5b116100d15780638da5cb5b1461052257806395d89b411461054d578063a457c2d714610578578063a8aa1b31146105b5576101d8565b806375f0a8741461048f578063768dc710146104ba5780638c0b5e22146104f7576101d8565b8063313ce5671161016f5780635966c81e1161013e5780635966c81e146103fb5780635e278da61461042457806370a082311461043b578063715018a614610478576101d8565b8063313ce5671461033e57806339509351146103695780634ba422bc146103a65780634f7041a5146103cf576101d8565b806318160ddd116101ab57806318160ddd146102705780631b0f93811461029b57806323b872dd146102c457806328c61f4114610301576101d8565b80630445b667146101dd57806306fdde0314610208578063095ea7b314610233576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f261075a565b6040516101ff91906123fa565b60405180910390f35b34801561021457600080fd5b5061021d610760565b60405161022a91906124a5565b60405180910390f35b34801561023f57600080fd5b5061025a60048036038101906102559190612556565b61079d565b60405161026791906125b1565b60405180910390f35b34801561027c57600080fd5b506102856107bb565b60405161029291906123fa565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd9190612605565b6107c5565b005b3480156102d057600080fd5b506102eb60048036038101906102e69190612645565b61092b565b6040516102f891906125b1565b60405180910390f35b34801561030d57600080fd5b5061032860048036038101906103239190612698565b6109e3565b60405161033591906125b1565b60405180910390f35b34801561034a57600080fd5b50610353610a03565b60405161036091906126d4565b60405180910390f35b34801561037557600080fd5b50610390600480360381019061038b9190612556565b610a0c565b60405161039d91906125b1565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c891906126ef565b610ab8565b005b3480156103db57600080fd5b506103e4610bfe565b6040516103f292919061272f565b60405180910390f35b34801561040757600080fd5b50610422600480360381019061041d9190612758565b610c2a565b005b34801561043057600080fd5b50610439610d33565b005b34801561044757600080fd5b50610462600480360381019061045d9190612698565b610daa565b60405161046f91906123fa565b60405180910390f35b34801561048457600080fd5b5061048d610df3565b005b34801561049b57600080fd5b506104a4610e7b565b6040516104b19190612794565b60405180910390f35b3480156104c657600080fd5b506104e160048036038101906104dc9190612698565b610ea1565b6040516104ee91906125b1565b60405180910390f35b34801561050357600080fd5b5061050c610ec1565b60405161051991906123fa565b60405180910390f35b34801561052e57600080fd5b50610537610ec7565b6040516105449190612794565b60405180910390f35b34801561055957600080fd5b50610562610ef0565b60405161056f91906124a5565b60405180910390f35b34801561058457600080fd5b5061059f600480360381019061059a9190612556565b610f2d565b6040516105ac91906125b1565b60405180910390f35b3480156105c157600080fd5b506105ca610fd9565b6040516105d79190612794565b60405180910390f35b3480156105ec57600080fd5b5061060760048036038101906106029190612556565b610fff565b60405161061491906125b1565b60405180910390f35b34801561062957600080fd5b50610644600480360381019061063f9190612605565b61101d565b005b34801561065257600080fd5b5061065b611183565b60405161066992919061272f565b60405180910390f35b34801561067e57600080fd5b50610699600480360381019061069491906127af565b6111af565b6040516106a691906123fa565b60405180910390f35b3480156106bb57600080fd5b506106d660048036038101906106d19190612698565b611236565b005b3480156106e457600080fd5b506106ed61132d565b6040516106fa919061284e565b60405180910390f35b34801561070f57600080fd5b50610718611353565b60405161072591906123fa565b60405180910390f35b34801561073a57600080fd5b50610743611359565b604051610751929190612869565b60405180910390f35b60085481565b60606040518060400160405280600b81526020017f4849474820524557415244000000000000000000000000000000000000000000815250905090565b60006107b16107aa61136b565b8484611373565b6001905092915050565b6000600754905090565b6107cd61136b565b73ffffffffffffffffffffffffffffffffffffffff166107eb610ec7565b73ffffffffffffffffffffffffffffffffffffffff1614610841576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610838906128de565b60405180910390fd5b6000818361084f919061292d565b60ff169050601e811115610898576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088f906129ae565b60405180910390fd5b60405180604001604052808460ff1681526020018360ff16815250600d60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff1602179055509050507ff305e997be174eb1fbb444c89b9f4089de693e9b3b40486accc62ae99885e48060405160405180910390a1505050565b600061093884848461153c565b6109d88461094461136b565b84600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061098e61136b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109d391906129ce565b611373565b600190509392505050565b60066020528060005260406000206000915054906101000a900460ff1681565b60006009905090565b6000610aae610a1961136b565b848460046000610a2761136b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610aa99190612a02565b611373565b6001905092915050565b610ac061136b565b73ffffffffffffffffffffffffffffffffffffffff16610ade610ec7565b73ffffffffffffffffffffffffffffffffffffffff1614610b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2b906128de565b60405180910390fd5b60006009600a610b449190612b69565b6103e86005600754610b569190612bb4565b610b609190612c25565b610b6a9190612c25565b9050808310158015610b7c5750808210155b610bbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb290612ca2565b60405180910390fd5b6009600a610bc99190612b69565b83610bd49190612bb4565b6009819055506009600a610be89190612b69565b82610bf39190612bb4565b600a81905550505050565b600d8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16905082565b610c3261136b565b73ffffffffffffffffffffffffffffffffffffffff16610c50610ec7565b73ffffffffffffffffffffffffffffffffffffffff1614610ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9d906128de565b60405180910390fd5b80471015610ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce090612d0e565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610d2f573d6000803e3d6000fd5b5050565b6000600b60000154600b60010154610d4b9190612a02565b905080610d5730610daa565b11610d6157600080fd5b600081610d6d30610daa565b610d7791906129ce565b9050610da630600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361153c565b5050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dfb61136b565b73ffffffffffffffffffffffffffffffffffffffff16610e19610ec7565b73ffffffffffffffffffffffffffffffffffffffff1614610e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e66906128de565b60405180910390fd5b610e796000611aeb565b565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915054906101000a900460ff1681565b60095481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600981526020017f48494748205249534b0000000000000000000000000000000000000000000000815250905090565b6000610fcf610f3a61136b565b848460046000610f4861136b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fca91906129ce565b611373565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061101361100c61136b565b848461153c565b6001905092915050565b61102561136b565b73ffffffffffffffffffffffffffffffffffffffff16611043610ec7565b73ffffffffffffffffffffffffffffffffffffffff1614611099576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611090906128de565b60405180910390fd5b600081836110a7919061292d565b60ff16905060508111156110f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e7906129ae565b60405180910390fd5b60405180604001604052808460ff1681526020018360ff16815250600e60008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff1602179055509050507ff305e997be174eb1fbb444c89b9f4089de693e9b3b40486accc62ae99885e48060405160405180910390a1505050565b600e8060000160009054906101000a900460ff16908060000160019054906101000a900460ff16905082565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61123e61136b565b73ffffffffffffffffffffffffffffffffffffffff1661125c610ec7565b73ffffffffffffffffffffffffffffffffffffffff16146112b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a9906128de565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131890612da0565b60405180910390fd5b61132a81611aeb565b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b600b8060000154908060010154905082565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d990612e32565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144890612ec4565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161152f91906123fa565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a290612f56565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361161a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161190612fe8565b60405180910390fd5b6000811161165d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116549061307a565b60405180910390fd5b600954811115806116b75750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6116f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ed9061310c565b60405180910390fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166117a057600a548161175484610daa565b61175e9190612a02565b111561179f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117969061319e565b60405180910390fd5b5b6008546117ac30610daa565b101580156117c957506010546011546117c59190612a02565b4210155b80156117e25750600f60149054906101000a900460ff16155b801561183c5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561187b575061184b610ec7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118ba575061188a610ec7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118c8576118c7611baf565b5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461191791906129ce565b925050819055506000819050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119c75750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a2a57611a278285600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614611d23565b90505b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a799190612a02565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611add91906123fa565b60405180910390a350505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600f60146101000a81548160ff0219169083151502179055506000600b600001541115611c6a576000611be8600b60000154611f3f565b90506000811115611c6857600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c5b573d6000803e3d6000fd5b506000600b600001819055505b505b6000600b600101541115611cd35760006002600b60010154611c8c9190612c25565b9050600081600b60010154611ca191906129ce565b90506000611cae83611f3f565b90506000811115611cc457611cc38282612199565b5b6000600b600101819055505050505b7fd9f20192eafa060dc85f5f8b3b0a5b9c106b02d5d1503335b857e50c2bb7003060405160405180910390a1426011819055506000600f60146101000a81548160ff021916908315150217905550565b600080600d6040518060400160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff168152505090508215611dbf57600e6040518060400160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff168152505090505b60006064826000015160ff1687611dd69190612bb4565b611de09190612c25565b905060006064836020015160ff1688611df99190612bb4565b611e039190612c25565b90506000821115611e2b5781600b6000016000828254611e239190612a02565b925050819055505b6000811115611e515780600b6001016000828254611e499190612a02565b925050819055505b60008183611e5f9190612a02565b905080600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611eb09190612a02565b925050819055506000811115611f26573073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f1d91906123fa565b60405180910390a35b8088611f3291906129ce565b9450505050509392505050565b6000804790506000600267ffffffffffffffff811115611f6257611f616131be565b5b604051908082528060200260200182016040528015611f905781602001602082028036833780820191505090505b5090503081600081518110611fa857611fa76131ed565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561204f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120739190613231565b81600181518110612087576120866131ed565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120ee30600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686611373565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478560008430426040518663ffffffff1660e01b8152600401612152959493929190613357565b600060405180830381600087803b15801561216c57600080fd5b505af1158015612180573d6000803e3d6000fd5b50505050814761219091906129ce565b92505050919050565b6121c630600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611373565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719833086600080612214610ec7565b426040518863ffffffff1660e01b8152600401612236969594939291906133b1565b60606040518083038185885af1158015612254573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122799190613427565b509150506000818361228b91906129ce565b11156122e8576122e781836122a091906129ce565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166122ed90919063ffffffff16565b5b505050565b80471015612330576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612327906134c6565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161235690613517565b60006040518083038185875af1925050503d8060008114612393576040519150601f19603f3d011682016040523d82523d6000602084013e612398565b606091505b50509050806123dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d39061359e565b60405180910390fd5b505050565b6000819050919050565b6123f4816123e1565b82525050565b600060208201905061240f60008301846123eb565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561244f578082015181840152602081019050612434565b60008484015250505050565b6000601f19601f8301169050919050565b600061247782612415565b6124818185612420565b9350612491818560208601612431565b61249a8161245b565b840191505092915050565b600060208201905081810360008301526124bf818461246c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124f7826124cc565b9050919050565b612507816124ec565b811461251257600080fd5b50565b600081359050612524816124fe565b92915050565b612533816123e1565b811461253e57600080fd5b50565b6000813590506125508161252a565b92915050565b6000806040838503121561256d5761256c6124c7565b5b600061257b85828601612515565b925050602061258c85828601612541565b9150509250929050565b60008115159050919050565b6125ab81612596565b82525050565b60006020820190506125c660008301846125a2565b92915050565b600060ff82169050919050565b6125e2816125cc565b81146125ed57600080fd5b50565b6000813590506125ff816125d9565b92915050565b6000806040838503121561261c5761261b6124c7565b5b600061262a858286016125f0565b925050602061263b858286016125f0565b9150509250929050565b60008060006060848603121561265e5761265d6124c7565b5b600061266c86828701612515565b935050602061267d86828701612515565b925050604061268e86828701612541565b9150509250925092565b6000602082840312156126ae576126ad6124c7565b5b60006126bc84828501612515565b91505092915050565b6126ce816125cc565b82525050565b60006020820190506126e960008301846126c5565b92915050565b60008060408385031215612706576127056124c7565b5b600061271485828601612541565b925050602061272585828601612541565b9150509250929050565b600060408201905061274460008301856126c5565b61275160208301846126c5565b9392505050565b60006020828403121561276e5761276d6124c7565b5b600061277c84828501612541565b91505092915050565b61278e816124ec565b82525050565b60006020820190506127a96000830184612785565b92915050565b600080604083850312156127c6576127c56124c7565b5b60006127d485828601612515565b92505060206127e585828601612515565b9150509250929050565b6000819050919050565b600061281461280f61280a846124cc565b6127ef565b6124cc565b9050919050565b6000612826826127f9565b9050919050565b60006128388261281b565b9050919050565b6128488161282d565b82525050565b6000602082019050612863600083018461283f565b92915050565b600060408201905061287e60008301856123eb565b61288b60208301846123eb565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006128c8602083612420565b91506128d382612892565b602082019050919050565b600060208201905081810360008301526128f7816128bb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612938826125cc565b9150612943836125cc565b9250828201905060ff81111561295c5761295b6128fe565b5b92915050565b7f43616e2774207365742074617820746f6f206869676800000000000000000000600082015250565b6000612998601683612420565b91506129a382612962565b602082019050919050565b600060208201905081810360008301526129c78161298b565b9050919050565b60006129d9826123e1565b91506129e4836123e1565b92508282039050818111156129fc576129fb6128fe565b5b92915050565b6000612a0d826123e1565b9150612a18836123e1565b9250828201905080821115612a3057612a2f6128fe565b5b92915050565b60008160011c9050919050565b6000808291508390505b6001851115612a8d57808604811115612a6957612a686128fe565b5b6001851615612a785780820291505b8081029050612a8685612a36565b9450612a4d565b94509492505050565b600082612aa65760019050612b62565b81612ab45760009050612b62565b8160018114612aca5760028114612ad457612b03565b6001915050612b62565b60ff841115612ae657612ae56128fe565b5b8360020a915084821115612afd57612afc6128fe565b5b50612b62565b5060208310610133831016604e8410600b8410161715612b385782820a905083811115612b3357612b326128fe565b5b612b62565b612b458484846001612a43565b92509050818404811115612b5c57612b5b6128fe565b5b81810290505b9392505050565b6000612b74826123e1565b9150612b7f836125cc565b9250612bac7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612a96565b905092915050565b6000612bbf826123e1565b9150612bca836123e1565b9250828202612bd8816123e1565b91508282048414831517612bef57612bee6128fe565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c30826123e1565b9150612c3b836123e1565b925082612c4b57612c4a612bf6565b5b828204905092915050565b7f496e76616c69642053657474696e677300000000000000000000000000000000600082015250565b6000612c8c601083612420565b9150612c9782612c56565b602082019050919050565b60006020820190508181036000830152612cbb81612c7f565b9050919050565b7f496e73756666696369656e74204554482062616c616e63650000000000000000600082015250565b6000612cf8601883612420565b9150612d0382612cc2565b602082019050919050565b60006020820190508181036000830152612d2781612ceb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612d8a602683612420565b9150612d9582612d2e565b604082019050919050565b60006020820190508181036000830152612db981612d7d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612e1c602483612420565b9150612e2782612dc0565b604082019050919050565b60006020820190508181036000830152612e4b81612e0f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612eae602283612420565b9150612eb982612e52565b604082019050919050565b60006020820190508181036000830152612edd81612ea1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612f40602583612420565b9150612f4b82612ee4565b604082019050919050565b60006020820190508181036000830152612f6f81612f33565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612fd2602383612420565b9150612fdd82612f76565b604082019050919050565b6000602082019050818103600083015261300181612fc5565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613064602983612420565b915061306f82613008565b604082019050919050565b6000602082019050818103600083015261309381613057565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865205f6d617860008201527f5478416d6f756e742e0000000000000000000000000000000000000000000000602082015250565b60006130f6602983612420565b91506131018261309a565b604082019050919050565b60006020820190508181036000830152613125816130e9565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785760008201527f616c6c65742e0000000000000000000000000000000000000000000000000000602082015250565b6000613188602683612420565b91506131938261312c565b604082019050919050565b600060208201905081810360008301526131b78161317b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061322b816124fe565b92915050565b600060208284031215613247576132466124c7565b5b60006132558482850161321c565b91505092915050565b6000819050919050565b600061328361327e6132798461325e565b6127ef565b6123e1565b9050919050565b61329381613268565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132ce816124ec565b82525050565b60006132e083836132c5565b60208301905092915050565b6000602082019050919050565b600061330482613299565b61330e81856132a4565b9350613319836132b5565b8060005b8381101561334a57815161333188826132d4565b975061333c836132ec565b92505060018101905061331d565b5085935050505092915050565b600060a08201905061336c60008301886123eb565b613379602083018761328a565b818103604083015261338b81866132f9565b905061339a6060830185612785565b6133a760808301846123eb565b9695505050505050565b600060c0820190506133c66000830189612785565b6133d360208301886123eb565b6133e0604083018761328a565b6133ed606083018661328a565b6133fa6080830185612785565b61340760a08301846123eb565b979650505050505050565b6000815190506134218161252a565b92915050565b6000806000606084860312156134405761343f6124c7565b5b600061344e86828701613412565b935050602061345f86828701613412565b925050604061347086828701613412565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006134b0601d83612420565b91506134bb8261347a565b602082019050919050565b600060208201905081810360008301526134df816134a3565b9050919050565b600081905092915050565b50565b60006135016000836134e6565b915061350c826134f1565b600082019050919050565b6000613522826134f4565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000613588603a83612420565b91506135938261352c565b604082019050919050565b600060208201905081810360008301526135b78161357b565b905091905056fea2646970667358221220e4578dc3a262bc230e8972b327798206db1417bc1c76f4766a4de9b995f3f29c64736f6c63430008110033

Deployed Bytecode Sourcemap

3323:10179:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3868:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5600:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6431:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5877:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7817:259;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6600:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3669:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5786:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6874:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8356:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4382:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;8750:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8958:507;;;;;;;;;;;;;:::i;:::-;;5980:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1310:94;;;;;;;;;;;;;:::i;:::-;;4462:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3611:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3934:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1087:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5691;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7097:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3450:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6105:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8084:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4418:31;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;6280:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1412:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3422:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3997:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4334:39;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;3868:58;;;;:::o;5600:83::-;5637:13;5670:5;;;;;;;;;;;;;;;;;5663:12;;5600:83;:::o;6431:161::-;6506:4;6523:39;6532:12;:10;:12::i;:::-;6546:7;6555:6;6523:8;:39::i;:::-;6580:4;6573:11;;6431:161;;;;:::o;5877:95::-;5930:7;5957;;5950:14;;5877:95;:::o;7817:259::-;1233:12;:10;:12::i;:::-;1222:23;;:7;:5;:7::i;:::-;:23;;;1214:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7906:9:::1;7934:5;7919:12;:20;;;;:::i;:::-;7906:33;;;;7966:2;7958:4;:10;;7950:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;8015:23;;;;;;;;8019:12;8015:23;;;;;;8032:5;8015:23;;;;::::0;8006:6:::1;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8054:14;;;;;;;;;;7895:181;7817:259:::0;;:::o;6600:266::-;6698:4;6715:36;6725:6;6733:9;6744:6;6715:9;:36::i;:::-;6762:74;6771:6;6779:12;:10;:12::i;:::-;6829:6;6793:11;:19;6805:6;6793:19;;;;;;;;;;;;;;;:33;6813:12;:10;:12::i;:::-;6793:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;6762:8;:74::i;:::-;6854:4;6847:11;;6600:266;;;;;:::o;3669:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;5786:83::-;5827:5;3797:1;5845:16;;5786:83;:::o;6874:215::-;6962:4;6979:80;6988:12;:10;:12::i;:::-;7002:7;7048:10;7011:11;:25;7023:12;:10;:12::i;:::-;7011:25;;;;;;;;;;;;;;;:34;7037:7;7011:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6979:8;:80::i;:::-;7077:4;7070:11;;6874:215;;;;:::o;8356:386::-;1233:12;:10;:12::i;:::-;1222:23;;:7;:5;:7::i;:::-;:23;;;1214:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8455:20:::1;3797:1;8502:2;:13;;;;:::i;:::-;8493:4;8489:1;8479:7;;:11;;;;:::i;:::-;:18;;;;:::i;:::-;8478:38;;;;:::i;:::-;8455:61;;8550:15;8535:11;:30;;:68;;;;;8588:15;8569;:34;;8535:68;8527:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;3797:1;8664:2;:13;;;;:::i;:::-;8649:11;:29;;;;:::i;:::-;8635:11;:43;;;;3797:1;8720:2;:13;;;;:::i;:::-;8701:15;:33;;;;:::i;:::-;8689:9;:45;;;;8444:298;8356:386:::0;;:::o;4382:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8750:200::-;1233:12;:10;:12::i;:::-;1222:23;;:7;:5;:7::i;:::-;:23;;;1214:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8854:9:::1;8829:21;:34;;8821:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8911:10;8903:28;;:39;8932:9;8903:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;8750:200:::0;:::o;8958:507::-;9165:21;9219:18;:34;;;9189:18;:27;;;:64;;;;:::i;:::-;9165:88;;9300:16;9272:24;9290:4;9272:9;:24::i;:::-;:44;9264:53;;;;;;9328:17;9375:16;9348:24;9366:4;9348:9;:24::i;:::-;:43;;;;:::i;:::-;9328:63;;9402:55;9420:4;9427:15;;;;;;;;;;;9444:12;9402:9;:55::i;:::-;8994:471;;8958:507::o;5980:117::-;6046:7;6073;:16;6081:7;6073:16;;;;;;;;;;;;;;;;6066:23;;5980:117;;;:::o;1310:94::-;1233:12;:10;:12::i;:::-;1222:23;;:7;:5;:7::i;:::-;:23;;;1214:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1375:21:::1;1393:1;1375:9;:21::i;:::-;1310:94::o:0;4462:75::-;;;;;;;;;;;;;:::o;3611:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;3934:56::-;;;;:::o;1087:87::-;1133:7;1160:6;;;;;;;;;;;1153:13;;1087:87;:::o;5691:::-;5730:13;5763:7;;;;;;;;;;;;;;;;;5756:14;;5691:87;:::o;7097:225::-;7190:4;7207:85;7216:12;:10;:12::i;:::-;7230:7;7276:15;7239:11;:25;7251:12;:10;:12::i;:::-;7239:25;;;;;;;;;;;;;;;:34;7265:7;7239:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;7207:8;:85::i;:::-;7310:4;7303:11;;7097:225;;;;:::o;3450:19::-;;;;;;;;;;;;;:::o;6105:167::-;6183:4;6200:42;6210:12;:10;:12::i;:::-;6224:9;6235:6;6200:9;:42::i;:::-;6260:4;6253:11;;6105:167;;;;:::o;8084:260::-;1233:12;:10;:12::i;:::-;1222:23;;:7;:5;:7::i;:::-;:23;;;1214:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8174:9:::1;8201:5;8186:12;:20;;;;:::i;:::-;8174:32;;;;8233:2;8225:4;:10;;8217:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;8283:23;;;;;;;;8287:12;8283:23;;;;;;8300:5;8283:23;;;;::::0;8273:7:::1;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8322:14;;;;;;;;;;8163:181;8084:260:::0;;:::o;4418:31::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6280:143::-;6361:7;6388:11;:18;6400:5;6388:18;;;;;;;;;;;;;;;:27;6407:7;6388:27;;;;;;;;;;;;;;;;6381:34;;6280:143;;;;:::o;1412:192::-;1233:12;:10;:12::i;:::-;1222:23;;:7;:5;:7::i;:::-;:23;;;1214:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1521:1:::1;1501:22;;:8;:22;;::::0;1493:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1577:19;1587:8;1577:9;:19::i;:::-;1412:192:::0;:::o;3422:21::-;;;;;;;;;;;;;:::o;3997:55::-;;;;:::o;4334:39::-;;;;;;;;;;;;;;:::o;612:115::-;665:15;708:10;693:26;;612:115;:::o;7330:335::-;7440:1;7423:19;;:5;:19;;;7415:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7521:1;7502:21;;:7;:21;;;7494:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7603:6;7573:11;:18;7585:5;7573:18;;;;;;;;;;;;;;;:27;7592:7;7573:27;;;;;;;;;;;;;;;:36;;;;7641:7;7625:32;;7634:5;7625:32;;;7650:6;7625:32;;;;;;:::i;:::-;;;;;;;;7330:335;;;:::o;10358:1133::-;10460:1;10444:18;;:4;:18;;;10436:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10537:1;10523:16;;:2;:16;;;10515:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10607:1;10598:6;:10;10590:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10683:11;;10673:6;:21;;:56;;;;10698:25;:31;10724:4;10698:31;;;;;;;;;;;;;;;;;;;;;;;;;10673:56;10665:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;10800:25;:29;10826:2;10800:29;;;;;;;;;;;;;;;;;;;;;;;;;10796:134;;10878:9;;10868:6;10852:13;10862:2;10852:9;:13::i;:::-;:22;;;;:::i;:::-;:35;;10844:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;10796:134;10983:13;;10955:24;10973:4;10955:9;:24::i;:::-;:41;;:91;;;;;11032:13;;11020:9;;:25;;;;:::i;:::-;11000:15;:46;;10955:91;:104;;;;;11051:8;;;;;;;;;;;11050:9;10955:104;:120;;;;;11071:4;;;;;;;;;;;11063:12;;:4;:12;;;;10955:120;:139;;;;;11087:7;:5;:7::i;:::-;11079:15;;:4;:15;;;;10955:139;:156;;;;;11104:7;:5;:7::i;:::-;11098:13;;:2;:13;;;;10955:156;10951:191;;;11126:16;:14;:16::i;:::-;10951:191;11182:6;11165:7;:13;11173:4;11165:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;11199:22;11224:6;11199:31;;11255:18;:24;11274:4;11255:24;;;;;;;;;;;;;;;;;;;;;;;;;11254:25;:52;;;;;11284:18;:22;11303:2;11284:22;;;;;;;;;;;;;;;;;;;;;;;;;11283:23;11254:52;11251:141;;;11339:39;11353:6;11361:4;11373;;;;;;;;;;;11367:10;;:2;:10;;;11339:13;:39::i;:::-;11322:56;;11251:141;11419:14;11404:7;:11;11412:2;11404:11;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;11464:2;11449:34;;11458:4;11449:34;;;11468:14;11449:34;;;;;;:::i;:::-;;;;;;;;10425:1066;10358:1133;;;:::o;1612:173::-;1668:16;1687:6;;;;;;;;;;;1668:25;;1713:8;1704:6;;:17;;;;;;;;;;;;;;;;;;1768:8;1737:40;;1758:8;1737:40;;;;;;;;;;;;1657:128;1612:173;:::o;11499:829::-;4688:4;4677:8;;:15;;;;;;;;;;;;;;;;;;11605:1:::1;11568:18;:34;;;:38;11565:311;;;11622:18;11643:52;11660:18;:34;;;11643:16;:52::i;:::-;11622:73;;11726:1;11713:10;:14;11710:155;;;11755:15;;;;;;;;;;;11747:33;;:45;11781:10;11747:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11848:1;11811:18;:34;;:38;;;;11710:155;11607:269;11565:311;11924:1;11894:18;:27;;;:31;11891:356;;;11941:9;11983:1;11953:18;:27;;;:31;;;;:::i;:::-;11941:43;;11999:14;12046:4;12016:18;:27;;;:34;;;;:::i;:::-;11999:51;;12065:14;12082:22;12099:4;12082:16;:22::i;:::-;12065:39;;12135:1;12123:9;:13;12119:70;;;12155:34;12168:9;12179;12155:12;:34::i;:::-;12119:70;12234:1;12204:18;:27;;:31;;;;11926:321;;;11891:356;12264:16;;;;;;;;;;12305:15;12293:9;:27;;;;4726:5:::0;4715:8;;:16;;;;;;;;;;;;;;;;;;11499:829::o;9534:816::-;9613:7;9632:19;9654:6;9632:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9675:6;9671:56;;;9708:7;9697:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9671:56;9739:23;9798:3;9774:8;:21;;;9765:30;;:6;:30;;;;:::i;:::-;:36;;;;:::i;:::-;9739:62;;9812:16;9857:3;9840:8;:14;;;9831:23;;:6;:23;;;;:::i;:::-;:29;;;;:::i;:::-;9812:48;;9897:1;9876:18;:22;9873:96;;;9951:18;9913;:34;;;:56;;;;;;;:::i;:::-;;;;;;;;9873:96;9999:1;9985:11;:15;9982:75;;;10046:11;10015:18;:27;;;:42;;;;;;;:::i;:::-;;;;;;;;9982:75;10070:21;10115:11;10094:18;:32;;;;:::i;:::-;10070:56;;10165:16;10139:7;:22;10155:4;10139:22;;;;;;;;;;;;;;;;:42;;;;;;;:::i;:::-;;;;;;;;10214:1;10195:16;:20;10192:91;;;10259:4;10235:48;;10245:4;10235:48;;;10266:16;10235:48;;;;;;:::i;:::-;;;;;;;;10192:91;10325:16;10316:6;:25;;;;:::i;:::-;10308:34;;;;;;9534:816;;;;;:::o;12336:581::-;12400:7;12420:22;12445:21;12420:46;;12477:21;12515:1;12501:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12477:40;;12546:4;12528;12533:1;12528:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12572:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12562:4;12567:1;12562:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12598:53;12615:4;12630:6;;;;;;;;;;;12639:11;12598:8;:53::i;:::-;12664:6;;;;;;;;;;;:57;;;12736:11;12762:1;12778:4;12805;12825:15;12664:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12894:14;12870:21;:38;;;;:::i;:::-;12862:47;;;;12336:581;;;:::o;12925:514::-;13006:53;13023:4;13038:6;;;;;;;;;;;13047:11;13006:8;:53::i;:::-;13074:24;13103:6;;;;;;;;;;;:22;;;13134:9;13168:4;13188:11;13214:1;13230;13246:7;:5;:7::i;:::-;13268:15;13103:191;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13072:222;;;;13350:1;13331:16;13319:9;:28;;;;:::i;:::-;:32;13315:116;;;13366:65;13414:16;13402:9;:28;;;;:::i;:::-;13374:15;;;;;;;;;;;13366:34;;;;:65;;;;:::i;:::-;13315:116;12995:444;12925:514;;:::o;255:317::-;370:6;345:21;:31;;337:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;424:12;442:9;:14;;464:6;442:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;423:52;;;494:7;486:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;326:246;255:317;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:86::-;3833:7;3873:4;3866:5;3862:16;3851:27;;3798:86;;;:::o;3890:118::-;3961:22;3977:5;3961:22;:::i;:::-;3954:5;3951:33;3941:61;;3998:1;3995;3988:12;3941:61;3890:118;:::o;4014:135::-;4058:5;4096:6;4083:20;4074:29;;4112:31;4137:5;4112:31;:::i;:::-;4014:135;;;;:::o;4155:466::-;4219:6;4227;4276:2;4264:9;4255:7;4251:23;4247:32;4244:119;;;4282:79;;:::i;:::-;4244:119;4402:1;4427:51;4470:7;4461:6;4450:9;4446:22;4427:51;:::i;:::-;4417:61;;4373:115;4527:2;4553:51;4596:7;4587:6;4576:9;4572:22;4553:51;:::i;:::-;4543:61;;4498:116;4155:466;;;;;:::o;4627:619::-;4704:6;4712;4720;4769:2;4757:9;4748:7;4744:23;4740:32;4737:119;;;4775:79;;:::i;:::-;4737:119;4895:1;4920:53;4965:7;4956:6;4945:9;4941:22;4920:53;:::i;:::-;4910:63;;4866:117;5022:2;5048:53;5093:7;5084:6;5073:9;5069:22;5048:53;:::i;:::-;5038:63;;4993:118;5150:2;5176:53;5221:7;5212:6;5201:9;5197:22;5176:53;:::i;:::-;5166:63;;5121:118;4627:619;;;;;:::o;5252:329::-;5311:6;5360:2;5348:9;5339:7;5335:23;5331:32;5328:119;;;5366:79;;:::i;:::-;5328:119;5486:1;5511:53;5556:7;5547:6;5536:9;5532:22;5511:53;:::i;:::-;5501:63;;5457:117;5252:329;;;;:::o;5587:112::-;5670:22;5686:5;5670:22;:::i;:::-;5665:3;5658:35;5587:112;;:::o;5705:214::-;5794:4;5832:2;5821:9;5817:18;5809:26;;5845:67;5909:1;5898:9;5894:17;5885:6;5845:67;:::i;:::-;5705:214;;;;:::o;5925:474::-;5993:6;6001;6050:2;6038:9;6029:7;6025:23;6021:32;6018:119;;;6056:79;;:::i;:::-;6018:119;6176:1;6201:53;6246:7;6237:6;6226:9;6222:22;6201:53;:::i;:::-;6191:63;;6147:117;6303:2;6329:53;6374:7;6365:6;6354:9;6350:22;6329:53;:::i;:::-;6319:63;;6274:118;5925:474;;;;;:::o;6405:316::-;6518:4;6556:2;6545:9;6541:18;6533:26;;6569:67;6633:1;6622:9;6618:17;6609:6;6569:67;:::i;:::-;6646:68;6710:2;6699:9;6695:18;6686:6;6646:68;:::i;:::-;6405:316;;;;;:::o;6727:329::-;6786:6;6835:2;6823:9;6814:7;6810:23;6806:32;6803:119;;;6841:79;;:::i;:::-;6803:119;6961:1;6986:53;7031:7;7022:6;7011:9;7007:22;6986:53;:::i;:::-;6976:63;;6932:117;6727:329;;;;:::o;7062:118::-;7149:24;7167:5;7149:24;:::i;:::-;7144:3;7137:37;7062:118;;:::o;7186:222::-;7279:4;7317:2;7306:9;7302:18;7294:26;;7330:71;7398:1;7387:9;7383:17;7374:6;7330:71;:::i;:::-;7186:222;;;;:::o;7414:474::-;7482:6;7490;7539:2;7527:9;7518:7;7514:23;7510:32;7507:119;;;7545:79;;:::i;:::-;7507:119;7665:1;7690:53;7735:7;7726:6;7715:9;7711:22;7690:53;:::i;:::-;7680:63;;7636:117;7792:2;7818:53;7863:7;7854:6;7843:9;7839:22;7818:53;:::i;:::-;7808:63;;7763:118;7414:474;;;;;:::o;7894:60::-;7922:3;7943:5;7936:12;;7894:60;;;:::o;7960:142::-;8010:9;8043:53;8061:34;8070:24;8088:5;8070:24;:::i;:::-;8061:34;:::i;:::-;8043:53;:::i;:::-;8030:66;;7960:142;;;:::o;8108:126::-;8158:9;8191:37;8222:5;8191:37;:::i;:::-;8178:50;;8108:126;;;:::o;8240:141::-;8305:9;8338:37;8369:5;8338:37;:::i;:::-;8325:50;;8240:141;;;:::o;8387:161::-;8489:52;8535:5;8489:52;:::i;:::-;8484:3;8477:65;8387:161;;:::o;8554:252::-;8662:4;8700:2;8689:9;8685:18;8677:26;;8713:86;8796:1;8785:9;8781:17;8772:6;8713:86;:::i;:::-;8554:252;;;;:::o;8812:332::-;8933:4;8971:2;8960:9;8956:18;8948:26;;8984:71;9052:1;9041:9;9037:17;9028:6;8984:71;:::i;:::-;9065:72;9133:2;9122:9;9118:18;9109:6;9065:72;:::i;:::-;8812:332;;;;;:::o;9150:182::-;9290:34;9286:1;9278:6;9274:14;9267:58;9150:182;:::o;9338:366::-;9480:3;9501:67;9565:2;9560:3;9501:67;:::i;:::-;9494:74;;9577:93;9666:3;9577:93;:::i;:::-;9695:2;9690:3;9686:12;9679:19;;9338:366;;;:::o;9710:419::-;9876:4;9914:2;9903:9;9899:18;9891:26;;9963:9;9957:4;9953:20;9949:1;9938:9;9934:17;9927:47;9991:131;10117:4;9991:131;:::i;:::-;9983:139;;9710:419;;;:::o;10135:180::-;10183:77;10180:1;10173:88;10280:4;10277:1;10270:15;10304:4;10301:1;10294:15;10321:188;10359:3;10378:18;10394:1;10378:18;:::i;:::-;10373:23;;10410:18;10426:1;10410:18;:::i;:::-;10405:23;;10451:1;10448;10444:9;10437:16;;10474:4;10469:3;10466:13;10463:39;;;10482:18;;:::i;:::-;10463:39;10321:188;;;;:::o;10515:172::-;10655:24;10651:1;10643:6;10639:14;10632:48;10515:172;:::o;10693:366::-;10835:3;10856:67;10920:2;10915:3;10856:67;:::i;:::-;10849:74;;10932:93;11021:3;10932:93;:::i;:::-;11050:2;11045:3;11041:12;11034:19;;10693:366;;;:::o;11065:419::-;11231:4;11269:2;11258:9;11254:18;11246:26;;11318:9;11312:4;11308:20;11304:1;11293:9;11289:17;11282:47;11346:131;11472:4;11346:131;:::i;:::-;11338:139;;11065:419;;;:::o;11490:194::-;11530:4;11550:20;11568:1;11550:20;:::i;:::-;11545:25;;11584:20;11602:1;11584:20;:::i;:::-;11579:25;;11628:1;11625;11621:9;11613:17;;11652:1;11646:4;11643:11;11640:37;;;11657:18;;:::i;:::-;11640:37;11490:194;;;;:::o;11690:191::-;11730:3;11749:20;11767:1;11749:20;:::i;:::-;11744:25;;11783:20;11801:1;11783:20;:::i;:::-;11778:25;;11826:1;11823;11819:9;11812:16;;11847:3;11844:1;11841:10;11838:36;;;11854:18;;:::i;:::-;11838:36;11690:191;;;;:::o;11887:102::-;11929:8;11976:5;11973:1;11969:13;11948:34;;11887:102;;;:::o;11995:848::-;12056:5;12063:4;12087:6;12078:15;;12111:5;12102:14;;12125:712;12146:1;12136:8;12133:15;12125:712;;;12241:4;12236:3;12232:14;12226:4;12223:24;12220:50;;;12250:18;;:::i;:::-;12220:50;12300:1;12290:8;12286:16;12283:451;;;12715:4;12708:5;12704:16;12695:25;;12283:451;12765:4;12759;12755:15;12747:23;;12795:32;12818:8;12795:32;:::i;:::-;12783:44;;12125:712;;;11995:848;;;;;;;:::o;12849:1073::-;12903:5;13094:8;13084:40;;13115:1;13106:10;;13117:5;;13084:40;13143:4;13133:36;;13160:1;13151:10;;13162:5;;13133:36;13229:4;13277:1;13272:27;;;;13313:1;13308:191;;;;13222:277;;13272:27;13290:1;13281:10;;13292:5;;;13308:191;13353:3;13343:8;13340:17;13337:43;;;13360:18;;:::i;:::-;13337:43;13409:8;13406:1;13402:16;13393:25;;13444:3;13437:5;13434:14;13431:40;;;13451:18;;:::i;:::-;13431:40;13484:5;;;13222:277;;13608:2;13598:8;13595:16;13589:3;13583:4;13580:13;13576:36;13558:2;13548:8;13545:16;13540:2;13534:4;13531:12;13527:35;13511:111;13508:246;;;13664:8;13658:4;13654:19;13645:28;;13699:3;13692:5;13689:14;13686:40;;;13706:18;;:::i;:::-;13686:40;13739:5;;13508:246;13779:42;13817:3;13807:8;13801:4;13798:1;13779:42;:::i;:::-;13764:57;;;;13853:4;13848:3;13844:14;13837:5;13834:25;13831:51;;;13862:18;;:::i;:::-;13831:51;13911:4;13904:5;13900:16;13891:25;;12849:1073;;;;;;:::o;13928:281::-;13986:5;14010:23;14028:4;14010:23;:::i;:::-;14002:31;;14054:25;14070:8;14054:25;:::i;:::-;14042:37;;14098:104;14135:66;14125:8;14119:4;14098:104;:::i;:::-;14089:113;;13928:281;;;;:::o;14215:410::-;14255:7;14278:20;14296:1;14278:20;:::i;:::-;14273:25;;14312:20;14330:1;14312:20;:::i;:::-;14307:25;;14367:1;14364;14360:9;14389:30;14407:11;14389:30;:::i;:::-;14378:41;;14568:1;14559:7;14555:15;14552:1;14549:22;14529:1;14522:9;14502:83;14479:139;;14598:18;;:::i;:::-;14479:139;14263:362;14215:410;;;;:::o;14631:180::-;14679:77;14676:1;14669:88;14776:4;14773:1;14766:15;14800:4;14797:1;14790:15;14817:185;14857:1;14874:20;14892:1;14874:20;:::i;:::-;14869:25;;14908:20;14926:1;14908:20;:::i;:::-;14903:25;;14947:1;14937:35;;14952:18;;:::i;:::-;14937:35;14994:1;14991;14987:9;14982:14;;14817:185;;;;:::o;15008:166::-;15148:18;15144:1;15136:6;15132:14;15125:42;15008:166;:::o;15180:366::-;15322:3;15343:67;15407:2;15402:3;15343:67;:::i;:::-;15336:74;;15419:93;15508:3;15419:93;:::i;:::-;15537:2;15532:3;15528:12;15521:19;;15180:366;;;:::o;15552:419::-;15718:4;15756:2;15745:9;15741:18;15733:26;;15805:9;15799:4;15795:20;15791:1;15780:9;15776:17;15769:47;15833:131;15959:4;15833:131;:::i;:::-;15825:139;;15552:419;;;:::o;15977:174::-;16117:26;16113:1;16105:6;16101:14;16094:50;15977:174;:::o;16157:366::-;16299:3;16320:67;16384:2;16379:3;16320:67;:::i;:::-;16313:74;;16396:93;16485:3;16396:93;:::i;:::-;16514:2;16509:3;16505:12;16498:19;;16157:366;;;:::o;16529:419::-;16695:4;16733:2;16722:9;16718:18;16710:26;;16782:9;16776:4;16772:20;16768:1;16757:9;16753:17;16746:47;16810:131;16936:4;16810:131;:::i;:::-;16802:139;;16529:419;;;:::o;16954:225::-;17094:34;17090:1;17082:6;17078:14;17071:58;17163:8;17158:2;17150:6;17146:15;17139:33;16954:225;:::o;17185:366::-;17327:3;17348:67;17412:2;17407:3;17348:67;:::i;:::-;17341:74;;17424:93;17513:3;17424:93;:::i;:::-;17542:2;17537:3;17533:12;17526:19;;17185:366;;;:::o;17557:419::-;17723:4;17761:2;17750:9;17746:18;17738:26;;17810:9;17804:4;17800:20;17796:1;17785:9;17781:17;17774:47;17838:131;17964:4;17838:131;:::i;:::-;17830:139;;17557:419;;;:::o;17982:223::-;18122:34;18118:1;18110:6;18106:14;18099:58;18191:6;18186:2;18178:6;18174:15;18167:31;17982:223;:::o;18211:366::-;18353:3;18374:67;18438:2;18433:3;18374:67;:::i;:::-;18367:74;;18450:93;18539:3;18450:93;:::i;:::-;18568:2;18563:3;18559:12;18552:19;;18211:366;;;:::o;18583:419::-;18749:4;18787:2;18776:9;18772:18;18764:26;;18836:9;18830:4;18826:20;18822:1;18811:9;18807:17;18800:47;18864:131;18990:4;18864:131;:::i;:::-;18856:139;;18583:419;;;:::o;19008:221::-;19148:34;19144:1;19136:6;19132:14;19125:58;19217:4;19212:2;19204:6;19200:15;19193:29;19008:221;:::o;19235:366::-;19377:3;19398:67;19462:2;19457:3;19398:67;:::i;:::-;19391:74;;19474:93;19563:3;19474:93;:::i;:::-;19592:2;19587:3;19583:12;19576:19;;19235:366;;;:::o;19607:419::-;19773:4;19811:2;19800:9;19796:18;19788:26;;19860:9;19854:4;19850:20;19846:1;19835:9;19831:17;19824:47;19888:131;20014:4;19888:131;:::i;:::-;19880:139;;19607:419;;;:::o;20032:224::-;20172:34;20168:1;20160:6;20156:14;20149:58;20241:7;20236:2;20228:6;20224:15;20217:32;20032:224;:::o;20262:366::-;20404:3;20425:67;20489:2;20484:3;20425:67;:::i;:::-;20418:74;;20501:93;20590:3;20501:93;:::i;:::-;20619:2;20614:3;20610:12;20603:19;;20262:366;;;:::o;20634:419::-;20800:4;20838:2;20827:9;20823:18;20815:26;;20887:9;20881:4;20877:20;20873:1;20862:9;20858:17;20851:47;20915:131;21041:4;20915:131;:::i;:::-;20907:139;;20634:419;;;:::o;21059:222::-;21199:34;21195:1;21187:6;21183:14;21176:58;21268:5;21263:2;21255:6;21251:15;21244:30;21059:222;:::o;21287:366::-;21429:3;21450:67;21514:2;21509:3;21450:67;:::i;:::-;21443:74;;21526:93;21615:3;21526:93;:::i;:::-;21644:2;21639:3;21635:12;21628:19;;21287:366;;;:::o;21659:419::-;21825:4;21863:2;21852:9;21848:18;21840:26;;21912:9;21906:4;21902:20;21898:1;21887:9;21883:17;21876:47;21940:131;22066:4;21940:131;:::i;:::-;21932:139;;21659:419;;;:::o;22084:228::-;22224:34;22220:1;22212:6;22208:14;22201:58;22293:11;22288:2;22280:6;22276:15;22269:36;22084:228;:::o;22318:366::-;22460:3;22481:67;22545:2;22540:3;22481:67;:::i;:::-;22474:74;;22557:93;22646:3;22557:93;:::i;:::-;22675:2;22670:3;22666:12;22659:19;;22318:366;;;:::o;22690:419::-;22856:4;22894:2;22883:9;22879:18;22871:26;;22943:9;22937:4;22933:20;22929:1;22918:9;22914:17;22907:47;22971:131;23097:4;22971:131;:::i;:::-;22963:139;;22690:419;;;:::o;23115:228::-;23255:34;23251:1;23243:6;23239:14;23232:58;23324:11;23319:2;23311:6;23307:15;23300:36;23115:228;:::o;23349:366::-;23491:3;23512:67;23576:2;23571:3;23512:67;:::i;:::-;23505:74;;23588:93;23677:3;23588:93;:::i;:::-;23706:2;23701:3;23697:12;23690:19;;23349:366;;;:::o;23721:419::-;23887:4;23925:2;23914:9;23910:18;23902:26;;23974:9;23968:4;23964:20;23960:1;23949:9;23945:17;23938:47;24002:131;24128:4;24002:131;:::i;:::-;23994:139;;23721:419;;;:::o;24146:225::-;24286:34;24282:1;24274:6;24270:14;24263:58;24355:8;24350:2;24342:6;24338:15;24331:33;24146:225;:::o;24377:366::-;24519:3;24540:67;24604:2;24599:3;24540:67;:::i;:::-;24533:74;;24616:93;24705:3;24616:93;:::i;:::-;24734:2;24729:3;24725:12;24718:19;;24377:366;;;:::o;24749:419::-;24915:4;24953:2;24942:9;24938:18;24930:26;;25002:9;24996:4;24992:20;24988:1;24977:9;24973:17;24966:47;25030:131;25156:4;25030:131;:::i;:::-;25022:139;;24749:419;;;:::o;25174:180::-;25222:77;25219:1;25212:88;25319:4;25316:1;25309:15;25343:4;25340:1;25333:15;25360:180;25408:77;25405:1;25398:88;25505:4;25502:1;25495:15;25529:4;25526:1;25519:15;25546:143;25603:5;25634:6;25628:13;25619:22;;25650:33;25677:5;25650:33;:::i;:::-;25546:143;;;;:::o;25695:351::-;25765:6;25814:2;25802:9;25793:7;25789:23;25785:32;25782:119;;;25820:79;;:::i;:::-;25782:119;25940:1;25965:64;26021:7;26012:6;26001:9;25997:22;25965:64;:::i;:::-;25955:74;;25911:128;25695:351;;;;:::o;26052:85::-;26097:7;26126:5;26115:16;;26052:85;;;:::o;26143:158::-;26201:9;26234:61;26252:42;26261:32;26287:5;26261:32;:::i;:::-;26252:42;:::i;:::-;26234:61;:::i;:::-;26221:74;;26143:158;;;:::o;26307:147::-;26402:45;26441:5;26402:45;:::i;:::-;26397:3;26390:58;26307:147;;:::o;26460:114::-;26527:6;26561:5;26555:12;26545:22;;26460:114;;;:::o;26580:184::-;26679:11;26713:6;26708:3;26701:19;26753:4;26748:3;26744:14;26729:29;;26580:184;;;;:::o;26770:132::-;26837:4;26860:3;26852:11;;26890:4;26885:3;26881:14;26873:22;;26770:132;;;:::o;26908:108::-;26985:24;27003:5;26985:24;:::i;:::-;26980:3;26973:37;26908:108;;:::o;27022:179::-;27091:10;27112:46;27154:3;27146:6;27112:46;:::i;:::-;27190:4;27185:3;27181:14;27167:28;;27022:179;;;;:::o;27207:113::-;27277:4;27309;27304:3;27300:14;27292:22;;27207:113;;;:::o;27356:732::-;27475:3;27504:54;27552:5;27504:54;:::i;:::-;27574:86;27653:6;27648:3;27574:86;:::i;:::-;27567:93;;27684:56;27734:5;27684:56;:::i;:::-;27763:7;27794:1;27779:284;27804:6;27801:1;27798:13;27779:284;;;27880:6;27874:13;27907:63;27966:3;27951:13;27907:63;:::i;:::-;27900:70;;27993:60;28046:6;27993:60;:::i;:::-;27983:70;;27839:224;27826:1;27823;27819:9;27814:14;;27779:284;;;27783:14;28079:3;28072:10;;27480:608;;;27356:732;;;;:::o;28094:831::-;28357:4;28395:3;28384:9;28380:19;28372:27;;28409:71;28477:1;28466:9;28462:17;28453:6;28409:71;:::i;:::-;28490:80;28566:2;28555:9;28551:18;28542:6;28490:80;:::i;:::-;28617:9;28611:4;28607:20;28602:2;28591:9;28587:18;28580:48;28645:108;28748:4;28739:6;28645:108;:::i;:::-;28637:116;;28763:72;28831:2;28820:9;28816:18;28807:6;28763:72;:::i;:::-;28845:73;28913:3;28902:9;28898:19;28889:6;28845:73;:::i;:::-;28094:831;;;;;;;;:::o;28931:807::-;29180:4;29218:3;29207:9;29203:19;29195:27;;29232:71;29300:1;29289:9;29285:17;29276:6;29232:71;:::i;:::-;29313:72;29381:2;29370:9;29366:18;29357:6;29313:72;:::i;:::-;29395:80;29471:2;29460:9;29456:18;29447:6;29395:80;:::i;:::-;29485;29561:2;29550:9;29546:18;29537:6;29485:80;:::i;:::-;29575:73;29643:3;29632:9;29628:19;29619:6;29575:73;:::i;:::-;29658;29726:3;29715:9;29711:19;29702:6;29658:73;:::i;:::-;28931:807;;;;;;;;;:::o;29744:143::-;29801:5;29832:6;29826:13;29817:22;;29848:33;29875:5;29848:33;:::i;:::-;29744:143;;;;:::o;29893:663::-;29981:6;29989;29997;30046:2;30034:9;30025:7;30021:23;30017:32;30014:119;;;30052:79;;:::i;:::-;30014:119;30172:1;30197:64;30253:7;30244:6;30233:9;30229:22;30197:64;:::i;:::-;30187:74;;30143:128;30310:2;30336:64;30392:7;30383:6;30372:9;30368:22;30336:64;:::i;:::-;30326:74;;30281:129;30449:2;30475:64;30531:7;30522:6;30511:9;30507:22;30475:64;:::i;:::-;30465:74;;30420:129;29893:663;;;;;:::o;30562:179::-;30702:31;30698:1;30690:6;30686:14;30679:55;30562:179;:::o;30747:366::-;30889:3;30910:67;30974:2;30969:3;30910:67;:::i;:::-;30903:74;;30986:93;31075:3;30986:93;:::i;:::-;31104:2;31099:3;31095:12;31088:19;;30747:366;;;:::o;31119:419::-;31285:4;31323:2;31312:9;31308:18;31300:26;;31372:9;31366:4;31362:20;31358:1;31347:9;31343:17;31336:47;31400:131;31526:4;31400:131;:::i;:::-;31392:139;;31119:419;;;:::o;31544:147::-;31645:11;31682:3;31667:18;;31544:147;;;;:::o;31697:114::-;;:::o;31817:398::-;31976:3;31997:83;32078:1;32073:3;31997:83;:::i;:::-;31990:90;;32089:93;32178:3;32089:93;:::i;:::-;32207:1;32202:3;32198:11;32191:18;;31817:398;;;:::o;32221:379::-;32405:3;32427:147;32570:3;32427:147;:::i;:::-;32420:154;;32591:3;32584:10;;32221:379;;;:::o;32606:245::-;32746:34;32742:1;32734:6;32730:14;32723:58;32815:28;32810:2;32802:6;32798:15;32791:53;32606:245;:::o;32857:366::-;32999:3;33020:67;33084:2;33079:3;33020:67;:::i;:::-;33013:74;;33096:93;33185:3;33096:93;:::i;:::-;33214:2;33209:3;33205:12;33198:19;;32857:366;;;:::o;33229:419::-;33395:4;33433:2;33422:9;33418:18;33410:26;;33482:9;33476:4;33472:20;33468:1;33457:9;33453:17;33446:47;33510:131;33636:4;33510:131;:::i;:::-;33502:139;;33229:419;;;:::o

Swarm Source

ipfs://e4578dc3a262bc230e8972b327798206db1417bc1c76f4766a4de9b995f3f29c

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  ]

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.