ETH Price: $3,356.55 (-2.30%)
Gas: 6.12 Gwei

Contract

0xdDB9554E923631a9aD1A9925070f86028564170e
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve212629252024-11-25 6:16:5945 hrs ago1732515419IN
0xdDB9554E...28564170e
0 ETH0.000336357.12788795
Approve212590562024-11-24 17:19:472 days ago1732468787IN
0xdDB9554E...28564170e
0 ETH0.0005794812.28038472
Approve212482472024-11-23 5:08:113 days ago1732338491IN
0xdDB9554E...28564170e
0 ETH0.0005363411.36608116
Approve212465992024-11-22 23:37:354 days ago1732318655IN
0xdDB9554E...28564170e
0 ETH0.0006914414.67160617
Approve212110172024-11-18 0:28:359 days ago1731889715IN
0xdDB9554E...28564170e
0 ETH0.000380378.06076597
Approve211905112024-11-15 3:48:4711 days ago1731642527IN
0xdDB9554E...28564170e
0 ETH0.0007191515.24024203
Approve211845652024-11-14 7:52:5912 days ago1731570779IN
0xdDB9554E...28564170e
0 ETH0.0016135434.19404127
Approve211798632024-11-13 16:08:1113 days ago1731514091IN
0xdDB9554E...28564170e
0 ETH0.0043036891.31898878
Approve211752142024-11-13 0:34:1114 days ago1731458051IN
0xdDB9554E...28564170e
0 ETH0.0009386119.91629981
Approve211701972024-11-12 7:45:4714 days ago1731397547IN
0xdDB9554E...28564170e
0 ETH0.0012968127.48191203
Approve211583572024-11-10 16:06:2316 days ago1731254783IN
0xdDB9554E...28564170e
0 ETH0.0010512422.27785824
Approve211462402024-11-08 23:34:2318 days ago1731108863IN
0xdDB9554E...28564170e
0 ETH0.000448089.55646456
Approve211432722024-11-08 13:38:5918 days ago1731073139IN
0xdDB9554E...28564170e
0 ETH0.0008759218.66691649
Approve211330982024-11-07 3:30:2320 days ago1730950223IN
0xdDB9554E...28564170e
0 ETH0.0007916.74165468
Approve211325942024-11-07 1:49:1120 days ago1730944151IN
0xdDB9554E...28564170e
0 ETH0.0009525320.18605728
Approve211325902024-11-07 1:48:2320 days ago1730944103IN
0xdDB9554E...28564170e
0 ETH0.0011785124.9748603
Transfer211294752024-11-06 15:22:4720 days ago1730906567IN
0xdDB9554E...28564170e
0 ETH0.0014808821.66522547
Approve211293462024-11-06 14:56:5920 days ago1730905019IN
0xdDB9554E...28564170e
0 ETH0.0012054325.57791167
Approve211189602024-11-05 4:08:1121 days ago1730779691IN
0xdDB9554E...28564170e
0 ETH0.000208084.4109118
Approve211167812024-11-04 20:50:1122 days ago1730753411IN
0xdDB9554E...28564170e
0 ETH0.000125825.05466373
Approve211128532024-11-04 7:40:3522 days ago1730706035IN
0xdDB9554E...28564170e
0 ETH0.0004813510.2032913
Approve211099192024-11-03 21:51:4723 days ago1730670707IN
0xdDB9554E...28564170e
0 ETH0.000188453.99364235
Approve210963672024-11-02 0:25:5925 days ago1730507159IN
0xdDB9554E...28564170e
0 ETH0.000275365.87740693
Approve210954062024-11-01 21:12:1125 days ago1730495531IN
0xdDB9554E...28564170e
0 ETH0.000380218.10899823
Approve210925952024-11-01 11:47:5925 days ago1730461679IN
0xdDB9554E...28564170e
0 ETH0.000266448.94464544
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
210655592024-10-28 17:15:3529 days ago1730135735
0xdDB9554E...28564170e
0.40689509 ETH
210655592024-10-28 17:15:3529 days ago1730135735
0xdDB9554E...28564170e
0.40689509 ETH
210655572024-10-28 17:15:1129 days ago1730135711
0xdDB9554E...28564170e
0.1166329 ETH
210655572024-10-28 17:15:1129 days ago1730135711
0xdDB9554E...28564170e
0.1166329 ETH
210655562024-10-28 17:14:5929 days ago1730135699
0xdDB9554E...28564170e
0.10816901 ETH
210655562024-10-28 17:14:5929 days ago1730135699
0xdDB9554E...28564170e
0.10816901 ETH
210655542024-10-28 17:14:3529 days ago1730135675
0xdDB9554E...28564170e
0.20292244 ETH
210655542024-10-28 17:14:3529 days ago1730135675
0xdDB9554E...28564170e
0.20292244 ETH
210655532024-10-28 17:14:2329 days ago1730135663
0xdDB9554E...28564170e
0.03571788 ETH
210655532024-10-28 17:14:2329 days ago1730135663
0xdDB9554E...28564170e
0.03571788 ETH
210655532024-10-28 17:14:2329 days ago1730135663
0xdDB9554E...28564170e
0.31357285 ETH
210655532024-10-28 17:14:2329 days ago1730135663
0xdDB9554E...28564170e
0.31357285 ETH
210655532024-10-28 17:14:2329 days ago1730135663
0xdDB9554E...28564170e
0.10621768 ETH
210655532024-10-28 17:14:2329 days ago1730135663
0xdDB9554E...28564170e
0.10621768 ETH
210655522024-10-28 17:14:1129 days ago1730135651
0xdDB9554E...28564170e
0.02888636 ETH
210655522024-10-28 17:14:1129 days ago1730135651
0xdDB9554E...28564170e
0.02888636 ETH
210655522024-10-28 17:14:1129 days ago1730135651
0xdDB9554E...28564170e
0.09460402 ETH
210655522024-10-28 17:14:1129 days ago1730135651
0xdDB9554E...28564170e
0.09460402 ETH
210655522024-10-28 17:14:1129 days ago1730135651
0xdDB9554E...28564170e
0.39878112 ETH
210655522024-10-28 17:14:1129 days ago1730135651
0xdDB9554E...28564170e
0.39878112 ETH
210655512024-10-28 17:13:5929 days ago1730135639
0xdDB9554E...28564170e
0.33617473 ETH
210655512024-10-28 17:13:5929 days ago1730135639
0xdDB9554E...28564170e
0.33617473 ETH
210655512024-10-28 17:13:5929 days ago1730135639
0xdDB9554E...28564170e
0.20310689 ETH
210655512024-10-28 17:13:5929 days ago1730135639
0xdDB9554E...28564170e
0.20310689 ETH
210655512024-10-28 17:13:5929 days ago1730135639
0xdDB9554E...28564170e
0.18724623 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Contract

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-28
*/

// SPDX-License-Identifier: MIT
/*
MEET SANTINO LUCE DOG
www.catholicnewsagency.com/news/260129/meet-luce-the-vatican-s-cartoon-mascot-for-jubilee-2025
t.me/santinoETHportal

*/
pragma solidity 0.8.26;

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

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

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

}

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

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

