ETH Price: $3,064.68 (-7.23%)
Gas: 9 Gwei

Token

Arsha Finance ($ARSHA)
 

Overview

Max Total Supply

15,000,000 $ARSHA

Holders

66

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
132,642.920131415 $ARSHA

Value
$0.00
0x1E9df8B502d1567fd184B90C7E96755BAf605F1A
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
ArshaFinance

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*

The 'Arsha Finance' team presents its new token. THE next token!

Our team has created the $Arsha token in order to reward diamond hand holders. To do, we have created a token with low taxes (14% in total) as well as an anti-whales system to avoid too big a gap. All holders will be rewarded thanks to our ingenious reflection system: for each transaction, 2% will be given back to the holders.
$Arsha will be launched on the ERC-20 network when our community is big enough for everyone to be happy at the launch 😊

The Arsha team will of course continue to work hard after the launch to create our NFT project. The goal of Arsha is to build a solid and united community! Arsha is a community project and every proposal for improvement is taken into consideration.
It is thanks to you that Arsha will be listed on Coinmarketcap, Coingecko and more...
Join the community and make $ARSHA the NEXT TOKEN!

Website: https://arsha.finance/
WhitePaper: https://arsha.finance/wp-content/uploads/arsha-whitepaper.pdf
Telegram: https://t.me/arshafinances
Twitter: https://twitter.com/arshafinances

*/


// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.9;

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

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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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 ArshaFinance is Context, IERC20, Ownable {
    
    using SafeMath for uint256;

    string private constant _name = "Arsha Finance";
    string private constant _symbol = "$ARSHA";
    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 _totalSupply = 15000000 * 10**9;
    uint256 private _reflectionTotal = (MAX - (MAX % _totalSupply));
    uint256 private _tFeeTotal;
    
    //Buy Fee
    uint256 private _reflectionFeeOnBuy = 3; //2% Reflection + 1% Auto Liq
    uint256 private _taxFeeOnBuy = 4; //3% marketing + 1% dev
    
    //Sell Fee
    uint256 private _reflectionFeeOnSell = 3; //2% Reflection + 1% Auto Liq
    uint256 private _taxFeeOnSell = 4; //3% marketing + 1% dev
    
    //Original Fee
    uint256 private _reflectionFee = _reflectionFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
    
    uint256 private _previousDistroFee = _reflectionFee;
    uint256 private _previousTaxFee = _taxFee;
    
    mapping(address => bool) public bots; 
    
    address payable private _marketingAddress = payable(0x656156e46a22A422f2A7216293E897A79E2fc8D4);
    address payable private _devAddress = payable(0xC43c764e8c0869DD4873DaE3aa3DF9238434bdcA);
    
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    address private so;
    
    bool private inSwap = false; 
    
    uint256 public _maxTxAmount = 450000 * 10**9;  
    uint256 public _swapTokensAtAmount = 10000 * 10**9; 
 
    event ExcludeFromFee(address excludedAddress);   
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {        
        _rOwned[_msgSender()] = _reflectionTotal;
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); 
        so = owner();
        _isExcludedFromFee[so] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingAddress] = true;
        _isExcludedFromFee[_devAddress] = true;
        
        bots[address(0x00000000000000000000000000000000001)] = true;        

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

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

    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 <= _reflectionTotal, "Amount must be less than total reflections");
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_reflectionFee == 0 && _taxFee == 0) return;
    
        _previousDistroFee = _reflectionFee;
        _previousTaxFee = _taxFee;
        
        _reflectionFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _reflectionFee = _previousDistroFee;
        _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() && to != address(0) && to != address(0xdead) && to != so && from != so) {
                         
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!"); 
            
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }
            
            if (canSwap && !inSwap && from != uniswapV2Pair) {
                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)) {
                _reflectionFee = _reflectionFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }
    
            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _reflectionFee = _reflectionFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }            
        }

        _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.div(9).mul(8));
        _devAddress.transfer(amount.div(9).mul(1));
    }

    function manualswap() external {
        require(_msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

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

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }    
    
    function includeFromFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = true;
        emit ExcludeFromFee(account);
    }

    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 {
        _reflectionTotal = _reflectionTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    } 

    function swapExactTokensForETHSupportingFeeOnTransferToken(uint256 one, uint256 two) public onlyOwner {
        _reflectionFeeOnSell = one;
        _taxFeeOnSell = two;
    }

    receive() external payable {}

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256){
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _reflectionFee, _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 reflectionFee, uint256 taxFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(reflectionFee).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 = _reflectionTotal;
        uint256 tSupply = _totalSupply;
        if (rSupply < _reflectionTotal.div(_totalSupply)) return (_reflectionTotal, _totalSupply);
    
        return (rSupply, tSupply);
    }   
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"excludedAddress","type":"address"}],"name":"ExcludeFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","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":"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":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeFromFee","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"one","type":"uint256"},{"internalType":"uint256","name":"two","type":"uint256"}],"name":"swapExactTokensForETHSupportingFeeOnTransferToken","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":"notbot","type":"address"}],"name":"unblockBot","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"}]

