ETH Price: $3,400.22 (+1.82%)

Token

Guardian AI (GUARDIAN)
 

Overview

Max Total Supply

1,000,000 GUARDIAN

Holders

2,110 (0.00%)

Market

Price

$0.19 @ 0.000056 ETH

Onchain Market Cap

$191,424.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 9 Decimals)

Balance
12.200440037 GUARDIAN

Value
$2.34 ( ~0.000688190738118968 Eth) [0.0012%]
0x36a68c9b08e3bd497a284327a9331b9b1c930f82
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Guardian AI empowers users to take control of their digital assets, offering a dual-layered approach that seamlessly integrates advanced antivirus scans with continuous AI-driven monitoring.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
GuardianERC20

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*
    Website: https://guardianai.tech/
    Twitter: https://twitter.com/GuardianAI_
    TG: https://t.me/GuardianAI
*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.18;
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
    );
}
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}
contract GuardianERC20 is Context, IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "Guardian AI";
    string private constant _symbol = "GUARDIAN";
    uint8 private constant _decimals = 9;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;  
    uint256 private BuyFees = 30;  
    uint256 private _redisFeeOnSell = 0;  
    uint256 private SellFees = 60;
 
    //Original Fee
    uint256 private _redisFee = 0;
    uint256 private _taxFee = SellFees;
 
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
 
    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; 
    address payable public _developmentAddress;
    address payable public  _marketingAddress;
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    uint256 public _maxTxAmount = 20000 * 10**9; 
    uint256 public _maxWalletSize = 20000 * 10**9; 
    uint256 public _swapTokensAtAmount = 2000 * 10**9;
 
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor() {
 
        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _developmentAddress = payable(owner());
        _marketingAddress = payable(0xDca486A4155F6fdE7dafF088509A7c82479D9c75);
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = 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 tokenFromReflection(_rOwned[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 tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }
 
    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;
 
        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;
 
        _redisFee = 0;
        _taxFee = 0;
    }
 
    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }
 
    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");
 
        if (from != owner() && to != owner()) {
 
            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: cannot send tokens until trading is enabled");
            }
 
            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");
 
            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
 
            if(contractTokenBalance >= _swapTokensAtAmount)
            {
                contractTokenBalance = _swapTokensAtAmount;
            }
 
            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
 
        bool takeFee = true;
 
        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {
 
            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = BuyFees;
            }
 
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = SellFees;
            }
 
        }
 
        _tokenTransfer(from, to, amount, takeFee);
    }
 
    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 sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }
    function GoGuardian() public onlyOwner {
        tradingOpen = true;
    }
    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
 
    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
 
    function BlockWallets(address[] memory addys) public onlyOwner {
        for (uint256 i = 0; i < addys.length; i++) {
            bots[addys[i]] = true;
        }
    }
    function unBlockWallet(address _addy) public onlyOwner {
        bots[_addy] = false;
    }
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }
 
    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
 
    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }
 
    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
 
    receive() external payable {}
 
    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
 
    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }
 
    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }
 
    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }
 
    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
 
    function changeFees(uint256 _buyTaxes, uint256 _sellTaxes) public onlyOwner {
        BuyFees = _buyTaxes;
        SellFees = _sellTaxes;
    }
    function changeSwapbackThreshold(uint256 _amount) public onlyOwner {
        _swapTokensAtAmount = _amount;
    }
    function _toggleSwapback(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }
    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }
    function changeTaxWallet(address _marketing) public onlyOwner{
        _marketingAddress = payable(_marketing);
    }
    function setMaxTx(uint256 maxTxAmount) public onlyOwner {
           _maxTxAmount = maxTxAmount;       
    }
    function setMaxWallet(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }
    function removeLimits() public onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"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":[{"internalType":"address[]","name":"addys","type":"address[]"}],"name":"BlockWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"GoGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developmentAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"_toggleSwapback","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":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyTaxes","type":"uint256"},{"internalType":"uint256","name":"_sellTaxes","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"changeSwapbackThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"}],"name":"changeTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"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":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWallet","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"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addy","type":"address"}],"name":"unBlockWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405266038d7ea4c680005f196200001a9190620006d7565b5f196200002891906200073b565b6006555f600855601e6009555f600a55603c600b555f600c55600b54600d55600c54600e55600d54600f555f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506512309ce540006016556512309ce540006017556501d1a94a2000601855348015620000b1575f80fd5b505f620000c36200067360201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f620001756200067360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000254573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200027a9190620007da565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003069190620007da565b6040518363ffffffff1660e01b8152600401620003259291906200081b565b6020604051808303815f875af115801562000342573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003689190620007da565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003b76200067a60201b60201c565b60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073dca486a4155f6fde7daff088509a7c82479d9c7560135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f6200045f6200067a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620005ff6200067360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c6800060405162000664919062000857565b60405180910390a35062000872565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620006e382620006a1565b9150620006f083620006a1565b925082620007035762000702620006aa565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200074782620006a1565b91506200075483620006a1565b92508282039050818111156200076f576200076e6200070e565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620007a48262000779565b9050919050565b620007b68162000798565b8114620007c1575f80fd5b50565b5f81519050620007d481620007ab565b92915050565b5f60208284031215620007f257620007f162000775565b5b5f6200080184828501620007c4565b91505092915050565b620008158162000798565b82525050565b5f604082019050620008305f8301856200080a565b6200083f60208301846200080a565b9392505050565b6200085181620006a1565b82525050565b5f6020820190506200086c5f83018462000846565b92915050565b613e4580620008805f395ff3fe6080604052600436106101fc575f3560e01c80637d1db4a51161010c578063bfd792841161009f578063c767d9f11161006e578063c767d9f1146106c3578063caac7934146106eb578063cb71159514610715578063dd62ed3e1461073d578063f2fde38b1461077957610203565b8063bfd7928414610621578063c3c2cb7e1461065d578063c3c8cd8014610685578063c492f0461461069b57610203565b806395d89b41116100db57806395d89b411461056b578063a9059cbb14610595578063ba759f0e146105d1578063bc337182146105f957610203565b80637d1db4a5146104b15780637f2feddc146104db5780638da5cb5b146105175780638f9a55c01461054157610203565b806332527def1161018f5780635d0044ca1161015e5780635d0044ca1461040b5780636fc3eaec1461043357806370a0823114610449578063715018a614610485578063751039fc1461049b57610203565b806332527def146103795780633d6a9afe1461038f57806349bd5a5e146103b95780635c67d12d146103e357610203565b806321ecff5b116101cb57806321ecff5b146102c157806323b872dd146102e95780632fd689e314610325578063313ce5671461034f57610203565b806306fdde0314610207578063095ea7b3146102315780631694505e1461026d57806318160ddd1461029757610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061021b6107a1565b6040516102289190612d9c565b60405180910390f35b34801561023c575f80fd5b5061025760048036038101906102529190612e5a565b6107de565b6040516102649190612eb2565b60405180910390f35b348015610278575f80fd5b506102816107fb565b60405161028e9190612f26565b60405180910390f35b3480156102a2575f80fd5b506102ab610820565b6040516102b89190612f4e565b60405180910390f35b3480156102cc575f80fd5b506102e760048036038101906102e29190612f67565b61082e565b005b3480156102f4575f80fd5b5061030f600480360381019061030a9190612fa5565b6108d4565b60405161031c9190612eb2565b60405180910390f35b348015610330575f80fd5b506103396109a8565b6040516103469190612f4e565b60405180910390f35b34801561035a575f80fd5b506103636109ae565b6040516103709190613010565b60405180910390f35b348015610384575f80fd5b5061038d6109b6565b005b34801561039a575f80fd5b506103a3610a67565b6040516103b09190613049565b60405180910390f35b3480156103c4575f80fd5b506103cd610a8c565b6040516103da9190613071565b60405180910390f35b3480156103ee575f80fd5b50610409600480360381019061040491906130b4565b610ab1565b005b348015610416575f80fd5b50610431600480360381019061042c91906130df565b610b62565b005b34801561043e575f80fd5b50610447610c00565b005b348015610454575f80fd5b5061046f600480360381019061046a919061310a565b610ccd565b60405161047c9190612f4e565b60405180910390f35b348015610490575f80fd5b50610499610d1b565b005b3480156104a6575f80fd5b506104af610e69565b005b3480156104bc575f80fd5b506104c5610f1b565b6040516104d29190612f4e565b60405180910390f35b3480156104e6575f80fd5b5061050160048036038101906104fc919061310a565b610f21565b60405161050e9190612f4e565b60405180910390f35b348015610522575f80fd5b5061052b610f36565b6040516105389190613071565b60405180910390f35b34801561054c575f80fd5b50610555610f5d565b6040516105629190612f4e565b60405180910390f35b348015610576575f80fd5b5061057f610f63565b60405161058c9190612d9c565b60405180910390f35b3480156105a0575f80fd5b506105bb60048036038101906105b69190612e5a565b610fa0565b6040516105c89190612eb2565b60405180910390f35b3480156105dc575f80fd5b506105f760048036038101906105f291906130df565b610fbd565b005b348015610604575f80fd5b5061061f600480360381019061061a91906130df565b61105b565b005b34801561062c575f80fd5b506106476004803603810190610642919061310a565b6110f9565b6040516106549190612eb2565b60405180910390f35b348015610668575f80fd5b50610683600480360381019061067e9190613275565b611116565b005b348015610690575f80fd5b50610699611235565b005b3480156106a6575f80fd5b506106c160048036038101906106bc9190613315565b61130a565b005b3480156106ce575f80fd5b506106e960048036038101906106e4919061310a565b611439565b005b3480156106f6575f80fd5b506106ff611524565b60405161070c9190613049565b60405180910390f35b348015610720575f80fd5b5061073b6004803603810190610736919061310a565b611549565b005b348015610748575f80fd5b50610763600480360381019061075e9190613372565b611620565b6040516107709190612f4e565b60405180910390f35b348015610784575f80fd5b5061079f600480360381019061079a919061310a565b6116a2565b005b60606040518060400160405280600b81526020017f477561726469616e204149000000000000000000000000000000000000000000815250905090565b5f6107f16107ea61185f565b8484611866565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f66038d7ea4c68000905090565b61083661185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b9906133fa565b60405180910390fd5b8160098190555080600b819055505050565b5f6108e0848484611a29565b61099d846108ec61185f565b61099885604051806060016040528060288152602001613de86028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61094f61185f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122899092919063ffffffff16565b611866565b600190509392505050565b60185481565b5f6009905090565b6109be61185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a41906133fa565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ab961185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c906133fa565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b610b6a61185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bed906133fa565b60405180910390fd5b8060178190555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c4061185f565b73ffffffffffffffffffffffffffffffffffffffff161480610cb5575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c9d61185f565b73ffffffffffffffffffffffffffffffffffffffff16145b610cbd575f80fd5b5f479050610cca816122eb565b50565b5f610d1460025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612353565b9050919050565b610d2361185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da6906133fa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e7161185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef4906133fa565b60405180910390fd5b66038d7ea4c6800060168190555066038d7ea4c68000601781905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600881526020017f475541524449414e000000000000000000000000000000000000000000000000815250905090565b5f610fb3610fac61185f565b8484611a29565b6001905092915050565b610fc561185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611051576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611048906133fa565b60405180910390fd5b8060188190555050565b61106361185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e6906133fa565b60405180910390fd5b8060168190555050565b6010602052805f5260405f205f915054906101000a900460ff1681565b61111e61185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a1906133fa565b60405180910390fd5b5f5b815181101561123157600160105f8484815181106111cd576111cc613418565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506111ac565b5050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661127561185f565b73ffffffffffffffffffffffffffffffffffffffff1614806112ea575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112d261185f565b73ffffffffffffffffffffffffffffffffffffffff16145b6112f2575f80fd5b5f6112fc30610ccd565b9050611307816123bf565b50565b61131261185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461139e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611395906133fa565b60405180910390fd5b5f5b83839050811015611433578160055f8686858181106113c2576113c1613418565b5b90506020020160208101906113d7919061310a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506113a0565b50505050565b61144161185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c4906133fa565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61155161185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d4906133fa565b60405180910390fd5b8060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6116aa61185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172d906133fa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b906134b5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cb90613543565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611942576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611939906135d1565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a1c9190612f4e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8e9061365f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afc906136ed565b60405180910390fd5b5f8111611b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3e9061377b565b60405180910390fd5b611b4f610f36565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611bbd5750611b8d610f36565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611f9657601560149054906101000a900460ff16611c4c57611bde610f36565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4290613809565b60405180910390fd5b5b601654811115611c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8890613871565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611d2f575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d65906138ff565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611e1a5760175481611dcf84610ccd565b611dd9919061394a565b10611e19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e10906139ed565b60405180910390fd5b5b5f611e2430610ccd565b90505f60185482101590506018548210611e3e5760185491505b808015611e56575060158054906101000a900460ff16155b8015611eaf575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ec75750601560169054906101000a900460ff165b8015611f1a575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611f6d575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611f9357611f7b826123bf565b5f4790505f811115611f9157611f90476122eb565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612036575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806120e7575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120e6575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156120f4575f9050612277565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561219d575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121b557600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561225e575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561227657600a54600c81905550600b54600d819055505b5b61228384848484612628565b50505050565b5f8383111582906122d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c79190612d9c565b60405180910390fd5b505f83856122de9190613a0b565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561234f573d5f803e3d5ffd5b5050565b5f600654821115612399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239090613aae565b60405180910390fd5b5f6123a2612655565b90506123b7818461267e90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156123f5576123f4613139565b5b6040519080825280602002602001820160405280156124235781602001602082028036833780820191505090505b50905030815f8151811061243a57612439613418565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125029190613ae0565b8160018151811061251657612515613418565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061257c3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611866565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016125de959493929190613bfb565b5f604051808303815f87803b1580156125f5575f80fd5b505af1158015612607573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b80612636576126356126c7565b5b612641848484612700565b8061264f5761264e6128c0565b5b50505050565b5f805f6126606128d4565b91509150612677818361267e90919063ffffffff16565b9250505090565b5f6126bf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061292d565b905092915050565b5f600c541480156126d957505f600d54145b6126fe57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061270f8761298e565b95509550955095509550955061276b8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129ee90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127fc8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a3790919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061284681612a94565b6128508483612b4b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128ad9190612f4e565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f66038d7ea4c68000905061290366038d7ea4c6800060065461267e90919063ffffffff16565b8210156129205760065466038d7ea4c68000935093505050612929565b81819350935050505b9091565b5f8083118290612973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296a9190612d9c565b60405180910390fd5b505f83856129819190613c80565b9050809150509392505050565b5f805f805f805f805f6129a68a600c54600d54612b85565b9250925092505f6129b5612655565b90505f805f6129c68e878787612c17565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f612a2f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612289565b905092915050565b5f808284612a45919061394a565b905083811015612a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8190613cfa565b60405180910390fd5b8091505092915050565b5f612a9d612655565b90505f612ab38284612c9b90919063ffffffff16565b9050612b058160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a3790919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612b60826006546129ee90919063ffffffff16565b600681905550612b7b81600754612a3790919063ffffffff16565b6007819055505050565b5f805f80612baf6064612ba1888a612c9b90919063ffffffff16565b61267e90919063ffffffff16565b90505f612bd86064612bca888b612c9b90919063ffffffff16565b61267e90919063ffffffff16565b90505f612c0082612bf2858c6129ee90919063ffffffff16565b6129ee90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612c2e8589612c9b90919063ffffffff16565b90505f612c448689612c9b90919063ffffffff16565b90505f612c5a8789612c9b90919063ffffffff16565b90505f612c8282612c7485876129ee90919063ffffffff16565b6129ee90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612cab575f9050612d0c565b5f8284612cb89190613d18565b9050828482612cc79190613c80565b14612d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cfe90613dc9565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612d49578082015181840152602081019050612d2e565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612d6e82612d12565b612d788185612d1c565b9350612d88818560208601612d2c565b612d9181612d54565b840191505092915050565b5f6020820190508181035f830152612db48184612d64565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612df682612dcd565b9050919050565b612e0681612dec565b8114612e10575f80fd5b50565b5f81359050612e2181612dfd565b92915050565b5f819050919050565b612e3981612e27565b8114612e43575f80fd5b50565b5f81359050612e5481612e30565b92915050565b5f8060408385031215612e7057612e6f612dc5565b5b5f612e7d85828601612e13565b9250506020612e8e85828601612e46565b9150509250929050565b5f8115159050919050565b612eac81612e98565b82525050565b5f602082019050612ec55f830184612ea3565b92915050565b5f819050919050565b5f612eee612ee9612ee484612dcd565b612ecb565b612dcd565b9050919050565b5f612eff82612ed4565b9050919050565b5f612f1082612ef5565b9050919050565b612f2081612f06565b82525050565b5f602082019050612f395f830184612f17565b92915050565b612f4881612e27565b82525050565b5f602082019050612f615f830184612f3f565b92915050565b5f8060408385031215612f7d57612f7c612dc5565b5b5f612f8a85828601612e46565b9250506020612f9b85828601612e46565b9150509250929050565b5f805f60608486031215612fbc57612fbb612dc5565b5b5f612fc986828701612e13565b9350506020612fda86828701612e13565b9250506040612feb86828701612e46565b9150509250925092565b5f60ff82169050919050565b61300a81612ff5565b82525050565b5f6020820190506130235f830184613001565b92915050565b5f61303382612dcd565b9050919050565b61304381613029565b82525050565b5f60208201905061305c5f83018461303a565b92915050565b61306b81612dec565b82525050565b5f6020820190506130845f830184613062565b92915050565b61309381612e98565b811461309d575f80fd5b50565b5f813590506130ae8161308a565b92915050565b5f602082840312156130c9576130c8612dc5565b5b5f6130d6848285016130a0565b91505092915050565b5f602082840312156130f4576130f3612dc5565b5b5f61310184828501612e46565b91505092915050565b5f6020828403121561311f5761311e612dc5565b5b5f61312c84828501612e13565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61316f82612d54565b810181811067ffffffffffffffff8211171561318e5761318d613139565b5b80604052505050565b5f6131a0612dbc565b90506131ac8282613166565b919050565b5f67ffffffffffffffff8211156131cb576131ca613139565b5b602082029050602081019050919050565b5f80fd5b5f6131f26131ed846131b1565b613197565b90508083825260208201905060208402830185811115613215576132146131dc565b5b835b8181101561323e578061322a8882612e13565b845260208401935050602081019050613217565b5050509392505050565b5f82601f83011261325c5761325b613135565b5b813561326c8482602086016131e0565b91505092915050565b5f6020828403121561328a57613289612dc5565b5b5f82013567ffffffffffffffff8111156132a7576132a6612dc9565b5b6132b384828501613248565b91505092915050565b5f80fd5b5f8083601f8401126132d5576132d4613135565b5b8235905067ffffffffffffffff8111156132f2576132f16132bc565b5b60208301915083602082028301111561330e5761330d6131dc565b5b9250929050565b5f805f6040848603121561332c5761332b612dc5565b5b5f84013567ffffffffffffffff81111561334957613348612dc9565b5b613355868287016132c0565b93509350506020613368868287016130a0565b9150509250925092565b5f806040838503121561338857613387612dc5565b5b5f61339585828601612e13565b92505060206133a685828601612e13565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6133e4602083612d1c565b91506133ef826133b0565b602082019050919050565b5f6020820190508181035f830152613411816133d8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61349f602683612d1c565b91506134aa82613445565b604082019050919050565b5f6020820190508181035f8301526134cc81613493565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61352d602483612d1c565b9150613538826134d3565b604082019050919050565b5f6020820190508181035f83015261355a81613521565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6135bb602283612d1c565b91506135c682613561565b604082019050919050565b5f6020820190508181035f8301526135e8816135af565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613649602583612d1c565b9150613654826135ef565b604082019050919050565b5f6020820190508181035f8301526136768161363d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6136d7602383612d1c565b91506136e28261367d565b604082019050919050565b5f6020820190508181035f830152613704816136cb565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613765602983612d1c565b91506137708261370b565b604082019050919050565b5f6020820190508181035f83015261379281613759565b9050919050565b7f544f4b454e3a2063616e6e6f742073656e6420746f6b656e7320756e74696c205f8201527f74726164696e6720697320656e61626c65640000000000000000000000000000602082015250565b5f6137f3603283612d1c565b91506137fe82613799565b604082019050919050565b5f6020820190508181035f830152613820816137e7565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f61385b601c83612d1c565b915061386682613827565b602082019050919050565b5f6020820190508181035f8301526138888161384f565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f6138e9602383612d1c565b91506138f48261388f565b604082019050919050565b5f6020820190508181035f830152613916816138dd565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61395482612e27565b915061395f83612e27565b92508282019050808211156139775761397661391d565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6139d7602383612d1c565b91506139e28261397d565b604082019050919050565b5f6020820190508181035f830152613a04816139cb565b9050919050565b5f613a1582612e27565b9150613a2083612e27565b9250828203905081811115613a3857613a3761391d565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613a98602a83612d1c565b9150613aa382613a3e565b604082019050919050565b5f6020820190508181035f830152613ac581613a8c565b9050919050565b5f81519050613ada81612dfd565b92915050565b5f60208284031215613af557613af4612dc5565b5b5f613b0284828501613acc565b91505092915050565b5f819050919050565b5f613b2e613b29613b2484613b0b565b612ecb565b612e27565b9050919050565b613b3e81613b14565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613b7681612dec565b82525050565b5f613b878383613b6d565b60208301905092915050565b5f602082019050919050565b5f613ba982613b44565b613bb38185613b4e565b9350613bbe83613b5e565b805f5b83811015613bee578151613bd58882613b7c565b9750613be083613b93565b925050600181019050613bc1565b5085935050505092915050565b5f60a082019050613c0e5f830188612f3f565b613c1b6020830187613b35565b8181036040830152613c2d8186613b9f565b9050613c3c6060830185613062565b613c496080830184612f3f565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613c8a82612e27565b9150613c9583612e27565b925082613ca557613ca4613c53565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613ce4601b83612d1c565b9150613cef82613cb0565b602082019050919050565b5f6020820190508181035f830152613d1181613cd8565b9050919050565b5f613d2282612e27565b9150613d2d83612e27565b9250828202613d3b81612e27565b91508282048414831517613d5257613d5161391d565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613db3602183612d1c565b9150613dbe82613d59565b604082019050919050565b5f6020820190508181035f830152613de081613da7565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ff57d0ebc72346501415d72c826bdfeaf1d73892da9c18d03ff64a2668fb5b3f64736f6c63430008160033