contract Contract is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    address payable private _taxWallet;
    string private constant _name = unicode"Luce Dog";
    string private constant _symbol = unicode"Santino";

    uint256 private _initialBuyTax=20;
    uint256 private _initialSellTax=20;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=25;
    uint256 private _reduceSellTaxAt=25;
    uint256 private _preventSwapBefore=0;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 420690000000 * 10**_decimals;
    uint256 public _maxTxAmount = 8413800000 * 10**_decimals;
    uint256 public _maxWalletSize = 8413800000 * 10**_decimals;
    uint256 public _taxSwapThreshold= _tTotal / 50;
    uint256 public _maxTaxSwap= _tTotal / 50;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private takeTax = true;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () payable {
        _taxWallet = payable(address(owner()));
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    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 pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[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()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        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);
    }

    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");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            if (takeTax) {
                taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
            }
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                _buyCount++;
            }

            if(to == uniswapV2Pair && from!= address(this)){
                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < 3, "Only 3 sells per block!");
                swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }
        }

        if(taxAmount>0){
            _balances[address(this)]=_balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
        return (a>b)?b:a;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function addBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBots(address[] memory notbot) public onlyOwner {
        for (uint i = 0; i < notbot.length; i++) {
            bots[notbot[i]] = false;
        }
    }

    function isBot(address a) public view returns (bool){
        return bots[a];
    }

    function openTrading() public onlyOwner() {
        require(!tradingOpen, "trading is already open");
        address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        if (block.chainid == 56) {
            routerAddress = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
        } else if (block.chainid == 97) {
            routerAddress = 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3;
        } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3 || block.chainid == 5 || block.chainid == 31337) {
            routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        } else if(block.chainid == 11155111){
            routerAddress = 0xC532a74256D3Db42D0Bf7a0400fEFDbad7694008;
        } else {
            revert();
        }
        uniswapV2Router = IUniswapV2Router02(routerAddress);
        takeTax = false;
        _approve(address(this), msg.sender, type(uint256).max);
        transfer(address(this), balanceOf(msg.sender));
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        _approve(address(this), address(uniswapV2Router), type(uint256).max);
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)).mul(100 - 15).div(100),0,0,owner(),block.timestamp);
        takeTax = true;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }

    receive() external payable {}


    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
            swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
            sendETHToFee(ethBalance);
        }
    }

    function manualsend() external {
        require(_msgSender()==_taxWallet);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601460065560146007555f6008555f6009556019600a556019600b555f600c555f600d556012600a61003691906105df565b6401f58066406100469190610629565b600e556012600a61005791906105df565b6401f58066406100679190610629565b600f5560326012600a61007a91906105df565b6461f313f88061008a9190610629565b6100949190610697565b60105560326012600a6100a791906105df565b6461f313f8806100b79190610629565b6100c19190610697565b6011555f601360156101000a81548160ff0219169083151502179055505f601360166101000a81548160ff0219169083151502179055506001601360176101000a81548160ff0219169083151502179055505f6014555f6015555f61012a61044060201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506101d461044760201b60201c565b60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a61022191906105df565b6461f313f8806102319190610629565b60015f61024261044060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61029261044760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506103ba61044060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a61041691906105df565b6461f313f8806104269190610629565b60405161043391906106d6565b60405180910390a36106ef565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156104f0578086048111156104cc576104cb61046e565b5b60018516156104db5780820291505b80810290506104e98561049b565b94506104b0565b94509492505050565b5f8261050857600190506105c3565b81610515575f90506105c3565b816001811461052b576002811461053557610564565b60019150506105c3565b60ff8411156105475761054661046e565b5b8360020a91508482111561055e5761055d61046e565b5b506105c3565b5060208310610133831016604e8410600b84101617156105995782820a9050838111156105945761059361046e565b5b6105c3565b6105a684848460016104a7565b925090508184048111156105bd576105bc61046e565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6105e9826105ca565b91506105f4836105d3565b92506106217fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846104f9565b905092915050565b5f610633826105ca565b915061063e836105ca565b925082820261064c816105ca565b915082820484148315176106635761066261046e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6106a1826105ca565b91506106ac836105ca565b9250826106bc576106bb61066a565b5b828204905092915050565b6106d0816105ca565b82525050565b5f6020820190506106e95f8301846106c7565b92915050565b6134d5806106fc5f395ff3fe608060405260043610610138575f3560e01c8063715018a6116100aa57806395d89b411161006e57806395d89b41146103d9578063a9059cbb14610403578063bf474bed1461043f578063c9567bf914610469578063d34628cc1461047f578063dd62ed3e146104a75761013f565b8063715018a61461032f578063751039fc146103455780637d1db4a51461035b5780638da5cb5b146103855780638f9a55c0146103af5761013f565b8063313ce567116100fc578063313ce5671461023957806331c2d847146102635780633bbac5791461028b57806351bc3c85146102c75780636fc3eaec146102dd57806370a08231146102f35761013f565b806306fdde0314610143578063095ea7b31461016d5780630faee56f146101a957806318160ddd146101d357806323b872dd146101fd5761013f565b3661013f57005b5f80fd5b34801561014e575f80fd5b506101576104e3565b60405161016491906124ac565b60405180910390f35b348015610178575f80fd5b50610193600480360381019061018e919061256a565b610520565b6040516101a091906125c2565b60405180910390f35b3480156101b4575f80fd5b506101bd61053d565b6040516101ca91906125ea565b60405180910390f35b3480156101de575f80fd5b506101e7610543565b6040516101f491906125ea565b60405180910390f35b348015610208575f80fd5b50610223600480360381019061021e9190612603565b610567565b60405161023091906125c2565b60405180910390f35b348015610244575f80fd5b5061024d61063b565b60405161025a919061266e565b60405180910390f35b34801561026e575f80fd5b50610289600480360381019061028491906127c7565b610643565b005b348015610296575f80fd5b506102b160048036038101906102ac919061280e565b610761565b6040516102be91906125c2565b60405180910390f35b3480156102d2575f80fd5b506102db6107b3565b005b3480156102e8575f80fd5b506102f161084a565b005b3480156102fe575f80fd5b506103196004803603810190610314919061280e565b6108b9565b60405161032691906125ea565b60405180910390f35b34801561033a575f80fd5b506103436108ff565b005b348015610350575f80fd5b50610359610a4d565b005b348015610366575f80fd5b5061036f610b7f565b60405161037c91906125ea565b60405180910390f35b348015610390575f80fd5b50610399610b85565b6040516103a69190612848565b60405180910390f35b3480156103ba575f80fd5b506103c3610bac565b6040516103d091906125ea565b60405180910390f35b3480156103e4575f80fd5b506103ed610bb2565b6040516103fa91906124ac565b60405180910390f35b34801561040e575f80fd5b506104296004803603810190610424919061256a565b610bef565b60405161043691906125c2565b60405180910390f35b34801561044a575f80fd5b50610453610c0c565b60405161046091906125ea565b60405180910390f35b348015610474575f80fd5b5061047d610c12565b005b34801561048a575f80fd5b506104a560048036038101906104a091906127c7565b61129d565b005b3480156104b2575f80fd5b506104cd60048036038101906104c89190612861565b6113bc565b6040516104da91906125ea565b60405180910390f35b60606040518060400160405280600881526020017f4c75636520446f67000000000000000000000000000000000000000000000000815250905090565b5f61053361052c61143e565b8484611445565b6001905092915050565b60115481565b5f6012600a61055291906129fb565b6461f313f8806105629190612a45565b905090565b5f610573848484611608565b6106308461057f61143e565b61062b856040518060600160405280602881526020016134786028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105e261143e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f289092919063ffffffff16565b611445565b600190509392505050565b5f6012905090565b61064b61143e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ce90612ad0565b60405180910390fd5b5f5b815181101561075d575f60045f8484815181106106f9576106f8612aee565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106d9565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107f361143e565b73ffffffffffffffffffffffffffffffffffffffff1614610812575f80fd5b5f61081c306108b9565b90505f8111156108305761082f81611f8a565b5b5f4790505f81111561084657610845816121f5565b5b5050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661088a61143e565b73ffffffffffffffffffffffffffffffffffffffff16146108a9575f80fd5b5f4790506108b6816121f5565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61090761143e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098a90612ad0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a5561143e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad890612ad0565b60405180910390fd5b6012600a610aef91906129fb565b6461f313f880610aff9190612a45565b600e819055506012600a610b1391906129fb565b6461f313f880610b239190612a45565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610b5891906129fb565b6461f313f880610b689190612a45565b604051610b7591906125ea565b60405180910390a1565b600e5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b60606040518060400160405280600781526020017f53616e74696e6f00000000000000000000000000000000000000000000000000815250905090565b5f610c02610bfb61143e565b8484611608565b6001905092915050565b60105481565b610c1a61143e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9d90612ad0565b60405180910390fd5b601360149054906101000a900460ff1615610cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ced90612b65565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d905060384603610d32577310ed43c718714eb63d5aa57b78b54704e256024e9050610dd5565b60614603610d5657739ac64cc6e4415144c455bd8e4837fea55603e5c39050610dd4565b6001461480610d655750600446145b80610d705750600346145b80610d7b5750600546145b80610d875750617a6946145b15610da857737a250d5630b4cf539739df2c5dacb4c659f2488d9050610dd3565b62aa36a74603610dce5773c532a74256d3db42d0bf7a0400fefdbad76940089050610dd2565b5f80fd5b5b5b5b8060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601360176101000a81548160ff021916908315150217905550610e5a30337fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611445565b610e6c30610e67336108b9565b610bef565b5060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ed7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efb9190612b97565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f81573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fa59190612b97565b6040518363ffffffff1660e01b8152600401610fc2929190612bc2565b6020604051808303815f875af1158015610fde573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110029190612b97565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061108d3060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611445565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306110fb60646110ed60556110df306108b9565b61225d90919063ffffffff16565b6122d490919063ffffffff16565b5f80611105610b85565b426040518863ffffffff1660e01b815260040161112796959493929190612c2b565b60606040518083038185885af1158015611143573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906111689190612c9e565b5050506001601360176101000a81548160ff02191690831515021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611223929190612cee565b6020604051808303815f875af115801561123f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112639190612d3f565b506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff02191690831515021790555050565b6112a561143e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132890612ad0565b60405180910390fd5b5f5b81518110156113b857600160045f84848151811061135457611353612aee565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611333565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114aa90612dda565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611521576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151890612e68565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115fb91906125ea565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611676576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166d90612ef6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116db90612f84565b60405180910390fd5b5f8111611726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171d90613012565b60405180910390fd5b5f61172f610b85565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561179d575061176d610b85565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611c785760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611840575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611848575f80fd5b601360179054906101000a900460ff161561189c57611899606461188b600a54600d54116118785760065461187c565b6008545b8561225d90919063ffffffff16565b6122d490919063ffffffff16565b90505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611945575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611998575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611a5257600e548211156119e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d99061307a565b60405180910390fd5b600f54826119ef856108b9565b6119f99190613098565b1115611a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3190613115565b60405180910390fd5b600d5f815480929190611a4c90613133565b91905055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ada57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611b1e57611b1b6064611b0d600b54600d5411611afa57600754611afe565b6009545b8561225d90919063ffffffff16565b6122d490919063ffffffff16565b90505b5f611b28306108b9565b9050601360159054906101000a900460ff16158015611b93575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611bab5750601360169054906101000a900460ff165b8015611bb8575060105481115b8015611bc75750600c54600d54115b15611c7657601554431115611bde575f6014819055505b600360145410611c23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1a906131c4565b60405180910390fd5b611c40611c3b84611c368460115461231d565b61231d565b611f8a565b5f4790505f811115611c5657611c55476121f5565b5b60145f815480929190611c6890613133565b919050555043601581905550505b505b5f811115611d7757611cd08160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461233590919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d6e91906125ea565b60405180910390a35b611dc78260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461239290919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611e6a611e1e828461239290919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461233590919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611f0d848661239290919063ffffffff16565b604051611f1a91906125ea565b60405180910390a350505050565b5f838311158290611f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6691906124ac565b60405180910390fd5b505f8385611f7d91906131e2565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611fc157611fc061268b565b5b604051908082528060200260200182016040528015611fef5781602001602082028036833780820191505090505b50905030815f8151811061200657612005612aee565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120ce9190612b97565b816001815181106120e2576120e1612aee565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121483060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611445565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016121aa9594939291906132cc565b5f604051808303815f87803b1580156121c1575f80fd5b505af11580156121d3573d5f803e3d5ffd5b50505050505f601360156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612259573d5f803e3d5ffd5b5050565b5f80830361226d575f90506122ce565b5f828461227a9190612a45565b90508284826122899190613351565b146122c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c0906133f1565b60405180910390fd5b809150505b92915050565b5f61231583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123db565b905092915050565b5f81831161232b578261232d565b815b905092915050565b5f8082846123439190613098565b905083811015612388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237f90613459565b60405180910390fd5b8091505092915050565b5f6123d383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f28565b905092915050565b5f8083118290612421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241891906124ac565b60405180910390fd5b505f838561242f9190613351565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61247e8261243c565b6124888185612446565b9350612498818560208601612456565b6124a181612464565b840191505092915050565b5f6020820190508181035f8301526124c48184612474565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612506826124dd565b9050919050565b612516816124fc565b8114612520575f80fd5b50565b5f813590506125318161250d565b92915050565b5f819050919050565b61254981612537565b8114612553575f80fd5b50565b5f8135905061256481612540565b92915050565b5f80604083850312156125805761257f6124d5565b5b5f61258d85828601612523565b925050602061259e85828601612556565b9150509250929050565b5f8115159050919050565b6125bc816125a8565b82525050565b5f6020820190506125d55f8301846125b3565b92915050565b6125e481612537565b82525050565b5f6020820190506125fd5f8301846125db565b92915050565b5f805f6060848603121561261a576126196124d5565b5b5f61262786828701612523565b935050602061263886828701612523565b925050604061264986828701612556565b9150509250925092565b5f60ff82169050919050565b61266881612653565b82525050565b5f6020820190506126815f83018461265f565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6126c182612464565b810181811067ffffffffffffffff821117156126e0576126df61268b565b5b80604052505050565b5f6126f26124cc565b90506126fe82826126b8565b919050565b5f67ffffffffffffffff82111561271d5761271c61268b565b5b602082029050602081019050919050565b5f80fd5b5f61274461273f84612703565b6126e9565b905080838252602082019050602084028301858111156127675761276661272e565b5b835b81811015612790578061277c8882612523565b845260208401935050602081019050612769565b5050509392505050565b5f82601f8301126127ae576127ad612687565b5b81356127be848260208601612732565b91505092915050565b5f602082840312156127dc576127db6124d5565b5b5f82013567ffffffffffffffff8111156127f9576127f86124d9565b5b6128058482850161279a565b91505092915050565b5f60208284031215612823576128226124d5565b5b5f61283084828501612523565b91505092915050565b612842816124fc565b82525050565b5f60208201905061285b5f830184612839565b92915050565b5f8060408385031215612877576128766124d5565b5b5f61288485828601612523565b925050602061289585828601612523565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612921578086048111156128fd576128fc61289f565b5b600185161561290c5780820291505b808102905061291a856128cc565b94506128e1565b94509492505050565b5f8261293957600190506129f4565b81612946575f90506129f4565b816001811461295c576002811461296657612995565b60019150506129f4565b60ff8411156129785761297761289f565b5b8360020a91508482111561298f5761298e61289f565b5b506129f4565b5060208310610133831016604e8410600b84101617156129ca5782820a9050838111156129c5576129c461289f565b5b6129f4565b6129d784848460016128d8565b925090508184048111156129ee576129ed61289f565b5b81810290505b9392505050565b5f612a0582612537565b9150612a1083612653565b9250612a3d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461292a565b905092915050565b5f612a4f82612537565b9150612a5a83612537565b9250828202612a6881612537565b91508282048414831517612a7f57612a7e61289f565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612aba602083612446565b9150612ac582612a86565b602082019050919050565b5f6020820190508181035f830152612ae781612aae565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612b4f601783612446565b9150612b5a82612b1b565b602082019050919050565b5f6020820190508181035f830152612b7c81612b43565b9050919050565b5f81519050612b918161250d565b92915050565b5f60208284031215612bac57612bab6124d5565b5b5f612bb984828501612b83565b91505092915050565b5f604082019050612bd55f830185612839565b612be26020830184612839565b9392505050565b5f819050919050565b5f819050919050565b5f612c15612c10612c0b84612be9565b612bf2565b612537565b9050919050565b612c2581612bfb565b82525050565b5f60c082019050612c3e5f830189612839565b612c4b60208301886125db565b612c586040830187612c1c565b612c656060830186612c1c565b612c726080830185612839565b612c7f60a08301846125db565b979650505050505050565b5f81519050612c9881612540565b92915050565b5f805f60608486031215612cb557612cb46124d5565b5b5f612cc286828701612c8a565b9350506020612cd386828701612c8a565b9250506040612ce486828701612c8a565b9150509250925092565b5f604082019050612d015f830185612839565b612d0e60208301846125db565b9392505050565b612d1e816125a8565b8114612d28575f80fd5b50565b5f81519050612d3981612d15565b92915050565b5f60208284031215612d5457612d536124d5565b5b5f612d6184828501612d2b565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612dc4602483612446565b9150612dcf82612d6a565b604082019050919050565b5f6020820190508181035f830152612df181612db8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612e52602283612446565b9150612e5d82612df8565b604082019050919050565b5f6020820190508181035f830152612e7f81612e46565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612ee0602583612446565b9150612eeb82612e86565b604082019050919050565b5f6020820190508181035f830152612f0d81612ed4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612f6e602383612446565b9150612f7982612f14565b604082019050919050565b5f6020820190508181035f830152612f9b81612f62565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612ffc602983612446565b915061300782612fa2565b604082019050919050565b5f6020820190508181035f83015261302981612ff0565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613064601983612446565b915061306f82613030565b602082019050919050565b5f6020820190508181035f83015261309181613058565b9050919050565b5f6130a282612537565b91506130ad83612537565b92508282019050808211156130c5576130c461289f565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6130ff601a83612446565b915061310a826130cb565b602082019050919050565b5f6020820190508181035f83015261312c816130f3565b9050919050565b5f61313d82612537565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361316f5761316e61289f565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6131ae601783612446565b91506131b98261317a565b602082019050919050565b5f6020820190508181035f8301526131db816131a2565b9050919050565b5f6131ec82612537565b91506131f783612537565b925082820390508181111561320f5761320e61289f565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613247816124fc565b82525050565b5f613258838361323e565b60208301905092915050565b5f602082019050919050565b5f61327a82613215565b613284818561321f565b935061328f8361322f565b805f5b838110156132bf5781516132a6888261324d565b97506132b183613264565b925050600181019050613292565b5085935050505092915050565b5f60a0820190506132df5f8301886125db565b6132ec6020830187612c1c565b81810360408301526132fe8186613270565b905061330d6060830185612839565b61331a60808301846125db565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61335b82612537565b915061336683612537565b92508261337657613375613324565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6133db602183612446565b91506133e682613381565b604082019050919050565b5f6020820190508181035f830152613408816133cf565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613443601b83612446565b915061344e8261340f565b602082019050919050565b5f6020820190508181035f83015261347081613437565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c14491a43afcf786a0235a3194f7521eaf6ae81c67f3cd27fc0a258d1e66c3cd64736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610138575f3560e01c8063715018a6116100aa57806395d89b411161006e57806395d89b41146103d9578063a9059cbb14610403578063bf474bed1461043f578063c9567bf914610469578063d34628cc1461047f578063dd62ed3e146104a75761013f565b8063715018a61461032f578063751039fc146103455780637d1db4a51461035b5780638da5cb5b146103855780638f9a55c0146103af5761013f565b8063313ce567116100fc578063313ce5671461023957806331c2d847146102635780633bbac5791461028b57806351bc3c85146102c75780636fc3eaec146102dd57806370a08231146102f35761013f565b806306fdde0314610143578063095ea7b31461016d5780630faee56f146101a957806318160ddd146101d357806323b872dd146101fd5761013f565b3661013f57005b5f80fd5b34801561014e575f80fd5b506101576104e3565b60405161016491906124ac565b60405180910390f35b348015610178575f80fd5b50610193600480360381019061018e919061256a565b610520565b6040516101a091906125c2565b60405180910390f35b3480156101b4575f80fd5b506101bd61053d565b6040516101ca91906125ea565b60405180910390f35b3480156101de575f80fd5b506101e7610543565b6040516101f491906125ea565b60405180910390f35b348015610208575f80fd5b50610223600480360381019061021e9190612603565b610567565b60405161023091906125c2565b60405180910390f35b348015610244575f80fd5b5061024d61063b565b60405161025a919061266e565b60405180910390f35b34801561026e575f80fd5b50610289600480360381019061028491906127c7565b610643565b005b348015610296575f80fd5b506102b160048036038101906102ac919061280e565b610761565b6040516102be91906125c2565b60405180910390f35b3480156102d2575f80fd5b506102db6107b3565b005b3480156102e8575f80fd5b506102f161084a565b005b3480156102fe575f80fd5b506103196004803603810190610314919061280e565b6108b9565b60405161032691906125ea565b60405180910390f35b34801561033a575f80fd5b506103436108ff565b005b348015610350575f80fd5b50610359610a4d565b005b348015610366575f80fd5b5061036f610b7f565b60405161037c91906125ea565b60405180910390f35b348015610390575f80fd5b50610399610b85565b6040516103a69190612848565b60405180910390f35b3480156103ba575f80fd5b506103c3610bac565b6040516103d091906125ea565b60405180910390f35b3480156103e4575f80fd5b506103ed610bb2565b6040516103fa91906124ac565b60405180910390f35b34801561040e575f80fd5b506104296004803603810190610424919061256a565b610bef565b60405161043691906125c2565b60405180910390f35b34801561044a575f80fd5b50610453610c0c565b60405161046091906125ea565b60405180910390f35b348015610474575f80fd5b5061047d610c12565b005b34801561048a575f80fd5b506104a560048036038101906104a091906127c7565b61129d565b005b3480156104b2575f80fd5b506104cd60048036038101906104c89190612861565b6113bc565b6040516104da91906125ea565b60405180910390f35b60606040518060400160405280600881526020017f4c75636520446f67000000000000000000000000000000000000000000000000815250905090565b5f61053361052c61143e565b8484611445565b6001905092915050565b60115481565b5f6012600a61055291906129fb565b6461f313f8806105629190612a45565b905090565b5f610573848484611608565b6106308461057f61143e565b61062b856040518060600160405280602881526020016134786028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105e261143e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f289092919063ffffffff16565b611445565b600190509392505050565b5f6012905090565b61064b61143e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ce90612ad0565b60405180910390fd5b5f5b815181101561075d575f60045f8484815181106106f9576106f8612aee565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506106d9565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107f361143e565b73ffffffffffffffffffffffffffffffffffffffff1614610812575f80fd5b5f61081c306108b9565b90505f8111156108305761082f81611f8a565b5b5f4790505f81111561084657610845816121f5565b5b5050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661088a61143e565b73ffffffffffffffffffffffffffffffffffffffff16146108a9575f80fd5b5f4790506108b6816121f5565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61090761143e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098a90612ad0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a5561143e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad890612ad0565b60405180910390fd5b6012600a610aef91906129fb565b6461f313f880610aff9190612a45565b600e819055506012600a610b1391906129fb565b6461f313f880610b239190612a45565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610b5891906129fb565b6461f313f880610b689190612a45565b604051610b7591906125ea565b60405180910390a1565b600e5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b60606040518060400160405280600781526020017f53616e74696e6f00000000000000000000000000000000000000000000000000815250905090565b5f610c02610bfb61143e565b8484611608565b6001905092915050565b60105481565b610c1a61143e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9d90612ad0565b60405180910390fd5b601360149054906101000a900460ff1615610cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ced90612b65565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d905060384603610d32577310ed43c718714eb63d5aa57b78b54704e256024e9050610dd5565b60614603610d5657739ac64cc6e4415144c455bd8e4837fea55603e5c39050610dd4565b6001461480610d655750600446145b80610d705750600346145b80610d7b5750600546145b80610d875750617a6946145b15610da857737a250d5630b4cf539739df2c5dacb4c659f2488d9050610dd3565b62aa36a74603610dce5773c532a74256d3db42d0bf7a0400fefdbad76940089050610dd2565b5f80fd5b5b5b5b8060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601360176101000a81548160ff021916908315150217905550610e5a30337fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611445565b610e6c30610e67336108b9565b610bef565b5060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ed7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efb9190612b97565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f81573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fa59190612b97565b6040518363ffffffff1660e01b8152600401610fc2929190612bc2565b6020604051808303815f875af1158015610fde573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110029190612b97565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061108d3060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611445565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306110fb60646110ed60556110df306108b9565b61225d90919063ffffffff16565b6122d490919063ffffffff16565b5f80611105610b85565b426040518863ffffffff1660e01b815260040161112796959493929190612c2b565b60606040518083038185885af1158015611143573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906111689190612c9e565b5050506001601360176101000a81548160ff02191690831515021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611223929190612cee565b6020604051808303815f875af115801561123f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112639190612d3f565b506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff02191690831515021790555050565b6112a561143e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132890612ad0565b60405180910390fd5b5f5b81518110156113b857600160045f84848151811061135457611353612aee565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611333565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114aa90612dda565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611521576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151890612e68565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115fb91906125ea565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611676576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166d90612ef6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116db90612f84565b60405180910390fd5b5f8111611726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171d90613012565b60405180910390fd5b5f61172f610b85565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561179d575061176d610b85565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611c785760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611840575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611848575f80fd5b601360179054906101000a900460ff161561189c57611899606461188b600a54600d54116118785760065461187c565b6008545b8561225d90919063ffffffff16565b6122d490919063ffffffff16565b90505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611945575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611998575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611a5257600e548211156119e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d99061307a565b60405180910390fd5b600f54826119ef856108b9565b6119f99190613098565b1115611a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3190613115565b60405180910390fd5b600d5f815480929190611a4c90613133565b91905055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ada57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611b1e57611b1b6064611b0d600b54600d5411611afa57600754611afe565b6009545b8561225d90919063ffffffff16565b6122d490919063ffffffff16565b90505b5f611b28306108b9565b9050601360159054906101000a900460ff16158015611b93575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611bab5750601360169054906101000a900460ff165b8015611bb8575060105481115b8015611bc75750600c54600d54115b15611c7657601554431115611bde575f6014819055505b600360145410611c23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1a906131c4565b60405180910390fd5b611c40611c3b84611c368460115461231d565b61231d565b611f8a565b5f4790505f811115611c5657611c55476121f5565b5b60145f815480929190611c6890613133565b919050555043601581905550505b505b5f811115611d7757611cd08160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461233590919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d6e91906125ea565b60405180910390a35b611dc78260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461239290919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611e6a611e1e828461239290919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461233590919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611f0d848661239290919063ffffffff16565b604051611f1a91906125ea565b60405180910390a350505050565b5f838311158290611f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6691906124ac565b60405180910390fd5b505f8385611f7d91906131e2565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611fc157611fc061268b565b5b604051908082528060200260200182016040528015611fef5781602001602082028036833780820191505090505b50905030815f8151811061200657612005612aee565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120ce9190612b97565b816001815181106120e2576120e1612aee565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121483060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611445565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016121aa9594939291906132cc565b5f604051808303815f87803b1580156121c1575f80fd5b505af11580156121d3573d5f803e3d5ffd5b50505050505f601360156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612259573d5f803e3d5ffd5b5050565b5f80830361226d575f90506122ce565b5f828461227a9190612a45565b90508284826122899190613351565b146122c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c0906133f1565b60405180910390fd5b809150505b92915050565b5f61231583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123db565b905092915050565b5f81831161232b578261232d565b815b905092915050565b5f8082846123439190613098565b905083811015612388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237f90613459565b60405180910390fd5b8091505092915050565b5f6123d383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f28565b905092915050565b5f8083118290612421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241891906124ac565b60405180910390fd5b505f838561242f9190613351565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61247e8261243c565b6124888185612446565b9350612498818560208601612456565b6124a181612464565b840191505092915050565b5f6020820190508181035f8301526124c48184612474565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612506826124dd565b9050919050565b612516816124fc565b8114612520575f80fd5b50565b5f813590506125318161250d565b92915050565b5f819050919050565b61254981612537565b8114612553575f80fd5b50565b5f8135905061256481612540565b92915050565b5f80604083850312156125805761257f6124d5565b5b5f61258d85828601612523565b925050602061259e85828601612556565b9150509250929050565b5f8115159050919050565b6125bc816125a8565b82525050565b5f6020820190506125d55f8301846125b3565b92915050565b6125e481612537565b82525050565b5f6020820190506125fd5f8301846125db565b92915050565b5f805f6060848603121561261a576126196124d5565b5b5f61262786828701612523565b935050602061263886828701612523565b925050604061264986828701612556565b9150509250925092565b5f60ff82169050919050565b61266881612653565b82525050565b5f6020820190506126815f83018461265f565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6126c182612464565b810181811067ffffffffffffffff821117156126e0576126df61268b565b5b80604052505050565b5f6126f26124cc565b90506126fe82826126b8565b919050565b5f67ffffffffffffffff82111561271d5761271c61268b565b5b602082029050602081019050919050565b5f80fd5b5f61274461273f84612703565b6126e9565b905080838252602082019050602084028301858111156127675761276661272e565b5b835b81811015612790578061277c8882612523565b845260208401935050602081019050612769565b5050509392505050565b5f82601f8301126127ae576127ad612687565b5b81356127be848260208601612732565b91505092915050565b5f602082840312156127dc576127db6124d5565b5b5f82013567ffffffffffffffff8111156127f9576127f86124d9565b5b6128058482850161279a565b91505092915050565b5f60208284031215612823576128226124d5565b5b5f61283084828501612523565b91505092915050565b612842816124fc565b82525050565b5f60208201905061285b5f830184612839565b92915050565b5f8060408385031215612877576128766124d5565b5b5f61288485828601612523565b925050602061289585828601612523565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612921578086048111156128fd576128fc61289f565b5b600185161561290c5780820291505b808102905061291a856128cc565b94506128e1565b94509492505050565b5f8261293957600190506129f4565b81612946575f90506129f4565b816001811461295c576002811461296657612995565b60019150506129f4565b60ff8411156129785761297761289f565b5b8360020a91508482111561298f5761298e61289f565b5b506129f4565b5060208310610133831016604e8410600b84101617156129ca5782820a9050838111156129c5576129c461289f565b5b6129f4565b6129d784848460016128d8565b925090508184048111156129ee576129ed61289f565b5b81810290505b9392505050565b5f612a0582612537565b9150612a1083612653565b9250612a3d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461292a565b905092915050565b5f612a4f82612537565b9150612a5a83612537565b9250828202612a6881612537565b91508282048414831517612a7f57612a7e61289f565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612aba602083612446565b9150612ac582612a86565b602082019050919050565b5f6020820190508181035f830152612ae781612aae565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612b4f601783612446565b9150612b5a82612b1b565b602082019050919050565b5f6020820190508181035f830152612b7c81612b43565b9050919050565b5f81519050612b918161250d565b92915050565b5f60208284031215612bac57612bab6124d5565b5b5f612bb984828501612b83565b91505092915050565b5f604082019050612bd55f830185612839565b612be26020830184612839565b9392505050565b5f819050919050565b5f819050919050565b5f612c15612c10612c0b84612be9565b612bf2565b612537565b9050919050565b612c2581612bfb565b82525050565b5f60c082019050612c3e5f830189612839565b612c4b60208301886125db565b612c586040830187612c1c565b612c656060830186612c1c565b612c726080830185612839565b612c7f60a08301846125db565b979650505050505050565b5f81519050612c9881612540565b92915050565b5f805f60608486031215612cb557612cb46124d5565b5b5f612cc286828701612c8a565b9350506020612cd386828701612c8a565b9250506040612ce486828701612c8a565b9150509250925092565b5f604082019050612d015f830185612839565b612d0e60208301846125db565b9392505050565b612d1e816125a8565b8114612d28575f80fd5b50565b5f81519050612d3981612d15565b92915050565b5f60208284031215612d5457612d536124d5565b5b5f612d6184828501612d2b565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612dc4602483612446565b9150612dcf82612d6a565b604082019050919050565b5f6020820190508181035f830152612df181612db8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612e52602283612446565b9150612e5d82612df8565b604082019050919050565b5f6020820190508181035f830152612e7f81612e46565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612ee0602583612446565b9150612eeb82612e86565b604082019050919050565b5f6020820190508181035f830152612f0d81612ed4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612f6e602383612446565b9150612f7982612f14565b604082019050919050565b5f6020820190508181035f830152612f9b81612f62565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612ffc602983612446565b915061300782612fa2565b604082019050919050565b5f6020820190508181035f83015261302981612ff0565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613064601983612446565b915061306f82613030565b602082019050919050565b5f6020820190508181035f83015261309181613058565b9050919050565b5f6130a282612537565b91506130ad83612537565b92508282019050808211156130c5576130c461289f565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6130ff601a83612446565b915061310a826130cb565b602082019050919050565b5f6020820190508181035f83015261312c816130f3565b9050919050565b5f61313d82612537565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361316f5761316e61289f565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6131ae601783612446565b91506131b98261317a565b602082019050919050565b5f6020820190508181035f8301526131db816131a2565b9050919050565b5f6131ec82612537565b91506131f783612537565b925082820390508181111561320f5761320e61289f565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613247816124fc565b82525050565b5f613258838361323e565b60208301905092915050565b5f602082019050919050565b5f61327a82613215565b613284818561321f565b935061328f8361322f565b805f5b838110156132bf5781516132a6888261324d565b97506132b183613264565b925050600181019050613292565b5085935050505092915050565b5f60a0820190506132df5f8301886125db565b6132ec6020830187612c1c565b81810360408301526132fe8186613270565b905061330d6060830185612839565b61331a60808301846125db565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61335b82612537565b915061336683612537565b92508261337657613375613324565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6133db602183612446565b91506133e682613381565b604082019050919050565b5f6020820190508181035f830152613408816133cf565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613443601b83612446565b915061344e8261340f565b602082019050919050565b5f6020820190508181035f83015261347081613437565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c14491a43afcf786a0235a3194f7521eaf6ae81c67f3cd27fc0a258d1e66c3cd64736f6c634300081a0033

Deployed Bytecode Sourcemap

3623:9257:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5544:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6377:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4711:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5821:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6546:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5730:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10486:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10662:85;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12330:352;;;;;;;;;;;;;:::i;:::-;;12690:187;;;;;;;;;;;;;:::i;:::-;;5924:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2704:148;;;;;;;;;;;;;:::i;:::-;;10047:159;;;;;;;;;;;;;:::i;:::-;;4530:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2490:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4593:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5635:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6051:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4658:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10755:1528;;;;;;;;;;;;;:::i;:::-;;10314:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6226:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5544:83;5581:13;5614:5;;;;;;;;;;;;;;;;;5607:12;;5544:83;:::o;6377:161::-;6452:4;6469:39;6478:12;:10;:12::i;:::-;6492:7;6501:6;6469:8;:39::i;:::-;6526:4;6519:11;;6377:161;;;;:::o;4711:40::-;;;;:::o;5821:95::-;5874:7;4451:2;4510;:13;;;;:::i;:::-;4495:12;:28;;;;:::i;:::-;5894:14;;5821:95;:::o;6546:313::-;6644:4;6661:36;6671:6;6679:9;6690:6;6661:9;:36::i;:::-;6708:121;6717:6;6725:12;:10;:12::i;:::-;6739:89;6777:6;6739:89;;;;;;;;;;;;;;;;;:11;:19;6751:6;6739:19;;;;;;;;;;;;;;;:33;6759:12;:10;:12::i;:::-;6739:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6708:8;:121::i;:::-;6847:4;6840:11;;6546:313;;;;;:::o;5730:83::-;5771:5;4451:2;5789:16;;5730:83;:::o;10486:168::-;2627:12;:10;:12::i;:::-;2617:22;;:6;;;;;;;;;;:22;;;2609:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10561:6:::1;10556:91;10577:6;:13;10573:1;:17;10556:91;;;10630:5;10612:4;:15;10617:6;10624:1;10617:9;;;;;;;;:::i;:::-;;;;;;;;10612:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;10592:3;;;;;;;10556:91;;;;10486:168:::0;:::o;10662:85::-;10709:4;10732;:7;10737:1;10732:7;;;;;;;;;;;;;;;;;;;;;;;;;10725:14;;10662:85;;;:::o;12330:352::-;12394:10;;;;;;;;;;;12380:24;;:12;:10;:12::i;:::-;:24;;;12372:33;;;;;;12416:20;12437:24;12455:4;12437:9;:24::i;:::-;12416:45;;12488:1;12475:12;:14;12472:75;;;12505:30;12522:12;12505:16;:30::i;:::-;12472:75;12557:18;12576:21;12557:40;;12622:1;12611:10;:12;12608:67;;;12639:24;12652:10;12639:12;:24::i;:::-;12608:67;12361:321;;12330:352::o;12690:187::-;12754:10;;;;;;;;;;;12740:24;;:12;:10;:12::i;:::-;:24;;;12732:33;;;;;;12776:26;12805:21;12776:50;;12837:32;12850:18;12837:12;:32::i;:::-;12721:156;12690:187::o;5924:119::-;5990:7;6017:9;:18;6027:7;6017:18;;;;;;;;;;;;;;;;6010:25;;5924:119;;;:::o;2704:148::-;2627:12;:10;:12::i;:::-;2617:22;;:6;;;;;;;;;;:22;;;2609:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2811:1:::1;2774:40;;2795:6;::::0;::::1;;;;;;;;2774:40;;;;;;;;;;;;2842:1;2825:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2704:148::o:0;10047:159::-;2627:12;:10;:12::i;:::-;2617:22;;:6;;;;;;;;;;:22;;;2609:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4451:2:::1;4510;:13;;;;:::i;:::-;4495:12;:28;;;;:::i;:::-;10100:12;:22;;;;4451:2;4510;:13;;;;:::i;:::-;4495:12;:28;;;;:::i;:::-;10133:14;:22;;;;10171:27;4451:2;4510;:13;;;;:::i;:::-;4495:12;:28;;;;:::i;:::-;10171:27;;;;;;:::i;:::-;;;;;;;;10047:159::o:0;4530:56::-;;;;:::o;2490:79::-;2528:7;2555:6;;;;;;;;;;;2548:13;;2490:79;:::o;4593:58::-;;;;:::o;5635:87::-;5674:13;5707:7;;;;;;;;;;;;;;;;;5700:14;;5635:87;:::o;6051:167::-;6129:4;6146:42;6156:12;:10;:12::i;:::-;6170:9;6181:6;6146:9;:42::i;:::-;6206:4;6199:11;;6051:167;;;;:::o;4658:46::-;;;;:::o;10755:1528::-;2627:12;:10;:12::i;:::-;2617:22;;:6;;;;;;;;;;:22;;;2609:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10817:11:::1;;;;;;;;;;;10816:12;10808:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;10867:21;10891:42;10867:66;;10965:2;10948:13;:19:::0;10944:594:::1;;11000:42;10984:58;;10944:594;;;11081:2;11064:13;:19:::0;11060:478:::1;;11116:42;11100:58;;11060:478;;;11197:1;11180:13;:18;:40;;;;11219:1;11202:13;:18;11180:40;:62;;;;11241:1;11224:13;:18;11180:62;:84;;;;11263:1;11246:13;:18;11180:84;:110;;;;11285:5;11268:13;:22;11180:110;11176:362;;;11323:42;11307:58;;11176:362;;;11403:8;11386:13;:25:::0;11383:155:::1;;11443:42;11427:58;;11383:155;;;11518:8;::::0;::::1;11383:155;11176:362;11060:478;10944:594;11585:13;11548:15;;:51;;;;;;;;;;;;;;;;;;11620:5;11610:7;;:15;;;;;;;;;;;;;;;;;;11636:54;11653:4;11660:10;11672:17;11636:8;:54::i;:::-;11701:46;11718:4;11725:21;11735:10;11725:9;:21::i;:::-;11701:8;:46::i;:::-;;11792:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11774:55;;;11838:4;11845:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11774:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11758:13;;:110;;;;;;;;;;;;;;;;;;11879:68;11896:4;11911:15;;;;;;;;;;;11929:17;11879:8;:68::i;:::-;11958:15;;;;;;;;;;;:31;;;11997:21;12028:4;12034:47;12077:3;12034:38;12063:8;12034:24;12052:4;12034:9;:24::i;:::-;:28;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;12082:1;12084::::0;12086:7:::1;:5;:7::i;:::-;12094:15;11958:152;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12131:4;12121:7;;:14;;;;;;;;;;;;;;;;;;12153:13;;;;;;;;;;;12146:29;;;12184:15;;;;;;;;;;;12202:14;12146:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12242:4;12228:11;;:18;;;;;;;;;;;;;;;;;;12271:4;12257:11;;:18;;;;;;;;;;;;;;;;;;10797:1486;10755:1528::o:0;10314:164::-;2627:12;:10;:12::i;:::-;2617:22;;:6;;;;;;;;;;:22;;;2609:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10388:6:::1;10383:88;10404:5;:12;10400:1;:16;10383:88;;;10455:4;10438;:14;10443:5;10449:1;10443:8;;;;;;;;:::i;:::-;;;;;;;;10438:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;10418:3;;;;;;;10383:88;;;;10314:164:::0;:::o;6226:143::-;6307:7;6334:11;:18;6346:5;6334:18;;;;;;;;;;;;;;;:27;6353:7;6334:27;;;;;;;;;;;;;;;;6327:34;;6226:143;;;;:::o;245:98::-;298:7;325:10;318:17;;245:98;:::o;6867:335::-;6977:1;6960:19;;:5;:19;;;6952:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7058:1;7039:21;;:7;:21;;;7031:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7140:6;7110:11;:18;7122:5;7110:18;;;;;;;;;;;;;;;:27;7129:7;7110:27;;;;;;;;;;;;;;;:36;;;;7178:7;7162:32;;7171:5;7162:32;;;7187:6;7162:32;;;;;;:::i;:::-;;;;;;;;6867:335;;;:::o;7210:2228::-;7314:1;7298:18;;:4;:18;;;7290:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7391:1;7377:16;;:2;:16;;;7369:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7461:1;7452:6;:10;7444:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7519:17;7561:7;:5;:7::i;:::-;7553:15;;:4;:15;;;;:32;;;;;7578:7;:5;:7::i;:::-;7572:13;;:2;:13;;;;7553:32;7549:1529;;;7611:4;:10;7616:4;7611:10;;;;;;;;;;;;;;;;;;;;;;;;;7610:11;:24;;;;;7626:4;:8;7631:2;7626:8;;;;;;;;;;;;;;;;;;;;;;;;;7625:9;7610:24;7602:33;;;;;;7654:7;;;;;;;;;;;7650:136;;;7694:76;7766:3;7694:67;7716:15;;7706:9;;:25;7705:55;;7746:14;;7705:55;;;7733:12;;7705:55;7694:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;7682:88;;7650:136;7812:13;;;;;;;;;;;7804:21;;:4;:21;;;:55;;;;;7843:15;;;;;;;;;;;7829:30;;:2;:30;;;;7804:55;:83;;;;;7865:18;:22;7884:2;7865:22;;;;;;;;;;;;;;;;;;;;;;;;;7863:24;7804:83;7800:313;;;7927:12;;7917:6;:22;;7909:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8022:14;;8012:6;7996:13;8006:2;7996:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;7988:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8086:9;;:11;;;;;;;;;:::i;:::-;;;;;;7800:313;8138:13;;;;;;;;;;;8132:19;;:2;:19;;;:43;;;;;8170:4;8155:20;;:4;:20;;;;8132:43;8129:173;;;8207:79;8282:3;8207:70;8229:16;;8219:9;;:26;8218:58;;8261:15;;8218:58;;;8247:13;;8218:58;8207:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8195:91;;8129:173;8318:28;8349:24;8367:4;8349:9;:24::i;:::-;8318:55;;8393:6;;;;;;;;;;;8392:7;:30;;;;;8409:13;;;;;;;;;;;8403:19;;:2;:19;;;8392:30;:45;;;;;8426:11;;;;;;;;;;;8392:45;:89;;;;;8464:17;;8441:20;:40;8392:89;:123;;;;;8497:18;;8485:9;;:30;8392:123;8388:679;;;8555:13;;8540:12;:28;8536:90;;;8605:1;8593:9;:13;;;;8536:90;8664:1;8652:9;;:13;8644:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;8712:69;8729:51;8733:6;8741:38;8745:20;8767:11;;8741:3;:38::i;:::-;8729:3;:51::i;:::-;8712:16;:69::i;:::-;8800:26;8829:21;8800:50;;8894:1;8873:18;:22;8869:106;;;8920:35;8933:21;8920:12;:35::i;:::-;8869:106;8993:9;;:11;;;;;;;;;:::i;:::-;;;;;;9039:12;9023:13;:28;;;;8517:550;8388:679;7587:1491;7549:1529;9103:1;9093:9;:11;9090:165;;;9145:39;9174:9;9145;:24;9163:4;9145:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9120:9;:24;9138:4;9120:24;;;;;;;;;;;;;;;:64;;;;9227:4;9204:39;;9213:4;9204:39;;;9233:9;9204:39;;;;;;:::i;:::-;;;;;;;;9090:165;9281:27;9301:6;9281:9;:15;9291:4;9281:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9265:9;:15;9275:4;9265:15;;;;;;;;;;;;;;;:43;;;;9333:40;9351:21;9362:9;9351:6;:10;;:21;;;;:::i;:::-;9333:9;:13;9343:2;9333:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9319:9;:13;9329:2;9319:13;;;;;;;;;;;;;;;:54;;;;9404:2;9389:41;;9398:4;9389:41;;;9408:21;9419:9;9408:6;:10;;:21;;;;:::i;:::-;9389:41;;;;;;:::i;:::-;;;;;;;;7279:2159;7210:2228;;;:::o;1382:190::-;1468:7;1501:1;1496;:6;;1504:12;1488:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1528:9;1544:1;1540;:5;;;;:::i;:::-;1528:17;;1563:1;1556:8;;;1382:190;;;;;:::o;9556:483::-;5150:4;5141:6;;:13;;;;;;;;;;;;;;;;;;9634:21:::1;9672:1;9658:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9634:40;;9703:4;9685;9690:1;9685:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9729:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9719:4;9724:1;9719:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9762:62;9779:4;9794:15;;;;;;;;;;;9812:11;9762:8;:62::i;:::-;9835:15;;;;;;;;;;;:66;;;9916:11;9942:1;9958:4;9985;10005:15;9835:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9623:416;5186:5:::0;5177:6;;:14;;;;;;;;;;;;;;;;;;9556:483;:::o;10214:92::-;10271:10;;;;;;;;;;;:19;;:27;10291:6;10271:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10214:92;:::o;1580:246::-;1638:7;1667:1;1662;:6;1658:47;;1692:1;1685:8;;;;1658:47;1715:9;1731:1;1727;:5;;;;:::i;:::-;1715:17;;1760:1;1755;1751;:5;;;;:::i;:::-;:10;1743:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1817:1;1810:8;;;1580:246;;;;;:::o;1834:132::-;1892:7;1919:39;1923:1;1926;1919:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1912:46;;1834:132;;;;:::o;9448:100::-;9505:7;9534:1;9532;:3;9531:9;;9539:1;9531:9;;;9537:1;9531:9;9524:16;;9448:100;;;;:::o;1051:179::-;1109:7;1129:9;1145:1;1141;:5;;;;:::i;:::-;1129:17;;1170:1;1165;:6;;1157:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1221:1;1214:8;;;1051:179;;;;:::o;1238:136::-;1296:7;1323:43;1327:1;1330;1323:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1316:50;;1238:136;;;;:::o;1974:189::-;2060:7;2092:1;2088;:5;2095:12;2080:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2119:9;2135:1;2131;:5;;;;:::i;:::-;2119:17;;2154:1;2147:8;;;1974:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1242:75::-;1275:6;1308:2;1302:9;1292:19;;1242:75;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:117::-;4855:1;4852;4845:12;4869:180;4917:77;4914:1;4907:88;5014:4;5011:1;5004:15;5038:4;5035:1;5028:15;5055:281;5138:27;5160:4;5138:27;:::i;:::-;5130:6;5126:40;5268:6;5256:10;5253:22;5232:18;5220:10;5217:34;5214:62;5211:88;;;5279:18;;:::i;:::-;5211:88;5319:10;5315:2;5308:22;5098:238;5055:281;;:::o;5342:129::-;5376:6;5403:20;;:::i;:::-;5393:30;;5432:33;5460:4;5452:6;5432:33;:::i;:::-;5342:129;;;:::o;5477:311::-;5554:4;5644:18;5636:6;5633:30;5630:56;;;5666:18;;:::i;:::-;5630:56;5716:4;5708:6;5704:17;5696:25;;5776:4;5770;5766:15;5758:23;;5477:311;;;:::o;5794:117::-;5903:1;5900;5893:12;5934:710;6030:5;6055:81;6071:64;6128:6;6071:64;:::i;:::-;6055:81;:::i;:::-;6046:90;;6156:5;6185:6;6178:5;6171:21;6219:4;6212:5;6208:16;6201:23;;6272:4;6264:6;6260:17;6252:6;6248:30;6301:3;6293:6;6290:15;6287:122;;;6320:79;;:::i;:::-;6287:122;6435:6;6418:220;6452:6;6447:3;6444:15;6418:220;;;6527:3;6556:37;6589:3;6577:10;6556:37;:::i;:::-;6551:3;6544:50;6623:4;6618:3;6614:14;6607:21;;6494:144;6478:4;6473:3;6469:14;6462:21;;6418:220;;;6422:21;6036:608;;5934:710;;;;;:::o;6667:370::-;6738:5;6787:3;6780:4;6772:6;6768:17;6764:27;6754:122;;6795:79;;:::i;:::-;6754:122;6912:6;6899:20;6937:94;7027:3;7019:6;7012:4;7004:6;7000:17;6937:94;:::i;:::-;6928:103;;6744:293;6667:370;;;;:::o;7043:539::-;7127:6;7176:2;7164:9;7155:7;7151:23;7147:32;7144:119;;;7182:79;;:::i;:::-;7144:119;7330:1;7319:9;7315:17;7302:31;7360:18;7352:6;7349:30;7346:117;;;7382:79;;:::i;:::-;7346:117;7487:78;7557:7;7548:6;7537:9;7533:22;7487:78;:::i;:::-;7477:88;;7273:302;7043:539;;;;:::o;7588:329::-;7647:6;7696:2;7684:9;7675:7;7671:23;7667:32;7664:119;;;7702:79;;:::i;:::-;7664:119;7822:1;7847:53;7892:7;7883:6;7872:9;7868:22;7847:53;:::i;:::-;7837:63;;7793:117;7588:329;;;;:::o;7923:118::-;8010:24;8028:5;8010:24;:::i;:::-;8005:3;7998:37;7923:118;;:::o;8047:222::-;8140:4;8178:2;8167:9;8163:18;8155:26;;8191:71;8259:1;8248:9;8244:17;8235:6;8191:71;:::i;:::-;8047:222;;;;:::o;8275:474::-;8343:6;8351;8400:2;8388:9;8379:7;8375:23;8371:32;8368:119;;;8406:79;;:::i;:::-;8368:119;8526:1;8551:53;8596:7;8587:6;8576:9;8572:22;8551:53;:::i;:::-;8541:63;;8497:117;8653:2;8679:53;8724:7;8715:6;8704:9;8700:22;8679:53;:::i;:::-;8669:63;;8624:118;8275:474;;;;;:::o;8755:180::-;8803:77;8800:1;8793:88;8900:4;8897:1;8890:15;8924:4;8921:1;8914:15;8941:102;8983:8;9030:5;9027:1;9023:13;9002:34;;8941:102;;;:::o;9049:848::-;9110:5;9117:4;9141:6;9132:15;;9165:5;9156:14;;9179:712;9200:1;9190:8;9187:15;9179:712;;;9295:4;9290:3;9286:14;9280:4;9277:24;9274:50;;;9304:18;;:::i;:::-;9274:50;9354:1;9344:8;9340:16;9337:451;;;9769:4;9762:5;9758:16;9749:25;;9337:451;9819:4;9813;9809:15;9801:23;;9849:32;9872:8;9849:32;:::i;:::-;9837:44;;9179:712;;;9049:848;;;;;;;:::o;9903:1073::-;9957:5;10148:8;10138:40;;10169:1;10160:10;;10171:5;;10138:40;10197:4;10187:36;;10214:1;10205:10;;10216:5;;10187:36;10283:4;10331:1;10326:27;;;;10367:1;10362:191;;;;10276:277;;10326:27;10344:1;10335:10;;10346:5;;;10362:191;10407:3;10397:8;10394:17;10391:43;;;10414:18;;:::i;:::-;10391:43;10463:8;10460:1;10456:16;10447:25;;10498:3;10491:5;10488:14;10485:40;;;10505:18;;:::i;:::-;10485:40;10538:5;;;10276:277;;10662:2;10652:8;10649:16;10643:3;10637:4;10634:13;10630:36;10612:2;10602:8;10599:16;10594:2;10588:4;10585:12;10581:35;10565:111;10562:246;;;10718:8;10712:4;10708:19;10699:28;;10753:3;10746:5;10743:14;10740:40;;;10760:18;;:::i;:::-;10740:40;10793:5;;10562:246;10833:42;10871:3;10861:8;10855:4;10852:1;10833:42;:::i;:::-;10818:57;;;;10907:4;10902:3;10898:14;10891:5;10888:25;10885:51;;;10916:18;;:::i;:::-;10885:51;10965:4;10958:5;10954:16;10945:25;;9903:1073;;;;;;:::o;10982:281::-;11040:5;11064:23;11082:4;11064:23;:::i;:::-;11056:31;;11108:25;11124:8;11108:25;:::i;:::-;11096:37;;11152:104;11189:66;11179:8;11173:4;11152:104;:::i;:::-;11143:113;;10982:281;;;;:::o;11269:410::-;11309:7;11332:20;11350:1;11332:20;:::i;:::-;11327:25;;11366:20;11384:1;11366:20;:::i;:::-;11361:25;;11421:1;11418;11414:9;11443:30;11461:11;11443:30;:::i;:::-;11432:41;;11622:1;11613:7;11609:15;11606:1;11603:22;11583:1;11576:9;11556:83;11533:139;;11652:18;;:::i;:::-;11533:139;11317:362;11269:410;;;;:::o;11685:182::-;11825:34;11821:1;11813:6;11809:14;11802:58;11685:182;:::o;11873:366::-;12015:3;12036:67;12100:2;12095:3;12036:67;:::i;:::-;12029:74;;12112:93;12201:3;12112:93;:::i;:::-;12230:2;12225:3;12221:12;12214:19;;11873:366;;;:::o;12245:419::-;12411:4;12449:2;12438:9;12434:18;12426:26;;12498:9;12492:4;12488:20;12484:1;12473:9;12469:17;12462:47;12526:131;12652:4;12526:131;:::i;:::-;12518:139;;12245:419;;;:::o;12670:180::-;12718:77;12715:1;12708:88;12815:4;12812:1;12805:15;12839:4;12836:1;12829:15;12856:173;12996:25;12992:1;12984:6;12980:14;12973:49;12856:173;:::o;13035:366::-;13177:3;13198:67;13262:2;13257:3;13198:67;:::i;:::-;13191:74;;13274:93;13363:3;13274:93;:::i;:::-;13392:2;13387:3;13383:12;13376:19;;13035:366;;;:::o;13407:419::-;13573:4;13611:2;13600:9;13596:18;13588:26;;13660:9;13654:4;13650:20;13646:1;13635:9;13631:17;13624:47;13688:131;13814:4;13688:131;:::i;:::-;13680:139;;13407:419;;;:::o;13832:143::-;13889:5;13920:6;13914:13;13905:22;;13936:33;13963:5;13936:33;:::i;:::-;13832:143;;;;:::o;13981:351::-;14051:6;14100:2;14088:9;14079:7;14075:23;14071:32;14068:119;;;14106:79;;:::i;:::-;14068:119;14226:1;14251:64;14307:7;14298:6;14287:9;14283:22;14251:64;:::i;:::-;14241:74;;14197:128;13981:351;;;;:::o;14338:332::-;14459:4;14497:2;14486:9;14482:18;14474:26;;14510:71;14578:1;14567:9;14563:17;14554:6;14510:71;:::i;:::-;14591:72;14659:2;14648:9;14644:18;14635:6;14591:72;:::i;:::-;14338:332;;;;;:::o;14676:85::-;14721:7;14750:5;14739:16;;14676:85;;;:::o;14767:60::-;14795:3;14816:5;14809:12;;14767:60;;;:::o;14833:158::-;14891:9;14924:61;14942:42;14951:32;14977:5;14951:32;:::i;:::-;14942:42;:::i;:::-;14924:61;:::i;:::-;14911:74;;14833:158;;;:::o;14997:147::-;15092:45;15131:5;15092:45;:::i;:::-;15087:3;15080:58;14997:147;;:::o;15150:807::-;15399:4;15437:3;15426:9;15422:19;15414:27;;15451:71;15519:1;15508:9;15504:17;15495:6;15451:71;:::i;:::-;15532:72;15600:2;15589:9;15585:18;15576:6;15532:72;:::i;:::-;15614:80;15690:2;15679:9;15675:18;15666:6;15614:80;:::i;:::-;15704;15780:2;15769:9;15765:18;15756:6;15704:80;:::i;:::-;15794:73;15862:3;15851:9;15847:19;15838:6;15794:73;:::i;:::-;15877;15945:3;15934:9;15930:19;15921:6;15877:73;:::i;:::-;15150:807;;;;;;;;;:::o;15963:143::-;16020:5;16051:6;16045:13;16036:22;;16067:33;16094:5;16067:33;:::i;:::-;15963:143;;;;:::o;16112:663::-;16200:6;16208;16216;16265:2;16253:9;16244:7;16240:23;16236:32;16233:119;;;16271:79;;:::i;:::-;16233:119;16391:1;16416:64;16472:7;16463:6;16452:9;16448:22;16416:64;:::i;:::-;16406:74;;16362:128;16529:2;16555:64;16611:7;16602:6;16591:9;16587:22;16555:64;:::i;:::-;16545:74;;16500:129;16668:2;16694:64;16750:7;16741:6;16730:9;16726:22;16694:64;:::i;:::-;16684:74;;16639:129;16112:663;;;;;:::o;16781:332::-;16902:4;16940:2;16929:9;16925:18;16917:26;;16953:71;17021:1;17010:9;17006:17;16997:6;16953:71;:::i;:::-;17034:72;17102:2;17091:9;17087:18;17078:6;17034:72;:::i;:::-;16781:332;;;;;:::o;17119:116::-;17189:21;17204:5;17189:21;:::i;:::-;17182:5;17179:32;17169:60;;17225:1;17222;17215:12;17169:60;17119:116;:::o;17241:137::-;17295:5;17326:6;17320:13;17311:22;;17342:30;17366:5;17342:30;:::i;:::-;17241:137;;;;:::o;17384:345::-;17451:6;17500:2;17488:9;17479:7;17475:23;17471:32;17468:119;;;17506:79;;:::i;:::-;17468:119;17626:1;17651:61;17704:7;17695:6;17684:9;17680:22;17651:61;:::i;:::-;17641:71;;17597:125;17384:345;;;;:::o;17735:223::-;17875:34;17871:1;17863:6;17859:14;17852:58;17944:6;17939:2;17931:6;17927:15;17920:31;17735:223;:::o;17964:366::-;18106:3;18127:67;18191:2;18186:3;18127:67;:::i;:::-;18120:74;;18203:93;18292:3;18203:93;:::i;:::-;18321:2;18316:3;18312:12;18305:19;;17964:366;;;:::o;18336:419::-;18502:4;18540:2;18529:9;18525:18;18517:26;;18589:9;18583:4;18579:20;18575:1;18564:9;18560:17;18553:47;18617:131;18743:4;18617:131;:::i;:::-;18609:139;;18336:419;;;:::o;18761:221::-;18901:34;18897:1;18889:6;18885:14;18878:58;18970:4;18965:2;18957:6;18953:15;18946:29;18761:221;:::o;18988:366::-;19130:3;19151:67;19215:2;19210:3;19151:67;:::i;:::-;19144:74;;19227:93;19316:3;19227:93;:::i;:::-;19345:2;19340:3;19336:12;19329:19;;18988:366;;;:::o;19360:419::-;19526:4;19564:2;19553:9;19549:18;19541:26;;19613:9;19607:4;19603:20;19599:1;19588:9;19584:17;19577:47;19641:131;19767:4;19641:131;:::i;:::-;19633:139;;19360:419;;;:::o;19785:224::-;19925:34;19921:1;19913:6;19909:14;19902:58;19994:7;19989:2;19981:6;19977:15;19970:32;19785:224;:::o;20015:366::-;20157:3;20178:67;20242:2;20237:3;20178:67;:::i;:::-;20171:74;;20254:93;20343:3;20254:93;:::i;:::-;20372:2;20367:3;20363:12;20356:19;;20015:366;;;:::o;20387:419::-;20553:4;20591:2;20580:9;20576:18;20568:26;;20640:9;20634:4;20630:20;20626:1;20615:9;20611:17;20604:47;20668:131;20794:4;20668:131;:::i;:::-;20660:139;;20387:419;;;:::o;20812:222::-;20952:34;20948:1;20940:6;20936:14;20929:58;21021:5;21016:2;21008:6;21004:15;20997:30;20812:222;:::o;21040:366::-;21182:3;21203:67;21267:2;21262:3;21203:67;:::i;:::-;21196:74;;21279:93;21368:3;21279:93;:::i;:::-;21397:2;21392:3;21388:12;21381:19;;21040:366;;;:::o;21412:419::-;21578:4;21616:2;21605:9;21601:18;21593:26;;21665:9;21659:4;21655:20;21651:1;21640:9;21636:17;21629:47;21693:131;21819:4;21693:131;:::i;:::-;21685:139;;21412:419;;;:::o;21837:228::-;21977:34;21973:1;21965:6;21961:14;21954:58;22046:11;22041:2;22033:6;22029:15;22022:36;21837:228;:::o;22071:366::-;22213:3;22234:67;22298:2;22293:3;22234:67;:::i;:::-;22227:74;;22310:93;22399:3;22310:93;:::i;:::-;22428:2;22423:3;22419:12;22412:19;;22071:366;;;:::o;22443:419::-;22609:4;22647:2;22636:9;22632:18;22624:26;;22696:9;22690:4;22686:20;22682:1;22671:9;22667:17;22660:47;22724:131;22850:4;22724:131;:::i;:::-;22716:139;;22443:419;;;:::o;22868:175::-;23008:27;23004:1;22996:6;22992:14;22985:51;22868:175;:::o;23049:366::-;23191:3;23212:67;23276:2;23271:3;23212:67;:::i;:::-;23205:74;;23288:93;23377:3;23288:93;:::i;:::-;23406:2;23401:3;23397:12;23390:19;;23049:366;;;:::o;23421:419::-;23587:4;23625:2;23614:9;23610:18;23602:26;;23674:9;23668:4;23664:20;23660:1;23649:9;23645:17;23638:47;23702:131;23828:4;23702:131;:::i;:::-;23694:139;;23421:419;;;:::o;23846:191::-;23886:3;23905:20;23923:1;23905:20;:::i;:::-;23900:25;;23939:20;23957:1;23939:20;:::i;:::-;23934:25;;23982:1;23979;23975:9;23968:16;;24003:3;24000:1;23997:10;23994:36;;;24010:18;;:::i;:::-;23994:36;23846:191;;;;:::o;24043:176::-;24183:28;24179:1;24171:6;24167:14;24160:52;24043:176;:::o;24225:366::-;24367:3;24388:67;24452:2;24447:3;24388:67;:::i;:::-;24381:74;;24464:93;24553:3;24464:93;:::i;:::-;24582:2;24577:3;24573:12;24566:19;;24225:366;;;:::o;24597:419::-;24763:4;24801:2;24790:9;24786:18;24778:26;;24850:9;24844:4;24840:20;24836:1;24825:9;24821:17;24814:47;24878:131;25004:4;24878:131;:::i;:::-;24870:139;;24597:419;;;:::o;25022:233::-;25061:3;25084:24;25102:5;25084:24;:::i;:::-;25075:33;;25130:66;25123:5;25120:77;25117:103;;25200:18;;:::i;:::-;25117:103;25247:1;25240:5;25236:13;25229:20;;25022:233;;;:::o;25261:173::-;25401:25;25397:1;25389:6;25385:14;25378:49;25261:173;:::o;25440:366::-;25582:3;25603:67;25667:2;25662:3;25603:67;:::i;:::-;25596:74;;25679:93;25768:3;25679:93;:::i;:::-;25797:2;25792:3;25788:12;25781:19;;25440:366;;;:::o;25812:419::-;25978:4;26016:2;26005:9;26001:18;25993:26;;26065:9;26059:4;26055:20;26051:1;26040:9;26036:17;26029:47;26093:131;26219:4;26093:131;:::i;:::-;26085:139;;25812:419;;;:::o;26237:194::-;26277:4;26297:20;26315:1;26297:20;:::i;:::-;26292:25;;26331:20;26349:1;26331:20;:::i;:::-;26326:25;;26375:1;26372;26368:9;26360:17;;26399:1;26393:4;26390:11;26387:37;;;26404:18;;:::i;:::-;26387:37;26237:194;;;;:::o;26437:114::-;26504:6;26538:5;26532:12;26522:22;;26437:114;;;:::o;26557:184::-;26656:11;26690:6;26685:3;26678:19;26730:4;26725:3;26721:14;26706:29;;26557:184;;;;:::o;26747:132::-;26814:4;26837:3;26829:11;;26867:4;26862:3;26858:14;26850:22;;26747:132;;;:::o;26885:108::-;26962:24;26980:5;26962:24;:::i;:::-;26957:3;26950:37;26885:108;;:::o;26999:179::-;27068:10;27089:46;27131:3;27123:6;27089:46;:::i;:::-;27167:4;27162:3;27158:14;27144:28;;26999:179;;;;:::o;27184:113::-;27254:4;27286;27281:3;27277:14;27269:22;;27184:113;;;:::o;27333:732::-;27452:3;27481:54;27529:5;27481:54;:::i;:::-;27551:86;27630:6;27625:3;27551:86;:::i;:::-;27544:93;;27661:56;27711:5;27661:56;:::i;:::-;27740:7;27771:1;27756:284;27781:6;27778:1;27775:13;27756:284;;;27857:6;27851:13;27884:63;27943:3;27928:13;27884:63;:::i;:::-;27877:70;;27970:60;28023:6;27970:60;:::i;:::-;27960:70;;27816:224;27803:1;27800;27796:9;27791:14;;27756:284;;;27760:14;28056:3;28049:10;;27457:608;;;27333:732;;;;:::o;28071:831::-;28334:4;28372:3;28361:9;28357:19;28349:27;;28386:71;28454:1;28443:9;28439:17;28430:6;28386:71;:::i;:::-;28467:80;28543:2;28532:9;28528:18;28519:6;28467:80;:::i;:::-;28594:9;28588:4;28584:20;28579:2;28568:9;28564:18;28557:48;28622:108;28725:4;28716:6;28622:108;:::i;:::-;28614:116;;28740:72;28808:2;28797:9;28793:18;28784:6;28740:72;:::i;:::-;28822:73;28890:3;28879:9;28875:19;28866:6;28822:73;:::i;:::-;28071:831;;;;;;;;:::o;28908:180::-;28956:77;28953:1;28946:88;29053:4;29050:1;29043:15;29077:4;29074:1;29067:15;29094:185;29134:1;29151:20;29169:1;29151:20;:::i;:::-;29146:25;;29185:20;29203:1;29185:20;:::i;:::-;29180:25;;29224:1;29214:35;;29229:18;;:::i;:::-;29214:35;29271:1;29268;29264:9;29259:14;;29094:185;;;;:::o;29285:220::-;29425:34;29421:1;29413:6;29409:14;29402:58;29494:3;29489:2;29481:6;29477:15;29470:28;29285:220;:::o;29511:366::-;29653:3;29674:67;29738:2;29733:3;29674:67;:::i;:::-;29667:74;;29750:93;29839:3;29750:93;:::i;:::-;29868:2;29863:3;29859:12;29852:19;;29511:366;;;:::o;29883:419::-;30049:4;30087:2;30076:9;30072:18;30064:26;;30136:9;30130:4;30126:20;30122:1;30111:9;30107:17;30100:47;30164:131;30290:4;30164:131;:::i;:::-;30156:139;;29883:419;;;:::o;30308:177::-;30448:29;30444:1;30436:6;30432:14;30425:53;30308:177;:::o;30491:366::-;30633:3;30654:67;30718:2;30713:3;30654:67;:::i;:::-;30647:74;;30730:93;30819:3;30730:93;:::i;:::-;30848:2;30843:3;30839:12;30832:19;;30491:366;;;:::o;30863:419::-;31029:4;31067:2;31056:9;31052:18;31044:26;;31116:9;31110:4;31106:20;31102:1;31091:9;31087:17;31080:47;31144:131;31270:4;31144:131;:::i;:::-;31136:139;;30863:419;;;:::o

Swarm Source

ipfs://c14491a43afcf786a0235a3194f7521eaf6ae81c67f3cd27fc0a258d1e66c3cd

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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