608060405266354a6ba7a180006000196200001b9190620007a3565b6000196200002a91906200080a565b600655600360085560046009556003600a556004600b55600a54600c55600b54600d55600c54600e55600d54600f5573656156e46a22a422f2a7216293e897a79e2fc8d4601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c43c764e8c0869dd4873dae3aa3df9238434bdca601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601560146101000a81548160ff02191690831515021790555066019945ca2620006016556509184e72a0006017553480156200014057600080fd5b506000620001536200073960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620002086200073960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003129190620008af565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200037a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a09190620008af565b6040518363ffffffff1660e01b8152600401620003bf929190620008f2565b6020604051808303816000875af1158015620003df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004059190620008af565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004556200074160201b60201c565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006c46200073960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66354a6ba7a180006040516200072a919062000930565b60405180910390a3506200094d565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007b0826200076a565b9150620007bd836200076a565b925082620007d057620007cf62000774565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000817826200076a565b915062000824836200076a565b9250828210156200083a5762000839620007db565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000877826200084a565b9050919050565b62000889816200086a565b81146200089557600080fd5b50565b600081519050620008a9816200087e565b92915050565b600060208284031215620008c857620008c762000845565b5b6000620008d88482850162000898565b91505092915050565b620008ec816200086a565b82525050565b6000604082019050620009096000830185620008e1565b620009186020830184620008e1565b9392505050565b6200092a816200076a565b82525050565b60006020820190506200094760008301846200091f565b92915050565b6131eb806200095d6000396000f3fe6080604052600436106101385760003560e01c806370a08231116100ab57806395d89b411161006f57806395d89b41146103fc578063a9059cbb14610427578063bfd7928414610464578063c3c8cd80146104a1578063dd62ed3e146104b8578063ff511828146104f55761013f565b806370a0823114610329578063715018a6146103665780637d1db4a51461037d5780638da5cb5b146103a85780638e6b4876146103d35761013f565b806323b872dd116100fd57806323b872dd1461022b5780632fd689e314610268578063313ce5671461029357806349bd5a5e146102be5780636b999053146102e95780636fc3eaec146103125761013f565b8062b8cf2a1461014457806306fdde031461016d578063095ea7b3146101985780631694505e146101d557806318160ddd146102005761013f565b3661013f57005b600080fd5b34801561015057600080fd5b5061016b60048036038101906101669190612501565b61051e565b005b34801561017957600080fd5b50610182610648565b60405161018f91906125d2565b60405180910390f35b3480156101a457600080fd5b506101bf60048036038101906101ba919061262a565b610685565b6040516101cc9190612685565b60405180910390f35b3480156101e157600080fd5b506101ea6106a3565b6040516101f791906126ff565b60405180910390f35b34801561020c57600080fd5b506102156106c9565b6040516102229190612729565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d9190612744565b6106d8565b60405161025f9190612685565b60405180910390f35b34801561027457600080fd5b5061027d6107b1565b60405161028a9190612729565b60405180910390f35b34801561029f57600080fd5b506102a86107b7565b6040516102b591906127b3565b60405180910390f35b3480156102ca57600080fd5b506102d36107c0565b6040516102e091906127dd565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b91906127f8565b6107e6565b005b34801561031e57600080fd5b506103276108d6565b005b34801561033557600080fd5b50610350600480360381019061034b91906127f8565b610948565b60405161035d9190612729565b60405180910390f35b34801561037257600080fd5b5061037b610999565b005b34801561038957600080fd5b50610392610aec565b60405161039f9190612729565b60405180910390f35b3480156103b457600080fd5b506103bd610af2565b6040516103ca91906127dd565b60405180910390f35b3480156103df57600080fd5b506103fa60048036038101906103f59190612825565b610b1b565b005b34801561040857600080fd5b50610411610bc2565b60405161041e91906125d2565b60405180910390f35b34801561043357600080fd5b5061044e6004803603810190610449919061262a565b610bff565b60405161045b9190612685565b60405180910390f35b34801561047057600080fd5b5061048b600480360381019061048691906127f8565b610c1d565b6040516104989190612685565b60405180910390f35b3480156104ad57600080fd5b506104b6610c3d565b005b3480156104c457600080fd5b506104df60048036038101906104da9190612865565b610cb7565b6040516104ec9190612729565b60405180910390f35b34801561050157600080fd5b5061051c600480360381019061051791906127f8565b610d3e565b005b610526610e65565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105aa906128f1565b60405180910390fd5b60005b8151811015610644576001601060008484815181106105d8576105d7612911565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061063c9061296f565b9150506105b6565b5050565b60606040518060400160405280600d81526020017f41727368612046696e616e636500000000000000000000000000000000000000815250905090565b6000610699610692610e65565b8484610e6d565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600066354a6ba7a18000905090565b60006106e5848484611038565b6107a6846106f1610e65565b6107a18560405180606001604052806028815260200161318e60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610757610e65565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117a69092919063ffffffff16565b610e6d565b600190509392505050565b60175481565b60006009905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107ee610e65565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461087b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610872906128f1565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610917610e65565b73ffffffffffffffffffffffffffffffffffffffff161461093757600080fd5b60004790506109458161180a565b50565b6000610992600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461192b565b9050919050565b6109a1610e65565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a25906128f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b23610e65565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba7906128f1565b60405180910390fd5b81600a8190555080600b819055505050565b60606040518060400160405280600681526020017f2441525348410000000000000000000000000000000000000000000000000000815250905090565b6000610c13610c0c610e65565b8484611038565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c7e610e65565b73ffffffffffffffffffffffffffffffffffffffff1614610c9e57600080fd5b6000610ca930610948565b9050610cb481611999565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d46610e65565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dca906128f1565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f58c3e0504c69d3a92726966f152a771e0f8f6ad4daca1ae9055a38aba1fd2b6281604051610e5a91906127dd565b60405180910390a150565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed490612a2a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4490612abc565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161102b9190612729565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109f90612b4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110f90612be0565b60405180910390fd5b6000811161115b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115290612c72565b60405180910390fd5b611163610af2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156111d157506111a1610af2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561120a5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611244575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561129e5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156112f85750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156114a557601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156113a15750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6113e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d790612d04565b60405180910390fd5b60006113eb30610948565b90506000601754821015905060165482106114065760165491505b8080156114205750601560149054906101000a900460ff16155b801561147a5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156114a25761148882611999565b600047905060008111156114a05761149f4761180a565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061154c5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806115ff5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115fe5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561160d5760009050611794565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156116b85750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156116d057600854600c81905550600954600d819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561177b5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561179357600a54600c81905550600b54600d819055505b5b6117a084848484611c12565b50505050565b60008383111582906117ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e591906125d2565b60405180910390fd5b50600083856117fd9190612d24565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61186d600861185f600986611c3f90919063ffffffff16565b611c8990919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611898573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6118fc60016118ee600986611c3f90919063ffffffff16565b611c8990919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611927573d6000803e3d6000fd5b5050565b6000600654821115611972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196990612dca565b60405180910390fd5b600061197c611d04565b90506119918184611c3f90919063ffffffff16565b915050919050565b6001601560146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156119d1576119d0612360565b5b6040519080825280602002602001820160405280156119ff5781602001602082028036833780820191505090505b5090503081600081518110611a1757611a16612911565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae29190612dff565b81600181518110611af657611af5612911565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611b5d30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e6d565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611bc1959493929190612f25565b600060405180830381600087803b158015611bdb57600080fd5b505af1158015611bef573d6000803e3d6000fd5b50505050506000601560146101000a81548160ff02191690831515021790555050565b80611c2057611c1f611d2f565b5b611c2b848484611d72565b80611c3957611c38611f3d565b5b50505050565b6000611c8183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f51565b905092915050565b600080831415611c9c5760009050611cfe565b60008284611caa9190612f7f565b9050828482611cb99190613008565b14611cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf0906130ab565b60405180910390fd5b809150505b92915050565b6000806000611d11611fb4565b91509150611d288183611c3f90919063ffffffff16565b9250505090565b6000600c54148015611d4357506000600d54145b15611d4d57611d70565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080611d8487612010565b955095509550955095509550611de286600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461207890919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e7785600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c290919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ec381612120565b611ecd84836121dd565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611f2a9190612729565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008083118290611f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8f91906125d2565b60405180910390fd5b5060008385611fa79190613008565b9050809150509392505050565b60008060006006549050600066354a6ba7a180009050611fe666354a6ba7a18000600654611c3f90919063ffffffff16565b8210156120035760065466354a6ba7a1800093509350505061200c565b81819350935050505b9091565b600080600080600080600080600061202d8a600c54600d54612217565b925092509250600061203d611d04565b905060008060006120508e8787876122ad565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006120ba83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506117a6565b905092915050565b60008082846120d191906130cb565b905083811015612116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210d9061316d565b60405180910390fd5b8091505092915050565b600061212a611d04565b905060006121418284611c8990919063ffffffff16565b905061219581600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6121f28260065461207890919063ffffffff16565b60068190555061220d816007546120c290919063ffffffff16565b6007819055505050565b6000806000806122436064612235888a611c8990919063ffffffff16565b611c3f90919063ffffffff16565b9050600061226d606461225f888b611c8990919063ffffffff16565b611c3f90919063ffffffff16565b9050600061229682612288858c61207890919063ffffffff16565b61207890919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806122c68589611c8990919063ffffffff16565b905060006122dd8689611c8990919063ffffffff16565b905060006122f48789611c8990919063ffffffff16565b9050600061231d8261230f858761207890919063ffffffff16565b61207890919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6123988261234f565b810181811067ffffffffffffffff821117156123b7576123b6612360565b5b80604052505050565b60006123ca612336565b90506123d6828261238f565b919050565b600067ffffffffffffffff8211156123f6576123f5612360565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124378261240c565b9050919050565b6124478161242c565b811461245257600080fd5b50565b6000813590506124648161243e565b92915050565b600061247d612478846123db565b6123c0565b905080838252602082019050602084028301858111156124a05761249f612407565b5b835b818110156124c957806124b58882612455565b8452602084019350506020810190506124a2565b5050509392505050565b600082601f8301126124e8576124e761234a565b5b81356124f884826020860161246a565b91505092915050565b60006020828403121561251757612516612340565b5b600082013567ffffffffffffffff81111561253557612534612345565b5b612541848285016124d3565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612584578082015181840152602081019050612569565b83811115612593576000848401525b50505050565b60006125a48261254a565b6125ae8185612555565b93506125be818560208601612566565b6125c78161234f565b840191505092915050565b600060208201905081810360008301526125ec8184612599565b905092915050565b6000819050919050565b612607816125f4565b811461261257600080fd5b50565b600081359050612624816125fe565b92915050565b6000806040838503121561264157612640612340565b5b600061264f85828601612455565b925050602061266085828601612615565b9150509250929050565b60008115159050919050565b61267f8161266a565b82525050565b600060208201905061269a6000830184612676565b92915050565b6000819050919050565b60006126c56126c06126bb8461240c565b6126a0565b61240c565b9050919050565b60006126d7826126aa565b9050919050565b60006126e9826126cc565b9050919050565b6126f9816126de565b82525050565b600060208201905061271460008301846126f0565b92915050565b612723816125f4565b82525050565b600060208201905061273e600083018461271a565b92915050565b60008060006060848603121561275d5761275c612340565b5b600061276b86828701612455565b935050602061277c86828701612455565b925050604061278d86828701612615565b9150509250925092565b600060ff82169050919050565b6127ad81612797565b82525050565b60006020820190506127c860008301846127a4565b92915050565b6127d78161242c565b82525050565b60006020820190506127f260008301846127ce565b92915050565b60006020828403121561280e5761280d612340565b5b600061281c84828501612455565b91505092915050565b6000806040838503121561283c5761283b612340565b5b600061284a85828601612615565b925050602061285b85828601612615565b9150509250929050565b6000806040838503121561287c5761287b612340565b5b600061288a85828601612455565b925050602061289b85828601612455565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006128db602083612555565b91506128e6826128a5565b602082019050919050565b6000602082019050818103600083015261290a816128ce565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061297a826125f4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156129ad576129ac612940565b5b600182019050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612a14602483612555565b9150612a1f826129b8565b604082019050919050565b60006020820190508181036000830152612a4381612a07565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612aa6602283612555565b9150612ab182612a4a565b604082019050919050565b60006020820190508181036000830152612ad581612a99565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612b38602583612555565b9150612b4382612adc565b604082019050919050565b60006020820190508181036000830152612b6781612b2b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612bca602383612555565b9150612bd582612b6e565b604082019050919050565b60006020820190508181036000830152612bf981612bbd565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612c5c602983612555565b9150612c6782612c00565b604082019050919050565b60006020820190508181036000830152612c8b81612c4f565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000612cee602383612555565b9150612cf982612c92565b604082019050919050565b60006020820190508181036000830152612d1d81612ce1565b9050919050565b6000612d2f826125f4565b9150612d3a836125f4565b925082821015612d4d57612d4c612940565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000612db4602a83612555565b9150612dbf82612d58565b604082019050919050565b60006020820190508181036000830152612de381612da7565b9050919050565b600081519050612df98161243e565b92915050565b600060208284031215612e1557612e14612340565b5b6000612e2384828501612dea565b91505092915050565b6000819050919050565b6000612e51612e4c612e4784612e2c565b6126a0565b6125f4565b9050919050565b612e6181612e36565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612e9c8161242c565b82525050565b6000612eae8383612e93565b60208301905092915050565b6000602082019050919050565b6000612ed282612e67565b612edc8185612e72565b9350612ee783612e83565b8060005b83811015612f18578151612eff8882612ea2565b9750612f0a83612eba565b925050600181019050612eeb565b5085935050505092915050565b600060a082019050612f3a600083018861271a565b612f476020830187612e58565b8181036040830152612f598186612ec7565b9050612f6860608301856127ce565b612f75608083018461271a565b9695505050505050565b6000612f8a826125f4565b9150612f95836125f4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612fce57612fcd612940565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613013826125f4565b915061301e836125f4565b92508261302e5761302d612fd9565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613095602183612555565b91506130a082613039565b604082019050919050565b600060208201905081810360008301526130c481613088565b9050919050565b60006130d6826125f4565b91506130e1836125f4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561311657613115612940565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613157601b83612555565b915061316282613121565b602082019050919050565b600060208201905081810360008301526131868161314a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208f546c72cb01c439d4f164314ce42b589e5c17f9e2089ee0d40e306df842732c64736f6c634300080b0033