Deployed Bytecode

0x6080604052600436106101fc575f3560e01c80637d1db4a51161010c578063bfd792841161009f578063c767d9f11161006e578063c767d9f1146106c3578063caac7934146106eb578063cb71159514610715578063dd62ed3e1461073d578063f2fde38b1461077957610203565b8063bfd7928414610621578063c3c2cb7e1461065d578063c3c8cd8014610685578063c492f0461461069b57610203565b806395d89b41116100db57806395d89b411461056b578063a9059cbb14610595578063ba759f0e146105d1578063bc337182146105f957610203565b80637d1db4a5146104b15780637f2feddc146104db5780638da5cb5b146105175780638f9a55c01461054157610203565b806332527def1161018f5780635d0044ca1161015e5780635d0044ca1461040b5780636fc3eaec1461043357806370a0823114610449578063715018a614610485578063751039fc1461049b57610203565b806332527def146103795780633d6a9afe1461038f57806349bd5a5e146103b95780635c67d12d146103e357610203565b806321ecff5b116101cb57806321ecff5b146102c157806323b872dd146102e95780632fd689e314610325578063313ce5671461034f57610203565b806306fdde0314610207578063095ea7b3146102315780631694505e1461026d57806318160ddd1461029757610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061021b6107a1565b6040516102289190612d9c565b60405180910390f35b34801561023c575f80fd5b5061025760048036038101906102529190612e5a565b6107de565b6040516102649190612eb2565b60405180910390f35b348015610278575f80fd5b506102816107fb565b60405161028e9190612f26565b60405180910390f35b3480156102a2575f80fd5b506102ab610820565b6040516102b89190612f4e565b60405180910390f35b3480156102cc575f80fd5b506102e760048036038101906102e29190612f67565b61082e565b005b3480156102f4575f80fd5b5061030f600480360381019061030a9190612fa5565b6108d4565b60405161031c9190612eb2565b60405180910390f35b348015610330575f80fd5b506103396109a8565b6040516103469190612f4e565b60405180910390f35b34801561035a575f80fd5b506103636109ae565b6040516103709190613010565b60405180910390f35b348015610384575f80fd5b5061038d6109b6565b005b34801561039a575f80fd5b506103a3610a67565b6040516103b09190613049565b60405180910390f35b3480156103c4575f80fd5b506103cd610a8c565b6040516103da9190613071565b60405180910390f35b3480156103ee575f80fd5b50610409600480360381019061040491906130b4565b610ab1565b005b348015610416575f80fd5b50610431600480360381019061042c91906130df565b610b62565b005b34801561043e575f80fd5b50610447610c00565b005b348015610454575f80fd5b5061046f600480360381019061046a919061310a565b610ccd565b60405161047c9190612f4e565b60405180910390f35b348015610490575f80fd5b50610499610d1b565b005b3480156104a6575f80fd5b506104af610e69565b005b3480156104bc575f80fd5b506104c5610f1b565b6040516104d29190612f4e565b60405180910390f35b3480156104e6575f80fd5b5061050160048036038101906104fc919061310a565b610f21565b60405161050e9190612f4e565b60405180910390f35b348015610522575f80fd5b5061052b610f36565b6040516105389190613071565b60405180910390f35b34801561054c575f80fd5b50610555610f5d565b6040516105629190612f4e565b60405180910390f35b348015610576575f80fd5b5061057f610f63565b60405161058c9190612d9c565b60405180910390f35b3480156105a0575f80fd5b506105bb60048036038101906105b69190612e5a565b610fa0565b6040516105c89190612eb2565b60405180910390f35b3480156105dc575f80fd5b506105f760048036038101906105f291906130df565b610fbd565b005b348015610604575f80fd5b5061061f600480360381019061061a91906130df565b61105b565b005b34801561062c575f80fd5b506106476004803603810190610642919061310a565b6110f9565b6040516106549190612eb2565b60405180910390f35b348015610668575f80fd5b50610683600480360381019061067e9190613275565b611116565b005b348015610690575f80fd5b50610699611235565b005b3480156106a6575f80fd5b506106c160048036038101906106bc9190613315565b61130a565b005b3480156106ce575f80fd5b506106e960048036038101906106e4919061310a565b611439565b005b3480156106f6575f80fd5b506106ff611524565b60405161070c9190613049565b60405180910390f35b348015610720575f80fd5b5061073b6004803603810190610736919061310a565b611549565b005b348015610748575f80fd5b50610763600480360381019061075e9190613372565b611620565b6040516107709190612f4e565b60405180910390f35b348015610784575f80fd5b5061079f600480360381019061079a919061310a565b6116a2565b005b60606040518060400160405280600b81526020017f477561726469616e204149000000000000000000000000000000000000000000815250905090565b5f6107f16107ea61185f565b8484611866565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f66038d7ea4c68000905090565b61083661185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b9906133fa565b60405180910390fd5b8160098190555080600b819055505050565b5f6108e0848484611a29565b61099d846108ec61185f565b61099885604051806060016040528060288152602001613de86028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61094f61185f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122899092919063ffffffff16565b611866565b600190509392505050565b60185481565b5f6009905090565b6109be61185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a41906133fa565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ab961185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c906133fa565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b610b6a61185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bed906133fa565b60405180910390fd5b8060178190555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c4061185f565b73ffffffffffffffffffffffffffffffffffffffff161480610cb5575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c9d61185f565b73ffffffffffffffffffffffffffffffffffffffff16145b610cbd575f80fd5b5f479050610cca816122eb565b50565b5f610d1460025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612353565b9050919050565b610d2361185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da6906133fa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610e7161185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef4906133fa565b60405180910390fd5b66038d7ea4c6800060168190555066038d7ea4c68000601781905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600881526020017f475541524449414e000000000000000000000000000000000000000000000000815250905090565b5f610fb3610fac61185f565b8484611a29565b6001905092915050565b610fc561185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611051576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611048906133fa565b60405180910390fd5b8060188190555050565b61106361185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e6906133fa565b60405180910390fd5b8060168190555050565b6010602052805f5260405f205f915054906101000a900460ff1681565b61111e61185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a1906133fa565b60405180910390fd5b5f5b815181101561123157600160105f8484815181106111cd576111cc613418565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506111ac565b5050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661127561185f565b73ffffffffffffffffffffffffffffffffffffffff1614806112ea575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112d261185f565b73ffffffffffffffffffffffffffffffffffffffff16145b6112f2575f80fd5b5f6112fc30610ccd565b9050611307816123bf565b50565b61131261185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461139e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611395906133fa565b60405180910390fd5b5f5b83839050811015611433578160055f8686858181106113c2576113c1613418565b5b90506020020160208101906113d7919061310a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506113a0565b50505050565b61144161185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c4906133fa565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61155161185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d4906133fa565b60405180910390fd5b8060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6116aa61185f565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172d906133fa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b906134b5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cb90613543565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611942576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611939906135d1565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a1c9190612f4e565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8e9061365f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afc906136ed565b60405180910390fd5b5f8111611b47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3e9061377b565b60405180910390fd5b611b4f610f36565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611bbd5750611b8d610f36565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611f9657601560149054906101000a900460ff16611c4c57611bde610f36565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4290613809565b60405180910390fd5b5b601654811115611c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8890613871565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611d2f575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d65906138ff565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611e1a5760175481611dcf84610ccd565b611dd9919061394a565b10611e19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e10906139ed565b60405180910390fd5b5b5f611e2430610ccd565b90505f60185482101590506018548210611e3e5760185491505b808015611e56575060158054906101000a900460ff16155b8015611eaf575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ec75750601560169054906101000a900460ff165b8015611f1a575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611f6d575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611f9357611f7b826123bf565b5f4790505f811115611f9157611f90476122eb565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612036575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806120e7575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156120e6575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156120f4575f9050612277565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561219d575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121b557600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561225e575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561227657600a54600c81905550600b54600d819055505b5b61228384848484612628565b50505050565b5f8383111582906122d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c79190612d9c565b60405180910390fd5b505f83856122de9190613a0b565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561234f573d5f803e3d5ffd5b5050565b5f600654821115612399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161239090613aae565b60405180910390fd5b5f6123a2612655565b90506123b7818461267e90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156123f5576123f4613139565b5b6040519080825280602002602001820160405280156124235781602001602082028036833780820191505090505b50905030815f8151811061243a57612439613418565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125029190613ae0565b8160018151811061251657612515613418565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061257c3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611866565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016125de959493929190613bfb565b5f604051808303815f87803b1580156125f5575f80fd5b505af1158015612607573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b80612636576126356126c7565b5b612641848484612700565b8061264f5761264e6128c0565b5b50505050565b5f805f6126606128d4565b91509150612677818361267e90919063ffffffff16565b9250505090565b5f6126bf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061292d565b905092915050565b5f600c541480156126d957505f600d54145b6126fe57600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061270f8761298e565b95509550955095509550955061276b8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129ee90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127fc8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a3790919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061284681612a94565b6128508483612b4b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128ad9190612f4e565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f66038d7ea4c68000905061290366038d7ea4c6800060065461267e90919063ffffffff16565b8210156129205760065466038d7ea4c68000935093505050612929565b81819350935050505b9091565b5f8083118290612973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296a9190612d9c565b60405180910390fd5b505f83856129819190613c80565b9050809150509392505050565b5f805f805f805f805f6129a68a600c54600d54612b85565b9250925092505f6129b5612655565b90505f805f6129c68e878787612c17565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f612a2f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612289565b905092915050565b5f808284612a45919061394a565b905083811015612a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8190613cfa565b60405180910390fd5b8091505092915050565b5f612a9d612655565b90505f612ab38284612c9b90919063ffffffff16565b9050612b058160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a3790919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612b60826006546129ee90919063ffffffff16565b600681905550612b7b81600754612a3790919063ffffffff16565b6007819055505050565b5f805f80612baf6064612ba1888a612c9b90919063ffffffff16565b61267e90919063ffffffff16565b90505f612bd86064612bca888b612c9b90919063ffffffff16565b61267e90919063ffffffff16565b90505f612c0082612bf2858c6129ee90919063ffffffff16565b6129ee90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612c2e8589612c9b90919063ffffffff16565b90505f612c448689612c9b90919063ffffffff16565b90505f612c5a8789612c9b90919063ffffffff16565b90505f612c8282612c7485876129ee90919063ffffffff16565b6129ee90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612cab575f9050612d0c565b5f8284612cb89190613d18565b9050828482612cc79190613c80565b14612d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cfe90613dc9565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612d49578082015181840152602081019050612d2e565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612d6e82612d12565b612d788185612d1c565b9350612d88818560208601612d2c565b612d9181612d54565b840191505092915050565b5f6020820190508181035f830152612db48184612d64565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612df682612dcd565b9050919050565b612e0681612dec565b8114612e10575f80fd5b50565b5f81359050612e2181612dfd565b92915050565b5f819050919050565b612e3981612e27565b8114612e43575f80fd5b50565b5f81359050612e5481612e30565b92915050565b5f8060408385031215612e7057612e6f612dc5565b5b5f612e7d85828601612e13565b9250506020612e8e85828601612e46565b9150509250929050565b5f8115159050919050565b612eac81612e98565b82525050565b5f602082019050612ec55f830184612ea3565b92915050565b5f819050919050565b5f612eee612ee9612ee484612dcd565b612ecb565b612dcd565b9050919050565b5f612eff82612ed4565b9050919050565b5f612f1082612ef5565b9050919050565b612f2081612f06565b82525050565b5f602082019050612f395f830184612f17565b92915050565b612f4881612e27565b82525050565b5f602082019050612f615f830184612f3f565b92915050565b5f8060408385031215612f7d57612f7c612dc5565b5b5f612f8a85828601612e46565b9250506020612f9b85828601612e46565b9150509250929050565b5f805f60608486031215612fbc57612fbb612dc5565b5b5f612fc986828701612e13565b9350506020612fda86828701612e13565b9250506040612feb86828701612e46565b9150509250925092565b5f60ff82169050919050565b61300a81612ff5565b82525050565b5f6020820190506130235f830184613001565b92915050565b5f61303382612dcd565b9050919050565b61304381613029565b82525050565b5f60208201905061305c5f83018461303a565b92915050565b61306b81612dec565b82525050565b5f6020820190506130845f830184613062565b92915050565b61309381612e98565b811461309d575f80fd5b50565b5f813590506130ae8161308a565b92915050565b5f602082840312156130c9576130c8612dc5565b5b5f6130d6848285016130a0565b91505092915050565b5f602082840312156130f4576130f3612dc5565b5b5f61310184828501612e46565b91505092915050565b5f6020828403121561311f5761311e612dc5565b5b5f61312c84828501612e13565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61316f82612d54565b810181811067ffffffffffffffff8211171561318e5761318d613139565b5b80604052505050565b5f6131a0612dbc565b90506131ac8282613166565b919050565b5f67ffffffffffffffff8211156131cb576131ca613139565b5b602082029050602081019050919050565b5f80fd5b5f6131f26131ed846131b1565b613197565b90508083825260208201905060208402830185811115613215576132146131dc565b5b835b8181101561323e578061322a8882612e13565b845260208401935050602081019050613217565b5050509392505050565b5f82601f83011261325c5761325b613135565b5b813561326c8482602086016131e0565b91505092915050565b5f6020828403121561328a57613289612dc5565b5b5f82013567ffffffffffffffff8111156132a7576132a6612dc9565b5b6132b384828501613248565b91505092915050565b5f80fd5b5f8083601f8401126132d5576132d4613135565b5b8235905067ffffffffffffffff8111156132f2576132f16132bc565b5b60208301915083602082028301111561330e5761330d6131dc565b5b9250929050565b5f805f6040848603121561332c5761332b612dc5565b5b5f84013567ffffffffffffffff81111561334957613348612dc9565b5b613355868287016132c0565b93509350506020613368868287016130a0565b9150509250925092565b5f806040838503121561338857613387612dc5565b5b5f61339585828601612e13565b92505060206133a685828601612e13565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6133e4602083612d1c565b91506133ef826133b0565b602082019050919050565b5f6020820190508181035f830152613411816133d8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61349f602683612d1c565b91506134aa82613445565b604082019050919050565b5f6020820190508181035f8301526134cc81613493565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61352d602483612d1c565b9150613538826134d3565b604082019050919050565b5f6020820190508181035f83015261355a81613521565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6135bb602283612d1c565b91506135c682613561565b604082019050919050565b5f6020820190508181035f8301526135e8816135af565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613649602583612d1c565b9150613654826135ef565b604082019050919050565b5f6020820190508181035f8301526136768161363d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6136d7602383612d1c565b91506136e28261367d565b604082019050919050565b5f6020820190508181035f830152613704816136cb565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613765602983612d1c565b91506137708261370b565b604082019050919050565b5f6020820190508181035f83015261379281613759565b9050919050565b7f544f4b454e3a2063616e6e6f742073656e6420746f6b656e7320756e74696c205f8201527f74726164696e6720697320656e61626c65640000000000000000000000000000602082015250565b5f6137f3603283612d1c565b91506137fe82613799565b604082019050919050565b5f6020820190508181035f830152613820816137e7565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f61385b601c83612d1c565b915061386682613827565b602082019050919050565b5f6020820190508181035f8301526138888161384f565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f6138e9602383612d1c565b91506138f48261388f565b604082019050919050565b5f6020820190508181035f830152613916816138dd565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61395482612e27565b915061395f83612e27565b92508282019050808211156139775761397661391d565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6139d7602383612d1c565b91506139e28261397d565b604082019050919050565b5f6020820190508181035f830152613a04816139cb565b9050919050565b5f613a1582612e27565b9150613a2083612e27565b9250828203905081811115613a3857613a3761391d565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613a98602a83612d1c565b9150613aa382613a3e565b604082019050919050565b5f6020820190508181035f830152613ac581613a8c565b9050919050565b5f81519050613ada81612dfd565b92915050565b5f60208284031215613af557613af4612dc5565b5b5f613b0284828501613acc565b91505092915050565b5f819050919050565b5f613b2e613b29613b2484613b0b565b612ecb565b612e27565b9050919050565b613b3e81613b14565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613b7681612dec565b82525050565b5f613b878383613b6d565b60208301905092915050565b5f602082019050919050565b5f613ba982613b44565b613bb38185613b4e565b9350613bbe83613b5e565b805f5b83811015613bee578151613bd58882613b7c565b9750613be083613b93565b925050600181019050613bc1565b5085935050505092915050565b5f60a082019050613c0e5f830188612f3f565b613c1b6020830187613b35565b8181036040830152613c2d8186613b9f565b9050613c3c6060830185613062565b613c496080830184612f3f565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613c8a82612e27565b9150613c9583612e27565b925082613ca557613ca4613c53565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613ce4601b83612d1c565b9150613cef82613cb0565b602082019050919050565b5f6020820190508181035f830152613d1181613cd8565b9050919050565b5f613d2282612e27565b9150613d2d83612e27565b9250828202613d3b81612e27565b91508282048414831517613d5257613d5161391d565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613db3602183612d1c565b9150613dbe82613d59565b604082019050919050565b5f6020820190508181035f830152613de081613da7565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ff57d0ebc72346501415d72c826bdfeaf1d73892da9c18d03ff64a2668fb5b3f64736f6c63430008160033

Deployed Bytecode Sourcemap

4144:13445:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6628:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7560:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5363:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6908:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16479:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7762:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5659:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6816:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12223:76;;;;;;;;;;;;;:::i;:::-;;5263:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5411:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16752:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17346:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12550:235;;;;;;;;;;;;;:::i;:::-;;7012:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1656:148;;;;;;;;;;;;;:::i;:::-;;17463:117;;;;;;;;;;;;;:::i;:::-;;5555:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5212;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1446:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5606:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6720:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7159:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16631:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17229:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5174:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12794:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12305:236;;;;;;;;;;;;;:::i;:::-;;16864:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12972:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5312:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17104:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7367:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1813:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6628:83;6665:13;6698:5;;;;;;;;;;;;;;;;;6691:12;;6628:83;:::o;7560:193::-;7662:4;7684:39;7693:12;:10;:12::i;:::-;7707:7;7716:6;7684:8;:39::i;:::-;7741:4;7734:11;;7560:193;;;;:::o;5363:41::-;;;;;;;;;;;;;:::o;6908:95::-;6961:7;4697:15;6981:14;;6908:95;:::o;16479:146::-;1581:12;:10;:12::i;:::-;1571:22;;:6;;;;;;;;;;:22;;;1563:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16576:9:::1;16566:7;:19;;;;16607:10;16596:8;:21;;;;16479:146:::0;;:::o;7762:446::-;7894:4;7911:36;7921:6;7929:9;7940:6;7911:9;:36::i;:::-;7958:220;7981:6;8002:12;:10;:12::i;:::-;8029:138;8085:6;8029:138;;;;;;;;;;;;;;;;;:11;:19;8041:6;8029:19;;;;;;;;;;;;;;;:33;8049:12;:10;:12::i;:::-;8029:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7958:8;:220::i;:::-;8196:4;8189:11;;7762:446;;;;;:::o;5659:49::-;;;;:::o;6816:83::-;6857:5;4373:1;6875:16;;6816:83;:::o;12223:76::-;1581:12;:10;:12::i;:::-;1571:22;;:6;;;;;;;;;;:22;;;1563:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12287:4:::1;12273:11;;:18;;;;;;;;;;;;;;;;;;12223:76::o:0;5263:42::-;;;;;;;;;;;;;:::o;5411:28::-;;;;;;;;;;;;;:::o;16752:106::-;1581:12;:10;:12::i;:::-;1571:22;;:6;;;;;;;;;;:22;;;1563:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16838:12:::1;16824:11;;:26;;;;;;;;;;;;;;;;;;16752:106:::0;:::o;17346:111::-;1581:12;:10;:12::i;:::-;1571:22;;:6;;;;;;;;;;:22;;;1563:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17436:13:::1;17419:14;:30;;;;17346:111:::0;:::o;12550:235::-;12616:19;;;;;;;;;;;12600:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12655:17;;;;;;;;;;;12639:33;;:12;:10;:12::i;:::-;:33;;;12600:72;12592:81;;;;;;12684:26;12713:21;12684:50;;12745:32;12758:18;12745:12;:32::i;:::-;12581:204;12550:235::o;7012:138::-;7078:7;7105:37;7125:7;:16;7133:7;7125:16;;;;;;;;;;;;;;;;7105:19;:37::i;:::-;7098:44;;7012:138;;;:::o;1656:148::-;1581:12;:10;:12::i;:::-;1571:22;;:6;;;;;;;;;;:22;;;1563:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1763:1:::1;1726:40;;1747:6;::::0;::::1;;;;;;;;1726:40;;;;;;;;;;;;1794:1;1777:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1656:148::o:0;17463:117::-;1581:12;:10;:12::i;:::-;1571:22;;:6;;;;;;;;;;:22;;;1563:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4697:15:::1;17515:12;:22;;;;4697:15;17548:14;:24;;;;17463:117::o:0;5555:43::-;;;;:::o;5212:::-;;;;;;;;;;;;;;;;;:::o;1446:79::-;1484:7;1511:6;;;;;;;;;;;1504:13;;1446:79;:::o;5606:45::-;;;;:::o;6720:87::-;6759:13;6792:7;;;;;;;;;;;;;;;;;6785:14;;6720:87;:::o;7159:199::-;7264:4;7286:42;7296:12;:10;:12::i;:::-;7310:9;7321:6;7286:9;:42::i;:::-;7346:4;7339:11;;7159:199;;;;:::o;16631:115::-;1581:12;:10;:12::i;:::-;1571:22;;:6;;;;;;;;;;:22;;;1563:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16731:7:::1;16709:19;:29;;;;16631:115:::0;:::o;17229:111::-;1581:12;:10;:12::i;:::-;1571:22;;:6;;;;;;;;;;:22;;;1563:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17314:11:::1;17299:12;:26;;;;17229:111:::0;:::o;5174:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12794:172::-;1581:12;:10;:12::i;:::-;1571:22;;:6;;;;;;;;;;:22;;;1563:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12873:9:::1;12868:91;12892:5;:12;12888:1;:16;12868:91;;;12943:4;12926;:14;12931:5;12937:1;12931:8;;;;;;;;:::i;:::-;;;;;;;;12926:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12906:3;;;;;;;12868:91;;;;12794:172:::0;:::o;12305:236::-;12371:19;;;;;;;;;;;12355:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12410:17;;;;;;;;;;;12394:33;;:12;:10;:12::i;:::-;:33;;;12355:72;12347:81;;;;;;12439:23;12465:24;12483:4;12465:9;:24::i;:::-;12439:50;;12500:33;12517:15;12500:16;:33::i;:::-;12336:205;12305:236::o;16864:234::-;1581:12;:10;:12::i;:::-;1571:22;;:6;;;;;;;;;;:22;;;1563:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16981:9:::1;16977:114;17000:8;;:15;;16996:1;:19;16977:114;;;17071:8;17037:18;:31;17056:8;;17065:1;17056:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17037:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17017:3;;;;;;;16977:114;;;;16864:234:::0;;;:::o;12972:93::-;1581:12;:10;:12::i;:::-;1571:22;;:6;;;;;;;;;;:22;;;1563:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13052:5:::1;13038:4;:11;13043:5;13038:11;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;12972:93:::0;:::o;5312:41::-;;;;;;;;;;;;;:::o;17104:119::-;1581:12;:10;:12::i;:::-;1571:22;;:6;;;;;;;;;;:22;;;1563:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17204:10:::1;17176:17;;:39;;;;;;;;;;;;;;;;;;17104:119:::0;:::o;7367:184::-;7484:7;7516:11;:18;7528:5;7516:18;;;;;;;;;;;;;;;:27;7535:7;7516:27;;;;;;;;;;;;;;;;7509:34;;7367:184;;;;:::o;1813:244::-;1581:12;:10;:12::i;:::-;1571:22;;:6;;;;;;;;;;:22;;;1563:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1922:1:::1;1902:22;;:8;:22;;::::0;1894:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2012:8;1983:38;;2004:6;::::0;::::1;;;;;;;;1983:38;;;;;;;;;;;;2041:8;2032:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1813:244:::0;:::o;225:98::-;278:7;305:10;298:17;;225:98;:::o;8905:369::-;9049:1;9032:19;;:5;:19;;;9024:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9130:1;9111:21;;:7;:21;;;9103:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9212:6;9182:11;:18;9194:5;9182:18;;;;;;;;;;;;;;;:27;9201:7;9182:27;;;;;;;;;;;;;;;:36;;;;9250:7;9234:32;;9243:5;9234:32;;;9259:6;9234:32;;;;;;:::i;:::-;;;;;;;;8905:369;;;:::o;9283:2334::-;9421:1;9405:18;;:4;:18;;;9397:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9498:1;9484:16;;:2;:16;;;9476:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9568:1;9559:6;:10;9551:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9641:7;:5;:7::i;:::-;9633:15;;:4;:15;;;;:32;;;;;9658:7;:5;:7::i;:::-;9652:13;;:2;:13;;;;9633:32;9629:1266;;;9723:11;;;;;;;;;;;9718:131;;9771:7;:5;:7::i;:::-;9763:15;;:4;:15;;;9755:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;9718:131;9884:12;;9874:6;:22;;9866:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9953:4;:10;9958:4;9953:10;;;;;;;;;;;;;;;;;;;;;;;;;9952:11;:24;;;;;9968:4;:8;9973:2;9968:8;;;;;;;;;;;;;;;;;;;;;;;;;9967:9;9952:24;9944:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10043:13;;;;;;;;;;;10037:19;;:2;:19;;;10034:146;;10110:14;;10101:6;10085:13;10095:2;10085:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10077:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10034:146;10197:28;10228:24;10246:4;10228:9;:24::i;:::-;10197:55;;10267:12;10306:19;;10282:20;:43;;10267:58;;10370:19;;10346:20;:43;10343:138;;10446:19;;10423:42;;10343:138;10502:7;:18;;;;;10514:6;;;;;;;;;;10513:7;10502:18;:43;;;;;10532:13;;;;;;;;;;;10524:21;;:4;:21;;;;10502:43;:58;;;;;10549:11;;;;;;;;;;;10502:58;:87;;;;;10565:18;:24;10584:4;10565:24;;;;;;;;;;;;;;;;;;;;;;;;;10564:25;10502:87;:114;;;;;10594:18;:22;10613:2;10594:22;;;;;;;;;;;;;;;;;;;;;;;;;10593:23;10502:114;10498:386;;;10637:38;10654:20;10637:16;:38::i;:::-;10694:26;10723:21;10694:50;;10788:1;10767:18;:22;10763:106;;;10814:35;10827:21;10814:12;:35::i;:::-;10763:106;10618:266;10498:386;9667:1228;;9629:1266;10908:12;10923:4;10908:19;;10973:18;:24;10992:4;10973:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11001:18;:22;11020:2;11001:22;;;;;;;;;;;;;;;;;;;;;;;;;10973:50;10972:102;;;;11037:13;;;;;;;;;;;11029:21;;:4;:21;;;;:44;;;;;11060:13;;;;;;;;;;;11054:19;;:2;:19;;;;11029:44;10972:102;10968:587;;;11101:5;11091:15;;10968:587;;;11185:13;;;;;;;;;;;11177:21;;:4;:21;;;:55;;;;;11216:15;;;;;;;;;;;11202:30;;:2;:30;;;;11177:55;11174:157;;;11265:14;;11253:9;:26;;;;11308:7;;11298;:17;;;;11174:157;11391:13;;;;;;;;;;;11385:19;;:2;:19;;;:55;;;;;11424:15;;;;;;;;;;;11408:32;;:4;:32;;;;11385:55;11381:160;;;11473:15;;11461:9;:27;;;;11517:8;;11507:7;:18;;;;11381:160;10968:587;11568:41;11583:4;11589:2;11593:6;11601:7;11568:14;:41::i;:::-;9386:2231;9283:2334;;;:::o;2413:224::-;2533:7;2566:1;2561;:6;;2569:12;2553:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2593:9;2609:1;2605;:5;;;;:::i;:::-;2593:17;;2628:1;2621:8;;;2413:224;;;;;:::o;12118:99::-;12175:17;;;;;;;;;;;:26;;:34;12202:6;12175:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12118:99;:::o;8217:323::-;8312:7;8370;;8359;:18;;8337:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8458:19;8480:10;:8;:10::i;:::-;8458:32;;8508:24;8520:11;8508:7;:11;;:24;;;;:::i;:::-;8501:31;;;8217:323;;;:::o;11626:483::-;5812:4;5803:6;;:13;;;;;;;;;;;;;;;;;;11704:21:::1;11742:1;11728:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11704:40;;11773:4;11755;11760:1;11755:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11799:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11789:4;11794:1;11789:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11832:62;11849:4;11864:15;;;;;;;;;;;11882:11;11832:8;:62::i;:::-;11905:15;;;;;;;;;;;:66;;;11986:11;12012:1;12028:4;12055;12075:15;11905:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11693:416;5848:5:::0;5839:6;;:14;;;;;;;;;;;;;;;;;;11626:483;:::o;13071:282::-;13227:7;13222:28;;13236:14;:12;:14::i;:::-;13222:28;13261:44;13279:6;13287:9;13298:6;13261:17;:44::i;:::-;13321:7;13316:29;;13330:15;:13;:15::i;:::-;13316:29;13071:282;;;;:::o;16040:164::-;16082:7;16103:15;16120;16139:19;:17;:19::i;:::-;16102:56;;;;16176:20;16188:7;16176;:11;;:20;;;;:::i;:::-;16169:27;;;;16040:164;:::o;2895:132::-;2953:7;2980:39;2984:1;2987;2980:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2973:46;;2895:132;;;;:::o;8549:221::-;8609:1;8596:9;;:14;:30;;;;;8625:1;8614:7;;:12;8596:30;8628:7;8592:43;8668:9;;8648:17;:29;;;;8706:7;;8688:15;:25;;;;8739:1;8727:9;:13;;;;8761:1;8751:7;:11;;;;8549:221;:::o;13362:610::-;13509:15;13539:23;13577:12;13604:23;13642:12;13669:13;13696:19;13707:7;13696:10;:19::i;:::-;13494:221;;;;;;;;;;;;13744:28;13764:7;13744;:15;13752:6;13744:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13726:7;:15;13734:6;13726:15;;;;;;;;;;;;;;;:46;;;;13804:39;13827:15;13804:7;:18;13812:9;13804:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13783:7;:18;13791:9;13783:18;;;;;;;;;;;;;;;:60;;;;13854:16;13864:5;13854:9;:16::i;:::-;13881:23;13893:4;13899;13881:11;:23::i;:::-;13937:9;13920:44;;13929:6;13920:44;;;13948:15;13920:44;;;;;;:::i;:::-;;;;;;;;13483:489;;;;;;13362:610;;;:::o;8779:117::-;8835:17;;8823:9;:29;;;;8873:15;;8863:7;:25;;;;8779:117::o;16213:257::-;16264:7;16273;16293:15;16311:7;;16293:25;;16329:15;4697;16329:25;;16379:20;4697:15;16379:7;;:11;;:20;;;;:::i;:::-;16369:7;:30;16365:61;;;16409:7;;4697:15;16401:25;;;;;;;;16365:61;16445:7;16454;16437:25;;;;;;16213:257;;;:::o;3033:223::-;3153:7;3185:1;3181;:5;3188:12;3173:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3212:9;3228:1;3224;:5;;;;:::i;:::-;3212:17;;3247:1;3240:8;;;3033:223;;;;;:::o;14395:615::-;14495:7;14517;14539;14561;14583;14605;14641:23;14666:12;14680:13;14710:40;14722:7;14731:9;;14742:7;;14710:11;:40::i;:::-;14640:110;;;;;;14761:19;14783:10;:8;:10::i;:::-;14761:32;;14805:15;14822:23;14847:12;14876:46;14888:7;14897:4;14903:5;14910:11;14876;:46::i;:::-;14804:118;;;;;;14941:7;14950:15;14967:4;14973:15;14990:4;14996:5;14933:69;;;;;;;;;;;;;;;;;;;14395:615;;;;;;;:::o;2271:136::-;2329:7;2356:43;2360:1;2363;2356:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2349:50;;2271:136;;;;:::o;2086:179::-;2144:7;2164:9;2180:1;2176;:5;;;;:::i;:::-;2164:17;;2205:1;2200;:6;;2192:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2256:1;2249:8;;;2086:179;;;;:::o;13981:211::-;14034:19;14056:10;:8;:10::i;:::-;14034:32;;14077:13;14093:22;14103:11;14093:5;:9;;:22;;;;:::i;:::-;14077:38;;14151:33;14178:5;14151:7;:22;14167:4;14151:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14126:7;:22;14142:4;14126:22;;;;;;;;;;;;;;;:58;;;;14023:169;;13981:211;:::o;14201:147::-;14279:17;14291:4;14279:7;;:11;;:17;;;;:::i;:::-;14269:7;:27;;;;14320:20;14335:4;14320:10;;:14;;:20;;;;:::i;:::-;14307:10;:33;;;;14201:147;;:::o;15019:469::-;15188:7;15210;15232;15267:12;15282:30;15308:3;15282:21;15294:8;15282:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15267:45;;15323:13;15339:28;15363:3;15339:19;15351:6;15339:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15323:44;;15378:23;15404:28;15426:5;15404:17;15416:4;15404:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15378:54;;15451:15;15468:4;15474:5;15443:37;;;;;;;;;15019:469;;;;;;;:::o;15497:534::-;15691:7;15713;15735;15770:15;15788:24;15800:11;15788:7;:11;;:24;;;;:::i;:::-;15770:42;;15823:12;15838:21;15847:11;15838:4;:8;;:21;;;;:::i;:::-;15823:36;;15870:13;15886:22;15896:11;15886:5;:9;;:22;;;;:::i;:::-;15870:38;;15919:23;15945:28;15967:5;15945:17;15957:4;15945:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15919:54;;15992:7;16001:15;16018:4;15984:39;;;;;;;;;;15497:534;;;;;;;;:::o;2643:246::-;2701:7;2730:1;2725;:6;2721:47;;2755:1;2748:8;;;;2721:47;2778:9;2794:1;2790;:5;;;;:::i;:::-;2778:17;;2823:1;2818;2814;:5;;;;:::i;:::-;:10;2806:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2880:1;2873:8;;;2643:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:474::-;4839:6;4847;4896:2;4884:9;4875:7;4871:23;4867:32;4864:119;;;4902:79;;:::i;:::-;4864:119;5022:1;5047:53;5092:7;5083:6;5072:9;5068:22;5047:53;:::i;:::-;5037:63;;4993:117;5149:2;5175:53;5220:7;5211:6;5200:9;5196:22;5175:53;:::i;:::-;5165:63;;5120:118;4771:474;;;;;:::o;5251:619::-;5328:6;5336;5344;5393:2;5381:9;5372:7;5368:23;5364:32;5361:119;;;5399:79;;:::i;:::-;5361:119;5519:1;5544:53;5589:7;5580:6;5569:9;5565:22;5544:53;:::i;:::-;5534:63;;5490:117;5646:2;5672:53;5717:7;5708:6;5697:9;5693:22;5672:53;:::i;:::-;5662:63;;5617:118;5774:2;5800:53;5845:7;5836:6;5825:9;5821:22;5800:53;:::i;:::-;5790:63;;5745:118;5251:619;;;;;:::o;5876:86::-;5911:7;5951:4;5944:5;5940:16;5929:27;;5876:86;;;:::o;5968:112::-;6051:22;6067:5;6051:22;:::i;:::-;6046:3;6039:35;5968:112;;:::o;6086:214::-;6175:4;6213:2;6202:9;6198:18;6190:26;;6226:67;6290:1;6279:9;6275:17;6266:6;6226:67;:::i;:::-;6086:214;;;;:::o;6306:104::-;6351:7;6380:24;6398:5;6380:24;:::i;:::-;6369:35;;6306:104;;;:::o;6416:142::-;6519:32;6545:5;6519:32;:::i;:::-;6514:3;6507:45;6416:142;;:::o;6564:254::-;6673:4;6711:2;6700:9;6696:18;6688:26;;6724:87;6808:1;6797:9;6793:17;6784:6;6724:87;:::i;:::-;6564:254;;;;:::o;6824:118::-;6911:24;6929:5;6911:24;:::i;:::-;6906:3;6899:37;6824:118;;:::o;6948:222::-;7041:4;7079:2;7068:9;7064:18;7056:26;;7092:71;7160:1;7149:9;7145:17;7136:6;7092:71;:::i;:::-;6948:222;;;;:::o;7176:116::-;7246:21;7261:5;7246:21;:::i;:::-;7239:5;7236:32;7226:60;;7282:1;7279;7272:12;7226:60;7176:116;:::o;7298:133::-;7341:5;7379:6;7366:20;7357:29;;7395:30;7419:5;7395:30;:::i;:::-;7298:133;;;;:::o;7437:323::-;7493:6;7542:2;7530:9;7521:7;7517:23;7513:32;7510:119;;;7548:79;;:::i;:::-;7510:119;7668:1;7693:50;7735:7;7726:6;7715:9;7711:22;7693:50;:::i;:::-;7683:60;;7639:114;7437:323;;;;:::o;7766:329::-;7825:6;7874:2;7862:9;7853:7;7849:23;7845:32;7842:119;;;7880:79;;:::i;:::-;7842:119;8000:1;8025:53;8070:7;8061:6;8050:9;8046:22;8025:53;:::i;:::-;8015:63;;7971:117;7766:329;;;;:::o;8101:::-;8160:6;8209:2;8197:9;8188:7;8184:23;8180:32;8177:119;;;8215:79;;:::i;:::-;8177:119;8335:1;8360:53;8405:7;8396:6;8385:9;8381:22;8360:53;:::i;:::-;8350:63;;8306:117;8101:329;;;;:::o;8436:117::-;8545:1;8542;8535:12;8559:180;8607:77;8604:1;8597:88;8704:4;8701:1;8694:15;8728:4;8725:1;8718:15;8745:281;8828:27;8850:4;8828:27;:::i;:::-;8820:6;8816:40;8958:6;8946:10;8943:22;8922:18;8910:10;8907:34;8904:62;8901:88;;;8969:18;;:::i;:::-;8901:88;9009:10;9005:2;8998:22;8788:238;8745:281;;:::o;9032:129::-;9066:6;9093:20;;:::i;:::-;9083:30;;9122:33;9150:4;9142:6;9122:33;:::i;:::-;9032:129;;;:::o;9167:311::-;9244:4;9334:18;9326:6;9323:30;9320:56;;;9356:18;;:::i;:::-;9320:56;9406:4;9398:6;9394:17;9386:25;;9466:4;9460;9456:15;9448:23;;9167:311;;;:::o;9484:117::-;9593:1;9590;9583:12;9624:710;9720:5;9745:81;9761:64;9818:6;9761:64;:::i;:::-;9745:81;:::i;:::-;9736:90;;9846:5;9875:6;9868:5;9861:21;9909:4;9902:5;9898:16;9891:23;;9962:4;9954:6;9950:17;9942:6;9938:30;9991:3;9983:6;9980:15;9977:122;;;10010:79;;:::i;:::-;9977:122;10125:6;10108:220;10142:6;10137:3;10134:15;10108:220;;;10217:3;10246:37;10279:3;10267:10;10246:37;:::i;:::-;10241:3;10234:50;10313:4;10308:3;10304:14;10297:21;;10184:144;10168:4;10163:3;10159:14;10152:21;;10108:220;;;10112:21;9726:608;;9624:710;;;;;:::o;10357:370::-;10428:5;10477:3;10470:4;10462:6;10458:17;10454:27;10444:122;;10485:79;;:::i;:::-;10444:122;10602:6;10589:20;10627:94;10717:3;10709:6;10702:4;10694:6;10690:17;10627:94;:::i;:::-;10618:103;;10434:293;10357:370;;;;:::o;10733:539::-;10817:6;10866:2;10854:9;10845:7;10841:23;10837:32;10834:119;;;10872:79;;:::i;:::-;10834:119;11020:1;11009:9;11005:17;10992:31;11050:18;11042:6;11039:30;11036:117;;;11072:79;;:::i;:::-;11036:117;11177:78;11247:7;11238:6;11227:9;11223:22;11177:78;:::i;:::-;11167:88;;10963:302;10733:539;;;;:::o;11278:117::-;11387:1;11384;11377:12;11418:568;11491:8;11501:6;11551:3;11544:4;11536:6;11532:17;11528:27;11518:122;;11559:79;;:::i;:::-;11518:122;11672:6;11659:20;11649:30;;11702:18;11694:6;11691:30;11688:117;;;11724:79;;:::i;:::-;11688:117;11838:4;11830:6;11826:17;11814:29;;11892:3;11884:4;11876:6;11872:17;11862:8;11858:32;11855:41;11852:128;;;11899:79;;:::i;:::-;11852:128;11418:568;;;;;:::o;11992:698::-;12084:6;12092;12100;12149:2;12137:9;12128:7;12124:23;12120:32;12117:119;;;12155:79;;:::i;:::-;12117:119;12303:1;12292:9;12288:17;12275:31;12333:18;12325:6;12322:30;12319:117;;;12355:79;;:::i;:::-;12319:117;12468:80;12540:7;12531:6;12520:9;12516:22;12468:80;:::i;:::-;12450:98;;;;12246:312;12597:2;12623:50;12665:7;12656:6;12645:9;12641:22;12623:50;:::i;:::-;12613:60;;12568:115;11992:698;;;;;:::o;12696:474::-;12764:6;12772;12821:2;12809:9;12800:7;12796:23;12792:32;12789:119;;;12827:79;;:::i;:::-;12789:119;12947:1;12972:53;13017:7;13008:6;12997:9;12993:22;12972:53;:::i;:::-;12962:63;;12918:117;13074:2;13100:53;13145:7;13136:6;13125:9;13121:22;13100:53;:::i;:::-;13090:63;;13045:118;12696:474;;;;;:::o;13176:182::-;13316:34;13312:1;13304:6;13300:14;13293:58;13176:182;:::o;13364:366::-;13506:3;13527:67;13591:2;13586:3;13527:67;:::i;:::-;13520:74;;13603:93;13692:3;13603:93;:::i;:::-;13721:2;13716:3;13712:12;13705:19;;13364:366;;;:::o;13736:419::-;13902:4;13940:2;13929:9;13925:18;13917:26;;13989:9;13983:4;13979:20;13975:1;13964:9;13960:17;13953:47;14017:131;14143:4;14017:131;:::i;:::-;14009:139;;13736:419;;;:::o;14161:180::-;14209:77;14206:1;14199:88;14306:4;14303:1;14296:15;14330:4;14327:1;14320:15;14347:225;14487:34;14483:1;14475:6;14471:14;14464:58;14556:8;14551:2;14543:6;14539:15;14532:33;14347:225;:::o;14578:366::-;14720:3;14741:67;14805:2;14800:3;14741:67;:::i;:::-;14734:74;;14817:93;14906:3;14817:93;:::i;:::-;14935:2;14930:3;14926:12;14919:19;;14578:366;;;:::o;14950:419::-;15116:4;15154:2;15143:9;15139:18;15131:26;;15203:9;15197:4;15193:20;15189:1;15178:9;15174:17;15167:47;15231:131;15357:4;15231:131;:::i;:::-;15223:139;;14950:419;;;:::o;15375:223::-;15515:34;15511:1;15503:6;15499:14;15492:58;15584:6;15579:2;15571:6;15567:15;15560:31;15375:223;:::o;15604:366::-;15746:3;15767:67;15831:2;15826:3;15767:67;:::i;:::-;15760:74;;15843:93;15932:3;15843:93;:::i;:::-;15961:2;15956:3;15952:12;15945:19;;15604:366;;;:::o;15976:419::-;16142:4;16180:2;16169:9;16165:18;16157:26;;16229:9;16223:4;16219:20;16215:1;16204:9;16200:17;16193:47;16257:131;16383:4;16257:131;:::i;:::-;16249:139;;15976:419;;;:::o;16401:221::-;16541:34;16537:1;16529:6;16525:14;16518:58;16610:4;16605:2;16597:6;16593:15;16586:29;16401:221;:::o;16628:366::-;16770:3;16791:67;16855:2;16850:3;16791:67;:::i;:::-;16784:74;;16867:93;16956:3;16867:93;:::i;:::-;16985:2;16980:3;16976:12;16969:19;;16628:366;;;:::o;17000:419::-;17166:4;17204:2;17193:9;17189:18;17181:26;;17253:9;17247:4;17243:20;17239:1;17228:9;17224:17;17217:47;17281:131;17407:4;17281:131;:::i;:::-;17273:139;;17000:419;;;:::o;17425:224::-;17565:34;17561:1;17553:6;17549:14;17542:58;17634:7;17629:2;17621:6;17617:15;17610:32;17425:224;:::o;17655:366::-;17797:3;17818:67;17882:2;17877:3;17818:67;:::i;:::-;17811:74;;17894:93;17983:3;17894:93;:::i;:::-;18012:2;18007:3;18003:12;17996:19;;17655:366;;;:::o;18027:419::-;18193:4;18231:2;18220:9;18216:18;18208:26;;18280:9;18274:4;18270:20;18266:1;18255:9;18251:17;18244:47;18308:131;18434:4;18308:131;:::i;:::-;18300:139;;18027:419;;;:::o;18452:222::-;18592:34;18588:1;18580:6;18576:14;18569:58;18661:5;18656:2;18648:6;18644:15;18637:30;18452:222;:::o;18680:366::-;18822:3;18843:67;18907:2;18902:3;18843:67;:::i;:::-;18836:74;;18919:93;19008:3;18919:93;:::i;:::-;19037:2;19032:3;19028:12;19021:19;;18680:366;;;:::o;19052:419::-;19218:4;19256:2;19245:9;19241:18;19233:26;;19305:9;19299:4;19295:20;19291:1;19280:9;19276:17;19269:47;19333:131;19459:4;19333:131;:::i;:::-;19325:139;;19052:419;;;:::o;19477:228::-;19617:34;19613:1;19605:6;19601:14;19594:58;19686:11;19681:2;19673:6;19669:15;19662:36;19477:228;:::o;19711:366::-;19853:3;19874:67;19938:2;19933:3;19874:67;:::i;:::-;19867:74;;19950:93;20039:3;19950:93;:::i;:::-;20068:2;20063:3;20059:12;20052:19;;19711:366;;;:::o;20083:419::-;20249:4;20287:2;20276:9;20272:18;20264:26;;20336:9;20330:4;20326:20;20322:1;20311:9;20307:17;20300:47;20364:131;20490:4;20364:131;:::i;:::-;20356:139;;20083:419;;;:::o;20508:237::-;20648:34;20644:1;20636:6;20632:14;20625:58;20717:20;20712:2;20704:6;20700:15;20693:45;20508:237;:::o;20751:366::-;20893:3;20914:67;20978:2;20973:3;20914:67;:::i;:::-;20907:74;;20990:93;21079:3;20990:93;:::i;:::-;21108:2;21103:3;21099:12;21092:19;;20751:366;;;:::o;21123:419::-;21289:4;21327:2;21316:9;21312:18;21304:26;;21376:9;21370:4;21366:20;21362:1;21351:9;21347:17;21340:47;21404:131;21530:4;21404:131;:::i;:::-;21396:139;;21123:419;;;:::o;21548:178::-;21688:30;21684:1;21676:6;21672:14;21665:54;21548:178;:::o;21732:366::-;21874:3;21895:67;21959:2;21954:3;21895:67;:::i;:::-;21888:74;;21971:93;22060:3;21971:93;:::i;:::-;22089:2;22084:3;22080:12;22073:19;;21732:366;;;:::o;22104:419::-;22270:4;22308:2;22297:9;22293:18;22285:26;;22357:9;22351:4;22347:20;22343:1;22332:9;22328:17;22321:47;22385:131;22511:4;22385:131;:::i;:::-;22377:139;;22104:419;;;:::o;22529:222::-;22669:34;22665:1;22657:6;22653:14;22646:58;22738:5;22733:2;22725:6;22721:15;22714:30;22529:222;:::o;22757:366::-;22899:3;22920:67;22984:2;22979:3;22920:67;:::i;:::-;22913:74;;22996:93;23085:3;22996:93;:::i;:::-;23114:2;23109:3;23105:12;23098:19;;22757:366;;;:::o;23129:419::-;23295:4;23333:2;23322:9;23318:18;23310:26;;23382:9;23376:4;23372:20;23368:1;23357:9;23353:17;23346:47;23410:131;23536:4;23410:131;:::i;:::-;23402:139;;23129:419;;;:::o;23554:180::-;23602:77;23599:1;23592:88;23699:4;23696:1;23689:15;23723:4;23720:1;23713:15;23740:191;23780:3;23799:20;23817:1;23799:20;:::i;:::-;23794:25;;23833:20;23851:1;23833:20;:::i;:::-;23828:25;;23876:1;23873;23869:9;23862:16;;23897:3;23894:1;23891:10;23888:36;;;23904:18;;:::i;:::-;23888:36;23740:191;;;;:::o;23937:222::-;24077:34;24073:1;24065:6;24061:14;24054:58;24146:5;24141:2;24133:6;24129:15;24122:30;23937:222;:::o;24165:366::-;24307:3;24328:67;24392:2;24387:3;24328:67;:::i;:::-;24321:74;;24404:93;24493:3;24404:93;:::i;:::-;24522:2;24517:3;24513:12;24506:19;;24165:366;;;:::o;24537:419::-;24703:4;24741:2;24730:9;24726:18;24718:26;;24790:9;24784:4;24780:20;24776:1;24765:9;24761:17;24754:47;24818:131;24944:4;24818:131;:::i;:::-;24810:139;;24537:419;;;:::o;24962:194::-;25002:4;25022:20;25040:1;25022:20;:::i;:::-;25017:25;;25056:20;25074:1;25056:20;:::i;:::-;25051:25;;25100:1;25097;25093:9;25085:17;;25124:1;25118:4;25115:11;25112:37;;;25129:18;;:::i;:::-;25112:37;24962:194;;;;:::o;25162:229::-;25302:34;25298:1;25290:6;25286:14;25279:58;25371:12;25366:2;25358:6;25354:15;25347:37;25162:229;:::o;25397:366::-;25539:3;25560:67;25624:2;25619:3;25560:67;:::i;:::-;25553:74;;25636:93;25725:3;25636:93;:::i;:::-;25754:2;25749:3;25745:12;25738:19;;25397:366;;;:::o;25769:419::-;25935:4;25973:2;25962:9;25958:18;25950:26;;26022:9;26016:4;26012:20;26008:1;25997:9;25993:17;25986:47;26050:131;26176:4;26050:131;:::i;:::-;26042:139;;25769:419;;;:::o;26194:143::-;26251:5;26282:6;26276:13;26267:22;;26298:33;26325:5;26298:33;:::i;:::-;26194:143;;;;:::o;26343:351::-;26413:6;26462:2;26450:9;26441:7;26437:23;26433:32;26430:119;;;26468:79;;:::i;:::-;26430:119;26588:1;26613:64;26669:7;26660:6;26649:9;26645:22;26613:64;:::i;:::-;26603:74;;26559:128;26343:351;;;;:::o;26700:85::-;26745:7;26774:5;26763:16;;26700:85;;;:::o;26791:158::-;26849:9;26882:61;26900:42;26909:32;26935:5;26909:32;:::i;:::-;26900:42;:::i;:::-;26882:61;:::i;:::-;26869:74;;26791:158;;;:::o;26955:147::-;27050:45;27089:5;27050:45;:::i;:::-;27045:3;27038:58;26955:147;;:::o;27108:114::-;27175:6;27209:5;27203:12;27193:22;;27108:114;;;:::o;27228:184::-;27327:11;27361:6;27356:3;27349:19;27401:4;27396:3;27392:14;27377:29;;27228:184;;;;:::o;27418:132::-;27485:4;27508:3;27500:11;;27538:4;27533:3;27529:14;27521:22;;27418:132;;;:::o;27556:108::-;27633:24;27651:5;27633:24;:::i;:::-;27628:3;27621:37;27556:108;;:::o;27670:179::-;27739:10;27760:46;27802:3;27794:6;27760:46;:::i;:::-;27838:4;27833:3;27829:14;27815:28;;27670:179;;;;:::o;27855:113::-;27925:4;27957;27952:3;27948:14;27940:22;;27855:113;;;:::o;28004:732::-;28123:3;28152:54;28200:5;28152:54;:::i;:::-;28222:86;28301:6;28296:3;28222:86;:::i;:::-;28215:93;;28332:56;28382:5;28332:56;:::i;:::-;28411:7;28442:1;28427:284;28452:6;28449:1;28446:13;28427:284;;;28528:6;28522:13;28555:63;28614:3;28599:13;28555:63;:::i;:::-;28548:70;;28641:60;28694:6;28641:60;:::i;:::-;28631:70;;28487:224;28474:1;28471;28467:9;28462:14;;28427:284;;;28431:14;28727:3;28720:10;;28128:608;;;28004:732;;;;:::o;28742:831::-;29005:4;29043:3;29032:9;29028:19;29020:27;;29057:71;29125:1;29114:9;29110:17;29101:6;29057:71;:::i;:::-;29138:80;29214:2;29203:9;29199:18;29190:6;29138:80;:::i;:::-;29265:9;29259:4;29255:20;29250:2;29239:9;29235:18;29228:48;29293:108;29396:4;29387:6;29293:108;:::i;:::-;29285:116;;29411:72;29479:2;29468:9;29464:18;29455:6;29411:72;:::i;:::-;29493:73;29561:3;29550:9;29546:19;29537:6;29493:73;:::i;:::-;28742:831;;;;;;;;:::o;29579:180::-;29627:77;29624:1;29617:88;29724:4;29721:1;29714:15;29748:4;29745:1;29738:15;29765:185;29805:1;29822:20;29840:1;29822:20;:::i;:::-;29817:25;;29856:20;29874:1;29856:20;:::i;:::-;29851:25;;29895:1;29885:35;;29900:18;;:::i;:::-;29885:35;29942:1;29939;29935:9;29930:14;;29765:185;;;;:::o;29956:177::-;30096:29;30092:1;30084:6;30080:14;30073:53;29956:177;:::o;30139:366::-;30281:3;30302:67;30366:2;30361:3;30302:67;:::i;:::-;30295:74;;30378:93;30467:3;30378:93;:::i;:::-;30496:2;30491:3;30487:12;30480:19;;30139:366;;;:::o;30511:419::-;30677:4;30715:2;30704:9;30700:18;30692:26;;30764:9;30758:4;30754:20;30750:1;30739:9;30735:17;30728:47;30792:131;30918:4;30792:131;:::i;:::-;30784:139;;30511:419;;;:::o;30936:410::-;30976:7;30999:20;31017:1;30999:20;:::i;:::-;30994:25;;31033:20;31051:1;31033:20;:::i;:::-;31028:25;;31088:1;31085;31081:9;31110:30;31128:11;31110:30;:::i;:::-;31099:41;;31289:1;31280:7;31276:15;31273:1;31270:22;31250:1;31243:9;31223:83;31200:139;;31319:18;;:::i;:::-;31200:139;30984:362;30936:410;;;;:::o;31352:220::-;31492:34;31488:1;31480:6;31476:14;31469:58;31561:3;31556:2;31548:6;31544:15;31537:28;31352:220;:::o;31578:366::-;31720:3;31741:67;31805:2;31800:3;31741:67;:::i;:::-;31734:74;;31817:93;31906:3;31817:93;:::i;:::-;31935:2;31930:3;31926:12;31919:19;;31578:366;;;:::o;31950:419::-;32116:4;32154:2;32143:9;32139:18;32131:26;;32203:9;32197:4;32193:20;32189:1;32178:9;32174:17;32167:47;32231:131;32357:4;32231:131;:::i;:::-;32223:139;;31950:419;;;:::o

Swarm Source

ipfs://ff57d0ebc72346501415d72c826bdfeaf1d73892da9c18d03ff64a2668fb5b3f
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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