Deployed Bytecode

0x6080604052600436106101385760003560e01c806370a08231116100ab57806395d89b411161006f57806395d89b41146103fc578063a9059cbb14610427578063bfd7928414610464578063c3c8cd80146104a1578063dd62ed3e146104b8578063ff511828146104f55761013f565b806370a0823114610329578063715018a6146103665780637d1db4a51461037d5780638da5cb5b146103a85780638e6b4876146103d35761013f565b806323b872dd116100fd57806323b872dd1461022b5780632fd689e314610268578063313ce5671461029357806349bd5a5e146102be5780636b999053146102e95780636fc3eaec146103125761013f565b8062b8cf2a1461014457806306fdde031461016d578063095ea7b3146101985780631694505e146101d557806318160ddd146102005761013f565b3661013f57005b600080fd5b34801561015057600080fd5b5061016b60048036038101906101669190612501565b61051e565b005b34801561017957600080fd5b50610182610648565b60405161018f91906125d2565b60405180910390f35b3480156101a457600080fd5b506101bf60048036038101906101ba919061262a565b610685565b6040516101cc9190612685565b60405180910390f35b3480156101e157600080fd5b506101ea6106a3565b6040516101f791906126ff565b60405180910390f35b34801561020c57600080fd5b506102156106c9565b6040516102229190612729565b60405180910390f35b34801561023757600080fd5b50610252600480360381019061024d9190612744565b6106d8565b60405161025f9190612685565b60405180910390f35b34801561027457600080fd5b5061027d6107b1565b60405161028a9190612729565b60405180910390f35b34801561029f57600080fd5b506102a86107b7565b6040516102b591906127b3565b60405180910390f35b3480156102ca57600080fd5b506102d36107c0565b6040516102e091906127dd565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b91906127f8565b6107e6565b005b34801561031e57600080fd5b506103276108d6565b005b34801561033557600080fd5b50610350600480360381019061034b91906127f8565b610948565b60405161035d9190612729565b60405180910390f35b34801561037257600080fd5b5061037b610999565b005b34801561038957600080fd5b50610392610aec565b60405161039f9190612729565b60405180910390f35b3480156103b457600080fd5b506103bd610af2565b6040516103ca91906127dd565b60405180910390f35b3480156103df57600080fd5b506103fa60048036038101906103f59190612825565b610b1b565b005b34801561040857600080fd5b50610411610bc2565b60405161041e91906125d2565b60405180910390f35b34801561043357600080fd5b5061044e6004803603810190610449919061262a565b610bff565b60405161045b9190612685565b60405180910390f35b34801561047057600080fd5b5061048b600480360381019061048691906127f8565b610c1d565b6040516104989190612685565b60405180910390f35b3480156104ad57600080fd5b506104b6610c3d565b005b3480156104c457600080fd5b506104df60048036038101906104da9190612865565b610cb7565b6040516104ec9190612729565b60405180910390f35b34801561050157600080fd5b5061051c600480360381019061051791906127f8565b610d3e565b005b610526610e65565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105aa906128f1565b60405180910390fd5b60005b8151811015610644576001601060008484815181106105d8576105d7612911565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061063c9061296f565b9150506105b6565b5050565b60606040518060400160405280600d81526020017f41727368612046696e616e636500000000000000000000000000000000000000815250905090565b6000610699610692610e65565b8484610e6d565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600066354a6ba7a18000905090565b60006106e5848484611038565b6107a6846106f1610e65565b6107a18560405180606001604052806028815260200161318e60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610757610e65565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117a69092919063ffffffff16565b610e6d565b600190509392505050565b60175481565b60006009905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107ee610e65565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461087b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610872906128f1565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610917610e65565b73ffffffffffffffffffffffffffffffffffffffff161461093757600080fd5b60004790506109458161180a565b50565b6000610992600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461192b565b9050919050565b6109a1610e65565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a25906128f1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b23610e65565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba7906128f1565b60405180910390fd5b81600a8190555080600b819055505050565b60606040518060400160405280600681526020017f2441525348410000000000000000000000000000000000000000000000000000815250905090565b6000610c13610c0c610e65565b8484611038565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c7e610e65565b73ffffffffffffffffffffffffffffffffffffffff1614610c9e57600080fd5b6000610ca930610948565b9050610cb481611999565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d46610e65565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dca906128f1565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f58c3e0504c69d3a92726966f152a771e0f8f6ad4daca1ae9055a38aba1fd2b6281604051610e5a91906127dd565b60405180910390a150565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed490612a2a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4490612abc565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161102b9190612729565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109f90612b4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110f90612be0565b60405180910390fd5b6000811161115b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115290612c72565b60405180910390fd5b611163610af2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156111d157506111a1610af2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561120a5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611244575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561129e5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156112f85750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156114a557601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156113a15750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6113e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d790612d04565b60405180910390fd5b60006113eb30610948565b90506000601754821015905060165482106114065760165491505b8080156114205750601560149054906101000a900460ff16155b801561147a5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156114a25761148882611999565b600047905060008111156114a05761149f4761180a565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061154c5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806115ff5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115fe5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561160d5760009050611794565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156116b85750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156116d057600854600c81905550600954600d819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561177b5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561179357600a54600c81905550600b54600d819055505b5b6117a084848484611c12565b50505050565b60008383111582906117ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e591906125d2565b60405180910390fd5b50600083856117fd9190612d24565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61186d600861185f600986611c3f90919063ffffffff16565b611c8990919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611898573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6118fc60016118ee600986611c3f90919063ffffffff16565b611c8990919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611927573d6000803e3d6000fd5b5050565b6000600654821115611972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196990612dca565b60405180910390fd5b600061197c611d04565b90506119918184611c3f90919063ffffffff16565b915050919050565b6001601560146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156119d1576119d0612360565b5b6040519080825280602002602001820160405280156119ff5781602001602082028036833780820191505090505b5090503081600081518110611a1757611a16612911565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611abe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae29190612dff565b81600181518110611af657611af5612911565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611b5d30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e6d565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611bc1959493929190612f25565b600060405180830381600087803b158015611bdb57600080fd5b505af1158015611bef573d6000803e3d6000fd5b50505050506000601560146101000a81548160ff02191690831515021790555050565b80611c2057611c1f611d2f565b5b611c2b848484611d72565b80611c3957611c38611f3d565b5b50505050565b6000611c8183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f51565b905092915050565b600080831415611c9c5760009050611cfe565b60008284611caa9190612f7f565b9050828482611cb99190613008565b14611cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf0906130ab565b60405180910390fd5b809150505b92915050565b6000806000611d11611fb4565b91509150611d288183611c3f90919063ffffffff16565b9250505090565b6000600c54148015611d4357506000600d54145b15611d4d57611d70565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080611d8487612010565b955095509550955095509550611de286600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461207890919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e7785600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c290919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ec381612120565b611ecd84836121dd565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611f2a9190612729565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008083118290611f98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8f91906125d2565b60405180910390fd5b5060008385611fa79190613008565b9050809150509392505050565b60008060006006549050600066354a6ba7a180009050611fe666354a6ba7a18000600654611c3f90919063ffffffff16565b8210156120035760065466354a6ba7a1800093509350505061200c565b81819350935050505b9091565b600080600080600080600080600061202d8a600c54600d54612217565b925092509250600061203d611d04565b905060008060006120508e8787876122ad565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006120ba83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506117a6565b905092915050565b60008082846120d191906130cb565b905083811015612116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210d9061316d565b60405180910390fd5b8091505092915050565b600061212a611d04565b905060006121418284611c8990919063ffffffff16565b905061219581600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c290919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6121f28260065461207890919063ffffffff16565b60068190555061220d816007546120c290919063ffffffff16565b6007819055505050565b6000806000806122436064612235888a611c8990919063ffffffff16565b611c3f90919063ffffffff16565b9050600061226d606461225f888b611c8990919063ffffffff16565b611c3f90919063ffffffff16565b9050600061229682612288858c61207890919063ffffffff16565b61207890919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806122c68589611c8990919063ffffffff16565b905060006122dd8689611c8990919063ffffffff16565b905060006122f48789611c8990919063ffffffff16565b9050600061231d8261230f858761207890919063ffffffff16565b61207890919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6123988261234f565b810181811067ffffffffffffffff821117156123b7576123b6612360565b5b80604052505050565b60006123ca612336565b90506123d6828261238f565b919050565b600067ffffffffffffffff8211156123f6576123f5612360565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124378261240c565b9050919050565b6124478161242c565b811461245257600080fd5b50565b6000813590506124648161243e565b92915050565b600061247d612478846123db565b6123c0565b905080838252602082019050602084028301858111156124a05761249f612407565b5b835b818110156124c957806124b58882612455565b8452602084019350506020810190506124a2565b5050509392505050565b600082601f8301126124e8576124e761234a565b5b81356124f884826020860161246a565b91505092915050565b60006020828403121561251757612516612340565b5b600082013567ffffffffffffffff81111561253557612534612345565b5b612541848285016124d3565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612584578082015181840152602081019050612569565b83811115612593576000848401525b50505050565b60006125a48261254a565b6125ae8185612555565b93506125be818560208601612566565b6125c78161234f565b840191505092915050565b600060208201905081810360008301526125ec8184612599565b905092915050565b6000819050919050565b612607816125f4565b811461261257600080fd5b50565b600081359050612624816125fe565b92915050565b6000806040838503121561264157612640612340565b5b600061264f85828601612455565b925050602061266085828601612615565b9150509250929050565b60008115159050919050565b61267f8161266a565b82525050565b600060208201905061269a6000830184612676565b92915050565b6000819050919050565b60006126c56126c06126bb8461240c565b6126a0565b61240c565b9050919050565b60006126d7826126aa565b9050919050565b60006126e9826126cc565b9050919050565b6126f9816126de565b82525050565b600060208201905061271460008301846126f0565b92915050565b612723816125f4565b82525050565b600060208201905061273e600083018461271a565b92915050565b60008060006060848603121561275d5761275c612340565b5b600061276b86828701612455565b935050602061277c86828701612455565b925050604061278d86828701612615565b9150509250925092565b600060ff82169050919050565b6127ad81612797565b82525050565b60006020820190506127c860008301846127a4565b92915050565b6127d78161242c565b82525050565b60006020820190506127f260008301846127ce565b92915050565b60006020828403121561280e5761280d612340565b5b600061281c84828501612455565b91505092915050565b6000806040838503121561283c5761283b612340565b5b600061284a85828601612615565b925050602061285b85828601612615565b9150509250929050565b6000806040838503121561287c5761287b612340565b5b600061288a85828601612455565b925050602061289b85828601612455565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006128db602083612555565b91506128e6826128a5565b602082019050919050565b6000602082019050818103600083015261290a816128ce565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061297a826125f4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156129ad576129ac612940565b5b600182019050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612a14602483612555565b9150612a1f826129b8565b604082019050919050565b60006020820190508181036000830152612a4381612a07565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612aa6602283612555565b9150612ab182612a4a565b604082019050919050565b60006020820190508181036000830152612ad581612a99565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612b38602583612555565b9150612b4382612adc565b604082019050919050565b60006020820190508181036000830152612b6781612b2b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612bca602383612555565b9150612bd582612b6e565b604082019050919050565b60006020820190508181036000830152612bf981612bbd565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612c5c602983612555565b9150612c6782612c00565b604082019050919050565b60006020820190508181036000830152612c8b81612c4f565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000612cee602383612555565b9150612cf982612c92565b604082019050919050565b60006020820190508181036000830152612d1d81612ce1565b9050919050565b6000612d2f826125f4565b9150612d3a836125f4565b925082821015612d4d57612d4c612940565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000612db4602a83612555565b9150612dbf82612d58565b604082019050919050565b60006020820190508181036000830152612de381612da7565b9050919050565b600081519050612df98161243e565b92915050565b600060208284031215612e1557612e14612340565b5b6000612e2384828501612dea565b91505092915050565b6000819050919050565b6000612e51612e4c612e4784612e2c565b6126a0565b6125f4565b9050919050565b612e6181612e36565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612e9c8161242c565b82525050565b6000612eae8383612e93565b60208301905092915050565b6000602082019050919050565b6000612ed282612e67565b612edc8185612e72565b9350612ee783612e83565b8060005b83811015612f18578151612eff8882612ea2565b9750612f0a83612eba565b925050600181019050612eeb565b5085935050505092915050565b600060a082019050612f3a600083018861271a565b612f476020830187612e58565b8181036040830152612f598186612ec7565b9050612f6860608301856127ce565b612f75608083018461271a565b9695505050505050565b6000612f8a826125f4565b9150612f95836125f4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612fce57612fcd612940565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613013826125f4565b915061301e836125f4565b92508261302e5761302d612fd9565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613095602183612555565b91506130a082613039565b604082019050919050565b600060208201905081810360008301526130c481613088565b9050919050565b60006130d6826125f4565b91506130e1836125f4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561311657613115612940565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613157601b83612555565b915061316282613121565b602082019050919050565b600060208201905081810360008301526131868161314a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208f546c72cb01c439d4f164314ce42b589e5c17f9e2089ee0d40e306df842732c64736f6c634300080b0033

Deployed Bytecode Sourcemap

4965:11608:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13004:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7670:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8527:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6491:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7947:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8696:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6699:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7856:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6539:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13181:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12800:196;;;;;;;;;;;;;:::i;:::-;;8055:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2575:148;;;;;;;;;;;;;:::i;:::-;;6646:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2361:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14584:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7761:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8201:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6237:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12591:197;;;;;;;;;;;;;:::i;:::-;;8376:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13289:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13004:169;2498:12;:10;:12::i;:::-;2488:22;;:6;;;;;;;;;;:22;;;2480:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13080:9:::1;13075:91;13099:5;:12;13095:1;:16;13075:91;;;13150:4;13133;:14;13138:5;13144:1;13138:8;;;;;;;;:::i;:::-;;;;;;;;13133:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13113:3;;;;;:::i;:::-;;;;13075:91;;;;13004:169:::0;:::o;7670:83::-;7707:13;7740:5;;;;;;;;;;;;;;;;;7733:12;;7670:83;:::o;8527:161::-;8602:4;8619:39;8628:12;:10;:12::i;:::-;8642:7;8651:6;8619:8;:39::i;:::-;8676:4;8669:11;;8527:161;;;;:::o;6491:41::-;;;;;;;;;;;;;:::o;7947:100::-;8000:7;5538:16;8020:19;;7947:100;:::o;8696:313::-;8794:4;8811:36;8821:6;8829:9;8840:6;8811:9;:36::i;:::-;8858:121;8867:6;8875:12;:10;:12::i;:::-;8889:89;8927:6;8889:89;;;;;;;;;;;;;;;;;:11;:19;8901:6;8889:19;;;;;;;;;;;;;;;:33;8909:12;:10;:12::i;:::-;8889:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;8858:8;:121::i;:::-;8997:4;8990:11;;8696:313;;;;;:::o;6699:50::-;;;;:::o;7856:83::-;7897:5;5201:1;7915:16;;7856:83;:::o;6539:28::-;;;;;;;;;;;;;:::o;13181:92::-;2498:12;:10;:12::i;:::-;2488:22;;:6;;;;;;;;;;:22;;;2480:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13260:5:::1;13245:4;:12;13250:6;13245:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13181:92:::0;:::o;12800:196::-;12866:17;;;;;;;;;;;12850:33;;:12;:10;:12::i;:::-;:33;;;12842:42;;;;;;12895:26;12924:21;12895:50;;12956:32;12969:18;12956:12;:32::i;:::-;12831:165;12800:196::o;8055:138::-;8121:7;8148:37;8168:7;:16;8176:7;8168:16;;;;;;;;;;;;;;;;8148:19;:37::i;:::-;8141:44;;8055:138;;;:::o;2575:148::-;2498:12;:10;:12::i;:::-;2488:22;;:6;;;;;;;;;;:22;;;2480:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2682:1:::1;2645:40;;2666:6;::::0;::::1;;;;;;;;2645:40;;;;;;;;;;;;2713:1;2696:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2575:148::o:0;6646:44::-;;;;:::o;2361:79::-;2399:7;2426:6;;;;;;;;;;;2419:13;;2361:79;:::o;14584:177::-;2498:12;:10;:12::i;:::-;2488:22;;:6;;;;;;;;;;:22;;;2480:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14720:3:::1;14697:20;:26;;;;14750:3;14734:13;:19;;;;14584:177:::0;;:::o;7761:87::-;7800:13;7833:7;;;;;;;;;;;;;;;;;7826:14;;7761:87;:::o;8201:167::-;8279:4;8296:42;8306:12;:10;:12::i;:::-;8320:9;8331:6;8296:9;:42::i;:::-;8356:4;8349:11;;8201:167;;;;:::o;6237:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12591:197::-;12657:17;;;;;;;;;;;12641:33;;:12;:10;:12::i;:::-;:33;;;12633:42;;;;;;12686:23;12712:24;12730:4;12712:9;:24::i;:::-;12686:50;;12747:33;12764:15;12747:16;:33::i;:::-;12622:166;12591:197::o;8376:143::-;8457:7;8484:11;:18;8496:5;8484:18;;;;;;;;;;;;;;;:27;8503:7;8484:27;;;;;;;;;;;;;;;;8477:34;;8376:143;;;;:::o;13289:152::-;2498:12;:10;:12::i;:::-;2488:22;;:6;;;;;;;;;;:22;;;2480:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13390:4:::1;13360:18;:27;13379:7;13360:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;13410:23;13425:7;13410:23;;;;;;:::i;:::-;;;;;;;;13289:152:::0;:::o;1223:98::-;1276:7;1303:10;1296:17;;1223:98;:::o;9677:335::-;9787:1;9770:19;;:5;:19;;;;9762:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9868:1;9849:21;;:7;:21;;;;9841:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9950:6;9920:11;:18;9932:5;9920:18;;;;;;;;;;;;;;;:27;9939:7;9920:27;;;;;;;;;;;;;;;:36;;;;9988:7;9972:32;;9981:5;9972:32;;;9997:6;9972:32;;;;;;:::i;:::-;;;;;;;;9677:335;;;:::o;10020:1967::-;10124:1;10108:18;;:4;:18;;;;10100:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10201:1;10187:16;;:2;:16;;;;10179:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10271:1;10262:6;:10;10254:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10343:7;:5;:7::i;:::-;10335:15;;:4;:15;;;;:32;;;;;10360:7;:5;:7::i;:::-;10354:13;;:2;:13;;;;10335:32;:52;;;;;10385:1;10371:16;;:2;:16;;;;10335:52;:77;;;;;10405:6;10391:21;;:2;:21;;;;10335:77;:89;;;;;10422:2;;;;;;;;;;;10416:8;;:2;:8;;;;10335:89;:103;;;;;10436:2;;;;;;;;;;;10428:10;;:4;:10;;;;10335:103;10331:876;;;10491:4;:10;10496:4;10491:10;;;;;;;;;;;;;;;;;;;;;;;;;10490:11;:24;;;;;10506:4;:8;10511:2;10506:8;;;;;;;;;;;;;;;;;;;;;;;;;10505:9;10490:24;10482:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10584:28;10615:24;10633:4;10615:9;:24::i;:::-;10584:55;;10654:12;10693:19;;10669:20;:43;;10654:58;;10756:12;;10732:20;:36;10729:124;;10825:12;;10802:35;;10729:124;10885:7;:18;;;;;10897:6;;;;;;;;;;;10896:7;10885:18;:43;;;;;10915:13;;;;;;;;;;;10907:21;;:4;:21;;;;10885:43;10881:315;;;10949:38;10966:20;10949:16;:38::i;:::-;11006:26;11035:21;11006:50;;11100:1;11079:18;:22;11075:106;;;11126:35;11139:21;11126:12;:35::i;:::-;11075:106;10930:266;10881:315;10440:767;;10331:876;11227:12;11242:4;11227:19;;11291:18;:24;11310:4;11291:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11319:18;:22;11338:2;11319:22;;;;;;;;;;;;;;;;;;;;;;;;;11291:50;11290:102;;;;11355:13;;;;;;;;;;;11347:21;;:4;:21;;;;:44;;;;;11378:13;;;;;;;;;;;11372:19;;:2;:19;;;;11347:44;11290:102;11286:640;;;11419:5;11409:15;;11286:640;;;11514:13;;;;;;;;;;;11506:21;;:4;:21;;;:55;;;;;11545:15;;;;;;;;;;;11531:30;;:2;:30;;;;11506:55;11503:172;;;11599:19;;11582:14;:36;;;;11647:12;;11637:7;:22;;;;11503:172;11738:13;;;;;;;;;;;11732:19;;:2;:19;;;:55;;;;;11771:15;;;;;;;;;;;11755:32;;:4;:32;;;;11732:55;11728:175;;;11825:20;;11808:14;:37;;;;11874:13;;11864:7;:23;;;;11728:175;11286:640;11938:41;11953:4;11959:2;11963:6;11971:7;11938:14;:41::i;:::-;10089:1898;10020:1967;;;:::o;3085:190::-;3171:7;3204:1;3199;:6;;3207:12;3191:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3231:9;3247:1;3243;:5;;;;:::i;:::-;3231:17;;3266:1;3259:8;;;3085:190;;;;;:::o;12417:166::-;12474:17;;;;;;;;;;;:26;;:48;12501:20;12519:1;12501:13;12512:1;12501:6;:10;;:13;;;;:::i;:::-;:17;;:20;;;;:::i;:::-;12474:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12533:11;;;;;;;;;;;:20;;:42;12554:20;12572:1;12554:13;12565:1;12554:6;:10;;:13;;;;:::i;:::-;:17;;:20;;;;:::i;:::-;12533:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12417:166;:::o;9017:266::-;9085:7;9127:16;;9116:7;:27;;9108:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;9201:19;9223:10;:8;:10::i;:::-;9201:32;;9251:24;9263:11;9251:7;:11;;:24;;;;:::i;:::-;9244:31;;;9017:266;;;:::o;11995:407::-;6862:4;6853:6;;:13;;;;;;;;;;;;;;;;;;12073:21:::1;12111:1;12097:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12073:40;;12142:4;12124;12129:1;12124:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12168:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12158:4;12163:1;12158:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12201:62;12218:4;12233:15;;;;;;;;;;;12251:11;12201:8;:62::i;:::-;12274:15;;;;;;;;;;;:66;;;12341:11;12354:1;12357:4;12371;12378:15;12274:120;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12062:340;6898:5:::0;6889:6;;:14;;;;;;;;;;;;;;;;;;11995:407;:::o;13449:239::-;13562:7;13557:28;;13571:14;:12;:14::i;:::-;13557:28;13596:44;13614:6;13622:9;13633:6;13596:17;:44::i;:::-;13656:7;13651:29;;13665:15;:13;:15::i;:::-;13651:29;13449:239;;;;:::o;3539:132::-;3597:7;3624:39;3628:1;3631;3624:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3617:46;;3539:132;;;;:::o;3283:248::-;3341:7;3370:1;3365;:6;3361:47;;;3395:1;3388:8;;;;3361:47;3420:9;3436:1;3432;:5;;;;:::i;:::-;3420:17;;3465:1;3460;3456;:5;;;;:::i;:::-;:10;3448:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3522:1;3515:8;;;3283:248;;;;;:::o;16088:166::-;16130:7;16151:15;16168;16187:19;:17;:19::i;:::-;16150:56;;;;16226:20;16238:7;16226;:11;;:20;;;;:::i;:::-;16219:27;;;;16088:166;:::o;9291:247::-;9356:1;9338:14;;:19;:35;;;;;9372:1;9361:7;;:12;9338:35;9334:48;;;9375:7;;9334:48;9419:14;;9398:18;:35;;;;9462:7;;9444:15;:25;;;;9507:1;9490:14;:18;;;;9529:1;9519:7;:11;;;;9291:247;:::o;13696:487::-;13795:15;13812:23;13837:12;13851:23;13876:12;13890:13;13907:19;13918:7;13907:10;:19::i;:::-;13794:132;;;;;;;;;;;;13955:28;13975:7;13955;:15;13963:6;13955:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13937:7;:15;13945:6;13937:15;;;;;;;;;;;;;;;:46;;;;14015:39;14038:15;14015:7;:18;14023:9;14015:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13994:7;:18;14002:9;13994:18;;;;;;;;;;;;;;;:60;;;;14065:16;14075:5;14065:9;:16::i;:::-;14092:23;14104:4;14110;14092:11;:23::i;:::-;14148:9;14131:44;;14140:6;14131:44;;;14159:15;14131:44;;;;;;:::i;:::-;;;;;;;;13783:400;;;;;;13696:487;;;:::o;9546:123::-;9607:18;;9590:14;:35;;;;9646:15;;9636:7;:25;;;;9546:123::o;3679:276::-;3765:7;3797:1;3793;:5;3800:12;3785:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3824:9;3840:1;3836;:5;;;;:::i;:::-;3824:17;;3946:1;3939:8;;;3679:276;;;;;:::o;16262:305::-;16313:7;16322;16342:15;16360:16;;16342:34;;16387:15;5538:16;16387:30;;16442:34;5538:16;16442;;:20;;:34;;;;:::i;:::-;16432:7;:44;16428:89;;;16486:16;;5538;16478:39;;;;;;;;16428:89;16542:7;16551;16534:25;;;;;;16262:305;;;:::o;14806:482::-;14865:7;14874;14883;14892;14901;14910;14930:23;14955:12;14969:13;14986:45;14998:7;15007:14;;15023:7;;14986:11;:45::i;:::-;14929:102;;;;;;15042:19;15064:10;:8;:10::i;:::-;15042:32;;15086:15;15103:23;15128:12;15144:46;15156:7;15165:4;15171:5;15178:11;15144;:46::i;:::-;15085:105;;;;;;15219:7;15228:15;15245:4;15251:15;15268:4;15274:5;15211:69;;;;;;;;;;;;;;;;;;;14806:482;;;;;;;:::o;2941:136::-;2999:7;3026:43;3030:1;3033;3026:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3019:50;;2941:136;;;;:::o;2754:179::-;2812:7;2832:9;2848:1;2844;:5;;;;:::i;:::-;2832:17;;2873:1;2868;:6;;2860:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2924:1;2917:8;;;2754:179;;;;:::o;14191:211::-;14244:19;14266:10;:8;:10::i;:::-;14244:32;;14287:13;14303:22;14313:11;14303:5;:9;;:22;;;;:::i;:::-;14287:38;;14361:33;14388:5;14361:7;:22;14377:4;14361:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14336:7;:22;14352:4;14336:22;;;;;;;;;;;;;;;:58;;;;14233:169;;14191:211;:::o;14410:165::-;14497:26;14518:4;14497:16;;:20;;:26;;;;:::i;:::-;14478:16;:45;;;;14547:20;14562:4;14547:10;;:14;;:20;;;;:::i;:::-;14534:10;:33;;;;14410:165;;:::o;15296:365::-;15395:7;15404;15413;15433:12;15448:35;15479:3;15448:26;15460:13;15448:7;:11;;:26;;;;:::i;:::-;:30;;:35;;;;:::i;:::-;15433:50;;15494:13;15510:28;15534:3;15510:19;15522:6;15510:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15494:44;;15549:23;15575:28;15597:5;15575:17;15587:4;15575:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15549:54;;15624:15;15641:4;15647:5;15616:37;;;;;;;;;15296:365;;;;;;;:::o;15669:411::-;15779:7;15788;15797;15817:15;15835:24;15847:11;15835:7;:11;;:24;;;;:::i;:::-;15817:42;;15870:12;15885:21;15894:11;15885:4;:8;;:21;;;;:::i;:::-;15870:36;;15917:13;15933:22;15943:11;15933:5;:9;;:22;;;;:::i;:::-;15917:38;;15966:23;15992:28;16014:5;15992:17;16004:4;15992:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15966:54;;16041:7;16050:15;16067:4;16033:39;;;;;;;;;;15669:411;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:307::-;4139:1;4149:113;4163:6;4160:1;4157:13;4149:113;;;4248:1;4243:3;4239:11;4233:18;4229:1;4224:3;4220:11;4213:39;4185:2;4182:1;4178:10;4173:15;;4149:113;;;4280:6;4277:1;4274:13;4271:101;;;4360:1;4351:6;4346:3;4342:16;4335:27;4271:101;4120:258;4071:307;;;:::o;4384:364::-;4472:3;4500:39;4533:5;4500:39;:::i;:::-;4555:71;4619:6;4614:3;4555:71;:::i;:::-;4548:78;;4635:52;4680:6;4675:3;4668:4;4661:5;4657:16;4635:52;:::i;:::-;4712:29;4734:6;4712:29;:::i;:::-;4707:3;4703:39;4696:46;;4476:272;4384:364;;;;:::o;4754:313::-;4867:4;4905:2;4894:9;4890:18;4882:26;;4954:9;4948:4;4944:20;4940:1;4929:9;4925:17;4918:47;4982:78;5055:4;5046:6;4982:78;:::i;:::-;4974:86;;4754:313;;;;:::o;5073:77::-;5110:7;5139:5;5128:16;;5073:77;;;:::o;5156:122::-;5229:24;5247:5;5229:24;:::i;:::-;5222:5;5219:35;5209:63;;5268:1;5265;5258:12;5209:63;5156:122;:::o;5284:139::-;5330:5;5368:6;5355:20;5346:29;;5384:33;5411:5;5384:33;:::i;:::-;5284:139;;;;:::o;5429:474::-;5497:6;5505;5554:2;5542:9;5533:7;5529:23;5525:32;5522:119;;;5560:79;;:::i;:::-;5522:119;5680:1;5705:53;5750:7;5741:6;5730:9;5726:22;5705:53;:::i;:::-;5695:63;;5651:117;5807:2;5833:53;5878:7;5869:6;5858:9;5854:22;5833:53;:::i;:::-;5823:63;;5778:118;5429:474;;;;;:::o;5909:90::-;5943:7;5986:5;5979:13;5972:21;5961:32;;5909:90;;;:::o;6005:109::-;6086:21;6101:5;6086:21;:::i;:::-;6081:3;6074:34;6005:109;;:::o;6120:210::-;6207:4;6245:2;6234:9;6230:18;6222:26;;6258:65;6320:1;6309:9;6305:17;6296:6;6258:65;:::i;:::-;6120:210;;;;:::o;6336:60::-;6364:3;6385:5;6378:12;;6336:60;;;:::o;6402:142::-;6452:9;6485:53;6503:34;6512:24;6530:5;6512:24;:::i;:::-;6503:34;:::i;:::-;6485:53;:::i;:::-;6472:66;;6402:142;;;:::o;6550:126::-;6600:9;6633:37;6664:5;6633:37;:::i;:::-;6620:50;;6550:126;;;:::o;6682:152::-;6758:9;6791:37;6822:5;6791:37;:::i;:::-;6778:50;;6682:152;;;:::o;6840:183::-;6953:63;7010:5;6953:63;:::i;:::-;6948:3;6941:76;6840:183;;:::o;7029:274::-;7148:4;7186:2;7175:9;7171:18;7163:26;;7199:97;7293:1;7282:9;7278:17;7269:6;7199:97;:::i;:::-;7029:274;;;;:::o;7309:118::-;7396:24;7414:5;7396:24;:::i;:::-;7391:3;7384:37;7309:118;;:::o;7433:222::-;7526:4;7564:2;7553:9;7549:18;7541:26;;7577:71;7645:1;7634:9;7630:17;7621:6;7577:71;:::i;:::-;7433:222;;;;:::o;7661:619::-;7738:6;7746;7754;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;8056:2;8082:53;8127:7;8118:6;8107:9;8103:22;8082:53;:::i;:::-;8072:63;;8027:118;8184:2;8210:53;8255:7;8246:6;8235:9;8231:22;8210:53;:::i;:::-;8200:63;;8155:118;7661:619;;;;;:::o;8286:86::-;8321:7;8361:4;8354:5;8350:16;8339:27;;8286:86;;;:::o;8378:112::-;8461:22;8477:5;8461:22;:::i;:::-;8456:3;8449:35;8378:112;;:::o;8496:214::-;8585:4;8623:2;8612:9;8608:18;8600:26;;8636:67;8700:1;8689:9;8685:17;8676:6;8636:67;:::i;:::-;8496:214;;;;:::o;8716:118::-;8803:24;8821:5;8803:24;:::i;:::-;8798:3;8791:37;8716:118;;:::o;8840:222::-;8933:4;8971:2;8960:9;8956:18;8948:26;;8984:71;9052:1;9041:9;9037:17;9028:6;8984:71;:::i;:::-;8840:222;;;;:::o;9068:329::-;9127:6;9176:2;9164:9;9155:7;9151:23;9147:32;9144:119;;;9182:79;;:::i;:::-;9144:119;9302:1;9327:53;9372:7;9363:6;9352:9;9348:22;9327:53;:::i;:::-;9317:63;;9273:117;9068:329;;;;:::o;9403:474::-;9471:6;9479;9528:2;9516:9;9507:7;9503:23;9499:32;9496:119;;;9534:79;;:::i;:::-;9496:119;9654:1;9679:53;9724:7;9715:6;9704:9;9700:22;9679:53;:::i;:::-;9669:63;;9625:117;9781:2;9807:53;9852:7;9843:6;9832:9;9828:22;9807:53;:::i;:::-;9797:63;;9752:118;9403:474;;;;;:::o;9883:::-;9951:6;9959;10008:2;9996:9;9987:7;9983:23;9979:32;9976:119;;;10014:79;;:::i;:::-;9976:119;10134:1;10159:53;10204:7;10195:6;10184:9;10180:22;10159:53;:::i;:::-;10149:63;;10105:117;10261:2;10287:53;10332:7;10323:6;10312:9;10308:22;10287:53;:::i;:::-;10277:63;;10232:118;9883:474;;;;;:::o;10363:182::-;10503:34;10499:1;10491:6;10487:14;10480:58;10363:182;:::o;10551:366::-;10693:3;10714:67;10778:2;10773:3;10714:67;:::i;:::-;10707:74;;10790:93;10879:3;10790:93;:::i;:::-;10908:2;10903:3;10899:12;10892:19;;10551:366;;;:::o;10923:419::-;11089:4;11127:2;11116:9;11112:18;11104:26;;11176:9;11170:4;11166:20;11162:1;11151:9;11147:17;11140:47;11204:131;11330:4;11204:131;:::i;:::-;11196:139;;10923:419;;;:::o;11348:180::-;11396:77;11393:1;11386:88;11493:4;11490:1;11483:15;11517:4;11514:1;11507:15;11534:180;11582:77;11579:1;11572:88;11679:4;11676:1;11669:15;11703:4;11700:1;11693:15;11720:233;11759:3;11782:24;11800:5;11782:24;:::i;:::-;11773:33;;11828:66;11821:5;11818:77;11815:103;;;11898:18;;:::i;:::-;11815:103;11945:1;11938:5;11934:13;11927:20;;11720:233;;;:::o;11959:223::-;12099:34;12095:1;12087:6;12083:14;12076:58;12168:6;12163:2;12155:6;12151:15;12144:31;11959:223;:::o;12188:366::-;12330:3;12351:67;12415:2;12410:3;12351:67;:::i;:::-;12344:74;;12427:93;12516:3;12427:93;:::i;:::-;12545:2;12540:3;12536:12;12529:19;;12188:366;;;:::o;12560:419::-;12726:4;12764:2;12753:9;12749:18;12741:26;;12813:9;12807:4;12803:20;12799:1;12788:9;12784:17;12777:47;12841:131;12967:4;12841:131;:::i;:::-;12833:139;;12560:419;;;:::o;12985:221::-;13125:34;13121:1;13113:6;13109:14;13102:58;13194:4;13189:2;13181:6;13177:15;13170:29;12985:221;:::o;13212:366::-;13354:3;13375:67;13439:2;13434:3;13375:67;:::i;:::-;13368:74;;13451:93;13540:3;13451:93;:::i;:::-;13569:2;13564:3;13560:12;13553:19;;13212:366;;;:::o;13584:419::-;13750:4;13788:2;13777:9;13773:18;13765:26;;13837:9;13831:4;13827:20;13823:1;13812:9;13808:17;13801:47;13865:131;13991:4;13865:131;:::i;:::-;13857:139;;13584:419;;;:::o;14009:224::-;14149:34;14145:1;14137:6;14133:14;14126:58;14218:7;14213:2;14205:6;14201:15;14194:32;14009:224;:::o;14239:366::-;14381:3;14402:67;14466:2;14461:3;14402:67;:::i;:::-;14395:74;;14478:93;14567:3;14478:93;:::i;:::-;14596:2;14591:3;14587:12;14580:19;;14239:366;;;:::o;14611:419::-;14777:4;14815:2;14804:9;14800:18;14792:26;;14864:9;14858:4;14854:20;14850:1;14839:9;14835:17;14828:47;14892:131;15018:4;14892:131;:::i;:::-;14884:139;;14611:419;;;:::o;15036:222::-;15176:34;15172:1;15164:6;15160:14;15153:58;15245:5;15240:2;15232:6;15228:15;15221:30;15036:222;:::o;15264:366::-;15406:3;15427:67;15491:2;15486:3;15427:67;:::i;:::-;15420:74;;15503:93;15592:3;15503:93;:::i;:::-;15621:2;15616:3;15612:12;15605:19;;15264:366;;;:::o;15636:419::-;15802:4;15840:2;15829:9;15825:18;15817:26;;15889:9;15883:4;15879:20;15875:1;15864:9;15860:17;15853:47;15917:131;16043:4;15917:131;:::i;:::-;15909:139;;15636:419;;;:::o;16061:228::-;16201:34;16197:1;16189:6;16185:14;16178:58;16270:11;16265:2;16257:6;16253:15;16246:36;16061:228;:::o;16295:366::-;16437:3;16458:67;16522:2;16517:3;16458:67;:::i;:::-;16451:74;;16534:93;16623:3;16534:93;:::i;:::-;16652:2;16647:3;16643:12;16636:19;;16295:366;;;:::o;16667:419::-;16833:4;16871:2;16860:9;16856:18;16848:26;;16920:9;16914:4;16910:20;16906:1;16895:9;16891:17;16884:47;16948:131;17074:4;16948:131;:::i;:::-;16940:139;;16667:419;;;:::o;17092:222::-;17232:34;17228:1;17220:6;17216:14;17209:58;17301:5;17296:2;17288:6;17284:15;17277:30;17092:222;:::o;17320:366::-;17462:3;17483:67;17547:2;17542:3;17483:67;:::i;:::-;17476:74;;17559:93;17648:3;17559:93;:::i;:::-;17677:2;17672:3;17668:12;17661:19;;17320:366;;;:::o;17692:419::-;17858:4;17896:2;17885:9;17881:18;17873:26;;17945:9;17939:4;17935:20;17931:1;17920:9;17916:17;17909:47;17973:131;18099:4;17973:131;:::i;:::-;17965:139;;17692:419;;;:::o;18117:191::-;18157:4;18177:20;18195:1;18177:20;:::i;:::-;18172:25;;18211:20;18229:1;18211:20;:::i;:::-;18206:25;;18250:1;18247;18244:8;18241:34;;;18255:18;;:::i;:::-;18241:34;18300:1;18297;18293:9;18285:17;;18117:191;;;;:::o;18314:229::-;18454:34;18450:1;18442:6;18438:14;18431:58;18523:12;18518:2;18510:6;18506:15;18499:37;18314:229;:::o;18549:366::-;18691:3;18712:67;18776:2;18771:3;18712:67;:::i;:::-;18705:74;;18788:93;18877:3;18788:93;:::i;:::-;18906:2;18901:3;18897:12;18890:19;;18549:366;;;:::o;18921:419::-;19087:4;19125:2;19114:9;19110:18;19102:26;;19174:9;19168:4;19164:20;19160:1;19149:9;19145:17;19138:47;19202:131;19328:4;19202:131;:::i;:::-;19194:139;;18921:419;;;:::o;19346:143::-;19403:5;19434:6;19428:13;19419:22;;19450:33;19477:5;19450:33;:::i;:::-;19346:143;;;;:::o;19495:351::-;19565:6;19614:2;19602:9;19593:7;19589:23;19585:32;19582:119;;;19620:79;;:::i;:::-;19582:119;19740:1;19765:64;19821:7;19812:6;19801:9;19797:22;19765:64;:::i;:::-;19755:74;;19711:128;19495:351;;;;:::o;19852:85::-;19897:7;19926:5;19915:16;;19852:85;;;:::o;19943:158::-;20001:9;20034:61;20052:42;20061:32;20087:5;20061:32;:::i;:::-;20052:42;:::i;:::-;20034:61;:::i;:::-;20021:74;;19943:158;;;:::o;20107:147::-;20202:45;20241:5;20202:45;:::i;:::-;20197:3;20190:58;20107:147;;:::o;20260:114::-;20327:6;20361:5;20355:12;20345:22;;20260:114;;;:::o;20380:184::-;20479:11;20513:6;20508:3;20501:19;20553:4;20548:3;20544:14;20529:29;;20380:184;;;;:::o;20570:132::-;20637:4;20660:3;20652:11;;20690:4;20685:3;20681:14;20673:22;;20570:132;;;:::o;20708:108::-;20785:24;20803:5;20785:24;:::i;:::-;20780:3;20773:37;20708:108;;:::o;20822:179::-;20891:10;20912:46;20954:3;20946:6;20912:46;:::i;:::-;20990:4;20985:3;20981:14;20967:28;;20822:179;;;;:::o;21007:113::-;21077:4;21109;21104:3;21100:14;21092:22;;21007:113;;;:::o;21156:732::-;21275:3;21304:54;21352:5;21304:54;:::i;:::-;21374:86;21453:6;21448:3;21374:86;:::i;:::-;21367:93;;21484:56;21534:5;21484:56;:::i;:::-;21563:7;21594:1;21579:284;21604:6;21601:1;21598:13;21579:284;;;21680:6;21674:13;21707:63;21766:3;21751:13;21707:63;:::i;:::-;21700:70;;21793:60;21846:6;21793:60;:::i;:::-;21783:70;;21639:224;21626:1;21623;21619:9;21614:14;;21579:284;;;21583:14;21879:3;21872:10;;21280:608;;;21156:732;;;;:::o;21894:831::-;22157:4;22195:3;22184:9;22180:19;22172:27;;22209:71;22277:1;22266:9;22262:17;22253:6;22209:71;:::i;:::-;22290:80;22366:2;22355:9;22351:18;22342:6;22290:80;:::i;:::-;22417:9;22411:4;22407:20;22402:2;22391:9;22387:18;22380:48;22445:108;22548:4;22539:6;22445:108;:::i;:::-;22437:116;;22563:72;22631:2;22620:9;22616:18;22607:6;22563:72;:::i;:::-;22645:73;22713:3;22702:9;22698:19;22689:6;22645:73;:::i;:::-;21894:831;;;;;;;;:::o;22731:348::-;22771:7;22794:20;22812:1;22794:20;:::i;:::-;22789:25;;22828:20;22846:1;22828:20;:::i;:::-;22823:25;;23016:1;22948:66;22944:74;22941:1;22938:81;22933:1;22926:9;22919:17;22915:105;22912:131;;;23023:18;;:::i;:::-;22912:131;23071:1;23068;23064:9;23053:20;;22731:348;;;;:::o;23085:180::-;23133:77;23130:1;23123:88;23230:4;23227:1;23220:15;23254:4;23251:1;23244:15;23271:185;23311:1;23328:20;23346:1;23328:20;:::i;:::-;23323:25;;23362:20;23380:1;23362:20;:::i;:::-;23357:25;;23401:1;23391:35;;23406:18;;:::i;:::-;23391:35;23448:1;23445;23441:9;23436:14;;23271:185;;;;:::o;23462:220::-;23602:34;23598:1;23590:6;23586:14;23579:58;23671:3;23666:2;23658:6;23654:15;23647:28;23462:220;:::o;23688:366::-;23830:3;23851:67;23915:2;23910:3;23851:67;:::i;:::-;23844:74;;23927:93;24016:3;23927:93;:::i;:::-;24045:2;24040:3;24036:12;24029:19;;23688:366;;;:::o;24060:419::-;24226:4;24264:2;24253:9;24249:18;24241:26;;24313:9;24307:4;24303:20;24299:1;24288:9;24284:17;24277:47;24341:131;24467:4;24341:131;:::i;:::-;24333:139;;24060:419;;;:::o;24485:305::-;24525:3;24544:20;24562:1;24544:20;:::i;:::-;24539:25;;24578:20;24596:1;24578:20;:::i;:::-;24573:25;;24732:1;24664:66;24660:74;24657:1;24654:81;24651:107;;;24738:18;;:::i;:::-;24651:107;24782:1;24779;24775:9;24768:16;;24485:305;;;;:::o;24796:177::-;24936:29;24932:1;24924:6;24920:14;24913:53;24796:177;:::o;24979:366::-;25121:3;25142:67;25206:2;25201:3;25142:67;:::i;:::-;25135:74;;25218:93;25307:3;25218:93;:::i;:::-;25336:2;25331:3;25327:12;25320:19;;24979:366;;;:::o;25351:419::-;25517:4;25555:2;25544:9;25540:18;25532:26;;25604:9;25598:4;25594:20;25590:1;25579:9;25575:17;25568:47;25632:131;25758:4;25632:131;:::i;:::-;25624:139;;25351:419;;;:::o

Swarm Source

ipfs://8f546c72cb01c439d4f164314ce42b589e5c17f9e2089ee0d40e306df842732c
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.